fix(countdown): reset MET while editing by local time (#72)

This commit is contained in:
Jens Krause 2025-04-13 21:17:56 +02:00 committed by GitHub
parent beb12d5ec2
commit 5b445afe25
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 18 additions and 41 deletions

View File

@ -4,7 +4,8 @@
### Fixes ### Fixes
(countdown) Reset `Mission Elapsed Time (MET)` if `countdown` is set by cli arguments [#71](https://github.com/sectore/timr-tui/pull/71) - (countdown) Reset `Mission Elapsed Time (MET)` if `countdown` is set by _local time_ [#72](https://github.com/sectore/timr-tui/pull/72)
- (countdown) Reset `Mission Elapsed Time (MET)` if `countdown` is set by _cli arguments_ [#71](https://github.com/sectore/timr-tui/pull/71)
### Misc. ### Misc.
@ -26,7 +27,6 @@
- (extension) Use `set_panic_hook` for better error handling [#67](https://github.com/sectore/timr-tui/pull/67) - (extension) Use `set_panic_hook` for better error handling [#67](https://github.com/sectore/timr-tui/pull/67)
- (deps) Use latest `Rust 1.85` and `Rust 2024 Edition`. Refactor `flake` to consider `rust-toolchain.toml` etc. [#68](https://github.com/sectore/timr-tui/pull/68) - (deps) Use latest `Rust 1.85` and `Rust 2024 Edition`. Refactor `flake` to consider `rust-toolchain.toml` etc. [#68](https://github.com/sectore/timr-tui/pull/68)
## v1.1.0 - 2025-01-22 ## v1.1.0 - 2025-01-22
### Features ### Features

View File

@ -144,8 +144,6 @@ impl CountdownState {
impl TuiEventHandler for CountdownState { impl TuiEventHandler for CountdownState {
fn update(&mut self, event: TuiEvent) -> Option<TuiEvent> { fn update(&mut self, event: TuiEvent) -> Option<TuiEvent> {
let is_edit_clock = self.clock.is_edit_mode();
let is_edit_time = self.edit_time.is_some();
match event { match event {
TuiEvent::Tick => { TuiEvent::Tick => {
if !self.clock.is_done() { if !self.clock.is_done() {
@ -191,11 +189,9 @@ impl TuiEventHandler for CountdownState {
} }
// STRG + e => toggle edit time // STRG + e => toggle edit time
KeyCode::Char('e') if key.modifiers.contains(KeyModifiers::CONTROL) => { KeyCode::Char('e') if key.modifiers.contains(KeyModifiers::CONTROL) => {
// stop editing clock // reset both clocks
if self.clock.is_edit_mode() { self.clock.reset();
// toggle edit mode self.elapsed_clock.reset();
self.clock.toggle_edit();
}
if let Some(edit_time) = &mut self.edit_time.clone() { if let Some(edit_time) = &mut self.edit_time.clone() {
self.edit_time_done(edit_time) self.edit_time_done(edit_time)
@ -207,18 +203,8 @@ impl TuiEventHandler for CountdownState {
max: self.max_time_to_edit(), max: self.max_time_to_edit(),
})); }));
} }
// stop `clock`
if self.clock.is_running() {
self.clock.toggle_pause();
} }
// e => toggle edit clock
// stop `elapsed_clock`
if self.elapsed_clock.is_running() {
self.elapsed_clock.toggle_pause();
}
}
// STRG + e => toggle edit clock
KeyCode::Char('e') => { KeyCode::Char('e') => {
// toggle edit mode // toggle edit mode
self.clock.toggle_edit(); self.clock.toggle_edit();
@ -227,47 +213,38 @@ impl TuiEventHandler for CountdownState {
if self.elapsed_clock.is_running() { if self.elapsed_clock.is_running() {
self.elapsed_clock.toggle_pause(); self.elapsed_clock.toggle_pause();
} }
// finish `edit_time` and continue for using `clock`
if let Some(edit_time) = &mut self.edit_time.clone() {
self.edit_time_done(edit_time);
} }
} KeyCode::Left if self.is_clock_edit_mode() => {
KeyCode::Left if is_edit_clock => {
self.clock.edit_next(); self.clock.edit_next();
} }
KeyCode::Left if is_edit_time => { KeyCode::Left if self.is_time_edit_mode() => {
// safe unwrap because of previous check in `is_edit_time` // safe unwrap because of previous check in `is_time_edit_mode`
self.edit_time.as_mut().unwrap().next(); self.edit_time.as_mut().unwrap().next();
} }
KeyCode::Right if is_edit_clock => { KeyCode::Right if self.is_clock_edit_mode() => {
self.clock.edit_prev(); self.clock.edit_prev();
} }
KeyCode::Right if is_edit_time => { KeyCode::Right if self.is_time_edit_mode() => {
// safe unwrap because of previous check in `is_edit_time` // safe unwrap because of previous check in `is_time_edit_mode`
self.edit_time.as_mut().unwrap().prev(); self.edit_time.as_mut().unwrap().prev();
} }
KeyCode::Up if is_edit_clock => { KeyCode::Up if self.is_clock_edit_mode() => {
self.clock.edit_up(); self.clock.edit_up();
// whenever `clock`'s value is changed, reset `elapsed_clock` // whenever `clock`'s value is changed, reset `elapsed_clock`
self.elapsed_clock.reset(); self.elapsed_clock.reset();
} }
KeyCode::Up if is_edit_time => { KeyCode::Up if self.is_time_edit_mode() => {
// safe unwrap because of previous check in `is_edit_time` // safe unwrap because of previous check in `is_time_edit_mode`
self.edit_time.as_mut().unwrap().up(); self.edit_time.as_mut().unwrap().up();
// whenever `clock`'s value is changed, reset `elapsed_clock`
self.elapsed_clock.reset();
} }
KeyCode::Down if is_edit_clock => { KeyCode::Down if self.is_clock_edit_mode() => {
self.clock.edit_down(); self.clock.edit_down();
// whenever clock value is changed, reset timer // whenever clock value is changed, reset timer
self.elapsed_clock.reset(); self.elapsed_clock.reset();
} }
KeyCode::Down if is_edit_time => { KeyCode::Down if self.is_time_edit_mode() => {
// safe unwrap because of previous check in `is_edit_time` // safe unwrap because of previous check in `is_time_edit_mode`
self.edit_time.as_mut().unwrap().down(); self.edit_time.as_mut().unwrap().down();
// whenever clock value is changed, reset timer
self.elapsed_clock.reset();
} }
_ => return Some(event), _ => return Some(event),
}, },