From 38f97558a78cf33a5ad61672f97c1d8c26e56052 Mon Sep 17 00:00:00 2001 From: unspeaker Date: Sun, 6 Apr 2025 19:46:01 +0300 Subject: [PATCH] add clear_changes --- src/keys/save.rs | 3 +-- src/model.rs | 11 +++++++++++ src/model/entry.rs | 28 +++++++++++++--------------- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/keys/save.rs b/src/keys/save.rs index c1e1688..707d3fe 100644 --- a/src/keys/save.rs +++ b/src/keys/save.rs @@ -12,8 +12,7 @@ impl Taggart { }) }, press!(Enter) => match choice { 0 => { - todo!("clear modified_tag"); - //self.tasks = vec![]; + self.clear_changes(); self.mode = None; }, 1 => { diff --git a/src/model.rs b/src/model.rs index bacdc41..ccd7184 100644 --- a/src/model.rs +++ b/src/model.rs @@ -69,4 +69,15 @@ impl Taggart { self.changes = changes; self.changes } + /// Clear all modified tags. + pub(crate) fn clear_changes (&mut self) { + for entry in self.entries.iter_mut() { + if let Metadata::Music { + modified_tag, .. + } = &mut *entry.info.write().unwrap() { + *modified_tag = None; + } + } + self.changes = 0; + } } diff --git a/src/model/entry.rs b/src/model/entry.rs index b1ce316..5456249 100644 --- a/src/model/entry.rs +++ b/src/model/entry.rs @@ -200,21 +200,6 @@ macro_rules! generated_field { } } } - -generated_field!(hash = |self|match self { - Metadata::Image { hash, .. } => Some(hash.clone()), - Metadata::Music { hash, .. } => Some(hash.clone()), - Metadata::Unknown { hash, .. } => Some(hash.clone()), - _ => None -}); - -generated_field!(size = |self|match self { - Metadata::Image { size, .. } => Some(size.clone()), - Metadata::Music { size, .. } => Some(size.clone()), - Metadata::Unknown { size, .. } => Some(size.clone()), - _ => None -}); - macro_rules! music_tag_field { (string: $get:ident $set:ident $del:ident $key:expr) => { impl Entry { @@ -334,6 +319,19 @@ macro_rules! music_tag_field { }; } +generated_field!(hash = |self|match self { + Metadata::Image { hash, .. } => Some(hash.clone()), + Metadata::Music { hash, .. } => Some(hash.clone()), + Metadata::Unknown { hash, .. } => Some(hash.clone()), + _ => None +}); + +generated_field!(size = |self|match self { + Metadata::Image { size, .. } => Some(size.clone()), + Metadata::Music { size, .. } => Some(size.clone()), + Metadata::Unknown { size, .. } => Some(size.clone()), + _ => None +}); music_tag_field!(string: artist set_artist remove_artist ItemKey::TrackArtist); music_tag_field!(number: year set_year remove_year ItemKey::Year); music_tag_field!(string: album set_album remove_album ItemKey::AlbumTitle);