PlayerWidget: Intial draft of the the PlayerExt trait.
This commit is contained in:
parent
58f09ba150
commit
47f297c495
@ -1,9 +1,22 @@
|
|||||||
#![allow(warnings)]
|
#![allow(warnings)]
|
||||||
|
|
||||||
use gstreamer_player as gst;
|
use gstreamer_player as gst;
|
||||||
|
use gstreamer::ClockTime;
|
||||||
use gtk;
|
use gtk;
|
||||||
use gtk::prelude::*;
|
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)]
|
#[derive(Debug, Clone)]
|
||||||
struct PlayerInfo {
|
struct PlayerInfo {
|
||||||
container: gtk::Box,
|
container: gtk::Box,
|
||||||
@ -36,7 +49,7 @@ struct PlayerControls {
|
|||||||
pause: gtk::Button,
|
pause: gtk::Button,
|
||||||
forward: gtk::Button,
|
forward: gtk::Button,
|
||||||
rewind: gtk::Button,
|
rewind: gtk::Button,
|
||||||
state: PlayerState,
|
// state: PlayerState,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
@ -68,7 +81,7 @@ impl Default for PlayerWidget {
|
|||||||
pause,
|
pause,
|
||||||
forward,
|
forward,
|
||||||
rewind,
|
rewind,
|
||||||
state: PlayerState::Ready,
|
// state: PlayerState::Ready,
|
||||||
};
|
};
|
||||||
|
|
||||||
let timer_container = builder.get_object("timer").unwrap();
|
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