dialog: implement view and sort menu as designed

This commit is contained in:
Jeremy Soller 2024-09-11 14:22:40 -06:00
parent 36d61d574d
commit b851f3dd66
No known key found for this signature in database
GPG key ID: D02FD439211AF56F
2 changed files with 90 additions and 4 deletions

View file

@ -43,6 +43,7 @@ use crate::{
config::{Config, Favorite, TabConfig},
fl, home_dir,
localize::LANGUAGE_SORTER,
menu,
mounter::{mounters, MounterItem, MounterItems, MounterKey, Mounters},
tab::{self, ItemMetadata, Location, Tab},
};
@ -293,6 +294,7 @@ struct Flags {
/// Messages that are used specifically by our [`App`].
#[derive(Clone, Debug)]
enum Message {
None,
Cancel,
Choice(usize, usize),
Config(Config),
@ -682,9 +684,16 @@ impl Application for App {
*/
elements.push(
widget::segmented_control::horizontal(&self.view_model)
.on_activate(Message::ViewSelect)
.width(Length::Shrink)
menu::dialog_menu(&self.tab, &self.key_binds)
.map(|message| match message {
AppMessage::TabMessage(_entity_opt, tab_message) => {
Message::TabMessage(tab_message)
}
unsupported => {
log::warn!("{unsupported:?} not supported in dialog mode");
Message::None
}
})
.into(),
);
@ -773,6 +782,7 @@ impl Application for App {
/// Handle application events here.
fn update(&mut self, message: Message) -> Command<Message> {
match message {
Message::None => {}
Message::Cancel => {
if self.replace_dialog {
self.replace_dialog = false;