Add desktop context menu items, part of #547

This commit is contained in:
Jeremy Soller 2024-10-03 15:41:27 -06:00
parent 7f60a0c710
commit afa7c30857
No known key found for this signature in database
GPG key ID: D02FD439211AF56F
3 changed files with 39 additions and 0 deletions

View file

@ -203,6 +203,11 @@ sort-by-modified = Sort by modified
sort-by-size = Sort by size sort-by-size = Sort by size
sort-by-trashed = Sort by delete time sort-by-trashed = Sort by delete time
## Desktop
change-wallpaper = Change wallpaper...
desktop-appearance = Desktop appearance...
display-settings = Display settings...
# Menu # Menu
## File ## File

View file

@ -93,6 +93,9 @@ pub enum Action {
Compress, Compress,
Copy, Copy,
Cut, Cut,
CosmicSettingsAppearance,
CosmicSettingsDisplays,
CosmicSettingsWallpaper,
EditHistory, EditHistory,
EditLocation, EditLocation,
ExtractHere, ExtractHere,
@ -146,6 +149,9 @@ impl Action {
Action::Compress => Message::Compress(entity_opt), Action::Compress => Message::Compress(entity_opt),
Action::Copy => Message::Copy(entity_opt), Action::Copy => Message::Copy(entity_opt),
Action::Cut => Message::Cut(entity_opt), Action::Cut => Message::Cut(entity_opt),
Action::CosmicSettingsAppearance => Message::CosmicSettings("appearance"),
Action::CosmicSettingsDisplays => Message::CosmicSettings("displays"),
Action::CosmicSettingsWallpaper => Message::CosmicSettings("wallpaper"),
Action::EditHistory => Message::ToggleContextPage(ContextPage::EditHistory), Action::EditHistory => Message::ToggleContextPage(ContextPage::EditHistory),
Action::EditLocation => { Action::EditLocation => {
Message::TabMessage(entity_opt, tab::Message::EditLocationToggle) Message::TabMessage(entity_opt, tab::Message::EditLocationToggle)
@ -253,6 +259,7 @@ pub enum Message {
Compress(Option<Entity>), Compress(Option<Entity>),
Config(Config), Config(Config),
Copy(Option<Entity>), Copy(Option<Entity>),
CosmicSettings(&'static str),
Cut(Option<Entity>), Cut(Option<Entity>),
DialogCancel, DialogCancel,
DialogComplete, DialogComplete,
@ -1390,6 +1397,17 @@ impl Application for App {
Message::CloseToast(id) => { Message::CloseToast(id) => {
self.toasts.remove(id); self.toasts.remove(id);
} }
Message::CosmicSettings(arg) => {
//TODO: use special settings URL scheme instead?
let mut command = process::Command::new("cosmic-settings");
command.arg(arg);
match spawn_detached(&mut command) {
Ok(()) => {}
Err(err) => {
log::warn!("failed to run cosmic-settings {}: {}", arg, err)
}
}
}
Message::DialogCancel => { Message::DialogCancel => {
self.dialog_pages.pop_front(); self.dialog_pages.pop_front();
} }

View file

@ -168,6 +168,22 @@ pub fn context_menu<'a>(
children.push(menu_item(fl!("select-all"), Action::SelectAll).into()); children.push(menu_item(fl!("select-all"), Action::SelectAll).into());
} }
children.push(menu_item(fl!("paste"), Action::Paste).into()); children.push(menu_item(fl!("paste"), Action::Paste).into());
//TODO: only show if cosmic-settings is found?
if matches!(tab.mode, tab::Mode::Desktop) {
children.push(divider::horizontal::light().into());
children.push(
menu_item(fl!("change-wallpaper"), Action::CosmicSettingsWallpaper).into(),
);
children.push(
menu_item(fl!("desktop-appearance"), Action::CosmicSettingsAppearance)
.into(),
);
children.push(
menu_item(fl!("display-settings"), Action::CosmicSettingsDisplays).into(),
);
}
children.push(divider::horizontal::light().into()); children.push(divider::horizontal::light().into());
// TODO: Nested menu // TODO: Nested menu
children.push(sort_item(fl!("sort-by-name"), HeadingOptions::Name)); children.push(sort_item(fl!("sort-by-name"), HeadingOptions::Name));