PlayerWidget: Intial draft of the the PlayerExt trait.
This commit is contained in:
parent
58f09ba150
commit
47f297c495
@ -1,9 +1,22 @@
|
||||
#![allow(warnings)]
|
||||
|
||||
use gstreamer_player as gst;
|
||||
use gstreamer::ClockTime;
|
||||
use gtk;
|
||||
use gtk::prelude::*;
|
||||
|
||||
use failure::Error;
|
||||
|
||||
pub trait PlayerExt {
|
||||
fn play(&self);
|
||||
fn pause(&self);
|
||||
fn seek(&self, position: ClockTime);
|
||||
fn fast_forward(&self);
|
||||
fn rewind(&self);
|
||||
// TODO: change playback rate
|
||||
// fn set_playback_rate(&self);
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
struct PlayerInfo {
|
||||
container: gtk::Box,
|
||||
@ -36,7 +49,7 @@ struct PlayerControls {
|
||||
pause: gtk::Button,
|
||||
forward: gtk::Button,
|
||||
rewind: gtk::Button,
|
||||
state: PlayerState,
|
||||
// state: PlayerState,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
@ -68,7 +81,7 @@ impl Default for PlayerWidget {
|
||||
pause,
|
||||
forward,
|
||||
rewind,
|
||||
state: PlayerState::Ready,
|
||||
// state: PlayerState::Ready,
|
||||
};
|
||||
|
||||
let timer_container = builder.get_object("timer").unwrap();
|
||||
@ -105,3 +118,48 @@ impl Default for PlayerWidget {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl PlayerWidget {
|
||||
fn reveal(&self) {
|
||||
self.revealer.show();
|
||||
self.revealer.set_reveal_child(true);
|
||||
}
|
||||
}
|
||||
|
||||
impl PlayerExt for PlayerWidget {
|
||||
fn play(&self) {
|
||||
// assert the state is either ready or paused
|
||||
// TODO: assert!()
|
||||
|
||||
self.reveal();
|
||||
|
||||
self.controls.pause.hide();
|
||||
self.controls.play.show();
|
||||
|
||||
self.player.play();
|
||||
}
|
||||
|
||||
fn pause(&self) {
|
||||
// assert the state is paused
|
||||
// TODO: assert!()
|
||||
|
||||
self.controls.pause.show();
|
||||
self.controls.play.hide();
|
||||
|
||||
self.player.pause();
|
||||
}
|
||||
|
||||
fn seek(&self, position: ClockTime) {
|
||||
self.player.seek(position);
|
||||
}
|
||||
|
||||
// FIXME
|
||||
fn rewind(&self) {
|
||||
// self.seek()
|
||||
}
|
||||
|
||||
// FIXME
|
||||
fn fast_forward(&self) {
|
||||
// self.seek()
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user