Nothing makes sense.

This commit is contained in:
Jordan Petridis 2018-02-15 05:15:25 +02:00
parent 73f7bfa64b
commit 4b8fceaa7d
No known key found for this signature in database
GPG Key ID: CEABAD9F5683B9A6
2 changed files with 53 additions and 31 deletions

View File

@ -56,6 +56,7 @@ pub struct EpisodeWidget {
local_size: gtk::Label, local_size: gtk::Label,
separator2: gtk::Label, separator2: gtk::Label,
prog_separator: gtk::Label, prog_separator: gtk::Label,
media: Arc<Mutex<MediaMachine>>,
} }
impl Default for EpisodeWidget { impl Default for EpisodeWidget {
@ -82,6 +83,17 @@ impl Default for EpisodeWidget {
let title_machine = Arc::new(Mutex::new(TitleMachine::new(title, false))); let title_machine = Arc::new(Mutex::new(TitleMachine::new(title, false)));
let dur = DurationMachine::new(duration, separator1, None); let dur = DurationMachine::new(duration, separator1, None);
let duration_machine = Arc::new(Mutex::new(dur)); let duration_machine = Arc::new(Mutex::new(dur));
let _media = MediaMachine::new(
play.clone(),
download.clone(),
progress.clone(),
cancel.clone(),
total_size.clone(),
local_size.clone(),
separator2.clone(),
prog_separator.clone(),
);
let media_machine = Arc::new(Mutex::new(_media));
EpisodeWidget { EpisodeWidget {
container, container,
@ -96,6 +108,7 @@ impl Default for EpisodeWidget {
local_size, local_size,
separator2, separator2,
prog_separator, prog_separator,
media: media_machine,
} }
} }
} }

View File

