diff --git a/src/main.rs b/src/main.rs index 85080fb..a259ff6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -177,6 +177,30 @@ async fn handle_key_event(state: &mut AppState, player: &mut player::Player, key PlayerState::Stopped => {} } } + KeyCode::Left => { + if state.player_state != PlayerState::Stopped { + player.seek(-10.0)?; + tracing::info!("Seek backward 10s"); + } + } + KeyCode::Right => { + if state.player_state != PlayerState::Stopped { + player.seek(10.0)?; + tracing::info!("Seek forward 10s"); + } + } + KeyCode::Char('+') | KeyCode::Char('=') => { + let new_volume = (state.volume + 5).min(100); + state.volume = new_volume; + player.set_volume(new_volume)?; + tracing::info!("Volume: {}%", new_volume); + } + KeyCode::Char('-') => { + let new_volume = (state.volume - 5).max(0); + state.volume = new_volume; + player.set_volume(new_volume)?; + tracing::info!("Volume: {}%", new_volume); + } KeyCode::Char('r') => { state.is_refreshing = true; tracing::info!("Rescanning..."); diff --git a/src/ui/mod.rs b/src/ui/mod.rs index b95794d..733dbf0 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -149,7 +149,7 @@ fn render_title_bar(frame: &mut Frame, state: &AppState, area: Rect) { } fn render_status_bar(frame: &mut Frame, _state: &AppState, area: Rect) { - let shortcuts = "↑↓/jk: Navigate • h/l: Fold • t: Mark • c: Clear • Enter: Play • Space: Pause • n/p: Next/Prev • r: Rescan • q: Quit"; + let shortcuts = "↑↓/jk: Navigate • h/l: Fold • t: Mark • c: Clear • Enter: Play • Space: Pause • ←→: Seek • +/-: Volume • n/p: Next/Prev • r: Rescan • q: Quit"; let status_bar = Paragraph::new(shortcuts) .style(Style::default().fg(Color::White))