aboutsummaryrefslogtreecommitdiffstats
path: root/src/bin/ttyplay/event.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/bin/ttyplay/event.rs')
-rw-r--r--src/bin/ttyplay/event.rs50
1 files changed, 13 insertions, 37 deletions
diff --git a/src/bin/ttyplay/event.rs b/src/bin/ttyplay/event.rs
index d1d03e9..4effba4 100644
--- a/src/bin/ttyplay/event.rs
+++ b/src/bin/ttyplay/event.rs
@@ -2,23 +2,21 @@ pub enum Event {
FrameTransition((usize, vt100::Screen)),
Key(textmode::Key),
FrameLoaded(Option<usize>),
- Pause,
Paused(bool),
+ TimerAction(TimerAction),
+ ToggleUi,
+ Quit,
+}
+
+pub enum TimerAction {
+ Pause,
FirstFrame,
LastFrame,
NextFrame,
PreviousFrame,
- ToggleUi,
Quit,
}
-enum MoveFrame {
- First,
- Last,
- Next,
- Previous,
-}
-
pub struct Reader {
pending: async_std::sync::Mutex<Pending>,
cvar: async_std::sync::Condvar,
@@ -68,9 +66,8 @@ struct Pending {
key: std::collections::VecDeque<textmode::Key>,
frame_loaded: Option<usize>,
done_loading: bool,
- pause: bool,
paused: Option<bool>,
- frame_controls: std::collections::VecDeque<MoveFrame>,
+ timer_actions: std::collections::VecDeque<TimerAction>,
toggle_ui: bool,
quit: bool,
}
@@ -95,23 +92,11 @@ impl Pending {
self.done_loading = true;
}
}
- Event::Pause => {
- self.pause = !self.pause;
- }
Event::Paused(paused) => {
self.paused = Some(paused);
}
- Event::FirstFrame => {
- self.frame_controls.push_back(MoveFrame::First);
- }
- Event::LastFrame => {
- self.frame_controls.push_back(MoveFrame::Last);
- }
- Event::NextFrame => {
- self.frame_controls.push_back(MoveFrame::Next);
- }
- Event::PreviousFrame => {
- self.frame_controls.push_back(MoveFrame::Previous);
+ Event::TimerAction(action) => {
+ self.timer_actions.push_back(action);
}
Event::ToggleUi => {
self.toggle_ui = !self.toggle_ui;
@@ -127,9 +112,8 @@ impl Pending {
|| !self.key.is_empty()
|| self.frame_loaded.is_some()
|| self.done_loading
- || self.pause
|| self.paused.is_some()
- || !self.frame_controls.is_empty()
+ || !self.timer_actions.is_empty()
|| self.toggle_ui
|| self.quit
}
@@ -140,16 +124,8 @@ impl Pending {
Some(Event::Quit)
} else if let Some(key) = self.key.pop_front() {
Some(Event::Key(key))
- } else if self.pause {
- self.pause = false;
- Some(Event::Pause)
- } else if let Some(dir) = self.frame_controls.pop_front() {
- match dir {
- MoveFrame::First => Some(Event::FirstFrame),
- MoveFrame::Last => Some(Event::LastFrame),
- MoveFrame::Next => Some(Event::NextFrame),
- MoveFrame::Previous => Some(Event::PreviousFrame),
- }
+ } else if let Some(action) = self.timer_actions.pop_front() {
+ Some(Event::TimerAction(action))
} else if self.toggle_ui {
self.toggle_ui = false;
Some(Event::ToggleUi)