From 72607e482c5d52774c6f75f1a25b2eaae99ab2ba Mon Sep 17 00:00:00 2001 From: unspeaker Date: Fri, 4 Apr 2025 21:06:23 +0300 Subject: [PATCH] implement non-save options in modals --- src/keys.rs | 2 +- src/keys/quit.rs | 9 +++++++-- src/keys/save.rs | 7 ++++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/keys.rs b/src/keys.rs index bcc6172..427944b 100644 --- a/src/keys.rs +++ b/src/keys.rs @@ -32,7 +32,7 @@ impl Handle for Taggart { match &self.mode { Some(Mode::Edit { .. }) => self.mode_edit(event), Some(Mode::Save { value }) => self.mode_save(event, *value), - Some(Mode::Quit { value }) => self.mode_quit(event, *value), + Some(Mode::Quit { value }) => self.mode_quit(input, event, *value), None => match event { press!(Char('q')) => { self.quit_begin(&input) }, press!(Char('w')) => { self.save_begin() }, diff --git a/src/keys/quit.rs b/src/keys/quit.rs index 3d9b7b6..cade134 100644 --- a/src/keys/quit.rs +++ b/src/keys/quit.rs @@ -8,7 +8,7 @@ impl Taggart { self.mode = Some(Mode::Quit { value: 1 }) } } - pub fn mode_quit (&mut self, event: &Event, value: u8) { + pub fn mode_quit (&mut self, input: &TuiIn, event: &Event, value: u8) { match event { press!(Esc) => { self.mode = None }, press!(Left) => { self.mode = Some(Mode::Quit { @@ -17,7 +17,12 @@ impl Taggart { press!(Right) => { self.mode = Some(Mode::Quit { value: (value + 1) % 3 }) }, - press!(Enter) => todo!(), + press!(Enter) => match value { + 0 => { input.done() }, + 1 => { self.mode = None }, + 2 => todo!(), + _ => unreachable!(), + }, _ => {} } } diff --git a/src/keys/save.rs b/src/keys/save.rs index 678d56b..e0e5958 100644 --- a/src/keys/save.rs +++ b/src/keys/save.rs @@ -15,7 +15,12 @@ impl Taggart { press!(Right) => { self.mode = Some(Mode::Save { value: (value + 1) % 3 }) }, - press!(Enter) => todo!(), + press!(Enter) => match value { + 0 => { self.tasks = vec![]; self.mode = None; }, + 1 => { self.mode = None }, + 2 => todo!(), + _ => unreachable!(), + }, _ => {} } }