diff --git a/src/app/mod.rs b/src/app/mod.rs index 29e61bc..75cc996 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -18,7 +18,7 @@ enum Message { PickedDb(Option), ChangePassword(String), - ChangeSecurity(bool), + ToggleSecurity, OpenDb, DbOpened(Result), @@ -104,7 +104,7 @@ impl State { Message::PickedDb(None) => eprintln!("no path received from picker"), Message::ChangePassword(password) => self.password = password, - Message::ChangeSecurity(bool) => self.is_secure = bool, + Message::ToggleSecurity => self.is_secure = !self.is_secure, Message::OpenDb => return self.open_db(), Message::DbOpened(result) => { @@ -273,7 +273,7 @@ impl State { .into(), widget::checkbox(self.is_secure) .label("security") - .on_toggle(Message::ChangeSecurity) + .on_toggle(|_| Message::ToggleSecurity) .into(), ]) .spacing(10) @@ -322,17 +322,19 @@ impl State { .filter_map(move |((db_loaded, db_path_exists), event)| match event { iced::Event::Keyboard(keyboard::Event::KeyPressed { key, modifiers, .. }) => { match key.as_ref() { + Key::Character("p" | "f" | "i") if !db_loaded => Some(Message::PickDb), + Key::Character("v" | "s") if !db_loaded => Some(Message::ToggleSecurity), + + Key::Named(key::Named::Enter) if !db_loaded && db_path_exists => { + Some(Message::OpenDb) + } + Key::Named(key::Named::Tab) => Some(if modifiers.shift() { Message::FocusPrevious } else { Message::FocusNext }), - Key::Character("/") => Some(Message::FocusSearch), - - Key::Named(key::Named::Enter) if !db_loaded && db_path_exists => { - Some(Message::OpenDb) - } - Key::Character("p" | "f" | "i") if !db_loaded => Some(Message::PickDb), + Key::Character("/" | "f") => Some(Message::FocusSearch), Key::Character("h") | Key::Named(key::Named::ArrowLeft) => { Some(Message::SelectionLeft)