diff --git a/hammond-gtk/src/headerbar.rs b/hammond-gtk/src/headerbar.rs index beb448e..9ee110d 100644 --- a/hammond-gtk/src/headerbar.rs +++ b/hammond-gtk/src/headerbar.rs @@ -37,7 +37,7 @@ pub fn get_headerbar( let url = new_url.get_text().unwrap(); let _ = index_feed::insert_return_source(&tempdb, &url); drop(tempdb); - println!("{:?} feed added", url); + info!("{:?} feed added", url); // update the db utils::refresh_db(db_clone.clone()); diff --git a/hammond-gtk/src/main.rs b/hammond-gtk/src/main.rs index 2dccb5d..c6ff799 100644 --- a/hammond-gtk/src/main.rs +++ b/hammond-gtk/src/main.rs @@ -15,28 +15,25 @@ extern crate open; use log::LogLevel; use hammond_data::index_feed; -use hammond_downloader::downloader; use std::sync::{Arc, Mutex}; use gtk::prelude::*; use gio::ApplicationExt; -use gdk_pixbuf::Pixbuf; pub mod views; pub mod widgets; pub mod headerbar; pub mod utils; -use widgets::podcast::{create_flowbox_child, podcast_liststore, podcast_widget}; +use widgets::podcast::*; +use views::podcasts_view::populate_podcasts_flowbox; /* THIS IS STILL A PROTOTYPE. -THE CODE IS TERIBLE, SPAGHETTI AND HAS UNWRAPS EVERYWHERE. +THE CODE IS TERIBLE AND USES UNWRAPS EVERYWHERE. */ -// I am sorry about the spaghetti code. -// Gonna clean it up when the GUI is a bit usuable. fn build_ui() { let glade_src = include_str!("../gtk/foo.ui"); let builder = gtk::Builder::new_from_string(glade_src); @@ -67,49 +64,7 @@ fn build_ui() { let header = headerbar::get_headerbar(db.clone(), stack.clone(), grid.clone()); window.set_titlebar(&header); - let tempdb = db.lock().unwrap(); - let pd_model = podcast_liststore(&tempdb); - drop(tempdb); - - // Get a ListStore iterator at the first element. - let iter = pd_model.get_iter_first().unwrap(); - - // Iterate the podcast view. - loop { - let title = pd_model.get_value(&iter, 1).get::().unwrap(); - let description = pd_model.get_value(&iter, 2).get::().unwrap(); - let image_uri = pd_model.get_value(&iter, 4).get::(); - - let imgpath = downloader::cache_image(&title, image_uri.as_ref().map(|s| s.as_str())); - - let pixbuf = if let Some(i) = imgpath { - Pixbuf::new_from_file_at_scale(&i, 200, 200, true).ok() - } else { - None - }; - - let f = create_flowbox_child(&title, pixbuf.clone()); - let stack_clone = stack.clone(); - let db_clone = db.clone(); - f.connect_activate(move |_| { - let pdw = stack_clone.get_child_by_name("pdw").unwrap(); - stack_clone.remove(&pdw); - let pdw = podcast_widget( - db_clone.clone(), - Some(title.as_str()), - Some(description.as_str()), - pixbuf.clone(), - ); - stack_clone.add_named(&pdw, "pdw"); - stack_clone.set_visible_child(&pdw); - println!("Hello World!, child activated"); - }); - flowbox.add(&f); - - if !pd_model.iter_next(&iter) { - break; - } - } + populate_podcasts_flowbox(db.clone(), stack.clone(), flowbox.clone()); window.show_all(); gtk::main(); diff --git a/hammond-gtk/src/views/podcasts_view.rs b/hammond-gtk/src/views/podcasts_view.rs index 8b13789..c390d77 100644 --- a/hammond-gtk/src/views/podcasts_view.rs +++ b/hammond-gtk/src/views/podcasts_view.rs @@ -1 +1,61 @@ +use gtk; +use gtk::prelude::*; +use gdk_pixbuf::Pixbuf; +use hammond_downloader::downloader; +use diesel::prelude::*; + +use std::sync::{Arc, Mutex}; + +use widgets::podcast::*; + +pub fn populate_podcasts_flowbox( + db: Arc>, + stack: gtk::Stack, + flowbox: gtk::FlowBox, +) { + let tempdb = db.lock().unwrap(); + let pd_model = podcast_liststore(&tempdb); + drop(tempdb); + + // Get a ListStore iterator at the first element. + let iter = pd_model.get_iter_first().unwrap(); + + loop { + let title = pd_model.get_value(&iter, 1).get::().unwrap(); + let description = pd_model.get_value(&iter, 2).get::().unwrap(); + let image_uri = pd_model.get_value(&iter, 4).get::(); + + let imgpath = downloader::cache_image(&title, image_uri.as_ref().map(|s| s.as_str())); + + let pixbuf = if let Some(i) = imgpath { + Pixbuf::new_from_file_at_scale(&i, 200, 200, true).ok() + } else { + None + }; + + let f = create_flowbox_child(&title, pixbuf.clone()); + + let stack_clone = stack.clone(); + let db_clone = db.clone(); + + f.connect_activate(move |_| { + let pdw = stack_clone.get_child_by_name("pdw").unwrap(); + stack_clone.remove(&pdw); + let pdw = podcast_widget( + db_clone.clone(), + Some(title.as_str()), + Some(description.as_str()), + pixbuf.clone(), + ); + stack_clone.add_named(&pdw, "pdw"); + stack_clone.set_visible_child(&pdw); + println!("Hello World!, child activated"); + }); + flowbox.add(&f); + + if !pd_model.iter_next(&iter) { + break; + } + } +}