mirror of
https://github.com/kdheepak/taskwarrior-tui.git
synced 2025-08-24 14:36:42 +02:00
feat: Context switch on move ✨
This commit is contained in:
parent
a60688997b
commit
762100156f
3 changed files with 45 additions and 0 deletions
|
@ -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.
|
||||||
|
|
34
src/app.rs
34
src/app.rs
|
@ -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(_) => {
|
||||||
|
|
|
@ -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()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue