diff --git a/README.md b/README.md index 997c88e..19c572b 100644 --- a/README.md +++ b/README.md @@ -141,6 +141,7 @@ Possible configuration values are: by default * `notify`: Enable or disable desktop notifications, off by default * `bitrate`: The audio bitrate to use for streaming, can be 96, 160, or 320 (default is 320) +* `album_column`: Show album column for tracks, on by default Keybindings can be configured in `[keybindings]` section in `config.toml`, e.g. as such: diff --git a/src/album.rs b/src/album.rs index a810bfd..4401bb5 100644 --- a/src/album.rs +++ b/src/album.rs @@ -176,7 +176,7 @@ impl ListItem for Album { format!("{}", self) } - fn display_center(&self) -> String { + fn display_center(&self, _library: Arc) -> String { "".to_string() } diff --git a/src/artist.rs b/src/artist.rs index 1fb09bf..c6ccdde 100644 --- a/src/artist.rs +++ b/src/artist.rs @@ -148,7 +148,7 @@ impl ListItem for Artist { format!("{}", self) } - fn display_center(&self) -> String { + fn display_center(&self, _library: Arc) -> String { "".to_string() } diff --git a/src/config.rs b/src/config.rs index 7a05461..6db1036 100644 --- a/src/config.rs +++ b/src/config.rs @@ -21,6 +21,7 @@ pub struct Config { pub volnorm_pregain: Option, pub notify: Option, pub bitrate: Option, + pub album_column: Option, } #[derive(Serialize, Deserialize, Debug, Default, Clone)] diff --git a/src/episode.rs b/src/episode.rs index 6d6f400..a3588f8 100644 --- a/src/episode.rs +++ b/src/episode.rs @@ -71,7 +71,7 @@ impl ListItem for Episode { self.name.clone() } - fn display_center(&self) -> String { + fn display_center(&self, _library: Arc) -> String { "".to_string() } diff --git a/src/library.rs b/src/library.rs index 102011e..6f2bd8e 100644 --- a/src/library.rs +++ b/src/library.rs @@ -12,6 +12,7 @@ use serde::Serialize; use crate::album::Album; use crate::artist::Artist; use crate::config; +use crate::config::Config; use crate::events::EventManager; use crate::playable::Playable; use crate::playlist::Playlist; @@ -65,6 +66,10 @@ impl Library { .expect("could not readlock listview content") } + pub fn config(&self) -> &Config { + &self.spotify.cfg + } + fn load_cache(&self, cache_path: PathBuf, store: Arc>>) { if let Ok(contents) = std::fs::read_to_string(&cache_path) { debug!("loading cache from {}", cache_path.display()); diff --git a/src/playable.rs b/src/playable.rs index dad2594..687fb1a 100644 --- a/src/playable.rs +++ b/src/playable.rs @@ -76,8 +76,8 @@ impl ListItem for Playable { self.as_listitem().display_left() } - fn display_center(&self) -> String { - self.as_listitem().display_center() + fn display_center(&self, library: Arc) -> String { + self.as_listitem().display_center(library) } fn display_right(&self, library: Arc) -> String { diff --git a/src/playlist.rs b/src/playlist.rs index d4ee5df..b4de90d 100644 --- a/src/playlist.rs +++ b/src/playlist.rs @@ -128,7 +128,7 @@ impl ListItem for Playlist { self.name.clone() } - fn display_center(&self) -> String { + fn display_center(&self, _library: Arc) -> String { "".to_string() } diff --git a/src/show.rs b/src/show.rs index dd252a3..e22ac7a 100644 --- a/src/show.rs +++ b/src/show.rs @@ -92,7 +92,7 @@ impl ListItem for Show { format!("{}", self) } - fn display_center(&self) -> String { + fn display_center(&self, _library: Arc) -> String { "".to_string() } diff --git a/src/track.rs b/src/track.rs index c9ab820..5676f55 100644 --- a/src/track.rs +++ b/src/track.rs @@ -153,8 +153,12 @@ impl ListItem for Track { format!("{}", self) } - fn display_center(&self) -> String { - self.album.to_string() + fn display_center(&self, library: Arc) -> String { + if library.config().album_column.unwrap_or(true) { + self.album.to_string() + } else { + "".to_string() + } } fn display_right(&self, library: Arc) -> String { diff --git a/src/traits.rs b/src/traits.rs index 21c5796..b8ae0e5 100644 --- a/src/traits.rs +++ b/src/traits.rs @@ -15,7 +15,7 @@ use crate::track::Track; pub trait ListItem: Sync + Send + 'static { fn is_playing(&self, queue: Arc) -> bool; fn display_left(&self) -> String; - fn display_center(&self) -> String; + fn display_center(&self, library: Arc) -> String; fn display_right(&self, library: Arc) -> String; fn play(&mut self, queue: Arc); fn queue(&mut self, queue: Arc); diff --git a/src/ui/listview.rs b/src/ui/listview.rs index 465cd29..a8ae710 100644 --- a/src/ui/listview.rs +++ b/src/ui/listview.rs @@ -229,7 +229,7 @@ impl View for ListView { }; let left = item.display_left(); - let center = item.display_center(); + let center = item.display_center(self.library.clone()); let right = item.display_right(self.library.clone()); let draw_center = !center.is_empty();