From cc3c0737e407a8381ead2de5995c27bb2ceabcfc Mon Sep 17 00:00:00 2001 From: pknepps Date: Wed, 5 Jun 2024 18:48:51 -0400 Subject: [PATCH] Added the "Empty Trash" button on the Trashes nav-menu. --- src/app.rs | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/src/app.rs b/src/app.rs index d33652d..b291bb4 100644 --- a/src/app.rs +++ b/src/app.rs @@ -181,6 +181,7 @@ pub enum NavMenuAction { OpenInNewWindow(segmented_button::Entity), Properties(segmented_button::Entity), RemoveFromSidebar(segmented_button::Entity), + EmptyTrash(segmented_button::Entity), } impl MenuAction for NavMenuAction { @@ -949,6 +950,16 @@ impl Application for App { &self, id: widget::nav_bar::Id, ) -> Option>>> { + let maybe_trash_entity = self.nav_model.iter().find(|&entity| { + self.nav_model + .data::(entity) + .map(|loc| *loc == Location::Trash) + .unwrap_or_default() + }); + let mut is_context_trash = false; + if let Some(trash_id) = maybe_trash_entity { + is_context_trash = trash_id == id; + } Some(cosmic::widget::menu::items( &HashMap::new(), vec![ @@ -966,10 +977,17 @@ impl Application for App { NavMenuAction::Properties(id), ), cosmic::widget::menu::Item::Divider, - cosmic::widget::menu::Item::Button( - fl!("remove-from-sidebar"), - NavMenuAction::RemoveFromSidebar(id), - ), + if is_context_trash { + cosmic ::widget::menu::Item::Button( + fl!("empty-trash"), + NavMenuAction::EmptyTrash(id), + ) + } else { + cosmic::widget::menu::Item::Button( + fl!("remove-from-sidebar"), + NavMenuAction::RemoveFromSidebar(id), + ) + }, ], )) } @@ -1899,6 +1917,11 @@ impl Application for App { return self.update_config(); } } + + NavMenuAction::EmptyTrash(_) => { + self.dialog_pages.push_front(DialogPage::EmptyTrash); + self.dialog(); + } }, }