h-gtk: Move some stuff from utils to settings module.
This commit is contained in:
parent
3b5831f317
commit
a68987f257
@ -9,7 +9,7 @@ use gtk::SettingsExt as GtkSettingsExt;
|
|||||||
use hammond_data::Podcast;
|
use hammond_data::Podcast;
|
||||||
|
|
||||||
use headerbar::Header;
|
use headerbar::Header;
|
||||||
use settings::WindowGeometry;
|
use settings::{self, WindowGeometry};
|
||||||
use stacks::Content;
|
use stacks::Content;
|
||||||
use utils;
|
use utils;
|
||||||
use widgets::{mark_all_notif, remove_show_notif};
|
use widgets::{mark_all_notif, remove_show_notif};
|
||||||
@ -61,6 +61,9 @@ impl App {
|
|||||||
glib::set_application_name("Hammond");
|
glib::set_application_name("Hammond");
|
||||||
glib::set_prgname(Some("Hammond"));
|
glib::set_prgname(Some("Hammond"));
|
||||||
|
|
||||||
|
let cleanup_date = settings::get_cleanup_date(&settings);
|
||||||
|
utils::cleanup(cleanup_date);
|
||||||
|
|
||||||
// Create the main window
|
// Create the main window
|
||||||
let window = gtk::Window::new(gtk::WindowType::Toplevel);
|
let window = gtk::Window::new(gtk::WindowType::Toplevel);
|
||||||
|
|
||||||
@ -119,13 +122,9 @@ impl App {
|
|||||||
fn setup_refresh_on_startup(&self) {
|
fn setup_refresh_on_startup(&self) {
|
||||||
// Update the feeds right after the Application is initialized.
|
// Update the feeds right after the Application is initialized.
|
||||||
if self.settings.get_boolean("refresh-on-startup") {
|
if self.settings.get_boolean("refresh-on-startup") {
|
||||||
let cleanup_date = utils::get_cleanup_date(&self.settings);
|
|
||||||
let sender = self.sender.clone();
|
let sender = self.sender.clone();
|
||||||
|
|
||||||
info!("Refresh on startup.");
|
info!("Refresh on startup.");
|
||||||
|
|
||||||
utils::cleanup(cleanup_date);
|
|
||||||
|
|
||||||
// The ui loads async, after initialization
|
// The ui loads async, after initialization
|
||||||
// so we need to delay this a bit so it won't block
|
// so we need to delay this a bit so it won't block
|
||||||
// requests that will come from loading the gui on startup.
|
// requests that will come from loading the gui on startup.
|
||||||
@ -138,7 +137,7 @@ impl App {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn setup_auto_refresh(&self) {
|
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();
|
let sender = self.sender.clone();
|
||||||
|
|
||||||
info!("Auto-refresh every {:?} seconds.", refresh_interval);
|
info!("Auto-refresh every {:?} seconds.", refresh_interval);
|
||||||
|
|||||||
@ -1,8 +1,11 @@
|
|||||||
use gio;
|
use gio;
|
||||||
use gio::SettingsExt;
|
use gio::{Settings, SettingsExt};
|
||||||
use gtk;
|
use gtk;
|
||||||
use gtk::GtkWindowExt;
|
use gtk::GtkWindowExt;
|
||||||
|
|
||||||
|
use chrono::prelude::*;
|
||||||
|
use chrono::Duration;
|
||||||
|
|
||||||
pub struct WindowGeometry {
|
pub struct WindowGeometry {
|
||||||
left: i32,
|
left: i32,
|
||||||
top: 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<Utc> {
|
||||||
|
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]
|
// #[test]
|
||||||
// fn test_apply_window_geometry() {
|
// fn test_apply_window_geometry() {
|
||||||
// gtk::init().expect("Error initializing gtk.");
|
// gtk::init().expect("Error initializing gtk.");
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
#![cfg_attr(feature = "cargo-clippy", allow(type_complexity))]
|
#![cfg_attr(feature = "cargo-clippy", allow(type_complexity))]
|
||||||
|
|
||||||
use gdk_pixbuf::Pixbuf;
|
use gdk_pixbuf::Pixbuf;
|
||||||
use gio::{Settings, SettingsExt};
|
|
||||||
use glib;
|
use glib;
|
||||||
use gtk;
|
use gtk;
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
use gtk::{IsA, Widget};
|
use gtk::{IsA, Widget};
|
||||||
|
|
||||||
|
use chrono::prelude::*;
|
||||||
use failure::Error;
|
use failure::Error;
|
||||||
use rayon;
|
use rayon;
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
@ -28,9 +28,6 @@ use std::sync::{Mutex, RwLock};
|
|||||||
|
|
||||||
use app::Action;
|
use app::Action;
|
||||||
|
|
||||||
use chrono::prelude::*;
|
|
||||||
use chrono::Duration;
|
|
||||||
|
|
||||||
/// Lazy evaluates and loads widgets to the parent `container` widget.
|
/// Lazy evaluates and loads widgets to the parent `container` widget.
|
||||||
///
|
///
|
||||||
/// Accepts an `IntoIterator`, `data`, as the source from which each widget
|
/// Accepts an `IntoIterator`, `data`, as the source from which each widget
|
||||||
@ -144,21 +141,6 @@ where
|
|||||||
.ok();
|
.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<Utc> {
|
|
||||||
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`.
|
/// Update the rss feed(s) originating from `source`.
|
||||||
/// If `source` is None, Fetches all the `Source` entries in the database and updates them.
|
/// 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.
|
/// When It's done,it queues up a `RefreshViews` action.
|
||||||
@ -315,16 +297,6 @@ fn lookup_id(id: u32) -> Result<String, Error> {
|
|||||||
.ok_or_else(|| format_err!("Failed to get url from itunes response"))
|
.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)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user