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:
@@ -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);
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user