emit tasks for columns

This commit is contained in:
🪞👃🪞 2025-03-27 19:50:38 +02:00
parent e16e8131aa
commit 59c2fdcbcd
6 changed files with 79 additions and 55 deletions

View file

@ -1,11 +1,15 @@
use crate::*;
use std::cmp::{Eq, PartialEq, Ord, PartialOrd, Ordering};
use lofty::tag::TagItem;
#[derive(Debug)]
pub struct Entry {
pub path: PathBuf,
/// How many levels deep is this from the working directory
pub depth: usize,
pub info: Arc<RwLock<Metadata>>,
/// Full path to this entry
pub path: Arc<PathBuf>,
/// Type-specific metadata
pub info: Arc<RwLock<Metadata>>,
}
impl Entry {
@ -22,7 +26,7 @@ impl Entry {
fn new_dir (_: &impl AsRef<Path>, path: &Path, depth: usize) -> Perhaps<Self> {
Ok(Some(Self {
depth,
path: path.into(),
path: path.to_path_buf().into(),
info: Arc::new(RwLock::new(Metadata::Directory {
hash_file: None,
catalog_file: None,
@ -34,8 +38,8 @@ impl Entry {
fn new_file (_: &impl AsRef<Path>, path: &Path, depth: usize) -> Perhaps<Self> {
Ok(Some(Self {
depth,
path: path.to_path_buf().into(),
info: Arc::new(RwLock::new(Metadata::new(path)?)),
path: path.into(),
}))
}
pub fn is_directory (&self) -> bool {
@ -68,19 +72,19 @@ impl Entry {
pub fn track (&self) -> Option<Arc<str>> {
self.info.read().unwrap().track()
}
pub fn set_artist (&self, value: &impl AsRef<str>) -> Option<Task> {
pub fn set_artist (&self, value: &impl AsRef<str>) -> Option<TagItem> {
self.info.write().unwrap().set_artist(value)
}
pub fn set_year (&self, value: &impl AsRef<str>) -> Option<Task> {
pub fn set_year (&self, value: &impl AsRef<str>) -> Option<TagItem> {
self.info.write().unwrap().set_year(value)
}
pub fn set_album (&self, value: &impl AsRef<str>) -> Option<Task> {
pub fn set_album (&self, value: &impl AsRef<str>) -> Option<TagItem> {
self.info.write().unwrap().set_album(value)
}
pub fn set_title (&self, value: &impl AsRef<str>) -> Option<Task> {
pub fn set_title (&self, value: &impl AsRef<str>) -> Option<TagItem> {
self.info.write().unwrap().set_title(value)
}
pub fn set_track (&self, value: &impl AsRef<str>) -> Option<Task> {
pub fn set_track (&self, value: &impl AsRef<str>) -> Option<TagItem> {
self.info.write().unwrap().set_track(value)
}
}