From 159b0d92dd399d762350deb033e956143134beea Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Tue, 13 Feb 2018 07:51:00 +0200 Subject: [PATCH] EpisodeWidget: Merge Size and Progress machines, Split total_size to it's own machine. --- hammond-gtk/src/widgets/episode_states.rs | 138 +++++++++++++++------- 1 file changed, 97 insertions(+), 41 deletions(-) diff --git a/hammond-gtk/src/widgets/episode_states.rs b/hammond-gtk/src/widgets/episode_states.rs index 012ed3f..e42b3bb 100644 --- a/hammond-gtk/src/widgets/episode_states.rs +++ b/hammond-gtk/src/widgets/episode_states.rs @@ -195,57 +195,64 @@ impl DurationMachine { #[derive(Debug, Clone)] pub struct Size { - local_size: gtk::Label, + size: gtk::Label, separator: gtk::Label, - prog_separator: gtk::Label, state: S, } +impl Size { + fn set_size(&mut self, s: &str) { + self.size.set_text(s); + self.separator.show(); + } +} + impl Size { - fn new(local_size: gtk::Label, separator: gtk::Label, prog_separator: gtk::Label) -> Self { - local_size.hide(); + fn new(size: gtk::Label, separator: gtk::Label) -> Self { + size.hide(); separator.hide(); - prog_separator.hide(); Size { - local_size, + size, separator, - prog_separator, + state: Hidden {}, + } + } + + fn set_size(self, s: &str) -> Size { + self.size.set_text(s); + self.separator.show(); + self.into() + } +} + +impl From> for Size { + fn from(f: Size) -> Self { + f.size.hide(); + f.separator.hide(); + + Size { + size: f.size, + separator: f.separator, state: Hidden {}, } } } impl From> for Size { + /// This is suposed to be called only from Size::::set_size. fn from(f: Size) -> Self { - f.prog_separator.show(); - f.local_size.show(); + f.size.show(); f.separator.show(); Size { - local_size: f.local_size, + size: f.size, separator: f.separator, - prog_separator: f.prog_separator, state: Shown {}, } } } -impl From> for Size { - fn from(f: Size) -> Self { - f.prog_separator.hide(); - f.local_size.hide(); - f.separator.hide(); - - Size { - local_size: f.local_size, - separator: f.separator, - prog_separator: f.prog_separator, - state: Hidden {}, - } - } -} - #[derive(Debug, Clone)] pub struct Download; @@ -356,17 +363,28 @@ impl From> for DownloadPlay { pub struct Progress { bar: gtk::ProgressBar, cancel: gtk::Button, + local_size: gtk::Label, + prog_separator: gtk::Label, state: S, } impl Progress { - fn new(bar: gtk::ProgressBar, cancel: gtk::Button) -> Self { + fn new( + bar: gtk::ProgressBar, + cancel: gtk::Button, + local_size: gtk::Label, + prog_separator: gtk::Label, + ) -> Self { bar.hide(); cancel.hide(); + local_size.hide(); + prog_separator.hide(); Progress { bar, cancel, + local_size, + prog_separator, state: Hidden {}, } } @@ -376,10 +394,14 @@ impl From> for Progress { fn from(f: Progress) -> Self { f.bar.show(); f.cancel.show(); + f.local_size.hide(); + f.prog_separator.hide(); Progress { bar: f.bar, cancel: f.cancel, + local_size: f.local_size, + prog_separator: f.prog_separator, state: Shown {}, } } @@ -389,27 +411,33 @@ impl From> for Progress { fn from(f: Progress) -> Self { f.bar.hide(); f.cancel.hide(); + f.local_size.hide(); + f.prog_separator.hide(); Progress { bar: f.bar, cancel: f.cancel, + local_size: f.local_size, + prog_separator: f.prog_separator, state: Hidden {}, } } } #[derive(Debug, Clone)] -pub struct Media { - dl: DownloadPlay, - progress: Progress, - size: Size, +pub struct Media { + dl: DownloadPlay, + progress: Progress, + total_size: Size, } #[derive(Debug, Clone)] pub enum MediaMachine { - New(Media