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.
This commit is contained in:
Jordan Petridis 2018-02-09 08:59:50 +02:00
parent 7690cb1356
commit e22a78fac6
No known key found for this signature in database
GPG Key ID: CEABAD9F5683B9A6

View File

@ -183,7 +183,7 @@ impl Default for EpisodeWidget {
impl EpisodeWidget { impl EpisodeWidget {
pub fn new(episode: EpisodeWidgetQuery, sender: Sender<Action>) -> EpisodeWidget { pub fn new(episode: EpisodeWidgetQuery, sender: Sender<Action>) -> EpisodeWidget {
let mut widget = EpisodeWidget::default(); let widget = EpisodeWidget::default();
widget.init(episode, sender) widget.init(episode, sender)
} }
@ -219,15 +219,14 @@ impl EpisodeWidget {
let episode = Arc::new(Mutex::new(episode)); let episode = Arc::new(Mutex::new(episode));
// let title = self.title.clone(); self.play
// self.play .connect_clicked(clone!(episode, sender => move |_| {
// .connect_clicked(clone!(episode, sender => move |_| { if let Ok(mut ep) = episode.lock() {
// if let Ok(mut ep) = episode.lock() { if let Err(err) = on_play_bttn_clicked(&mut ep, sender.clone()){
// if let Err(err) = on_play_bttn_clicked(&mut ep, &title, sender.clone()){ error!("Error: {}", err);
// error!("Error: {}", err); };
// }; }
// } }));
// }));
self.download self.download
.connect_clicked(clone!(episode, sender => move |dl| { .connect_clicked(clone!(episode, sender => move |dl| {
@ -366,16 +365,13 @@ fn on_download_clicked(ep: &EpisodeWidgetQuery, sender: Sender<Action>) -> Resul
fn on_play_bttn_clicked( fn on_play_bttn_clicked(
episode: &mut EpisodeWidgetQuery, episode: &mut EpisodeWidgetQuery,
title: &gtk::Label,
sender: Sender<Action>, sender: Sender<Action>,
) -> Result<(), Error> { ) -> Result<(), Error> {
open_uri(episode.rowid())?; open_uri(episode.rowid())?;
episode.set_played_now()?;
if episode.set_played_now().is_ok() { sender.send(Action::RefreshWidgetIfVis)?;
title.get_style_context().map(|c| c.add_class("dim-label")); sender.send(Action::RefreshEpisodesView)?;
sender.send(Action::RefreshEpisodesViewBGR)?;
};
Ok(()) Ok(())
} }