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:
Jordan Petridis
2017-12-20 18:19:31 +02:00
parent c070fc3032
commit 2e06205eda
8 changed files with 59 additions and 27 deletions
+4 -16
View File
@@ -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());
}
}
+3 -3
View File
@@ -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);
}
+1 -1
View File
@@ -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);
};
+2 -2
View File
@@ -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);
}