Display saved/followed checkmark

This commit is contained in:
KoffeinFlummi
2019-04-18 14:04:40 +02:00
parent d93302a63f
commit adba809327
12 changed files with 112 additions and 28 deletions

View File

@@ -18,9 +18,9 @@ pub struct LibraryView {
impl LibraryView {
pub fn new(queue: Arc<Queue>, library: Arc<Library>) -> Self {
let tabs = TabView::new()
.tab("tracks", "Tracks", ListView::new(library.tracks.clone(), queue.clone()))
.tab("albums", "Albums", ListView::new(library.albums.clone(), queue.clone()))
.tab("artists", "Artists", ListView::new(library.artists.clone(), queue.clone()))
.tab("tracks", "Tracks", ListView::new(library.tracks.clone(), queue.clone(), library.clone()))
.tab("albums", "Albums", ListView::new(library.albums.clone(), queue.clone(), library.clone()))
.tab("artists", "Artists", ListView::new(library.artists.clone(), queue.clone(), library.clone()))
.tab("playlists", "Playlists", PlaylistsView::new(queue.clone(), library.clone()));
Self {

View File

@@ -10,6 +10,7 @@ use cursive::{Cursive, Printer, Rect, Vec2};
use unicode_width::UnicodeWidthStr;
use commands::CommandResult;
use library::Library;
use queue::Queue;
use track::Track;
use traits::{ListItem, ViewExt};
@@ -84,11 +85,12 @@ pub struct ListView<I: ListItem> {
last_size: Vec2,
scrollbar: ScrollBase,
queue: Arc<Queue>,
library: Arc<Library>,
pagination: Pagination<I>,
}
impl<I: ListItem> ListView<I> {
pub fn new(content: Arc<RwLock<Vec<I>>>, queue: Arc<Queue>) -> Self {
pub fn new(content: Arc<RwLock<Vec<I>>>, queue: Arc<Queue>, library: Arc<Library>) -> Self {
Self {
content,
last_content_len: 0,
@@ -96,6 +98,7 @@ impl<I: ListItem> ListView<I> {
last_size: Vec2::new(0, 0),
scrollbar: ScrollBase::new(),
queue,
library,
pagination: Pagination::default(),
}
}
@@ -174,7 +177,7 @@ impl<I: ListItem> View for ListView<I> {
};
let left = item.display_left();
let right = item.display_right();
let right = item.display_right(self.library.clone());
// draw left string
printer.with_color(style, |printer| {

View File

@@ -20,7 +20,7 @@ pub struct PlaylistsView {
impl PlaylistsView {
pub fn new(queue: Arc<Queue>, library: Arc<Library>) -> Self {
Self {
list: ListView::new(library.playlists.clone(), queue.clone()),
list: ListView::new(library.playlists.clone(), queue.clone(), library.clone()),
library,
}
}

View File

@@ -23,7 +23,7 @@ pub struct QueueView {
impl QueueView {
pub fn new(queue: Arc<Queue>, library: Arc<Library>) -> QueueView {
let list = ListView::new(queue.queue.clone(), queue.clone());
let list = ListView::new(queue.queue.clone(), queue.clone(), library.clone());
QueueView {
list,

View File

@@ -44,7 +44,12 @@ type SearchHandler<I> =
pub const LIST_ID: &str = "search_list";
pub const EDIT_ID: &str = "search_edit";
impl SearchView {
pub fn new(events: EventManager, spotify: Arc<Spotify>, queue: Arc<Queue>) -> SearchView {
pub fn new(
events: EventManager,
spotify: Arc<Spotify>,
queue: Arc<Queue>,
library: Arc<Library>
) -> 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()));
@@ -61,13 +66,13 @@ impl SearchView {
})
.with_id(EDIT_ID);
let list_tracks = ListView::new(results_tracks.clone(), queue.clone());
let list_tracks = ListView::new(results_tracks.clone(), queue.clone(), library.clone());
let pagination_tracks = list_tracks.get_pagination().clone();
let list_albums = ListView::new(results_albums.clone(), queue.clone());
let list_albums = ListView::new(results_albums.clone(), queue.clone(), library.clone());
let pagination_albums = list_albums.get_pagination().clone();
let list_artists = ListView::new(results_artists.clone(), queue.clone());
let list_artists = ListView::new(results_artists.clone(), queue.clone(), library.clone());
let pagination_artists = list_artists.get_pagination().clone();
let list_playlists = ListView::new(results_playlists.clone(), queue.clone());
let list_playlists = ListView::new(results_playlists.clone(), queue.clone(), library.clone());
let pagination_playlists = list_playlists.get_pagination().clone();
let tabs = TabView::new()