WIP: Edit an existing task

This commit is contained in:
Joseph Ferano 2023-06-06 21:38:36 +07:00
parent da10719250
commit bef0836184
3 changed files with 19 additions and 7 deletions

View File

@ -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 {

View File

@ -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(())
} }

View File

@ -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::*;