From ef2286dca48f86984360a2cc5040704bc87ddb85 Mon Sep 17 00:00:00 2001 From: Zander Brown Date: Mon, 21 May 2018 23:26:13 +0100 Subject: [PATCH] Bind refresh/cleanup rate --- hammond-gtk/resources/gtk/hamburger.ui | 2 +- hammond-gtk/resources/gtk/help-overlay.ui | 2 +- hammond-gtk/resources/gtk/prefs.ui | 32 +++++++++++++++- hammond-gtk/src/prefs.rs | 45 ++++++++++++++++++++++- 4 files changed, 77 insertions(+), 4 deletions(-) diff --git a/hammond-gtk/resources/gtk/hamburger.ui b/hammond-gtk/resources/gtk/hamburger.ui index 1ea720f..87883a4 100644 --- a/hammond-gtk/resources/gtk/hamburger.ui +++ b/hammond-gtk/resources/gtk/hamburger.ui @@ -21,7 +21,7 @@ _Preferences app.preferences - <primary>, + <primary>e
diff --git a/hammond-gtk/resources/gtk/help-overlay.ui b/hammond-gtk/resources/gtk/help-overlay.ui index 313e119..2ae4b56 100644 --- a/hammond-gtk/resources/gtk/help-overlay.ui +++ b/hammond-gtk/resources/gtk/help-overlay.ui @@ -21,7 +21,7 @@ True - <primary>, + <primary>e Preferences diff --git a/hammond-gtk/resources/gtk/prefs.ui b/hammond-gtk/resources/gtk/prefs.ui index 204318b..e820d1c 100644 --- a/hammond-gtk/resources/gtk/prefs.ui +++ b/hammond-gtk/resources/gtk/prefs.ui @@ -2,6 +2,20 @@ + + 1 + 100 + 1 + 1 + 10 + + + 1 + 100 + 1 + 1 + 10 + False Preferences @@ -69,6 +83,8 @@ 50 True True + False + False True @@ -157,6 +173,8 @@ 50 True True + False + False True @@ -200,6 +218,8 @@ 50 True True + False + False True @@ -243,6 +263,8 @@ 50 True True + False + False True @@ -272,6 +294,9 @@ True True digits + refresh_value_adj + 1 + 1 False @@ -357,6 +382,8 @@ 50 True True + False + False True @@ -386,6 +413,9 @@ True True digits + cleanup_value_adj + 1 + 1 False @@ -446,7 +476,7 @@ - + diff --git a/hammond-gtk/src/prefs.rs b/hammond-gtk/src/prefs.rs index 6ad3743..9924c0e 100644 --- a/hammond-gtk/src/prefs.rs +++ b/hammond-gtk/src/prefs.rs @@ -9,7 +9,9 @@ pub struct Prefs { dark_toggle: gtk::Switch, startup_toggle: gtk::Switch, auto_toggle: gtk::Switch, + refresh_value: gtk::SpinButton, refresh_type: gtk::ComboBox, + cleanup_value: gtk::SpinButton, cleanup_type: gtk::ComboBox, } @@ -21,7 +23,9 @@ impl Default for Prefs { let dark_toggle = builder.get_object("dark_toggle").unwrap(); let startup_toggle = builder.get_object("startup_toggle").unwrap(); let auto_toggle = builder.get_object("auto_toggle").unwrap(); + let refresh_value = builder.get_object("refresh_value").unwrap(); let refresh_type = builder.get_object("refresh_type").unwrap(); + let cleanup_value = builder.get_object("cleanup_value").unwrap(); let cleanup_type = builder.get_object("cleanup_type").unwrap(); Prefs { @@ -29,7 +33,9 @@ impl Default for Prefs { dark_toggle, startup_toggle, auto_toggle, + refresh_value, refresh_type, + cleanup_value, cleanup_type, } } @@ -62,10 +68,34 @@ impl Prefs { "active", gio::SettingsBindFlags::DEFAULT, ); + settings.bind( + "refresh-interval-time", + &self.refresh_value, + "value", + gio::SettingsBindFlags::DEFAULT, + ); + settings.bind( + "cleanup-age-time", + &self.cleanup_value, + "value", + gio::SettingsBindFlags::DEFAULT, + ); + let refresh_p = settings.get_string("refresh-interval-period").unwrap(); + let mut refresh_pos = 0; + let cleanup_p = settings.get_string("cleanup-age-period").unwrap(); + let mut cleanup_pos = 0; let store = gtk::ListStore::new(&[gtk::Type::String]); + let mut i = 0; for item in ["Seconds", "Minutes", "Hours", "Days", "Weeks"].iter() { let row = [&(item) as &ToValue]; + if item.to_lowercase() == refresh_p { + refresh_pos = i; + } + if item.to_lowercase() == cleanup_p { + cleanup_pos = i; + } store.insert_with_values(None, &[0], &row); + i += 1 ; } for combo in [self.refresh_type.clone(), self.cleanup_type.clone()].iter() { combo.set_model(Some(&store)); @@ -73,7 +103,20 @@ impl Prefs { combo.pack_start(&renderer, true); combo.add_attribute(&renderer, "text", 0); } - // settings.get_string("cleanup-age-period").unwrap(); + self.refresh_type.set_active(refresh_pos); + self.refresh_type + .connect_changed(clone!(settings, store => move |combo| { + let value = store.get_value(&combo.get_active_iter().unwrap(), 0); + let value: &str = value.get().unwrap(); + settings.set_string("refresh-interval-period", &value.to_lowercase()); + })); + self.cleanup_type.set_active(cleanup_pos); + self.cleanup_type + .connect_changed(clone!(settings, store => move |combo| { + let value = store.get_value(&combo.get_active_iter().unwrap(), 0); + let value: &str = value.get().unwrap(); + settings.set_string("cleanup-age-period", &value.to_lowercase()); + })); } pub fn show(&self, parent: >k::Window) {