From 308374396bf4090b69ba757495c64d4d53ca883e Mon Sep 17 00:00:00 2001 From: Hannes Kuchelmeister Date: Sun, 28 Jul 2024 14:53:38 +0200 Subject: [PATCH] add settings loading --- src/app.rs | 1 - src/modals/settings.rs | 26 +++++++++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/app.rs b/src/app.rs index 8c1c2f1..fd53da9 100644 --- a/src/app.rs +++ b/src/app.rs @@ -210,7 +210,6 @@ impl Component for App { actions.register_for_widget(&widgets.main_window); widgets.load_window_size(); - ComponentParts { model, widgets } } diff --git a/src/modals/settings.rs b/src/modals/settings.rs index 9184714..7f72bf5 100644 --- a/src/modals/settings.rs +++ b/src/modals/settings.rs @@ -1,11 +1,14 @@ +use crate::util::prerequisit::get_installed_terminals; use relm4::adw::prelude::{ ComboRowExt, PreferencesGroupExt, PreferencesPageExt, PreferencesRowExt, PreferencesWindowExt, }; use relm4::gtk::prelude::GtkWindowExt; use relm4::view; use relm4::{adw, gtk, ComponentParts, ComponentSender, SimpleComponent}; - pub struct SettingsDialog {} +use crate::APP_ID; +use gtk::gio; +use relm4::gtk::prelude::SettingsExt; impl SimpleComponent for SettingsDialog { type Init = (); @@ -29,11 +32,24 @@ impl SimpleComponent for SettingsDialog { let sort_function = |to_insert: >k::glib::Object, existing: >k::glib::Object| -> std::cmp::Ordering { to_insert.cmp(existing) }; - terminal_selection_model.insert_sorted(>k::StringObject::new("Test"), &sort_function); - terminal_selection_model.insert_sorted(>k::StringObject::new("Test2"), &sort_function); - terminal_selection_model.insert_sorted(>k::StringObject::new("Test3"), &sort_function); - let terminal_selection = 2; + let terminals = get_installed_terminals().unwrap_or_default(); + + terminals.iter().for_each(|t| { + terminal_selection_model.insert_sorted( + >k::StringObject::new(format!("{:?}", t).as_str()), + &sort_function, + ); + }); + + let settings = gio::Settings::new(APP_ID); + let terminal = settings.string("terminal"); + + let terminal_selection = terminal_selection_model + .find_with_equal_func(|obj| obj == >k::StringObject::new(terminal.as_str())) + .unwrap_or(0); + + // TODO: save settings on drop down change view! { widgets = root.clone() {