From eda2f5ade23c468a2fc9e3f8ce9ad5ae7c8d0f02 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Sat, 4 Dec 2021 22:25:41 -0500 Subject: simplify --- src/bin/ttyplay/input.rs | 15 ++++-------- src/bin/ttyplay/main.rs | 62 ++++++++++++++++++++++++++---------------------- 2 files changed, 37 insertions(+), 40 deletions(-) diff --git a/src/bin/ttyplay/input.rs b/src/bin/ttyplay/input.rs index 31770fd..0da0c8b 100644 --- a/src/bin/ttyplay/input.rs +++ b/src/bin/ttyplay/input.rs @@ -1,8 +1,5 @@ -pub async fn handle( - key: textmode::Key, - event_w: async_std::channel::Sender, -) -> anyhow::Result<()> { - let event = match key { +pub fn to_event(key: &textmode::Key) -> Option { + Some(match key { textmode::Key::Char('g' | '0' | ')') => { crate::event::Event::FirstFrame } @@ -12,10 +9,6 @@ pub async fn handle( textmode::Key::Char('q') => crate::event::Event::Quit, textmode::Key::Char(' ') => crate::event::Event::Pause, textmode::Key::Ctrl(b'i') => crate::event::Event::ToggleUi, - _ => return Ok(()), - }; - - event_w.send(event).await?; - - Ok(()) + _ => return None, + }) } diff --git a/src/bin/ttyplay/main.rs b/src/bin/ttyplay/main.rs index a51435c..373dd75 100644 --- a/src/bin/ttyplay/main.rs +++ b/src/bin/ttyplay/main.rs @@ -172,67 +172,71 @@ async fn async_main(opt: Opt) -> anyhow::Result<()> { let mut display = display::Display::new(); let mut current_screen = vt100::Parser::default().screen().clone(); let events = event::Reader::new(event_r); - loop { - let event = events.read().await; + while let Some(event) = events.read().await { match event { - Some(event::Event::Render((idx, screen))) => { - current_screen = screen.clone(); - display.current_frame(idx); - display.render(&screen, &mut output).await?; - } - Some(event::Event::Key(key)) => { - input::handle(key, event_w.clone()).await?; - } - Some(event::Event::FrameLoaded(n)) => { - if let Some(n) = n { - display.total_frames(n); - } else { - display.done_loading(); + event::Event::Key(key) => { + if let Some(event) = input::to_event(&key) { + event_w.send(event).await?; } - display.render(¤t_screen, &mut output).await?; + continue; } - Some(event::Event::Pause) => { + event::Event::Pause => { timer_w.send(TimerAction::Pause).await?; + continue; } - Some(event::Event::Paused(paused)) => { - display.paused(paused); - display.render(¤t_screen, &mut output).await?; - } - Some(event::Event::FirstFrame) => { + event::Event::FirstFrame => { timer_w.send(TimerAction::GotoFrame(0)).await?; + continue; } - Some(event::Event::LastFrame) => { + event::Event::LastFrame => { timer_w .send(TimerAction::GotoFrame( display.get_total_frames() - 1, )) .await?; + continue; } - Some(event::Event::NextFrame) => { + event::Event::NextFrame => { timer_w .send(TimerAction::GotoFrame( display.get_current_frame() + 1, )) .await?; + continue; } - Some(event::Event::PreviousFrame) => { + event::Event::PreviousFrame => { timer_w .send(TimerAction::GotoFrame( display.get_current_frame() - 1, )) .await?; + continue; + } + event::Event::Render((idx, screen)) => { + current_screen = screen.clone(); + display.current_frame(idx); + } + event::Event::FrameLoaded(n) => { + if let Some(n) = n { + display.total_frames(n); + } else { + display.done_loading(); + } + } + event::Event::Paused(paused) => { + display.paused(paused); } - Some(event::Event::ToggleUi) => { + event::Event::ToggleUi => { display.toggle_ui(); - display.render(¤t_screen, &mut output).await?; } - Some(event::Event::Quit) | None => { - timer_w.send(TimerAction::Quit).await?; + event::Event::Quit => { break; } } + display.render(¤t_screen, &mut output).await?; } + timer_w.send(TimerAction::Quit).await?; timer_task.await; Ok(()) -- cgit v1.2.3-54-g00ecf