diff --git a/src/model.rs b/src/model.rs index c9cf5d3..473ad3c 100644 --- a/src/model.rs +++ b/src/model.rs @@ -3,7 +3,9 @@ use crate::*; mod column; pub use self::column::*; mod entry; pub use self::entry::*; mod metadata; pub use self::metadata::*; +mod task; pub use self::task::*; +/// The application state. pub struct Taggart { pub _root: PathBuf, pub entries: Vec, @@ -13,6 +15,7 @@ pub struct Taggart { pub columns: ColumnsOption>, fn(&mut [Entry], usize, &str)>, pub display: Measure, pub editing: Option<(usize, String)>, + pub tasks: Vec, } impl Taggart { @@ -25,6 +28,7 @@ impl Taggart { display: Measure::new(), editing: None, columns: Columns::default(), + tasks: vec![], entries, }) } diff --git a/src/model/task.rs b/src/model/task.rs new file mode 100644 index 0000000..1343c6d --- /dev/null +++ b/src/model/task.rs @@ -0,0 +1,20 @@ +use crate::*; +use lofty::tag::TagItem; + +/// An update to a file's metadata to be performed. +pub struct Task { + pub path: PathBuf, + pub item: TagItem +} + +impl Task { + fn new (path: &impl AsRef, item: TagItem) -> Self { + Self { + path: path.as_ref().into(), + item + } + } + fn apply (&self) -> Usually<()> { + todo!("apply {:?} to {:?}", self.item, self.path) + } +}