From 4c974a83f7fc3045d17ff7137017846718172675 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Thu, 18 Apr 2019 15:43:04 +0200 Subject: [PATCH] Use command system for queue saving --- src/commands.rs | 3 +++ src/ui/queue.rs | 25 +++++++------------------ 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/src/commands.rs b/src/commands.rs index 3b02055..736b660 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -58,6 +58,7 @@ impl CommandManager { self.register_command("shift", None); self.register_command("play", None); self.register_command("queue", None); + self.register_command("save", None); self.register_command("delete", None); self.register_command( @@ -293,6 +294,8 @@ impl CommandManager { kb.insert("c".into(), "clear".into()); kb.insert(" ".into(), "queue".into()); kb.insert("Enter".into(), "play".into()); + kb.insert("s".into(), "save".into()); + kb.insert("Ctrl+s".into(), "save queue".into()); kb.insert("d".into(), "delete".into()); kb.insert("/".into(), "focus search".into()); kb.insert(".".into(), "seek +500".into()); diff --git a/src/ui/queue.rs b/src/ui/queue.rs index 0ec38b7..416b02e 100644 --- a/src/ui/queue.rs +++ b/src/ui/queue.rs @@ -1,5 +1,4 @@ -use cursive::event::{Callback, Event, EventResult}; -use cursive::traits::{Boxable, Identifiable, View}; +use cursive::traits::{Boxable, Identifiable}; use cursive::view::ViewWrapper; use cursive::views::{Dialog, EditView, ScrollView, SelectView}; use cursive::Cursive; @@ -86,22 +85,6 @@ impl QueueView { impl ViewWrapper for QueueView { wrap_impl!(self.list: ListView); - - fn wrap_on_event(&mut self, ch: Event) -> EventResult { - match ch { - Event::Char('s') => { - debug!("save list"); - let queue = self.queue.clone(); - let library = self.library.clone(); - let cb = move |s: &mut Cursive| { - let dialog = Self::save_dialog(queue.clone(), library.clone()); - s.add_layer(dialog) - }; - EventResult::Consumed(Some(Callback::from_fn(cb))) - } - _ => self.list.on_event(ch), - } - } } impl ViewExt for QueueView { @@ -147,6 +130,12 @@ impl ViewExt for QueueView { } } + if cmd == "save" && args.get(0).unwrap_or(&"".to_string()) == "queue" { + let dialog = Self::save_dialog(self.queue.clone(), self.library.clone()); + s.add_layer(dialog); + return Ok(CommandResult::Consumed(None)); + } + self.with_view_mut(move |v| v.on_command(s, cmd, args)) .unwrap() }