feat: Support rotating tabs using '[' and ']'

This commit is contained in:
Dheepak Krishnamurthy 2022-07-28 08:39:53 -06:00
parent 40cb4bbc0e
commit b4a28a0b56
4 changed files with 29 additions and 2 deletions

View file

@ -39,6 +39,7 @@ uda.taskwarrior-tui.task-report.auto-insert-double-quotes-on-annotate=true
uda.taskwarrior-tui.task-report.auto-insert-double-quotes-on-log=true uda.taskwarrior-tui.task-report.auto-insert-double-quotes-on-log=true
uda.taskwarrior-tui.task-report.reset-filter-on-esc=true uda.taskwarrior-tui.task-report.reset-filter-on-esc=true
uda.taskwarrior-tui.context-menu.select-on-move=false uda.taskwarrior-tui.context-menu.select-on-move=false
uda.taskwarrior-tui.tabs.change-focus-rotate=false
``` ```
The `uda.taskwarrior-tui.task-report.next.filter` variable defines the default view at program startup. Set this to any preconfigured report (`task reports`), or create your own report in taskwarrior and specify its name here. The `uda.taskwarrior-tui.task-report.next.filter` variable defines the default view at program startup. Set this to any preconfigured report (`task reports`), or create your own report in taskwarrior and specify its name here.

View file

@ -2542,6 +2542,10 @@ impl TaskwarriorTui {
Mode::Calendar => { Mode::Calendar => {
if input == self.keyconfig.quit || input == KeyCode::Ctrl('c') { if input == self.keyconfig.quit || input == KeyCode::Ctrl('c') {
self.should_quit = true; self.should_quit = true;
} else if input == self.keyconfig.next_tab {
if self.config.uda_change_focus_rotate {
self.mode = Mode::Tasks(Action::Report);
}
} else if input == self.keyconfig.previous_tab { } else if input == self.keyconfig.previous_tab {
self.mode = Mode::Projects; self.mode = Mode::Projects;
} else if input == KeyCode::Up || input == self.keyconfig.up { } else if input == KeyCode::Up || input == self.keyconfig.up {
@ -2842,6 +2846,10 @@ impl TaskwarriorTui {
self.task_report_show_info = !self.task_report_show_info; self.task_report_show_info = !self.task_report_show_info;
} else if input == self.keyconfig.context_menu { } else if input == self.keyconfig.context_menu {
self.mode = Mode::Tasks(Action::ContextMenu); self.mode = Mode::Tasks(Action::ContextMenu);
} else if input == self.keyconfig.previous_tab {
if self.config.uda_change_focus_rotate {
self.mode = Mode::Calendar;
}
} else if input == self.keyconfig.next_tab { } else if input == self.keyconfig.next_tab {
self.mode = Mode::Projects; self.mode = Mode::Projects;
} }

View file

@ -90,6 +90,7 @@ pub struct Config {
pub uda_style_report_completion_pane: Style, pub uda_style_report_completion_pane: Style,
pub uda_style_report_completion_pane_highlight: Style, pub uda_style_report_completion_pane_highlight: Style,
pub uda_shortcuts: Vec<String>, pub uda_shortcuts: Vec<String>,
pub uda_change_focus_rotate: bool,
pub uda_background_process: String, pub uda_background_process: String,
pub uda_background_process_period: usize, pub uda_background_process_period: usize,
pub uda_quick_tag_name: String, pub uda_quick_tag_name: String,
@ -120,6 +121,7 @@ impl Config {
let rule_precedence_color = Self::get_rule_precedence_color(data); let rule_precedence_color = Self::get_rule_precedence_color(data);
let uda_priority_values = Self::get_uda_priority_values(data); let uda_priority_values = Self::get_uda_priority_values(data);
let uda_tick_rate = Self::get_uda_tick_rate(data); let uda_tick_rate = Self::get_uda_tick_rate(data);
let uda_change_focus_rotate = Self::get_uda_change_focus_rotate(data);
let uda_auto_insert_double_quotes_on_add = Self::get_uda_auto_insert_double_quotes_on_add(data); let uda_auto_insert_double_quotes_on_add = Self::get_uda_auto_insert_double_quotes_on_add(data);
let uda_auto_insert_double_quotes_on_annotate = Self::get_uda_auto_insert_double_quotes_on_annotate(data); let uda_auto_insert_double_quotes_on_annotate = Self::get_uda_auto_insert_double_quotes_on_annotate(data);
let uda_auto_insert_double_quotes_on_log = Self::get_uda_auto_insert_double_quotes_on_log(data); let uda_auto_insert_double_quotes_on_log = Self::get_uda_auto_insert_double_quotes_on_log(data);
@ -185,6 +187,7 @@ impl Config {
rule_precedence_color, rule_precedence_color,
uda_priority_values, uda_priority_values,
uda_tick_rate, uda_tick_rate,
uda_change_focus_rotate,
uda_auto_insert_double_quotes_on_add, uda_auto_insert_double_quotes_on_add,
uda_auto_insert_double_quotes_on_annotate, uda_auto_insert_double_quotes_on_annotate,
uda_auto_insert_double_quotes_on_log, uda_auto_insert_double_quotes_on_log,
@ -529,6 +532,13 @@ impl Config {
.unwrap_or(true) .unwrap_or(true)
} }
fn get_uda_change_focus_rotate(data: &str) -> bool {
Self::get_config("uda.taskwarrior-tui.tabs.change-focus-rotate", data)
.unwrap_or_default()
.get_bool()
.unwrap_or(false)
}
fn get_uda_tick_rate(data: &str) -> u64 { fn get_uda_tick_rate(data: &str) -> u64 {
Self::get_config("uda.taskwarrior-tui.tick-rate", data) Self::get_config("uda.taskwarrior-tui.tick-rate", data)
.unwrap_or_default() .unwrap_or_default()

View file

@ -12,7 +12,11 @@ pub trait Pane {
fn handle_input(app: &mut TaskwarriorTui, input: KeyCode) -> Result<()>; fn handle_input(app: &mut TaskwarriorTui, input: KeyCode) -> Result<()>;
fn change_focus_to_left_pane(app: &mut TaskwarriorTui) { fn change_focus_to_left_pane(app: &mut TaskwarriorTui) {
match app.mode { match app.mode {
Mode::Tasks(_) => {} Mode::Tasks(_) => {
if app.config.uda_change_focus_rotate {
app.mode = Mode::Calendar;
}
}
Mode::Projects => app.mode = Mode::Tasks(Action::Report), Mode::Projects => app.mode = Mode::Tasks(Action::Report),
Mode::Calendar => { Mode::Calendar => {
app.mode = Mode::Projects; app.mode = Mode::Projects;
@ -23,7 +27,11 @@ pub trait Pane {
match app.mode { match app.mode {
Mode::Tasks(_) => app.mode = Mode::Projects, Mode::Tasks(_) => app.mode = Mode::Projects,
Mode::Projects => app.mode = Mode::Calendar, Mode::Projects => app.mode = Mode::Calendar,
Mode::Calendar => {} Mode::Calendar => {
if app.config.uda_change_focus_rotate {
app.mode = Mode::Tasks(Action::Report);
}
}
} }
} }
} }