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:
@@ -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`
|
||||
|
||||
Reference in New Issue
Block a user