diff --git a/src/window.rs b/src/window.rs index 2b7ed2a..6cd6713 100644 --- a/src/window.rs +++ b/src/window.rs @@ -985,6 +985,43 @@ impl DriftwoodWindow { } self.add_action(©_path_action); + // View switching actions for keyboard shortcuts + let show_installed_action = gio::SimpleAction::new("show-installed", None); + { + let window_weak = self.downgrade(); + show_installed_action.connect_activate(move |_, _| { + let Some(window) = window_weak.upgrade() else { return }; + if let Some(vs) = window.imp().view_stack.get() { + vs.set_visible_child_name("installed"); + } + }); + } + self.add_action(&show_installed_action); + + let show_catalog_action = gio::SimpleAction::new("show-catalog", None); + { + let window_weak = self.downgrade(); + show_catalog_action.connect_activate(move |_, _| { + let Some(window) = window_weak.upgrade() else { return }; + if let Some(vs) = window.imp().view_stack.get() { + vs.set_visible_child_name("catalog"); + } + }); + } + self.add_action(&show_catalog_action); + + let show_updates_action = gio::SimpleAction::new("show-updates", None); + { + let window_weak = self.downgrade(); + show_updates_action.connect_activate(move |_, _| { + let Some(window) = window_weak.upgrade() else { return }; + if let Some(vs) = window.imp().view_stack.get() { + vs.set_visible_child_name("updates"); + } + }); + } + self.add_action(&show_updates_action); + // Keyboard shortcuts if let Some(app) = self.application() { let gtk_app = app.downcast_ref::().unwrap(); @@ -994,6 +1031,9 @@ impl DriftwoodWindow { gtk_app.set_accels_for_action("win.dashboard", &["d"]); gtk_app.set_accels_for_action("win.check-updates", &["u"]); gtk_app.set_accels_for_action("win.show-shortcuts", &["question"]); + gtk_app.set_accels_for_action("win.show-installed", &["1"]); + gtk_app.set_accels_for_action("win.show-catalog", &["2"]); + gtk_app.set_accels_for_action("win.show-updates", &["3"]); } } @@ -1409,6 +1449,9 @@ impl DriftwoodWindow { let nav_group = adw::PreferencesGroup::builder() .title("Navigation") .build(); + nav_group.add(&shortcut_row("Ctrl+1", "Installed")); + nav_group.add(&shortcut_row("Ctrl+2", "Catalog")); + nav_group.add(&shortcut_row("Ctrl+3", "Updates")); nav_group.add(&shortcut_row("Ctrl+F", "Search")); nav_group.add(&shortcut_row("Ctrl+D", "Dashboard")); nav_group.add(&shortcut_row("Ctrl+,", "Preferences"));