Initial split of podcastsview.
This commit is contained in:
parent
c3d7a11975
commit
0ed6fee39f
@ -37,7 +37,7 @@ pub fn get_headerbar(
|
|||||||
let url = new_url.get_text().unwrap();
|
let url = new_url.get_text().unwrap();
|
||||||
let _ = index_feed::insert_return_source(&tempdb, &url);
|
let _ = index_feed::insert_return_source(&tempdb, &url);
|
||||||
drop(tempdb);
|
drop(tempdb);
|
||||||
println!("{:?} feed added", url);
|
info!("{:?} feed added", url);
|
||||||
|
|
||||||
// update the db
|
// update the db
|
||||||
utils::refresh_db(db_clone.clone());
|
utils::refresh_db(db_clone.clone());
|
||||||
|
|||||||
@ -15,28 +15,25 @@ extern crate open;
|
|||||||
|
|
||||||
use log::LogLevel;
|
use log::LogLevel;
|
||||||
use hammond_data::index_feed;
|
use hammond_data::index_feed;
|
||||||
use hammond_downloader::downloader;
|
|
||||||
|
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
|
|
||||||
use gtk::prelude::*;
|
use gtk::prelude::*;
|
||||||
use gio::ApplicationExt;
|
use gio::ApplicationExt;
|
||||||
use gdk_pixbuf::Pixbuf;
|
|
||||||
|
|
||||||
pub mod views;
|
pub mod views;
|
||||||
pub mod widgets;
|
pub mod widgets;
|
||||||
pub mod headerbar;
|
pub mod headerbar;
|
||||||
pub mod utils;
|
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.
|
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() {
|
fn build_ui() {
|
||||||
let glade_src = include_str!("../gtk/foo.ui");
|
let glade_src = include_str!("../gtk/foo.ui");
|
||||||
let builder = gtk::Builder::new_from_string(glade_src);
|
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());
|
let header = headerbar::get_headerbar(db.clone(), stack.clone(), grid.clone());
|
||||||
window.set_titlebar(&header);
|
window.set_titlebar(&header);
|
||||||
|
|
||||||
let tempdb = db.lock().unwrap();
|
populate_podcasts_flowbox(db.clone(), stack.clone(), flowbox.clone());
|
||||||
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::<String>().unwrap();
|
|
||||||
let description = pd_model.get_value(&iter, 2).get::<String>().unwrap();
|
|
||||||
let image_uri = pd_model.get_value(&iter, 4).get::<String>();
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
window.show_all();
|
window.show_all();
|
||||||
gtk::main();
|
gtk::main();
|
||||||
|
|||||||
@ -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<Mutex<SqliteConnection>>,
|
||||||
|
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::<String>().unwrap();
|
||||||
|
let description = pd_model.get_value(&iter, 2).get::<String>().unwrap();
|
||||||
|
let image_uri = pd_model.get_value(&iter, 4).get::<String>();
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user