WIP: Edit an existing task
This commit is contained in:
parent
da10719250
commit
bef0836184
18
src/app.rs
18
src/app.rs
@ -61,13 +61,14 @@ pub enum TaskEditFocus {
|
|||||||
Title,
|
Title,
|
||||||
Description,
|
Description,
|
||||||
CreateBtn,
|
CreateBtn,
|
||||||
CancelBtn
|
CancelBtn,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct TaskState<'a> {
|
pub struct TaskState<'a> {
|
||||||
pub title: TextArea<'a>,
|
pub title: TextArea<'a>,
|
||||||
pub description: TextArea<'a>,
|
pub description: TextArea<'a>,
|
||||||
pub focus: TaskEditFocus
|
pub focus: TaskEditFocus,
|
||||||
|
pub is_edit: bool
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for TaskState<'_> {
|
impl Default for TaskState<'_> {
|
||||||
@ -75,7 +76,8 @@ impl Default for TaskState<'_> {
|
|||||||
TaskState {
|
TaskState {
|
||||||
title: TextArea::default(),
|
title: TextArea::default(),
|
||||||
description: TextArea::default(),
|
description: TextArea::default(),
|
||||||
focus: TaskEditFocus::Title
|
focus: TaskEditFocus::Title,
|
||||||
|
is_edit: false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -140,6 +142,16 @@ impl Column {
|
|||||||
self.selected_task_idx = self.tasks.len() - 1;
|
self.selected_task_idx = self.tasks.len() - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_task_state_from_curr_selected(&self) -> Option<TaskState> {
|
||||||
|
self.get_selected_task().map(|t| {
|
||||||
|
TaskState {
|
||||||
|
title: TextArea::from(t.title.chars()),
|
||||||
|
description: TextArea::from(t.description.chars()),
|
||||||
|
focus: TaskEditFocus::Title,
|
||||||
|
is_edit: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Project {
|
impl Project {
|
||||||
|
@ -75,10 +75,8 @@ pub fn handle_input(state: &mut AppState) -> Result<(), std::io::Error> {
|
|||||||
KeyCode::Char('K') => project.move_task_up(),
|
KeyCode::Char('K') => project.move_task_up(),
|
||||||
KeyCode::Char('n') => state.task_edit_state = Some(TaskState::default()),
|
KeyCode::Char('n') => state.task_edit_state = Some(TaskState::default()),
|
||||||
KeyCode::Char('e') => {
|
KeyCode::Char('e') => {
|
||||||
match state.task_edit_state {
|
let task = column.get_task_state_from_curr_selected();
|
||||||
None => state.task_edit_state = Some(TaskState::default()),
|
state.task_edit_state = task;
|
||||||
Some(_) => state.task_edit_state = None,
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
KeyCode::Char('D') => column.remove_task(),
|
KeyCode::Char('D') => column.remove_task(),
|
||||||
_ => {}
|
_ => {}
|
||||||
@ -88,3 +86,4 @@ pub fn handle_input(state: &mut AppState) -> Result<(), std::io::Error> {
|
|||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
#![deny(rust_2018_idioms)]
|
||||||
#![allow(unused_imports)]
|
#![allow(unused_imports)]
|
||||||
#![allow(dead_code)]
|
#![allow(dead_code)]
|
||||||
use kanban_tui::*;
|
use kanban_tui::*;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user