Display album name for playable objects (#268)

* display album name

* give proper name to the space key

fixes #266

* use 50% for center offset

Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
This commit is contained in:
Moshe Sherman
2020-09-28 23:28:10 +03:00
committed by GitHub
parent cded15f50c
commit 77e5de562d
9 changed files with 47 additions and 2 deletions

View File

@@ -159,6 +159,10 @@ impl ListItem for Album {
format!("{}", self) format!("{}", self)
} }
fn display_center(&self) -> String {
"".to_string()
}
fn display_right(&self, library: Arc<Library>) -> String { fn display_right(&self, library: Arc<Library>) -> String {
let saved = if library.is_saved_album(self) { let saved = if library.is_saved_album(self) {
if library.use_nerdfont { if library.use_nerdfont {

View File

@@ -148,6 +148,10 @@ impl ListItem for Artist {
format!("{}", self) format!("{}", self)
} }
fn display_center(&self) -> String {
"".to_string()
}
fn display_right(&self, library: Arc<Library>) -> String { fn display_right(&self, library: Arc<Library>) -> String {
let followed = if library.is_followed_artist(self) { let followed = if library.is_followed_artist(self) {
if library.use_nerdfont { if library.use_nerdfont {

View File

@@ -71,6 +71,10 @@ impl ListItem for Episode {
self.name.clone() self.name.clone()
} }
fn display_center(&self) -> String {
"".to_string()
}
fn display_right(&self, _library: Arc<Library>) -> String { fn display_right(&self, _library: Arc<Library>) -> String {
format!("{} [{}]", self.duration_str(), self.release_date) format!("{} [{}]", self.duration_str(), self.release_date)
} }

View File

@@ -76,6 +76,10 @@ impl ListItem for Playable {
self.as_listitem().display_left() self.as_listitem().display_left()
} }
fn display_center(&self) -> String {
self.as_listitem().display_center()
}
fn display_right(&self, library: Arc<Library>) -> String { fn display_right(&self, library: Arc<Library>) -> String {
self.as_listitem().display_right(library) self.as_listitem().display_right(library)
} }

View File

@@ -128,6 +128,10 @@ impl ListItem for Playlist {
self.name.clone() self.name.clone()
} }
fn display_center(&self) -> String {
"".to_string()
}
fn display_right(&self, library: Arc<Library>) -> String { fn display_right(&self, library: Arc<Library>) -> String {
let saved = if library.is_saved_playlist(self) { let saved = if library.is_saved_playlist(self) {
if library.use_nerdfont { if library.use_nerdfont {

View File

@@ -92,6 +92,10 @@ impl ListItem for Show {
format!("{}", self) format!("{}", self)
} }
fn display_center(&self) -> String {
"".to_string()
}
fn display_right(&self, library: Arc<Library>) -> String { fn display_right(&self, library: Arc<Library>) -> String {
let saved = if library.is_saved_show(self) { let saved = if library.is_saved_show(self) {
if library.use_nerdfont { if library.use_nerdfont {

View File

@@ -153,6 +153,10 @@ impl ListItem for Track {
format!("{}", self) format!("{}", self)
} }
fn display_center(&self) -> String {
format!("{}", self.album)
}
fn display_right(&self, library: Arc<Library>) -> String { fn display_right(&self, library: Arc<Library>) -> String {
let saved = if library.is_saved_track(&Playable::Track(self.clone())) { let saved = if library.is_saved_track(&Playable::Track(self.clone())) {
if library.use_nerdfont { if library.use_nerdfont {

View File

@@ -15,6 +15,7 @@ use crate::track::Track;
pub trait ListItem: Sync + Send + 'static { pub trait ListItem: Sync + Send + 'static {
fn is_playing(&self, queue: Arc<Queue>) -> bool; fn is_playing(&self, queue: Arc<Queue>) -> bool;
fn display_left(&self) -> String; fn display_left(&self) -> String;
fn display_center(&self) -> String;
fn display_right(&self, library: Arc<Library>) -> String; fn display_right(&self, library: Arc<Library>) -> String;
fn play(&mut self, queue: Arc<Queue>); fn play(&mut self, queue: Arc<Queue>);
fn queue(&mut self, queue: Arc<Queue>); fn queue(&mut self, queue: Arc<Queue>);

View File

@@ -202,16 +202,19 @@ impl<I: ListItem> View for ListView<I> {
}; };
let left = item.display_left(); let left = item.display_left();
let center = item.display_center();
let right = item.display_right(self.library.clone()); let right = item.display_right(self.library.clone());
let center_offset = printer.size.x / 2;
// draw left string // draw left string
printer.with_color(style, |printer| { printer.with_color(style, |printer| {
printer.print_hline((0, 0), printer.size.x, " "); printer.print_hline((0, 0), printer.size.x, " ");
printer.print((0, 0), &left); printer.print((0, 0), &left);
}); });
// draw ".." to indicate a cut off string // left string cut off indicator
let max_length = printer.size.x.saturating_sub(right.width() + 1); let max_length = center_offset.saturating_sub(1);
if max_length < left.width() { if max_length < left.width() {
let offset = max_length.saturating_sub(1); let offset = max_length.saturating_sub(1);
printer.with_color(style, |printer| { printer.with_color(style, |printer| {
@@ -219,6 +222,19 @@ impl<I: ListItem> View for ListView<I> {
}); });
} }
printer.with_color(style, |printer| {
printer.print((center_offset, 0), &center);
});
// center string cut off indicator
let max_length = printer.size.x.saturating_sub(right.width() + 1);
if max_length < center_offset + center.width() {
let offset = max_length.saturating_sub(1);
printer.with_color(style, |printer| {
printer.print((offset, 0), "..");
});
}
// draw right string // draw right string
let offset = HAlign::Right.get_offset(right.width(), printer.size.x); let offset = HAlign::Right.get_offset(right.width(), printer.size.x);