add year column

This commit is contained in:
🪞👃🪞 2025-03-23 22:05:54 +02:00
parent 4bfdd28638
commit 2ebf2c6cef
5 changed files with 52 additions and 56 deletions

View file

@ -30,60 +30,31 @@ impl<T> Column<T, fn(&T)->Option<Arc<str>>, fn(&mut [T], usize, &str)> {
}
}
macro_rules! setter {
($method:ident) => {
|entries: &mut [Entry], index: usize, value: &str|{
if let Some(entries) = paths_under(entries, index) {
for entry in entries.iter() {
entry.write().unwrap().$method(&value);
}
} else if let Some(entry) = entries.get_mut(index) {
entry.$method(&value)
}
}
}
}
impl Default for Columns<Entry, fn(&Entry)->Option<Arc<str>>, fn(&mut [Entry], usize, &str)> {
fn default () -> Self {
Self(vec![
Column::new(&"HASH", 8, |entry: &Entry|entry.hash()),
Column::new(&"SIZE", 8, |entry: &Entry|entry.size()),
Column::new(&"FILE", 80, |entry: &Entry|entry.name()),
Column::new(&"ARTIST", 30, |entry: &Entry|entry.artist())
.setter(|entries: &mut [Entry], index: usize, value: &str|{
if let Some(entries) = paths_under(entries, index) {
for entry in entries.iter() {
entry.write().unwrap().set_artist(&value);
}
} else if let Some(entry) = entries.get_mut(index) {
entry.set_artist(&value)
}
}),
Column::new(&"RELEASE", 30, |entry: &Entry|entry.album())
.setter(|entries: &mut [Entry], index: usize, value: &str|{
if let Some(entries) = paths_under(entries, index) {
for entry in entries.iter() {
entry.write().unwrap().set_album(&value);
}
} else if let Some(entry) = entries.get_mut(index) {
entry.set_album(&value)
}
}),
Column::new(&"TRACK", 5, |entry: &Entry|entry.track())
.setter(|entries: &mut [Entry], index: usize, value: &str|{
if let Some(entries) = paths_under(entries, index) {
for entry in entries.iter() {
entry.write().unwrap().set_track(&value);
}
} else if let Some(entry) = entries.get_mut(index) {
entry.set_track(&value)
}
}),
Column::new(&"TITLE", 80, |entry: &Entry|entry.title())
.setter(|entries: &mut [Entry], index: usize, value: &str|{
if let Some(entries) = paths_under(entries, index) {
for entry in entries.iter() {
entry.write().unwrap().set_title(&value);
}
} else if let Some(entry) = entries.get_mut(index) {
entry.set_title(&value)
}
}),
Column::new(&"HASH", 8, |entry: &Entry|entry.hash()),
Column::new(&"SIZE", 8, |entry: &Entry|entry.size()),
Column::new(&"FILE", 80, |entry: &Entry|entry.name()),
Column::new(&"ARTIST", 30, |entry: &Entry|entry.artist()).setter(setter!(set_artist)),
Column::new(&"YEAR", 5, |entry: &Entry|entry.year()).setter(setter!(set_year)),
Column::new(&"RELEASE", 30, |entry: &Entry|entry.album()).setter(setter!(set_album)),
Column::new(&"TRACK", 5, |entry: &Entry|entry.track()).setter(setter!(set_track)),
Column::new(&"TITLE", 80, |entry: &Entry|entry.title()).setter(setter!(set_title)),
])
}
}