From e22a78fac6963675023bef8319b7c3fbdb699645 Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Fri, 9 Feb 2018 08:59:50 +0200 Subject: [PATCH] EpisodeWidget: Re-enable on_play_bttn_clicked callback. Before we were avoiding reloading the widget in view by directly dimming the title label. Now instead we reload the whole widget since I can't figure out a way to have multiple Owneded refferences of the same state machine. --- hammond-gtk/src/widgets/episode.rs | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/hammond-gtk/src/widgets/episode.rs b/hammond-gtk/src/widgets/episode.rs index 4ec1162..d4c4a1f 100644 --- a/hammond-gtk/src/widgets/episode.rs +++ b/hammond-gtk/src/widgets/episode.rs @@ -183,7 +183,7 @@ impl Default for EpisodeWidget { impl EpisodeWidget { pub fn new(episode: EpisodeWidgetQuery, sender: Sender) -> EpisodeWidget { - let mut widget = EpisodeWidget::default(); + let widget = EpisodeWidget::default(); widget.init(episode, sender) } @@ -219,15 +219,14 @@ impl EpisodeWidget { let episode = Arc::new(Mutex::new(episode)); - // let title = self.title.clone(); - // self.play - // .connect_clicked(clone!(episode, sender => move |_| { - // if let Ok(mut ep) = episode.lock() { - // if let Err(err) = on_play_bttn_clicked(&mut ep, &title, sender.clone()){ - // error!("Error: {}", err); - // }; - // } - // })); + self.play + .connect_clicked(clone!(episode, sender => move |_| { + if let Ok(mut ep) = episode.lock() { + if let Err(err) = on_play_bttn_clicked(&mut ep, sender.clone()){ + error!("Error: {}", err); + }; + } + })); self.download .connect_clicked(clone!(episode, sender => move |dl| { @@ -366,16 +365,13 @@ fn on_download_clicked(ep: &EpisodeWidgetQuery, sender: Sender) -> Resul fn on_play_bttn_clicked( episode: &mut EpisodeWidgetQuery, - title: >k::Label, sender: Sender, ) -> Result<(), Error> { open_uri(episode.rowid())?; + episode.set_played_now()?; - if episode.set_played_now().is_ok() { - title.get_style_context().map(|c| c.add_class("dim-label")); - sender.send(Action::RefreshEpisodesViewBGR)?; - }; - + sender.send(Action::RefreshWidgetIfVis)?; + sender.send(Action::RefreshEpisodesView)?; Ok(()) }