Update keybindings (#76)

* (pomodoro) reset both clocks at once

* quit app by pressing `q` only

* (countdown) enter/esc keybindings

* (timer) enter/esc keybindings

* (pomodoro) enter/esc keybindings

* update footer label

* fix(coundown): don't reset elapsed clock

while skipping editing changes

* fix(clock): order of actions matters for ESC

handling. Set `pause` instead of `initial` mode while toggeling back.

* fix(timer): order of actions matters (ESC key)

* (footer) update order, lowercase standard keys
This commit is contained in:
Jens Krause
2025-04-30 11:11:33 +02:00
committed by GitHub
parent 90d9988e7a
commit e6291a3131
6 changed files with 117 additions and 60 deletions

View File

@@ -187,33 +187,65 @@ impl TuiEventHandler for CountdownState {
self.edit_time_done(edit_time);
}
}
// STRG + e => toggle edit time
KeyCode::Char('e') if key.modifiers.contains(KeyModifiers::CONTROL) => {
// reset both clocks
self.clock.reset();
self.elapsed_clock.reset();
if let Some(edit_time) = &mut self.edit_time.clone() {
self.edit_time_done(edit_time)
} else {
// update `edit_time`
self.edit_time = Some(EditTimeState::new(EditTimeStateArgs {
time: self.time_to_edit(),
min: self.min_time_to_edit(),
max: self.max_time_to_edit(),
}));
}
}
// e => toggle edit clock
KeyCode::Char('e') => {
// toggle edit mode
// skip editing clock
KeyCode::Esc if self.is_clock_edit_mode() => {
// Important: set current value first
self.clock.set_current_value(*self.clock.get_prev_value());
// before toggling back to non-edit mode
self.clock.toggle_edit();
}
// skip editing by local time
KeyCode::Esc if self.is_time_edit_mode() => {
self.edit_time = None;
}
// stop `elapsed_clock`
// Enter edit by local time mode
KeyCode::Char('e')
if key.modifiers.contains(KeyModifiers::CONTROL)
&& !self.is_time_edit_mode() =>
{
// set `edit_time`
self.edit_time = Some(EditTimeState::new(EditTimeStateArgs {
time: self.time_to_edit(),
min: self.min_time_to_edit(),
max: self.max_time_to_edit(),
}));
// pause `elapsed_clock`
if self.elapsed_clock.is_running() {
self.elapsed_clock.toggle_pause();
}
}
// Enter edit clock
KeyCode::Char('e') if !self.is_clock_edit_mode() => {
// toggle edit mode
self.clock.toggle_edit();
// pause `elapsed_clock`
if self.elapsed_clock.is_running() {
self.elapsed_clock.toggle_pause();
}
}
// Apply changes of editing by local time
KeyCode::Enter if self.is_time_edit_mode() => {
if let Some(edit_time) = &mut self.edit_time.clone() {
self.edit_time_done(edit_time)
}
// always reset `elapsed_clock`
self.elapsed_clock.reset();
}
// Apply changes of editing clock
// Note: Using Ctrl+e is deprecated, use Enter instead
KeyCode::Enter if self.is_clock_edit_mode() => {
// toggle edit mode
self.clock.toggle_edit();
// always reset `elapsed_clock`
self.elapsed_clock.reset();
}
KeyCode::Left if self.is_clock_edit_mode() => {
self.clock.edit_next();
}
@@ -230,8 +262,6 @@ impl TuiEventHandler for CountdownState {
}
KeyCode::Up if self.is_clock_edit_mode() => {
self.clock.edit_up();
// whenever `clock`'s value is changed, reset `elapsed_clock`
self.elapsed_clock.reset();
}
KeyCode::Up if self.is_time_edit_mode() => {
// safe unwrap because of previous check in `is_time_edit_mode`
@@ -239,8 +269,6 @@ impl TuiEventHandler for CountdownState {
}
KeyCode::Down if self.is_clock_edit_mode() => {
self.clock.edit_down();
// whenever clock value is changed, reset timer
self.elapsed_clock.reset();
}
KeyCode::Down if self.is_time_edit_mode() => {
// safe unwrap because of previous check in `is_time_edit_mode`