diff --git a/hammond-data/src/dbqueries.rs b/hammond-data/src/dbqueries.rs index f1bb8dd..7adb91c 100644 --- a/hammond-data/src/dbqueries.rs +++ b/hammond-data/src/dbqueries.rs @@ -50,7 +50,7 @@ pub fn get_played_episodes() -> Result> { Ok(episode.filter(played.is_not_null()).load::(&*con)?) } -pub fn get_episode_from_id(ep_id: i32) -> Result { +pub fn get_episode_from_rowid(ep_id: i32) -> Result { use schema::episode::dsl::*; let db = connection(); diff --git a/hammond-gtk/src/widgets/episode.rs b/hammond-gtk/src/widgets/episode.rs index 35bfb02..11e2fbc 100644 --- a/hammond-gtk/src/widgets/episode.rs +++ b/hammond-gtk/src/widgets/episode.rs @@ -109,6 +109,12 @@ impl EpisodeWidget { self.title.set_xalign(0.0); self.title.set_text(episode.title()); + if episode.played().is_some() { + self.title + .get_style_context() + .map(|c| c.add_class("dim-label")); + } + let progress = self.progress.clone(); timeout_add(200, move || { progress.pulse(); @@ -133,10 +139,16 @@ impl EpisodeWidget { self.delete.show(); } - self.play.connect_clicked(clone!(episode => move |_| { + let title = &self.title; + self.play + .connect_clicked(clone!(episode, title => move |_| { let mut episode = episode.clone(); on_play_bttn_clicked(episode.rowid()); - let _ = episode.set_played_now(); + if episode.set_played_now().is_ok() { + title + .get_style_context() + .map(|c| c.add_class("dim-label")); + }; })); let play = &self.play; @@ -234,7 +246,7 @@ fn on_play_bttn_clicked(episode_id: i32) { } fn on_delete_bttn_clicked(episode_id: i32) { - let mut ep = dbqueries::get_episode_from_id(episode_id).unwrap(); + let mut ep = dbqueries::get_episode_from_rowid(episode_id).unwrap(); let e = delete_local_content(&mut ep); if let Err(err) = e {