From b41c4768d9b2e41532ae0018469809ff37280216 Mon Sep 17 00:00:00 2001 From: Rubén Beltrán del Río Date: Mon, 19 Jan 2026 00:38:37 +0100 Subject: Update to use Gnome 48 features --- src/preferences/pages/general.rs | 58 ++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 35 deletions(-) (limited to 'src/preferences/pages/general.rs') diff --git a/src/preferences/pages/general.rs b/src/preferences/pages/general.rs index ad15c82..d1596c4 100644 --- a/src/preferences/pages/general.rs +++ b/src/preferences/pages/general.rs @@ -97,31 +97,25 @@ pub fn show_export_dialog(sender: &Sender, window: >k::Windo filter.add_pattern("*.json"); filter.set_name(Some(&tr!("dialog.file_type.json"))); - let dialog = gtk::FileChooserDialog::new( - Some(&tr!("dialog.export_preferences.title")), - Some(window), - gtk::FileChooserAction::Save, - &[ - (&tr!("dialog.action.cancel"), gtk::ResponseType::Cancel), - (&tr!("dialog.action.save"), gtk::ResponseType::Accept), - ], - ); - dialog.set_current_name("preferences.json"); - dialog.add_filter(&filter); - dialog.set_modal(true); + let filters = gtk::gio::ListStore::new::(); + filters.append(&filter); + + let dialog = gtk::FileDialog::builder() + .title(tr!("dialog.export_preferences.title")) + .modal(true) + .filters(&filters) + .initial_name("preferences.json") + .build(); let sender = sender.clone(); - dialog.connect_response(move |dialog, response| { - if response == gtk::ResponseType::Accept - && let Some(file) = dialog.file() + let window = window.clone(); + gtk::glib::spawn_future_local(async move { + if let Ok(file) = dialog.save_future(Some(&window)).await && let Some(path) = file.path() { sender.emit(PreferencesInput::ExportToFile(path)); } - dialog.close(); }); - - dialog.present(); } pub fn show_import_dialog(sender: &Sender, window: >k::Window) { @@ -129,28 +123,22 @@ pub fn show_import_dialog(sender: &Sender, window: >k::Windo filter.add_pattern("*.json"); filter.set_name(Some(&tr!("dialog.file_type.json"))); - let dialog = gtk::FileChooserDialog::new( - Some(&tr!("dialog.import_preferences.title")), - Some(window), - gtk::FileChooserAction::Open, - &[ - (&tr!("dialog.action.cancel"), gtk::ResponseType::Cancel), - (&tr!("dialog.action.open"), gtk::ResponseType::Accept), - ], - ); - dialog.add_filter(&filter); - dialog.set_modal(true); + let filters = gtk::gio::ListStore::new::(); + filters.append(&filter); + + let dialog = gtk::FileDialog::builder() + .title(tr!("dialog.import_preferences.title")) + .modal(true) + .filters(&filters) + .build(); let sender = sender.clone(); - dialog.connect_response(move |dialog, response| { - if response == gtk::ResponseType::Accept - && let Some(file) = dialog.file() + let window = window.clone(); + gtk::glib::spawn_future_local(async move { + if let Ok(file) = dialog.open_future(Some(&window)).await && let Some(path) = file.path() { sender.emit(PreferencesInput::ImportFromFile(path)); } - dialog.close(); }); - - dialog.present(); } -- cgit