diff --git a/src/command.rs b/src/command.rs index 0e82604..2eb8697 100644 --- a/src/command.rs +++ b/src/command.rs @@ -87,6 +87,7 @@ pub enum Command { Move(MoveMode, Option), Shift(ShiftMode, Option), Search(String), + Help, } impl fmt::Display for Command { @@ -126,6 +127,7 @@ impl fmt::Display for Command { Command::Move(mode, amount) => format!("move {} {}", mode, amount.unwrap_or(1)), Command::Shift(mode, amount) => format!("shift {} {}", mode, amount.unwrap_or(1)), Command::Search(term) => format!("search {}", term), + Command::Help => "help".to_string(), }; write!(f, "{}", repr) } diff --git a/src/commands.rs b/src/commands.rs index 6e42b8a..d46f36c 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -7,6 +7,7 @@ use crate::library::Library; use crate::queue::{Queue, RepeatSetting}; use crate::spotify::{Spotify, VOLUME_PERCENT}; use crate::traits::ViewExt; +use crate::ui::help::HelpView; use crate::ui::layout::Layout; use cursive::event::{Event, Key}; use cursive::traits::View; @@ -139,6 +140,11 @@ impl CommandManager { self.spotify.set_volume(volume); Ok(None) } + Command::Help => { + let view = Box::new(HelpView::new(self.keybindings().clone())); + s.call_on_name("main", move |v: &mut Layout| v.push_view(view)); + Ok(None) + } Command::Search(_) | Command::Move(_, _) | Command::Shift(_, _) @@ -248,7 +254,7 @@ impl CommandManager { kb.insert("F1".into(), Command::Focus("queue".into())); kb.insert("F2".into(), Command::Focus("search".into())); kb.insert("F3".into(), Command::Focus("library".into())); - kb.insert("?".into(), Command::Focus("help".into())); + kb.insert("?".into(), Command::Help); kb.insert("Backspace".into(), Command::Back); kb.insert("o".into(), Command::Open(TargetMode::Selected)); diff --git a/src/main.rs b/src/main.rs index de2840d..9696e8d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -222,16 +222,13 @@ fn main() { let queueview = ui::queue::QueueView::new(queue.clone(), library.clone()); - let helpview = ui::help::HelpView::new(cmd_manager.keybindings().clone()); - let status = ui::statusbar::StatusBar::new(queue.clone(), library, cfg.use_nerdfont.unwrap_or(false)); let mut layout = ui::layout::Layout::new(status, &event_manager, theme) .view("search", search.with_name("search"), "Search") .view("library", libraryview.with_name("library"), "Library") - .view("queue", queueview, "Queue") - .view("help", helpview, "Help"); + .view("queue", queueview, "Queue"); // initial view is library layout.set_view("library"); diff --git a/src/ui/help.rs b/src/ui/help.rs index b1b5a0c..f63dd63 100644 --- a/src/ui/help.rs +++ b/src/ui/help.rs @@ -42,4 +42,8 @@ impl ViewWrapper for HelpView { wrap_impl!(self.view: ScrollView); } -impl ViewExt for HelpView {} +impl ViewExt for HelpView { + fn title(&self) -> String { + "Help".to_string() + } +}