From a68987f2577bbe63060028f085c50da9b4a48261 Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Thu, 19 Apr 2018 08:04:40 +0300 Subject: [PATCH] h-gtk: Move some stuff from utils to settings module. --- hammond-gtk/src/app.rs | 11 +++++------ hammond-gtk/src/settings.rs | 30 +++++++++++++++++++++++++++++- hammond-gtk/src/utils.rs | 30 +----------------------------- 3 files changed, 35 insertions(+), 36 deletions(-) diff --git a/hammond-gtk/src/app.rs b/hammond-gtk/src/app.rs index 6745dc8..dd2ea41 100644 --- a/hammond-gtk/src/app.rs +++ b/hammond-gtk/src/app.rs @@ -9,7 +9,7 @@ use gtk::SettingsExt as GtkSettingsExt; use hammond_data::Podcast; use headerbar::Header; -use settings::WindowGeometry; +use settings::{self, WindowGeometry}; use stacks::Content; use utils; use widgets::{mark_all_notif, remove_show_notif}; @@ -61,6 +61,9 @@ impl App { glib::set_application_name("Hammond"); glib::set_prgname(Some("Hammond")); + let cleanup_date = settings::get_cleanup_date(&settings); + utils::cleanup(cleanup_date); + // Create the main window let window = gtk::Window::new(gtk::WindowType::Toplevel); @@ -119,13 +122,9 @@ impl App { fn setup_refresh_on_startup(&self) { // Update the feeds right after the Application is initialized. if self.settings.get_boolean("refresh-on-startup") { - let cleanup_date = utils::get_cleanup_date(&self.settings); let sender = self.sender.clone(); info!("Refresh on startup."); - - utils::cleanup(cleanup_date); - // The ui loads async, after initialization // so we need to delay this a bit so it won't block // requests that will come from loading the gui on startup. @@ -138,7 +137,7 @@ impl App { } fn setup_auto_refresh(&self) { - let refresh_interval = utils::get_refresh_interval(&self.settings).num_seconds() as u32; + let refresh_interval = settings::get_refresh_interval(&self.settings).num_seconds() as u32; let sender = self.sender.clone(); info!("Auto-refresh every {:?} seconds.", refresh_interval); diff --git a/hammond-gtk/src/settings.rs b/hammond-gtk/src/settings.rs index 781caa5..1522f0a 100644 --- a/hammond-gtk/src/settings.rs +++ b/hammond-gtk/src/settings.rs @@ -1,8 +1,11 @@ use gio; -use gio::SettingsExt; +use gio::{Settings, SettingsExt}; use gtk; use gtk::GtkWindowExt; +use chrono::prelude::*; +use chrono::Duration; + pub struct WindowGeometry { left: i32, top: i32, @@ -67,6 +70,31 @@ impl WindowGeometry { } } +pub fn get_refresh_interval(settings: &Settings) -> Duration { + let time = settings.get_int("refresh-interval-time") as i64; + let period = settings.get_string("refresh-interval-period").unwrap(); + + time_period_to_duration(time, period.as_str()) +} + +pub fn get_cleanup_date(settings: &Settings) -> DateTime { + let time = settings.get_int("cleanup-age-time") as i64; + let period = settings.get_string("cleanup-age-period").unwrap(); + let duration = time_period_to_duration(time, period.as_str()); + + Utc::now() - duration +} + +pub fn time_period_to_duration(time: i64, period: &str) -> Duration { + match period { + "weeks" => Duration::weeks(time), + "days" => Duration::days(time), + "hours" => Duration::hours(time), + "minutes" => Duration::minutes(time), + _ => Duration::seconds(time), + } +} + // #[test] // fn test_apply_window_geometry() { // gtk::init().expect("Error initializing gtk."); diff --git a/hammond-gtk/src/utils.rs b/hammond-gtk/src/utils.rs index d906515..a86fe9e 100644 --- a/hammond-gtk/src/utils.rs +++ b/hammond-gtk/src/utils.rs @@ -1,12 +1,12 @@ #![cfg_attr(feature = "cargo-clippy", allow(type_complexity))] use gdk_pixbuf::Pixbuf; -use gio::{Settings, SettingsExt}; use glib; use gtk; use gtk::prelude::*; use gtk::{IsA, Widget}; +use chrono::prelude::*; use failure::Error; use rayon; use regex::Regex; @@ -28,9 +28,6 @@ use std::sync::{Mutex, RwLock}; use app::Action; -use chrono::prelude::*; -use chrono::Duration; - /// Lazy evaluates and loads widgets to the parent `container` widget. /// /// Accepts an `IntoIterator`, `data`, as the source from which each widget @@ -144,21 +141,6 @@ where .ok(); } -pub fn get_refresh_interval(settings: &Settings) -> Duration { - let time = settings.get_int("refresh-interval-time") as i64; - let period = settings.get_string("refresh-interval-period").unwrap(); - - time_period_to_duration(time, period.as_str()) -} - -pub fn get_cleanup_date(settings: &Settings) -> DateTime { - let time = settings.get_int("cleanup-age-time") as i64; - let period = settings.get_string("cleanup-age-period").unwrap(); - let duration = time_period_to_duration(time, period.as_str()); - - Utc::now() - duration -} - /// Update the rss feed(s) originating from `source`. /// If `source` is None, Fetches all the `Source` entries in the database and updates them. /// When It's done,it queues up a `RefreshViews` action. @@ -315,16 +297,6 @@ fn lookup_id(id: u32) -> Result { .ok_or_else(|| format_err!("Failed to get url from itunes response")) } -pub fn time_period_to_duration(time: i64, period: &str) -> Duration { - match period { - "weeks" => Duration::weeks(time), - "days" => Duration::days(time), - "hours" => Duration::hours(time), - "minutes" => Duration::minutes(time), - _ => Duration::seconds(time), - } -} - #[cfg(test)] mod tests { use super::*;