Add scan button, sort dropdown, and improved empty state to library view

Add a scan button and sort dropdown (Name A-Z, Recently Added, Size)
to the library header bar. Change the empty state to friendlier text
with Scan and Browse Catalog buttons. Default view mode changed to
list. Sort preference persisted via GSettings.
This commit is contained in:
lashman
2026-02-28 01:36:47 +02:00
parent b23f9e14f8
commit 46f46db98c
3 changed files with 116 additions and 14 deletions

View File

@@ -649,6 +649,31 @@ impl DriftwoodWindow {
show_drop_hint_action,
]);
// Sort library action (parameterized with sort mode string)
let sort_action = gio::SimpleAction::new("sort-library", Some(glib::VariantTy::STRING));
{
let window_weak = self.downgrade();
sort_action.connect_activate(move |_, param| {
let Some(window) = window_weak.upgrade() else { return };
let Some(mode_str) = param.and_then(|p| p.get::<String>()) else { return };
let lib_view = window.imp().library_view.get().unwrap();
let sort_mode = match mode_str.as_str() {
"recent" => crate::ui::library_view::SortMode::RecentlyAdded,
"size" => crate::ui::library_view::SortMode::Size,
_ => crate::ui::library_view::SortMode::NameAsc,
};
lib_view.set_sort_mode(sort_mode);
let settings_key = match mode_str.as_str() {
"recent" => "recently-added",
"size" => "size",
_ => "name",
};
let settings = gio::Settings::new(APP_ID);
settings.set_string("sort-mode", settings_key).ok();
});
}
self.add_action(&sort_action);
// --- Batch actions ---
let batch_integrate_action = gio::SimpleAction::new("batch-integrate", None);
{