Save/unsave track from context menu

This commit is contained in:
André Andersson
2020-11-24 23:08:30 +01:00
committed by Henrik Friedrichsen
parent fb66946e95
commit bdc1ed8fc8

View File

@@ -9,6 +9,7 @@ use crate::library::Library;
use crate::queue::Queue; use crate::queue::Queue;
use crate::track::Track; use crate::track::Track;
use crate::traits::{ListItem, ViewExt}; use crate::traits::{ListItem, ViewExt};
use crate::playable::Playable;
use crate::ui::layout::Layout; use crate::ui::layout::Layout;
use crate::ui::modal::Modal; use crate::ui::modal::Modal;
use crate::{ use crate::{
@@ -29,6 +30,7 @@ enum ContextMenuAction {
ShareUrl(String), ShareUrl(String),
AddToPlaylist(Box<Track>), AddToPlaylist(Box<Track>),
ShowRecommentations(Box<dyn ListItem>), ShowRecommentations(Box<dyn ListItem>),
ToggleTrackSavedStatus(Box<Track>),
} }
impl ContextMenu { impl ContextMenu {
@@ -110,8 +112,15 @@ impl ContextMenu {
); );
content.add_item( content.add_item(
"Similar tracks", "Similar tracks",
ContextMenuAction::ShowRecommentations(Box::new(t)), ContextMenuAction::ShowRecommentations(Box::new(t.clone())),
); );
content.add_item(
match library.is_saved_track(&Playable::Track(t.clone())) {
true => "Unsave track",
false => "Save track",
},
ContextMenuAction::ToggleTrackSavedStatus(Box::new(t.clone())),
)
} }
// open detail view of artist/album // open detail view of artist/album
@@ -142,6 +151,10 @@ impl ContextMenu {
s.call_on_name("main", move |v: &mut Layout| v.push_view(view)); s.call_on_name("main", move |v: &mut Layout| v.push_view(view));
} }
} }
ContextMenuAction::ToggleTrackSavedStatus(track) => {
let mut track: Track = *track.clone();
track.toggle_saved(library);
}
} }
}); });