mirror of
https://github.com/kdheepak/taskwarrior-tui.git
synced 2025-08-25 08:47:18 +02:00
Move task_id before command where ever possible
This commit is contained in:
parent
c27e70cd5b
commit
39febd7b29
2 changed files with 95 additions and 24 deletions
28
src/app.rs
28
src/app.rs
|
@ -100,6 +100,7 @@ pub enum AppMode {
|
|||
pub struct App {
|
||||
pub should_quit: bool,
|
||||
pub state: TableState,
|
||||
pub cursor_location: usize,
|
||||
pub filter: String,
|
||||
pub command: String,
|
||||
pub error: String,
|
||||
|
@ -119,6 +120,7 @@ impl App {
|
|||
task_report_labels: vec![],
|
||||
task_report_columns: vec![],
|
||||
filter: "status:pending ".to_string(),
|
||||
cursor_location: 0,
|
||||
command: "".to_string(),
|
||||
modify: "".to_string(),
|
||||
error: "".to_string(),
|
||||
|
@ -159,16 +161,14 @@ impl App {
|
|||
AppMode::Filter => {
|
||||
f.render_widget(Clear, rects[1]);
|
||||
f.set_cursor(
|
||||
rects[1].x + self.filter.width() as u16 + 1,
|
||||
rects[1].x + self.cursor_location as u16 + 1,
|
||||
rects[1].y + 1,
|
||||
);
|
||||
self.draw_command(f, rects[1], &self.filter[..], "Filter Tasks");
|
||||
},
|
||||
AppMode::ModifyTask => {
|
||||
f.set_cursor(
|
||||
// Put cursor past the end of the input text
|
||||
rects[1].x + self.modify.width() as u16 + 1,
|
||||
// Move one line down, from the border to the input line
|
||||
rects[1].x + self.cursor_location as u16 + 1,
|
||||
rects[1].y + 1,
|
||||
);
|
||||
f.render_widget(Clear, rects[1]);
|
||||
|
@ -176,9 +176,7 @@ impl App {
|
|||
},
|
||||
AppMode::LogTask => {
|
||||
f.set_cursor(
|
||||
// Put cursor past the end of the input text
|
||||
rects[1].x + self.command.width() as u16 + 1,
|
||||
// Move one line down, from the border to the input line
|
||||
rects[1].x + self.cursor_location as u16 + 1,
|
||||
rects[1].y + 1,
|
||||
);
|
||||
f.render_widget(Clear, rects[1]);
|
||||
|
@ -186,9 +184,7 @@ impl App {
|
|||
},
|
||||
AppMode::AddTask => {
|
||||
f.set_cursor(
|
||||
// Put cursor past the end of the input text
|
||||
rects[1].x + self.command.width() as u16 + 1,
|
||||
// Move one line down, from the border to the input line
|
||||
rects[1].x + self.cursor_location as u16 + 1,
|
||||
rects[1].y + 1,
|
||||
);
|
||||
f.render_widget(Clear, rects[1]);
|
||||
|
@ -544,8 +540,8 @@ impl App {
|
|||
let task_id = self.tasks[selected].id().unwrap_or_default();
|
||||
let mut command = Command::new("task");
|
||||
command
|
||||
.arg("modify")
|
||||
.arg(format!("{}", task_id));
|
||||
.arg(format!("{}", task_id))
|
||||
.arg("modify");
|
||||
|
||||
match shlex::split(&self.modify) {
|
||||
Some(cmd) => {
|
||||
|
@ -629,8 +625,8 @@ impl App {
|
|||
}
|
||||
|
||||
let output = Command::new("task")
|
||||
.arg(command)
|
||||
.arg(format!("{}", task_id))
|
||||
.arg(command)
|
||||
.output();
|
||||
match output {
|
||||
Ok(_) => Ok(()),
|
||||
|
@ -647,8 +643,8 @@ impl App {
|
|||
|
||||
let output = Command::new("task")
|
||||
.arg("rc.confirmation=off")
|
||||
.arg("delete")
|
||||
.arg(format!("{}", task_id))
|
||||
.arg("delete")
|
||||
.output();
|
||||
match output {
|
||||
Ok(_) => Ok(()),
|
||||
|
@ -663,8 +659,8 @@ impl App {
|
|||
let selected = self.state.selected().unwrap_or_default();
|
||||
let task_id = self.tasks[selected].id().unwrap_or_default();
|
||||
let output = Command::new("task")
|
||||
.arg("done")
|
||||
.arg(format!("{}", task_id))
|
||||
.arg("done")
|
||||
.output();
|
||||
match output {
|
||||
Ok(_) => Ok(()),
|
||||
|
@ -694,8 +690,8 @@ impl App {
|
|||
let selected = self.state.selected().unwrap_or_default();
|
||||
let task_id = self.tasks[selected].id().unwrap_or_default();
|
||||
let r = Command::new("task")
|
||||
.arg("edit")
|
||||
.arg(format!("{}", task_id))
|
||||
.arg("edit")
|
||||
.spawn();
|
||||
|
||||
match r {
|
||||
|
|
91
src/main.rs
91
src/main.rs
|
@ -100,18 +100,21 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||
Some(t) => app.modify = t.description().to_string(),
|
||||
None => app.modify = "".to_string(),
|
||||
}
|
||||
app.cursor_location = app.modify.len();
|
||||
}
|
||||
Key::Char('l') => {
|
||||
app.mode = AppMode::LogTask;
|
||||
}
|
||||
Key::Char('a') => {
|
||||
app.mode = AppMode::AddTask;
|
||||
app.cursor_location = app.command.len();
|
||||
}
|
||||
Key::Char('?') => {
|
||||
app.mode = AppMode::HelpPopup;
|
||||
}
|
||||
Key::Char('/') => {
|
||||
app.mode = AppMode::Filter;
|
||||
app.cursor_location = app.filter.len();
|
||||
}
|
||||
_ => {}
|
||||
},
|
||||
|
@ -135,11 +138,29 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||
app.modify = "".to_string();
|
||||
app.mode = AppMode::Report;
|
||||
}
|
||||
Key::Right => {
|
||||
if app.cursor_location < app.modify.len() {
|
||||
app.cursor_location += 1;
|
||||
}
|
||||
}
|
||||
Key::Left => {
|
||||
if app.cursor_location > 0 {
|
||||
app.cursor_location -= 1;
|
||||
}
|
||||
}
|
||||
Key::Char(c) => {
|
||||
app.modify.push(c);
|
||||
if app.cursor_location < app.modify.len() {
|
||||
app.modify.insert(app.cursor_location, c);
|
||||
} else {
|
||||
app.modify.push(c);
|
||||
}
|
||||
app.cursor_location += 1;
|
||||
}
|
||||
Key::Backspace => {
|
||||
app.modify.pop();
|
||||
if app.cursor_location > 0 {
|
||||
app.cursor_location -= 1;
|
||||
app.modify.remove(app.cursor_location);
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
},
|
||||
|
@ -157,11 +178,29 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||
app.command = "".to_string();
|
||||
app.mode = AppMode::Report;
|
||||
}
|
||||
Key::Right => {
|
||||
if app.cursor_location < app.command.len() {
|
||||
app.cursor_location += 1;
|
||||
}
|
||||
}
|
||||
Key::Left => {
|
||||
if app.cursor_location > 0 {
|
||||
app.cursor_location -= 1;
|
||||
}
|
||||
}
|
||||
Key::Char(c) => {
|
||||
app.command.push(c);
|
||||
if app.cursor_location < app.command.len() {
|
||||
app.command.insert(app.cursor_location, c);
|
||||
} else {
|
||||
app.command.push(c);
|
||||
}
|
||||
app.cursor_location += 1;
|
||||
}
|
||||
Key::Backspace => {
|
||||
app.command.pop();
|
||||
if app.cursor_location > 0 {
|
||||
app.cursor_location -= 1;
|
||||
app.command.remove(app.cursor_location);
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
},
|
||||
|
@ -179,11 +218,29 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||
app.command = "".to_string();
|
||||
app.mode = AppMode::Report;
|
||||
}
|
||||
Key::Right => {
|
||||
if app.cursor_location < app.command.len() {
|
||||
app.cursor_location += 1;
|
||||
}
|
||||
}
|
||||
Key::Left => {
|
||||
if app.cursor_location > 0 {
|
||||
app.cursor_location -= 1;
|
||||
}
|
||||
}
|
||||
Key::Char(c) => {
|
||||
app.command.push(c);
|
||||
if app.cursor_location < app.command.len() {
|
||||
app.command.insert(app.cursor_location, c);
|
||||
} else {
|
||||
app.command.push(c);
|
||||
}
|
||||
app.cursor_location += 1;
|
||||
}
|
||||
Key::Backspace => {
|
||||
app.command.pop();
|
||||
if app.cursor_location > 0 {
|
||||
app.cursor_location -= 1;
|
||||
app.command.remove(app.cursor_location);
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
},
|
||||
|
@ -191,11 +248,29 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||
Key::Char('\n') | Key::Esc => {
|
||||
app.mode = AppMode::Report;
|
||||
}
|
||||
Key::Right => {
|
||||
if app.cursor_location < app.filter.len() {
|
||||
app.cursor_location += 1;
|
||||
}
|
||||
}
|
||||
Key::Left => {
|
||||
if app.cursor_location > 0 {
|
||||
app.cursor_location -= 1;
|
||||
}
|
||||
}
|
||||
Key::Char(c) => {
|
||||
app.filter.push(c);
|
||||
if app.cursor_location < app.filter.len() {
|
||||
app.filter.insert(app.cursor_location, c);
|
||||
} else {
|
||||
app.filter.push(c);
|
||||
}
|
||||
app.cursor_location += 1;
|
||||
}
|
||||
Key::Backspace => {
|
||||
app.filter.pop();
|
||||
if app.cursor_location > 0 {
|
||||
app.cursor_location -= 1;
|
||||
app.filter.remove(app.cursor_location);
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue