Added the "Empty Trash" button on the Trashes nav-menu.

This commit is contained in:
pknepps 2024-06-05 18:48:51 -04:00
parent c639d6d1e6
commit cc3c0737e4

View file

@ -181,6 +181,7 @@ pub enum NavMenuAction {
OpenInNewWindow(segmented_button::Entity), OpenInNewWindow(segmented_button::Entity),
Properties(segmented_button::Entity), Properties(segmented_button::Entity),
RemoveFromSidebar(segmented_button::Entity), RemoveFromSidebar(segmented_button::Entity),
EmptyTrash(segmented_button::Entity),
} }
impl MenuAction for NavMenuAction { impl MenuAction for NavMenuAction {
@ -949,6 +950,16 @@ impl Application for App {
&self, &self,
id: widget::nav_bar::Id, id: widget::nav_bar::Id,
) -> Option<Vec<widget::menu::Tree<cosmic::app::Message<Self::Message>>>> { ) -> Option<Vec<widget::menu::Tree<cosmic::app::Message<Self::Message>>>> {
let maybe_trash_entity = self.nav_model.iter().find(|&entity| {
self.nav_model
.data::<Location>(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( Some(cosmic::widget::menu::items(
&HashMap::new(), &HashMap::new(),
vec![ vec![
@ -966,10 +977,17 @@ impl Application for App {
NavMenuAction::Properties(id), NavMenuAction::Properties(id),
), ),
cosmic::widget::menu::Item::Divider, cosmic::widget::menu::Item::Divider,
cosmic::widget::menu::Item::Button( if is_context_trash {
fl!("remove-from-sidebar"), cosmic ::widget::menu::Item::Button(
NavMenuAction::RemoveFromSidebar(id), 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(); return self.update_config();
} }
} }
NavMenuAction::EmptyTrash(_) => {
self.dialog_pages.push_front(DialogPage::EmptyTrash);
self.dialog();
}
}, },
} }