Files
furumi_tui/src/app/action.rs
T

77 lines
2.6 KiB
Rust
Raw Normal View History

2026-06-10 16:11:09 +01:00
use serde::Deserialize;
/// Semantic commands the user can trigger. Raw key events are translated into
/// these by the keymap; views and `update()` never see raw keys.
#[derive(Debug, Clone, PartialEq, Eq, Deserialize)]
pub enum Action {
Quit,
NextTab,
PrevTab,
GoToTab(usize),
MoveUp,
MoveDown,
MoveLeft,
MoveRight,
PageUp,
PageDown,
SelectFirst,
SelectLast,
Select,
Back,
PlayPause,
NextTrack,
PrevTrack,
SeekForward { seconds: u32 },
SeekBackward { seconds: u32 },
VolumeUp,
VolumeDown,
ToggleShuffle,
CycleRepeat,
ToggleLike,
QueueAddNext,
QueueAddLast,
ClearQueue,
2026-06-10 16:11:09 +01:00
ToggleHelp,
ToggleViewMode,
OpenCommandLine,
Logout,
}
impl Action {
pub fn describe(&self) -> String {
match self {
Action::Quit => "Quit".into(),
Action::NextTab => "Next tab".into(),
Action::PrevTab => "Previous tab".into(),
Action::GoToTab(i) => format!("Go to tab {}", i + 1),
Action::MoveUp => "Move up".into(),
Action::MoveDown => "Move down".into(),
Action::MoveLeft => "Move left".into(),
Action::MoveRight => "Move right".into(),
Action::PageUp => "Page up".into(),
Action::PageDown => "Page down".into(),
Action::SelectFirst => "Jump to first item".into(),
Action::SelectLast => "Jump to last item".into(),
Action::Select => "Open / activate".into(),
Action::Back => "Go back / close".into(),
Action::PlayPause => "Play / pause".into(),
Action::NextTrack => "Next track".into(),
Action::PrevTrack => "Previous track".into(),
Action::SeekForward { seconds } => format!("Seek forward {seconds}s"),
Action::SeekBackward { seconds } => format!("Seek backward {seconds}s"),
Action::VolumeUp => "Volume up".into(),
Action::VolumeDown => "Volume down".into(),
Action::ToggleShuffle => "Toggle shuffle".into(),
Action::CycleRepeat => "Cycle repeat mode".into(),
Action::ToggleLike => "Like / unlike".into(),
Action::QueueAddNext => "Queue: add next".into(),
Action::QueueAddLast => "Queue: add to end".into(),
Action::ClearQueue => "Queue: clear".into(),
2026-06-10 16:11:09 +01:00
Action::ToggleHelp => "Show / hide keybindings".into(),
Action::ToggleViewMode => "Toggle tiles / table view".into(),
Action::OpenCommandLine => "Open command line (:/name searches)".into(),
Action::Logout => "Sign out".into(),
}
}
}