From 29cf5940f5b2970a977e170aa9b38f0344dbfff5 Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Sat, 7 Apr 2018 05:53:13 +0300 Subject: [PATCH] Lazy_load: move to utils module and make it public. --- hammond-gtk/src/utils.rs | 18 ++++++++++++++++++ hammond-gtk/src/widgets/episode.rs | 20 +------------------- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/hammond-gtk/src/utils.rs b/hammond-gtk/src/utils.rs index 81a9bad..928026e 100644 --- a/hammond-gtk/src/utils.rs +++ b/hammond-gtk/src/utils.rs @@ -4,6 +4,7 @@ use gdk_pixbuf::Pixbuf; use gio::{Settings, SettingsExt}; use glib; use gtk; +use gtk::{IsA, Widget}; use gtk::prelude::*; use failure::Error; @@ -30,6 +31,23 @@ use app::Action; use chrono::Duration; use chrono::prelude::*; +pub fn lazy_load(data: T, container: C, mut contructor: F) +where + T: IntoIterator + 'static, + T::Item: 'static, + C: ContainerExt + 'static, + F: FnMut(T::Item) -> W + 'static, + W: IsA, +{ + let mut data = data.into_iter(); + gtk::idle_add(move || { + data.next() + .map(|x| container.add(&contructor(x))) + .map(|_| glib::Continue(true)) + .unwrap_or(glib::Continue(false)) + }); +} + lazy_static! { static ref IGNORESHOWS: Arc>> = Arc::new(Mutex::new(HashSet::new())); } diff --git a/hammond-gtk/src/widgets/episode.rs b/hammond-gtk/src/widgets/episode.rs index 83a47fb..ec4a595 100644 --- a/hammond-gtk/src/widgets/episode.rs +++ b/hammond-gtk/src/widgets/episode.rs @@ -14,6 +14,7 @@ use hammond_data::utils::get_download_folder; use app::Action; use manager; +use utils::lazy_load; use widgets::episode_states::*; use std::cell::RefCell; @@ -392,22 +393,3 @@ pub fn episodes_listbox(pd: Arc, sender: Sender) -> Result(data: T, container: C, mut contructor: F) -where - T: IntoIterator + 'static, - T::Item: 'static, - C: ContainerExt + 'static, - F: FnMut(T::Item) -> W + 'static, - W: IsA, -{ - let mut data = data.into_iter(); - gtk::idle_add(move || { - data.next() - .map(|x| container.add(&contructor(x))) - .map(|_| glib::Continue(true)) - .unwrap_or(glib::Continue(false)) - }); -}