Add option to customize library tabs
New option is called `library_tabs`. By default all tabs are enabled. Fixes #798
This commit is contained in:
@@ -2,9 +2,11 @@ use std::sync::Arc;
|
||||
|
||||
use cursive::view::ViewWrapper;
|
||||
use cursive::Cursive;
|
||||
use strum::IntoEnumIterator;
|
||||
|
||||
use crate::command::Command;
|
||||
use crate::commands::CommandResult;
|
||||
use crate::config::LibraryTab;
|
||||
use crate::library::Library;
|
||||
use crate::queue::Queue;
|
||||
use crate::traits::ViewExt;
|
||||
@@ -19,35 +21,46 @@ 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(), 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()),
|
||||
)
|
||||
.tab(
|
||||
"podcasts",
|
||||
"Podcasts",
|
||||
ListView::new(library.shows.clone(), queue, library.clone()),
|
||||
);
|
||||
let mut tabview = TabView::new();
|
||||
let selected_tabs = library
|
||||
.cfg
|
||||
.values()
|
||||
.library_tabs
|
||||
.clone()
|
||||
.unwrap_or(Vec::from_iter(LibraryTab::iter()));
|
||||
|
||||
for tab in selected_tabs {
|
||||
match tab {
|
||||
LibraryTab::Tracks => tabview.add_tab(
|
||||
"tracks",
|
||||
"Tracks",
|
||||
ListView::new(library.tracks.clone(), queue.clone(), library.clone()),
|
||||
),
|
||||
LibraryTab::Albums => tabview.add_tab(
|
||||
"albums",
|
||||
"Albums",
|
||||
ListView::new(library.albums.clone(), queue.clone(), library.clone()),
|
||||
),
|
||||
LibraryTab::Artists => tabview.add_tab(
|
||||
"artists",
|
||||
"Artists",
|
||||
ListView::new(library.artists.clone(), queue.clone(), library.clone()),
|
||||
),
|
||||
LibraryTab::Playlists => tabview.add_tab(
|
||||
"playlists",
|
||||
"Playlists",
|
||||
PlaylistsView::new(queue.clone(), library.clone()),
|
||||
),
|
||||
LibraryTab::Podcasts => tabview.add_tab(
|
||||
"podcasts",
|
||||
"Podcasts",
|
||||
ListView::new(library.shows.clone(), queue.clone(), library.clone()),
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
Self {
|
||||
tabs,
|
||||
tabs: tabview,
|
||||
display_name: library.display_name.clone(),
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user