aboutsummaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/global_keys.rs46
-rw-r--r--src/components/hello_world.rs5
-rw-r--r--src/components/mod.rs1
3 files changed, 52 insertions, 0 deletions
diff --git a/src/components/global_keys.rs b/src/components/global_keys.rs
new file mode 100644
index 0000000..e99e2e0
--- /dev/null
+++ b/src/components/global_keys.rs
@@ -0,0 +1,46 @@
+use crossterm::event::{KeyCode, KeyEvent, KeyEventKind};
+use ratatui::prelude::*;
+use ratatui::widgets::*;
+
+use crate::app_action::AppAction;
+use crate::component::Component;
+
+#[derive(Default, Clone, Copy)]
+pub struct GlobalKeys {
+ should_show: bool,
+}
+
+impl Component for GlobalKeys {
+ fn handle_key_event(
+ &mut self,
+ key: KeyEvent,
+ ) -> eyre::Result<Option<AppAction>> {
+ if key.kind == KeyEventKind::Press {
+ return match key.code {
+ KeyCode::Char('q') => Ok(Some(AppAction::Quit)),
+ KeyCode::Char('?') => {
+ self.should_show = !self.should_show;
+ Ok(None)
+ }
+ _ => Ok(None),
+ };
+ }
+
+ Ok(None)
+ }
+
+ fn render(&mut self, frame: &mut Frame, rect: Rect) -> eyre::Result<()> {
+ let horizontal_center = Layout::default()
+ .direction(Direction::Horizontal);
+
+ let block = Block::default()
+ .title("Keyboard shortcuts")
+ .borders(Borders::ALL);
+
+ if self.should_show {
+ frame.render_widget(block, rect);
+ }
+
+ Ok(())
+ }
+}
diff --git a/src/components/hello_world.rs b/src/components/hello_world.rs
index 22c966c..afb9d47 100644
--- a/src/components/hello_world.rs
+++ b/src/components/hello_world.rs
@@ -9,6 +9,11 @@ pub struct HelloWorld {
}
impl Component for HelloWorld {
+ fn init(&mut self) -> eyre::Result<()> {
+ self.text = "Hello, world!".to_string();
+ Ok(())
+ }
+
fn render(&mut self, frame: &mut Frame, rect: Rect) -> eyre::Result<()> {
frame.render_widget(Paragraph::new(self.text.clone()), rect);
diff --git a/src/components/mod.rs b/src/components/mod.rs
index c6dbc18..78abbca 100644
--- a/src/components/mod.rs
+++ b/src/components/mod.rs
@@ -1 +1,2 @@
pub mod hello_world;
+pub mod global_keys;