diff --git a/src/main.rs b/src/main.rs index 87a7643..430a614 100644 --- a/src/main.rs +++ b/src/main.rs @@ -163,7 +163,7 @@ fn main() { cfg.keybindings.clone(), ); - let search = ui::search::SearchView::new(spotify.clone(), queue.clone()); + let search = ui::search::SearchView::new(event_manager.clone(), spotify.clone(), queue.clone()); let playlistsview = ui::playlists::PlaylistView::new(&playlists, queue.clone()); diff --git a/src/ui/search.rs b/src/ui/search.rs index 7785596..032a115 100644 --- a/src/ui/search.rs +++ b/src/ui/search.rs @@ -12,6 +12,7 @@ use std::sync::{Arc, Mutex, RwLock}; use album::Album; use artist::Artist; use commands::CommandResult; +use events::EventManager; use playlists::{Playlist, Playlists}; use queue::Queue; use spotify::Spotify; @@ -28,13 +29,14 @@ pub struct SearchView { edit: IdView, list: IdView, edit_focused: bool, + events: EventManager, spotify: Arc, } pub const LIST_ID: &str = "search_list"; pub const EDIT_ID: &str = "search_edit"; impl SearchView { - pub fn new(spotify: Arc, queue: Arc) -> SearchView { + pub fn new(events: EventManager, spotify: Arc, queue: Arc) -> SearchView { let results_tracks = Arc::new(RwLock::new(Vec::new())); let results_albums = Arc::new(RwLock::new(Vec::new())); let results_artists = Arc::new(RwLock::new(Vec::new())); @@ -65,7 +67,8 @@ impl SearchView { edit: searchfield, list: tabs.with_id(LIST_ID), edit_focused: true, - spotify + events, + spotify, } } @@ -160,38 +163,46 @@ impl SearchView { self.spotify.refresh_token(); { + let ev = self.events.clone(); let spotify = self.spotify.clone(); let results = self.results_tracks.clone(); let query = query.clone(); - std::thread::spawn(|| { + std::thread::spawn(move || { Self::search_track(spotify, results, query); + ev.trigger(); }); } { + let ev = self.events.clone(); let spotify = self.spotify.clone(); let results = self.results_albums.clone(); let query = query.clone(); - std::thread::spawn(|| { + std::thread::spawn(move || { Self::search_album(spotify, results, query); + ev.trigger(); }); } { + let ev = self.events.clone(); let spotify = self.spotify.clone(); let results = self.results_artists.clone(); let query = query.clone(); - std::thread::spawn(|| { + std::thread::spawn(move || { Self::search_artist(spotify, results, query); + ev.trigger(); }); } { + let ev = self.events.clone(); let spotify = self.spotify.clone(); let results = self.results_playlists.clone(); let query = query.clone(); - std::thread::spawn(|| { + std::thread::spawn(move || { Self::search_playlist(spotify, results, query); + ev.trigger(); }); } }