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::time::Duration;
use crate::command::{
parse, Command, GotoMode, JumpMode, MoveAmount, MoveMode, SeekDirection, ShiftMode, TargetMode,
};
use crate::config::Config;
use crate::events::EventManager;
use crate::library::Library;
use crate::queue::{Queue, RepeatSetting};
use crate::spotify::{Spotify, VOLUME_PERCENT};
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::layout::Layout;
use crate::ui::modal::Modal;
use crate::ui::search_results::SearchResultsView;
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::traits::View;
use cursive::views::Dialog;
@@ -273,6 +269,8 @@ impl CommandManager {
contextmenu.on_command(s, cmd)?
} else if let Some(mut add_track_menu) = s.find_name::<AddToPlaylistMenu>("addtrackmenu") {
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 {
let mut main = s
.find_name::<Layout>("main")

View File

@@ -72,7 +72,6 @@ impl ContextMenu {
let library = library.clone();
playlist.append_tracks(&[track.clone()], spotify, library);
// playlist.map(|p| p.append_tracks(&[track.clone()], spotify, library));
c.pop_layer();
// Close add_track_dialog too
@@ -225,6 +224,7 @@ impl ContextMenu {
impl ViewExt for AddToPlaylistMenu {
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")
}
}
@@ -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>(
sel: &mut Modal<Dialog>,
s: &mut Cursive,

View File

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