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,
separator2: gtk::Label,
prog_separator: gtk::Label,
media: Arc<Mutex<MediaMachine>>,
}
impl Default for EpisodeWidget {
@ -82,6 +83,17 @@ impl Default for EpisodeWidget {
let title_machine = Arc::new(Mutex::new(TitleMachine::new(title, false)));
let dur = DurationMachine::new(duration, separator1, None);
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 {
container,
@ -96,6 +108,7 @@ impl Default for EpisodeWidget {
local_size,
separator2,
prog_separator,
media: media_machine,
}
}
}

View File

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