From d27587a44ad7d2bc60470353f07a0ec1fa971e74 Mon Sep 17 00:00:00 2001 From: Jens Krause <47693+sectore@users.noreply.github.com> Date: Tue, 20 May 2025 10:01:29 +0200 Subject: [PATCH] fix(pomodoro): ctrl+r resets rounds + both clocks (#83) --- CHANGELOG.md | 1 + src/widgets/footer.rs | 4 ++-- src/widgets/pomodoro.rs | 16 +++++++++++++--- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff76fdd..f062f61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ ### Fixes +- (pomodoro) `ctrl+r` resets rounds AND both clocks [#83](https://github.com/sectore/tick-tock-tui/pull/83) - (pomodoro) reset active clock only [#82](https://github.com/sectore/tick-tock-tui/pull/82) ## v1.3.0 - 2025-05-06 diff --git a/src/widgets/footer.rs b/src/widgets/footer.rs index 8c1fb9c..c36e371 100644 --- a/src/widgets/footer.rs +++ b/src/widgets/footer.rs @@ -158,12 +158,12 @@ impl StatefulWidget for Footer { } spans.extend_from_slice(&[ Span::from(SPACE), - Span::from("[r]eset"), + Span::from("[r]eset clock"), ]); if self.selected_content == Content::Pomodoro { spans.extend_from_slice(&[ Span::from(SPACE), - Span::from("[^r]eset round"), + Span::from("[^r]eset clocks+rounds"), ]); } spans diff --git a/src/widgets/pomodoro.rs b/src/widgets/pomodoro.rs index d87fb69..605474b 100644 --- a/src/widgets/pomodoro.rs +++ b/src/widgets/pomodoro.rs @@ -107,10 +107,18 @@ impl PomodoroState { &self.clock_map.work } + pub fn get_clock_work_mut(&mut self) -> &mut ClockState { + self.clock_map.get_mut(&Mode::Work) + } + pub fn get_clock_pause(&self) -> &ClockState { &self.clock_map.pause } + pub fn get_clock_pause_mut(&mut self) -> &mut ClockState { + self.clock_map.get_mut(&Mode::Pause) + } + pub fn get_mode(&self) -> &Mode { &self.mode } @@ -198,13 +206,15 @@ impl TuiEventHandler for PomodoroState { KeyCode::Right => { self.next(); } - // reset round + // reset rounds AND clocks KeyCode::Char('r') if key.modifiers.contains(KeyModifiers::CONTROL) => { self.round = 1; + self.get_clock_work_mut().reset(); + self.get_clock_pause_mut().reset(); } - // reset values + // reset current clock KeyCode::Char('r') => { - // count number of finished rounds of WORK before resetting the clock + // increase round before (!!) resetting the clock if self.get_mode() == &Mode::Work && self.get_clock().is_done() { self.round += 1; }