Fix: Handle commands in select artist modal

Fixes #560
This commit is contained in:
Henrik Friedrichsen
2021-07-11 01:29:11 +02:00
parent c0240d8fcf
commit 46a8f01bac
3 changed files with 15 additions and 12 deletions

View File

@@ -2,25 +2,21 @@ use std::collections::HashMap;
use std::sync::Arc; use std::sync::Arc;
use std::time::Duration; use std::time::Duration;
use crate::command::{
parse, Command, GotoMode, JumpMode, MoveAmount, MoveMode, SeekDirection, ShiftMode, TargetMode,
};
use crate::config::Config; use crate::config::Config;
use crate::events::EventManager; use crate::events::EventManager;
use crate::library::Library; use crate::library::Library;
use crate::queue::{Queue, RepeatSetting}; use crate::queue::{Queue, RepeatSetting};
use crate::spotify::{Spotify, VOLUME_PERCENT}; use crate::spotify::{Spotify, VOLUME_PERCENT};
use crate::traits::{IntoBoxedViewExt, ViewExt}; use crate::traits::{IntoBoxedViewExt, ViewExt};
use crate::ui::contextmenu::ContextMenu; use crate::ui::contextmenu::{AddToPlaylistMenu, ContextMenu, SelectArtistMenu};
use crate::ui::help::HelpView; use crate::ui::help::HelpView;
use crate::ui::layout::Layout; use crate::ui::layout::Layout;
use crate::ui::modal::Modal; use crate::ui::modal::Modal;
use crate::ui::search_results::SearchResultsView; use crate::ui::search_results::SearchResultsView;
use crate::UserData; use crate::UserData;
use crate::{
command::{
parse, Command, GotoMode, JumpMode, MoveAmount, MoveMode, SeekDirection, ShiftMode,
TargetMode,
},
ui::contextmenu::AddToPlaylistMenu,
};
use cursive::event::{Event, Key}; use cursive::event::{Event, Key};
use cursive::traits::View; use cursive::traits::View;
use cursive::views::Dialog; use cursive::views::Dialog;
@@ -273,6 +269,8 @@ impl CommandManager {
contextmenu.on_command(s, cmd)? contextmenu.on_command(s, cmd)?
} else if let Some(mut add_track_menu) = s.find_name::<AddToPlaylistMenu>("addtrackmenu") { } else if let Some(mut add_track_menu) = s.find_name::<AddToPlaylistMenu>("addtrackmenu") {
add_track_menu.on_command(s, cmd)? add_track_menu.on_command(s, cmd)?
} else if let Some(mut select_artist) = s.find_name::<SelectArtistMenu>("selectartist") {
select_artist.on_command(s, cmd)?
} else { } else {
let mut main = s let mut main = s
.find_name::<Layout>("main") .find_name::<Layout>("main")

View File

@@ -72,7 +72,6 @@ impl ContextMenu {
let library = library.clone(); let library = library.clone();
playlist.append_tracks(&[track.clone()], spotify, library); playlist.append_tracks(&[track.clone()], spotify, library);
// playlist.map(|p| p.append_tracks(&[track.clone()], spotify, library));
c.pop_layer(); c.pop_layer();
// Close add_track_dialog too // Close add_track_dialog too
@@ -225,6 +224,7 @@ impl ContextMenu {
impl ViewExt for AddToPlaylistMenu { impl ViewExt for AddToPlaylistMenu {
fn on_command(&mut self, s: &mut Cursive, cmd: &Command) -> Result<CommandResult, String> { fn on_command(&mut self, s: &mut Cursive, cmd: &Command) -> Result<CommandResult, String> {
log::info!("playlist command: {:?}", cmd);
handle_move_command::<Playlist>(&mut self.dialog, s, cmd, "addplaylist_select") handle_move_command::<Playlist>(&mut self.dialog, s, cmd, "addplaylist_select")
} }
} }
@@ -235,6 +235,13 @@ impl ViewExt for ContextMenu {
} }
} }
impl ViewExt for SelectArtistMenu {
fn on_command(&mut self, s: &mut Cursive, cmd: &Command) -> Result<CommandResult, String> {
log::info!("artist move command: {:?}", cmd);
handle_move_command::<Artist>(&mut self.dialog, s, cmd, "artist_select")
}
}
fn handle_move_command<T: 'static>( fn handle_move_command<T: 'static>(
sel: &mut Modal<Dialog>, sel: &mut Modal<Dialog>,
s: &mut Cursive, s: &mut Cursive,

View File

@@ -509,9 +509,7 @@ impl<I: ListItem + Clone> ViewExt for ListView<I> {
let dialog = ContextMenu::select_artist_dialog( let dialog = ContextMenu::select_artist_dialog(
library, queue, artists, library, queue, artists,
); );
_s.add_layer(dialog); Ok(CommandResult::Modal(Box::new(dialog)))
Ok(CommandResult::Consumed(None))
} }
}; };
} }