diff --git a/src/album.rs b/src/album.rs index 93016d4..fe6d6c7 100644 --- a/src/album.rs +++ b/src/album.rs @@ -150,6 +150,10 @@ impl ListItem for Album { } } + fn as_listitem(&self) -> Box { + Box::new(self.clone()) + } + fn display_left(&self) -> String { format!("{}", self) } diff --git a/src/artist.rs b/src/artist.rs index 603ab24..010f16c 100644 --- a/src/artist.rs +++ b/src/artist.rs @@ -139,6 +139,10 @@ impl ListItem for Artist { } } + fn as_listitem(&self) -> Box { + Box::new(self.clone()) + } + fn display_left(&self) -> String { format!("{}", self) } diff --git a/src/playlist.rs b/src/playlist.rs index 5682763..74edbf3 100644 --- a/src/playlist.rs +++ b/src/playlist.rs @@ -107,6 +107,10 @@ impl ListItem for Playlist { } } + fn as_listitem(&self) -> Box { + Box::new(self.clone()) + } + fn display_left(&self) -> String { self.name.clone() } diff --git a/src/track.rs b/src/track.rs index ecff57b..d0008e3 100644 --- a/src/track.rs +++ b/src/track.rs @@ -151,6 +151,10 @@ impl ListItem for Track { current.map(|t| t.id == self.id).unwrap_or(false) } + fn as_listitem(&self) -> Box { + Box::new(self.clone()) + } + fn display_left(&self) -> String { format!("{}", self) } diff --git a/src/traits.rs b/src/traits.rs index 7fde625..7fc23ec 100644 --- a/src/traits.rs +++ b/src/traits.rs @@ -28,6 +28,8 @@ pub trait ListItem: Sync + Send + 'static { fn artist(&self) -> Option { None } + + fn as_listitem(&self) -> Box; } pub trait ViewExt: View {