Use TreeStore to feed the flowbox view.
This commit is contained in:
parent
9df1e65951
commit
460345f49a
@ -120,14 +120,21 @@ fn get_episode(connection: &SqliteConnection, ep: &mut Episode, dl_folder: &str)
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn cache_image(pd: &Podcast) -> Option<String> {
|
// pub fn cache_image(pd: &Podcast) -> Option<String> {
|
||||||
if let Some(url) = pd.image_uri() {
|
pub fn cache_image(title: &str, image_uri: Option<&str>) -> Option<String> {
|
||||||
|
info!("{:?}", image_uri);
|
||||||
|
if let Some(url) = image_uri {
|
||||||
|
if url == "" {
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
let ext = url.split('.').last().unwrap();
|
let ext = url.split('.').last().unwrap();
|
||||||
|
|
||||||
let dl_fold = format!("{}/{}", HAMMOND_CACHE.to_str().unwrap(), pd.title());
|
let dl_fold = format!("{}/{}", HAMMOND_CACHE.to_str().unwrap(), title);
|
||||||
|
info!("Img Dl path: {}", dl_fold);
|
||||||
DirBuilder::new().recursive(true).create(&dl_fold).unwrap();
|
DirBuilder::new().recursive(true).create(&dl_fold).unwrap();
|
||||||
|
|
||||||
let dlpath = format!("{}/{}.{}", dl_fold, pd.title(), ext);
|
let dlpath = format!("{}/{}.{}", dl_fold, title, ext);
|
||||||
info!("Cached img path: {}", dlpath);
|
info!("Cached img path: {}", dlpath);
|
||||||
|
|
||||||
if Path::new(&dlpath).exists() {
|
if Path::new(&dlpath).exists() {
|
||||||
|
|||||||
@ -26,8 +26,8 @@
|
|||||||
</object>
|
</object>
|
||||||
<object class="GtkWindow" id="window1">
|
<object class="GtkWindow" id="window1">
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="default_width">800</property>
|
<property name="default_width">1000</property>
|
||||||
<property name="default_height">400</property>
|
<property name="default_height">600</property>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkStack">
|
<object class="GtkStack">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
@ -59,8 +59,6 @@
|
|||||||
<property name="height_request">200</property>
|
<property name="height_request">200</property>
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="can_focus">False</property>
|
<property name="can_focus">False</property>
|
||||||
<property name="halign">center</property>
|
|
||||||
<property name="valign">center</property>
|
|
||||||
<property name="homogeneous">True</property>
|
<property name="homogeneous">True</property>
|
||||||
<property name="column_spacing">5</property>
|
<property name="column_spacing">5</property>
|
||||||
<property name="row_spacing">5</property>
|
<property name="row_spacing">5</property>
|
||||||
|
|||||||
@ -20,9 +20,9 @@ use hammond_data::dbqueries;
|
|||||||
use hammond_data::models::Podcast;
|
use hammond_data::models::Podcast;
|
||||||
|
|
||||||
// TODO: setup a img downloader, caching system, and then display them.
|
// TODO: setup a img downloader, caching system, and then display them.
|
||||||
fn create_child(pd: &Podcast) -> gtk::Box {
|
fn create_child(title: &str, image_uri: Option<&str>) -> gtk::Box {
|
||||||
let box_ = gtk::Box::new(Orientation::Vertical, 5);
|
let box_ = gtk::Box::new(Orientation::Vertical, 5);
|
||||||
let imgpath = hammond_downloader::downloader::cache_image(pd);
|
let imgpath = hammond_downloader::downloader::cache_image(title, image_uri);
|
||||||
info!("{:?}", imgpath);
|
info!("{:?}", imgpath);
|
||||||
let img = if let Some(i) = imgpath {
|
let img = if let Some(i) = imgpath {
|
||||||
let pixbuf = Pixbuf::new_from_file_at_scale(&i, 200, 200, true);
|
let pixbuf = Pixbuf::new_from_file_at_scale(&i, 200, 200, true);
|
||||||
@ -37,11 +37,9 @@ fn create_child(pd: &Podcast) -> gtk::Box {
|
|||||||
gtk::Image::new_from_icon_name("gtk-missing-image", IconSize::Menu.into())
|
gtk::Image::new_from_icon_name("gtk-missing-image", IconSize::Menu.into())
|
||||||
};
|
};
|
||||||
|
|
||||||
img.set_size_request(200, 200);
|
let label = gtk::Label::new(title);
|
||||||
|
|
||||||
let label = gtk::Label::new(pd.title());
|
|
||||||
box_.set_size_request(200, 200);
|
box_.set_size_request(200, 200);
|
||||||
box_.pack_start(&img, false, false, 0);
|
box_.pack_start(&img, true, true, 0);
|
||||||
box_.pack_start(&label, false, false, 0);
|
box_.pack_start(&label, false, false, 0);
|
||||||
box_
|
box_
|
||||||
}
|
}
|
||||||
@ -142,6 +140,12 @@ fn main() {
|
|||||||
let header: gtk::HeaderBar = header_build.get_object("headerbar1").unwrap();
|
let header: gtk::HeaderBar = header_build.get_object("headerbar1").unwrap();
|
||||||
window.set_titlebar(&header);
|
window.set_titlebar(&header);
|
||||||
|
|
||||||
|
// Debuging TreeStore
|
||||||
|
// let box2: gtk::Box = builder.get_object("box2").unwrap();
|
||||||
|
// let treeview = create_and_setup_view();
|
||||||
|
// treeview.set_model(Some(&pd_model));
|
||||||
|
// box2.add(&treeview);
|
||||||
|
|
||||||
let refresh_button: gtk::Button = header_build.get_object("refbutton").unwrap();
|
let refresh_button: gtk::Button = header_build.get_object("refbutton").unwrap();
|
||||||
// TODO: Have a small dropdown menu
|
// TODO: Have a small dropdown menu
|
||||||
let _add_button: gtk::Button = header_build.get_object("addbutton").unwrap();
|
let _add_button: gtk::Button = header_build.get_object("addbutton").unwrap();
|
||||||
@ -163,19 +167,23 @@ fn main() {
|
|||||||
let flowbox: gtk::FlowBox = builder.get_object("flowbox1").unwrap();
|
let flowbox: gtk::FlowBox = builder.get_object("flowbox1").unwrap();
|
||||||
let db = hammond_data::establish_connection();
|
let db = hammond_data::establish_connection();
|
||||||
let pd_model = create_tree_store(&db, &builder);
|
let pd_model = create_tree_store(&db, &builder);
|
||||||
let podcasts = dbqueries::get_podcasts(&db).unwrap();
|
|
||||||
|
|
||||||
for pd in &podcasts {
|
let iter = pd_model.get_iter_first().unwrap();
|
||||||
let f = create_child(pd);
|
// this will iterate over the episodes.
|
||||||
|
// let iter = pd_model.iter_children(&iter).unwrap();
|
||||||
|
loop {
|
||||||
|
let title = pd_model.get_value(&iter, 1).get::<String>().unwrap();
|
||||||
|
let image_uri = pd_model.get_value(&iter, 5).get::<String>();
|
||||||
|
info!("{:?}", title);
|
||||||
|
let f = create_child(&title, image_uri.as_ref().map(|s| s.as_str()));
|
||||||
|
|
||||||
flowbox.add(&f);
|
flowbox.add(&f);
|
||||||
|
|
||||||
|
if !pd_model.iter_next(&iter) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// let box2: gtk::Box = builder.get_object("box2").unwrap();
|
|
||||||
|
|
||||||
// let treeview = create_and_setup_view();
|
|
||||||
// treeview.set_model(Some(&pd_model));
|
|
||||||
// box2.add(&treeview);
|
|
||||||
|
|
||||||
window.show_all();
|
window.show_all();
|
||||||
gtk::main();
|
gtk::main();
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user