From bdff08776bebe55ac124172d506d6cf08f75bd88 Mon Sep 17 00:00:00 2001 From: Malte Voos Date: Fri, 21 Nov 2025 23:29:22 +0100 Subject: remove OptionTracker --- src/app.rs | 2 +- src/cue_view.rs | 6 +++--- src/subtitle_view.rs | 6 +++--- src/util/mod.rs | 2 -- src/util/option_tracker.rs | 43 ------------------------------------------- 5 files changed, 7 insertions(+), 52 deletions(-) delete mode 100644 src/util/option_tracker.rs diff --git a/src/app.rs b/src/app.rs index 066980c..d6b731c 100644 --- a/src/app.rs +++ b/src/app.rs @@ -12,7 +12,7 @@ use crate::{ subtitle_view::{SubtitleView, SubtitleViewMsg, SubtitleViewOutput}, tracks::{SUBTITLE_TRACKS, StreamIndex, SubtitleCue}, transcript::{Transcript, TranscriptMsg, TranscriptOutput}, - util::{OptionTracker, Tracker}, + util::Tracker, }; pub struct App { diff --git a/src/cue_view.rs b/src/cue_view.rs index c031720..fbf2520 100644 --- a/src/cue_view.rs +++ b/src/cue_view.rs @@ -8,10 +8,10 @@ use relm4::prelude::*; use relm4::{ComponentParts, SimpleComponent}; use unicode_segmentation::UnicodeSegmentation; -use crate::util::OptionTracker; +use crate::util::Tracker; pub struct CueView { - text: OptionTracker, + text: Tracker>, // byte ranges for the words in `text` word_ranges: Vec>, } @@ -71,7 +71,7 @@ impl SimpleComponent for CueView { sender: relm4::ComponentSender, ) -> relm4::ComponentParts { let model = Self { - text: OptionTracker::new(None), + text: Tracker::new(None), word_ranges: Vec::new(), }; diff --git a/src/subtitle_view.rs b/src/subtitle_view.rs index 50494b8..fd98c60 100644 --- a/src/subtitle_view.rs +++ b/src/subtitle_view.rs @@ -1,11 +1,11 @@ use crate::cue_view::{CueView, CueViewMsg, CueViewOutput}; -use crate::util::OptionTracker; +use crate::util::Tracker; use gtk::prelude::*; use relm4::prelude::*; pub struct SubtitleView { primary_cue: Controller, - secondary_cue: OptionTracker, + secondary_cue: Tracker>, } #[derive(Debug)] @@ -67,7 +67,7 @@ impl SimpleComponent for SubtitleView { CueViewOutput::MouseEnter => SubtitleViewOutput::SetHoveringCue(true), CueViewOutput::MouseLeave => SubtitleViewOutput::SetHoveringCue(false), }), - secondary_cue: OptionTracker::default(), + secondary_cue: Tracker::new(None), }; let widgets = view_output!(); diff --git a/src/util/mod.rs b/src/util/mod.rs index 600d572..4d19eff 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -1,5 +1,3 @@ -mod option_tracker; mod tracker; -pub use option_tracker::OptionTracker; pub use tracker::Tracker; diff --git a/src/util/option_tracker.rs b/src/util/option_tracker.rs deleted file mode 100644 index 3c19ee5..0000000 --- a/src/util/option_tracker.rs +++ /dev/null @@ -1,43 +0,0 @@ -pub struct OptionTracker { - inner: Option, - dirty: bool, -} - -/// Tracks changes to an inner Option. Any change using `set` will cause the -/// tracker to be marked as dirty, unless both the current and new value are -/// `None`. This should be used when changes from `Some(something)` to -/// `Some(something_different)` are rare, or when comparing inner values is more -/// expensive than performing an update which will mark the tracker as clean. -impl OptionTracker { - pub fn new(inner: Option) -> Self { - Self { inner, dirty: true } - } - - pub fn get(&self) -> &Option { - &self.inner - } - - pub fn set(&mut self, value: Option) { - match (&self.inner, &value) { - (None, None) => {} - _ => self.dirty = true, - } - - self.inner = value; - } - - pub fn is_dirty(&self) -> bool { - self.dirty - } - - /// Marks the tracker as clean. - pub fn reset(&mut self) { - self.dirty = false; - } -} - -impl Default for OptionTracker { - fn default() -> Self { - Self::new(Option::default()) - } -} -- cgit 1.4.1