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(); + } }, }