feat: Context switch on move

This commit is contained in:
Dheepak Krishnamurthy 2022-01-11 13:56:01 -07:00
parent a60688997b
commit 762100156f
3 changed files with 45 additions and 0 deletions

View file

@ -34,6 +34,7 @@ uda.taskwarrior-tui.task-report.auto-insert-double-quotes-on-add=true
uda.taskwarrior-tui.task-report.auto-insert-double-quotes-on-annotate=true 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
``` ```
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

@ -2699,12 +2699,46 @@ impl TaskwarriorTui {
self.mode = Mode::Tasks(Action::Report); self.mode = Mode::Tasks(Action::Report);
} else if input == Key::Down || input == self.keyconfig.down { } else if input == Key::Down || input == self.keyconfig.down {
self.context_next(); self.context_next();
if self.config.uda_context_menu_select_on_move {
if self.error.is_some() {
self.previous_mode = Some(self.mode.clone());
self.mode = Mode::Tasks(Action::Error);
} else {
match self.context_select() {
Ok(_) => {
self.get_context()?;
self.update(true)?;
}
Err(e) => {
self.error = Some(e.to_string());
}
}
}
}
} else if input == Key::Up || input == self.keyconfig.up { } else if input == Key::Up || input == self.keyconfig.up {
self.context_previous(); self.context_previous();
if self.config.uda_context_menu_select_on_move {
if self.error.is_some() {
self.previous_mode = Some(self.mode.clone());
self.mode = Mode::Tasks(Action::Error);
} else {
match self.context_select() {
Ok(_) => {
self.get_context()?;
self.update(true)?;
}
Err(e) => {
self.error = Some(e.to_string());
}
}
}
}
} else if input == Key::Char('\n') { } else if input == Key::Char('\n') {
if self.error.is_some() { if self.error.is_some() {
self.previous_mode = Some(self.mode.clone()); self.previous_mode = Some(self.mode.clone());
self.mode = Mode::Tasks(Action::Error); self.mode = Mode::Tasks(Action::Error);
} else if self.config.uda_context_menu_select_on_move {
self.mode = Mode::Tasks(Action::Report);
} else { } else {
match self.context_select() { match self.context_select() {
Ok(_) => { Ok(_) => {

View file

@ -79,6 +79,7 @@ pub struct Config {
pub uda_quick_tag_name: String, pub uda_quick_tag_name: String,
pub uda_task_report_prompt_on_delete: bool, pub uda_task_report_prompt_on_delete: bool,
pub uda_task_report_prompt_on_done: bool, pub uda_task_report_prompt_on_done: bool,
pub uda_context_menu_select_on_move: bool,
} }
impl Config { impl Config {
@ -137,6 +138,7 @@ impl Config {
let uda_quick_tag_name = Self::get_uda_quick_tag_name(data); let uda_quick_tag_name = Self::get_uda_quick_tag_name(data);
let uda_task_report_prompt_on_delete = Self::get_uda_task_report_prompt_on_delete(data); let uda_task_report_prompt_on_delete = Self::get_uda_task_report_prompt_on_delete(data);
let uda_task_report_prompt_on_done = Self::get_uda_task_report_prompt_on_done(data); let uda_task_report_prompt_on_done = Self::get_uda_task_report_prompt_on_done(data);
let uda_context_menu_select_on_move = Self::get_uda_context_menu_select_on_move(data);
Ok(Self { Ok(Self {
enabled, enabled,
@ -180,6 +182,7 @@ impl Config {
uda_quick_tag_name, uda_quick_tag_name,
uda_task_report_prompt_on_delete, uda_task_report_prompt_on_delete,
uda_task_report_prompt_on_done, uda_task_report_prompt_on_done,
uda_context_menu_select_on_move,
}) })
} }
@ -527,6 +530,13 @@ impl Config {
.unwrap_or(false) .unwrap_or(false)
} }
fn get_uda_context_menu_select_on_move(data: &str) -> bool {
Self::get_config("uda.taskwarrior-tui.context-menu.select-on-move", data)
.unwrap_or_default()
.get_bool()
.unwrap_or(false)
}
fn get_uda_task_report_prompt_on_delete(data: &str) -> bool { fn get_uda_task_report_prompt_on_delete(data: &str) -> bool {
Self::get_config("uda.taskwarrior-tui.task-report.prompt-on-delete", data) Self::get_config("uda.taskwarrior-tui.task-report.prompt-on-delete", data)
.unwrap_or_default() .unwrap_or_default()