Yay, finally something that works.
This commit is contained in:
parent
72eef6f104
commit
f50c990d93
@ -136,12 +136,6 @@ impl EpisodeWidget {
|
|||||||
error!("Failed to set duration state: {}", err);
|
error!("Failed to set duration state: {}", err);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show or hide the play/delete/download buttons upon widget initialization.
|
|
||||||
if let Err(err) = self.show_buttons(episode.local_uri()) {
|
|
||||||
error!("Failed to determine play/download button state.");
|
|
||||||
error!("Error: {}", err);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set the size label.
|
// Set the size label.
|
||||||
if let Err(err) = self.set_total_size(episode.length()) {
|
if let Err(err) = self.set_total_size(episode.length()) {
|
||||||
error!("Failed to set the Size label.");
|
error!("Failed to set the Size label.");
|
||||||
@ -149,7 +143,7 @@ impl EpisodeWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Determine what the state of the progress bar should be.
|
// Determine what the state of the progress bar should be.
|
||||||
if let Err(err) = self.determine_progess_bar() {
|
if let Err(err) = self.determine_progess_bar(&episode) {
|
||||||
error!("Something went wrong determining the ProgressBar State.");
|
error!("Something went wrong determining the ProgressBar State.");
|
||||||
error!("Error: {}", err);
|
error!("Error: {}", err);
|
||||||
}
|
}
|
||||||
@ -180,16 +174,6 @@ impl EpisodeWidget {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Show or hide the play/delete/download buttons upon widget initialization.
|
|
||||||
fn show_buttons(&self, local_uri: Option<&str>) -> Result<(), Error> {
|
|
||||||
let path = local_uri.ok_or_else(|| format_err!("Path is None"))?;
|
|
||||||
if Path::new(path).exists() {
|
|
||||||
self.download.hide();
|
|
||||||
self.play.show();
|
|
||||||
}
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Determine the title state.
|
/// Determine the title state.
|
||||||
fn set_title(&mut self, episode: &EpisodeWidgetQuery) -> Result<(), Error> {
|
fn set_title(&mut self, episode: &EpisodeWidgetQuery) -> Result<(), Error> {
|
||||||
let mut lock = self.title.lock().map_err(|err| format_err!("{}", err))?;
|
let mut lock = self.title.lock().map_err(|err| format_err!("{}", err))?;
|
||||||
@ -238,7 +222,7 @@ impl EpisodeWidget {
|
|||||||
|
|
||||||
// FIXME: REFACTOR ME
|
// FIXME: REFACTOR ME
|
||||||
// Something Something State-Machine?
|
// Something Something State-Machine?
|
||||||
fn determine_progess_bar(&self) -> Result<(), Error> {
|
fn determine_progess_bar(&self, episode: &EpisodeWidgetQuery) -> Result<(), Error> {
|
||||||
let id = WidgetExt::get_name(&self.container)
|
let id = WidgetExt::get_name(&self.container)
|
||||||
.ok_or_else(|| format_err!("Failed to get widget Name"))?
|
.ok_or_else(|| format_err!("Failed to get widget Name"))?
|
||||||
.parse::<i32>()?;
|
.parse::<i32>()?;
|
||||||
@ -251,15 +235,12 @@ impl EpisodeWidget {
|
|||||||
Ok(m.get(&id).cloned())
|
Ok(m.get(&id).cloned())
|
||||||
}()?;
|
}()?;
|
||||||
|
|
||||||
|
// Show or hide the play/delete/download buttons upon widget initialization.
|
||||||
if let Some(prog) = active_dl {
|
if let Some(prog) = active_dl {
|
||||||
// FIXME: Document me?
|
let mut lock = self.media.lock().map_err(|err| format_err!("{}", err))?;
|
||||||
self.download.hide();
|
take_mut::take(lock.deref_mut(), |media| {
|
||||||
self.progress.show();
|
media.determine_state(episode.local_uri().is_some(), true)
|
||||||
self.local_size.show();
|
});
|
||||||
self.total_size.show();
|
|
||||||
self.separator2.show();
|
|
||||||
self.prog_separator.show();
|
|
||||||
self.cancel.show();
|
|
||||||
|
|
||||||
let progress_bar = self.progress.clone();
|
let progress_bar = self.progress.clone();
|
||||||
let total_size = self.total_size.clone();
|
let total_size = self.total_size.clone();
|
||||||
@ -279,6 +260,11 @@ impl EpisodeWidget {
|
|||||||
cancel.set_sensitive(false);
|
cancel.set_sensitive(false);
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
} else {
|
||||||
|
let mut lock = self.media.lock().map_err(|err| format_err!("{}", err))?;
|
||||||
|
take_mut::take(lock.deref_mut(), |media| {
|
||||||
|
media.determine_state(episode.local_uri().is_some(), false)
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user