diff --git a/src/app.rs b/src/app.rs index 5c74245..4593867 100755 --- a/src/app.rs +++ b/src/app.rs @@ -114,34 +114,47 @@ impl App { Ok(()) } - pub fn remove_from_current_playlist(&mut self) { - let mut file = String::new(); + pub fn handle_remove_or_from_current_playlist(&mut self) -> AppResult<()> { match self.selected_tab { SelectedTab::DirectoryBrowser => { - let (_, f) = self.browser.filetree.get(self.browser.selected).unwrap(); - file.push_str(f); + let (_, file) = self.browser.filetree.get(self.browser.selected).unwrap(); self.browser.selected += 1; + let mut status = false; + for (i, song) in self.queue_list.list.clone().iter().enumerate() { + if song.contains(file) { + self.conn.conn.delete(i as u32).unwrap(); + status = true; + } + } + + if !status { + let song = self + .conn + .get_song_with_only_filename(&self.conn.get_full_path(&file).unwrap()); + self.conn.conn.push(&song)?; + } } SelectedTab::Queue => { - file = self + let file = self .queue_list .list .get(self.queue_list.index) .unwrap() .to_string(); + + for (i, song) in self.queue_list.list.clone().iter().enumerate() { + if song.contains(&file) { + self.conn.conn.delete(i as u32).unwrap(); + } + } } _ => {} } - for (i, song) in self.queue_list.list.clone().iter().enumerate() { - if song.contains(&file) { - self.conn.conn.delete(i as u32).unwrap(); - } - } - self.update_queue(); + Ok(()) } pub fn cycle_tabls(&mut self) { diff --git a/src/handler.rs b/src/handler.rs index 91dcec7..34c8951 100755 --- a/src/handler.rs +++ b/src/handler.rs @@ -323,7 +323,7 @@ pub fn handle_key_events(key_event: KeyEvent, app: &mut App) -> AppResult<()> { // Remove from Current Playlsit KeyCode::Char(' ') | KeyCode::Backspace => { - app.remove_from_current_playlist(); + app.handle_remove_or_from_current_playlist()?; } // Change playlist name diff --git a/src/ui.rs b/src/ui.rs index d2066ad..c25d913 100755 --- a/src/ui.rs +++ b/src/ui.rs @@ -62,9 +62,9 @@ fn draw_directory_browser(frame: &mut Frame, app: &mut App, size: Rect) { } } if status { - list.push(ListItem::new(s.clone().bold())); + list.push(ListItem::new(s.clone().magenta().bold())); } else { - list.push(ListItem::new(Line::styled(s, Style::default()))); + list.push(ListItem::new(s.clone())); } } else { list.push(ListItem::new(Line::styled( @@ -115,7 +115,7 @@ fn draw_queue(frame: &mut Frame, app: &mut App, size: Rect) { let mut items: Vec = vec![]; for item in app.queue_list.list.iter() { if item.contains(&app.conn.current_song.file) { - items.push(ListItem::new(item.clone().bold())) + items.push(ListItem::new(item.clone().magenta().bold())) } else { items.push(ListItem::new(item.clone())); }