aboutsummaryrefslogtreecommitdiff
path: root/src/components/status.rs
diff options
context:
space:
mode:
authorShav Kinderlehrer <[email protected]>2024-07-23 17:48:28 -0400
committerShav Kinderlehrer <[email protected]>2024-07-23 17:48:28 -0400
commitdc0f2ce9ba97ebb47e05b80a511da6eb29818b63 (patch)
treedc83035069f5a015047be1ca3da6f65781eb4695 /src/components/status.rs
parentf638f4bd1e3a03bc2bdd5f9dcd57d4830fd3c553 (diff)
downloadmolehole-ncurses.tar.gz
molehole-ncurses.zip
Merge old-moleholencurses
Diffstat (limited to 'src/components/status.rs')
-rw-r--r--src/components/status.rs86
1 files changed, 0 insertions, 86 deletions
diff --git a/src/components/status.rs b/src/components/status.rs
deleted file mode 100644
index aa2b384..0000000
--- a/src/components/status.rs
+++ /dev/null
@@ -1,86 +0,0 @@
-use ratatui::prelude::*;
-use ratatui::widgets::*;
-
-use crate::app_action::AppAction;
-use crate::app_event::AppEvent;
-use crate::component::Component;
-use crate::keys::key_commands::serialize_key_event;
-
-#[derive(Default, Clone)]
-pub struct StatusBar {
- pub message: String,
- pub current_key: String,
- pub error: bool,
- pub url_to_open: Option<url::Url>,
-}
-
-impl Component for StatusBar {
- fn handle_key_event(
- &mut self,
- key: crossterm::event::KeyEvent,
- ) -> Option<AppAction> {
- let key_str = serialize_key_event(key);
- self.current_key = key_str;
-
- None
- }
-
- fn handle_action(&mut self, action: crate::app_action::AppAction) {
- match action.clone() {
- AppAction::StatusBarSetMessage(message) => {
- self.error = false;
- self.message = message;
- }
- AppAction::StatusBarSetError(message) => {
- self.error = true;
- self.message = message;
- }
- AppAction::OpenUrl => {
- self.url_to_open =
- Some(url::Url::parse("molerat://example.com").unwrap());
- }
- _ => {}
- }
- }
-
- fn update(&mut self) -> Option<AppEvent> {
- if let Some(url) = &self.url_to_open {
- let event = AppEvent::OpenUrl(url.clone());
- self.url_to_open = None;
- return Some(event);
- }
-
- None
- }
-
- fn render(
- &mut self,
- frame: &mut ratatui::prelude::Frame,
- rect: ratatui::prelude::Rect,
- ) -> eyre::Result<()> {
- let block =
- Block::default().style(Style::default().bg(if self.error {
- Color::Red
- } else {
- Color::DarkGray
- }));
-
- let layout = Layout::default()
- .direction(Direction::Horizontal)
- .constraints(vec![
- Constraint::Percentage(50),
- Constraint::Percentage(50),
- ])
- .split(rect);
-
- let message = Paragraph::new(self.message.clone()).block(block.clone());
- let current_key = Paragraph::new(self.current_key.clone())
- .block(block)
- .alignment(Alignment::Right);
-
- frame.render_widget(message, layout[0]);
- frame.render_widget(current_key, layout[1]);
-
- Ok(())
- }
-}