Define a new Diesel Model for PodcastCover querries.
Define new Diesel Model and impl From<Podcast> trait, Change the signature of downloader::cache_image function, Change and merge hammond-gtk::utils::get_pixbuf_from_path functions.
This commit is contained in:
@@ -2,7 +2,7 @@ use glib;
|
||||
use gdk_pixbuf::Pixbuf;
|
||||
|
||||
use hammond_data::feed;
|
||||
use hammond_data::{Podcast, Source};
|
||||
use hammond_data::{PodcastCoverQuery, Source};
|
||||
use hammond_downloader::downloader;
|
||||
|
||||
use std::thread;
|
||||
@@ -60,21 +60,9 @@ fn refresh_podcasts_view() -> glib::Continue {
|
||||
}
|
||||
|
||||
// FIXME: use something that would just scale?
|
||||
// TODO: make a diesel model with only title, local_uri
|
||||
|
||||
pub fn get_pixbuf_from_path(pd: &Podcast) -> Option<Pixbuf> {
|
||||
pub fn get_pixbuf_from_path(pd: &PodcastCoverQuery, size: u32) -> Option<Pixbuf> {
|
||||
let img_path = downloader::cache_image(pd)?;
|
||||
Pixbuf::new_from_file_at_scale(&img_path, 256, 256, true).ok()
|
||||
}
|
||||
|
||||
pub fn get_pixbuf_from_path_128(pd: &Podcast) -> Option<Pixbuf> {
|
||||
let img_path = downloader::cache_image(pd)?;
|
||||
Pixbuf::new_from_file_at_scale(&img_path, 128, 128, true).ok()
|
||||
}
|
||||
|
||||
pub fn get_pixbuf_from_path_64(pd: &Podcast) -> Option<Pixbuf> {
|
||||
let img_path = downloader::cache_image(pd)?;
|
||||
Pixbuf::new_from_file_at_scale(&img_path, 64, 64, true).ok()
|
||||
Pixbuf::new_from_file_at_scale(&img_path, size as i32, size as i32, true).ok()
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
@@ -100,7 +88,7 @@ mod tests {
|
||||
|
||||
// Get the Podcast
|
||||
let pd = dbqueries::get_podcast_from_source_id(sid).unwrap();
|
||||
let pxbuf = get_pixbuf_from_path(&pd);
|
||||
let pxbuf = get_pixbuf_from_path(&pd.into(), 256);
|
||||
assert!(pxbuf.is_some());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ use hammond_data::dbqueries;
|
||||
use hammond_data::EpisodeWidgetQuery;
|
||||
|
||||
use widgets::episode::EpisodeWidget;
|
||||
use utils::get_pixbuf_from_path_64;
|
||||
use utils::get_pixbuf_from_path;
|
||||
|
||||
use std::rc::Rc;
|
||||
|
||||
@@ -216,8 +216,8 @@ impl EpisodesViewWidget {
|
||||
let image: gtk::Image = builder.get_object("cover").unwrap();
|
||||
|
||||
// FIXME:
|
||||
if let Ok(pd) = dbqueries::get_podcast_from_id(episode.podcast_id()) {
|
||||
let img = get_pixbuf_from_path_64(&pd);
|
||||
if let Ok(pd) = dbqueries::get_podcast_cover_from_id(episode.podcast_id()) {
|
||||
let img = get_pixbuf_from_path(&pd, 64);
|
||||
if let Some(i) = img {
|
||||
image.set_from_pixbuf(&i);
|
||||
}
|
||||
|
||||
@@ -111,7 +111,7 @@ impl ShowsChild {
|
||||
fn init(&self, pd: &Podcast) {
|
||||
self.container.set_tooltip_text(pd.title());
|
||||
|
||||
let cover = get_pixbuf_from_path(pd);
|
||||
let cover = get_pixbuf_from_path(&pd.clone().into(), 256);
|
||||
if let Some(img) = cover {
|
||||
self.cover.set_from_pixbuf(&img);
|
||||
};
|
||||
|
||||
@@ -10,7 +10,7 @@ use hammond_data::utils::replace_extra_spaces;
|
||||
use hammond_downloader::downloader;
|
||||
|
||||
use widgets::episode::episodes_listbox;
|
||||
use utils::get_pixbuf_from_path_128;
|
||||
use utils::get_pixbuf_from_path;
|
||||
use content::ShowStack;
|
||||
use headerbar::Header;
|
||||
|
||||
@@ -77,7 +77,7 @@ impl ShowWidget {
|
||||
let desc = dissolve::strip_html_tags(pd.description()).join(" ");
|
||||
self.description.set_text(&replace_extra_spaces(&desc));
|
||||
|
||||
let img = get_pixbuf_from_path_128(pd);
|
||||
let img = get_pixbuf_from_path(&pd.clone().into(), 128);
|
||||
if let Some(i) = img {
|
||||
self.cover.set_from_pixbuf(&i);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user