diff --git a/src/commands.rs b/src/commands.rs index 6045598..b04e893 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -16,7 +16,6 @@ pub struct CommandManager { commands: HashMap) -> Result, String>>>, aliases: HashMap, - callbacks: Vec ()>>, } impl CommandManager { @@ -24,7 +23,6 @@ impl CommandManager { CommandManager { commands: HashMap::new(), aliases: HashMap::new(), - callbacks: Vec::new(), } } @@ -325,14 +323,6 @@ impl CommandManager { v.set_error(e); }); } - - for cb in &self.callbacks { - cb(); - } - } - - pub fn register_callback(&mut self, cb: Box ()>) { - self.callbacks.push(cb); } pub fn register_keybinding<'a, E: Into, S: Into>( diff --git a/src/events.rs b/src/events.rs index 7a0aff4..f7e4f58 100644 --- a/src/events.rs +++ b/src/events.rs @@ -1,14 +1,11 @@ use crossbeam_channel::{unbounded, Receiver, Sender, TryIter}; use cursive::{CbFunc, Cursive}; -use playlists::PlaylistEvent; use spotify::PlayerEvent; pub enum Event { Player(PlayerEvent), - Playlist(PlaylistEvent), Command(String), - ScreenChange(String), } pub type EventSender = Sender; diff --git a/src/main.rs b/src/main.rs index 0aa3bdc..e59d022 100644 --- a/src/main.rs +++ b/src/main.rs @@ -126,7 +126,7 @@ fn main() { config::CLIENT_ID.to_string(), )); - let queue = Arc::new(queue::Queue::new(event_manager.clone(), spotify.clone())); + let queue = Arc::new(queue::Queue::new(spotify.clone())); #[cfg(feature = "mpris")] let mpris_manager = Arc::new(mpris::MprisManager::new(spotify.clone(), queue.clone())); @@ -206,11 +206,9 @@ fn main() { #[cfg(feature = "mpris")] mpris_manager.update(); } - Event::Playlist(_event) => (), Event::Command(cmd) => { cmd_manager.handle(&mut cursive, cmd); } - Event::ScreenChange(_name) => (), } } } diff --git a/src/playlists.rs b/src/playlists.rs index 69c41fc..748c454 100644 --- a/src/playlists.rs +++ b/src/playlists.rs @@ -4,7 +4,7 @@ use std::sync::{Arc, RwLock}; use rspotify::spotify::model::playlist::SimplifiedPlaylist; -use events::{Event, EventManager}; +use events::EventManager; use queue::Queue; use spotify::Spotify; use track::Track; @@ -16,10 +16,6 @@ pub struct Playlist { pub tracks: Vec, } -pub enum PlaylistEvent { - NewList(usize, Playlist), -} - #[derive(Clone)] pub struct Playlists { pub store: Arc>>, @@ -75,7 +71,7 @@ impl Playlists { store.extend(cache); // force refresh of UI (if visible) - self.ev.send(Event::ScreenChange("playlists".to_owned())); + self.ev.trigger(); } Err(e) => { error!("can't parse playlist cache: {}", e); @@ -154,11 +150,9 @@ impl Playlists { if self.needs_download(remote) { info!("updating playlist {}", remote.name); let playlist = Self::process_playlist(&remote, &self.spotify); - let index = self.append_or_update(&playlist); - self.ev.send(Event::Playlist(PlaylistEvent::NewList( - index, - playlist.clone(), - ))); + self.append_or_update(&playlist); + // trigger redraw + self.ev.trigger(); } } diff --git a/src/queue.rs b/src/queue.rs index dc6ac4f..bfbe537 100644 --- a/src/queue.rs +++ b/src/queue.rs @@ -1,6 +1,5 @@ use std::sync::{Arc, RwLock}; -use events::{Event, EventManager}; use spotify::Spotify; use track::Track; @@ -8,16 +7,14 @@ pub struct Queue { pub queue: Arc>>, current_track: RwLock>, spotify: Arc, - ev: EventManager, } impl Queue { - pub fn new(ev: EventManager, spotify: Arc) -> Queue { + pub fn new(spotify: Arc) -> Queue { Queue { queue: Arc::new(RwLock::new(Vec::new())), current_track: RwLock::new(None), spotify: spotify, - ev: ev, } } @@ -106,9 +103,6 @@ impl Queue { let mut q = self.queue.write().unwrap(); q.clear(); - - // redraw queue if open - self.ev.send(Event::ScreenChange("queue".to_owned())); } pub fn play(&self, index: usize) { diff --git a/src/ui/layout.rs b/src/ui/layout.rs index 7752a85..e1cd651 100644 --- a/src/ui/layout.rs +++ b/src/ui/layout.rs @@ -178,7 +178,6 @@ impl View for Layout { // their items if self.screenchange { debug!("layout: new screen selected: {}", &id); - self.ev.send(events::Event::ScreenChange(id.clone())); self.screenchange = false; } }