@ -9,8 +9,6 @@ use chrono;
use gtk; use gtk;
use gtk::prelude::*; use gtk::prelude::*;
pub trait Visibility {}
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct UnItialized; pub struct UnItialized;
@ -19,9 +17,23 @@ pub struct Shown;
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct Hidden; pub struct Hidden;
pub trait Visibility {}
impl Visibility for Shown {} impl Visibility for Shown {}
impl Visibility for Hidden {} impl Visibility for Hidden {}
impl From<Hidden> for Shown {
fn from(_: Hidden) -> Self {
Shown {}
}
}
impl From<Shown> for Hidden {
fn from(_: Shown) -> Self {
Hidden {}
}
}
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct Normal; pub struct Normal;
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
@ -542,29 +554,29 @@ impl From<Progress<UnItialized>> for Progress<Hidden> {
} }
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct Media<X, Z, Y> { pub struct Media<X, Y, Z> {
dl: DownloadPlay<X>, dl: DownloadPlay<X>,
total_size: Size<Z>, size: Size<Y>,
progress: Progress<Y>, progress: Progress<Z>,
} }
// From New fro InProgress // From New from InProgress
impl From<Media<Download, Shown, Hidden>> for Media<Hidden, Shown, Shown> { impl From<Media<Download, Hidden, Shown>> for Media<Hidden, Shown, Shown> {
fn from(f: Media<Download, Shown, Hidden>) -> Self { fn from(f: Media<Download, Hidden, Shown>) -> Self {
Media { Media {
dl: f.dl.into(), dl: f.dl.into(),
total_size: f.total_size.into(), size: f.size.into(),
progress: f.progress.into(), progress: f.progress.into(),
} }
} }
} }
// From NewWithoutSize fro InProgress // From NewWithoutSize from InProgress
impl From<Media<Download, Hidden, Hidden>> for Media<Hidden, Shown, Shown> { impl From<Media<Download, Hidden, Hidden>> for Media<Hidden, Shown, Shown> {
fn from(f: Media<Download, Hidden, Hidden>) -> Self { fn from(f: Media<Download, Hidden, Hidden>) -> Self {
Media { Media {
dl: f.dl.into(), dl: f.dl.into(),
total_size: f.total_size.into(), size: f.size.into(),
progress: f.progress.into(), progress: f.progress.into(),
} }
} }
@ -575,7 +587,7 @@ impl Into<Media<Download, Hidden, Shown>> for Media<UnItialized, UnItialized, Un
fn into(self) -> Media<Download, Hidden, Shown> { fn into(self) -> Media<Download, Hidden, Shown> {
Media { Media {
dl: self.dl.into(), dl: self.dl.into(),
total_size: self.total_size.into(), size: self.size.into(),
progress: self.progress.into(), progress: self.progress.into(),
} }
} }
@ -586,7 +598,7 @@ impl Into<Media<Download, Hidden, Hidden>> for Media<UnItialized, UnItialized, U
fn into(self) -> Media<Download, Hidden, Hidden> { fn into(self) -> Media<Download, Hidden, Hidden> {
Media { Media {
dl: self.dl.into(), dl: self.dl.into(),
total_size: self.total_size.into(), size: self.size.into(),
progress: self.progress.into(), progress: self.progress.into(),
} }
} }
@ -597,7 +609,7 @@ impl Into<Media<Play, Hidden, Shown>> for Media<UnItialized, UnItialized, UnItia
fn into(self) -> Media<Play, Hidden, Shown> { fn into(self) -> Media<Play, Hidden, Shown> {
Media { Media {
dl: self.dl.into(), dl: self.dl.into(),
total_size: self.total_size.into(), size: self.size.into(),
progress: self.progress.into(), progress: self.progress.into(),
} }
} }
@ -608,7 +620,7 @@ impl Into<Media<Play, Hidden, Hidden>> for Media<UnItialized, UnItialized, UnIti
fn into(self) -> Media<Play, Hidden, Hidden> { fn into(self) -> Media<Play, Hidden, Hidden> {
Media { Media {
dl: self.dl.into(), dl: self.dl.into(),
total_size: self.total_size.into(), size: self.size.into(),
progress: self.progress.into(), progress: self.progress.into(),
} }
} }
@ -619,7 +631,7 @@ impl Into<Media<Hidden, Shown, Shown>> for Media<UnItialized, UnItialized, UnIti
fn into(self) -> Media<Hidden, Shown, Shown> { fn into(self) -> Media<Hidden, Shown, Shown> {
Media { Media {
dl: self.dl.into(), dl: self.dl.into(),
total_size: self.total_size.into(), size: self.size.into(),
progress: self.progress.into(), progress: self.progress.into(),
} }
} }
@ -627,20 +639,15 @@ impl Into<Media<Hidden, Shown, Shown>> for Media<UnItialized, UnItialized, UnIti
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub enum MediaMachine { pub enum MediaMachine {
New(Media<Download, Hidden, Shown>), UnInitialized(Media<UnItialized, UnItialized, UnItialized>),
New(Media<Download, Shown, Hidden>),
NewWithoutSize(Media<Download, Hidden, Hidden>), NewWithoutSize(Media<Download, Hidden, Hidden>),
Playable(Media<Play, Hidden, Shown>), Playable(Media<Play, Shown, Hidden>),
PlayableWithoutSize(Media<Play, Hidden, Hidden>), PlayableWithoutSize(Media<Play, Hidden, Hidden>),
InProgress(Media<Hidden, Shown, Shown>), InProgress(Media<Hidden, Shown, Shown>),
} }
#[derive(Debug, Clone)] impl MediaMachine {
pub enum MediaMachineWrapper {
UnItialized(Media<UnItialized, UnItialized, UnItialized>),
Initialized(MediaMachine),
}
impl MediaMachineWrapper {
pub fn new( pub fn new(
play: gtk::Button, play: gtk::Button,
download: gtk::Button, download: gtk::Button,
@ -653,12 +660,14 @@ impl MediaMachineWrapper {
) -> Self { ) -> Self {
let dl = DownloadPlay::<UnItialized>::new(play, download); let dl = DownloadPlay::<UnItialized>::new(play, download);
let progress = Progress::<UnItialized>::new(bar, cancel, local_size, prog_separator); let progress = Progress::<UnItialized>::new(bar, cancel, local_size, prog_separator);
let total_size = Size::<UnItialized>::new(total_size, separator); let size = Size::<UnItialized>::new(total_size, separator);
MediaMachineWrapper::UnItialized(Media { MediaMachine::UnInitialized(Media { dl, progress, size })
dl, }
progress,
total_size, pub fn determine_state(self, is_downloaded: bool, is_active: bool) -> Self {
}) // use self::MediaMachine::*;
unimplemented!()
} }
} }