Add seek and volume controls
- Left/Right arrows: seek backward/forward 10 seconds - +/- keys: adjust volume by 5% increments - Volume clamped between 0-100% - Only allow seeking when track is playing - Update status bar help text with new controls
This commit is contained in:
parent
cc86f8eb55
commit
81908beb75
24
src/main.rs
24
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...");
|
||||
|
||||
@ -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))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user