From bef08361849443929c70b73dc7788e1785078c32 Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Tue, 6 Jun 2023 21:38:36 +0700 Subject: [PATCH] WIP: Edit an existing task --- src/app.rs | 18 +++++++++++++++--- src/input.rs | 7 +++---- src/main.rs | 1 + 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/app.rs b/src/app.rs index 9bf0e81..9207ac5 100644 --- a/src/app.rs +++ b/src/app.rs @@ -61,13 +61,14 @@ pub enum TaskEditFocus { Title, Description, CreateBtn, - CancelBtn + CancelBtn, } pub struct TaskState<'a> { pub title: TextArea<'a>, pub description: TextArea<'a>, - pub focus: TaskEditFocus + pub focus: TaskEditFocus, + pub is_edit: bool } impl Default for TaskState<'_> { @@ -75,7 +76,8 @@ impl Default for TaskState<'_> { TaskState { title: 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; } + pub fn get_task_state_from_curr_selected(&self) -> Option { + 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 { diff --git a/src/input.rs b/src/input.rs index 7f9eb4d..8bd71e3 100644 --- a/src/input.rs +++ b/src/input.rs @@ -75,10 +75,8 @@ pub fn handle_input(state: &mut AppState) -> Result<(), std::io::Error> { KeyCode::Char('K') => project.move_task_up(), KeyCode::Char('n') => state.task_edit_state = Some(TaskState::default()), KeyCode::Char('e') => { - match state.task_edit_state { - None => state.task_edit_state = Some(TaskState::default()), - Some(_) => state.task_edit_state = None, - } + let task = column.get_task_state_from_curr_selected(); + state.task_edit_state = task; } KeyCode::Char('D') => column.remove_task(), _ => {} @@ -88,3 +86,4 @@ pub fn handle_input(state: &mut AppState) -> Result<(), std::io::Error> { } Ok(()) } + diff --git a/src/main.rs b/src/main.rs index 9d443fa..8b3148f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,4 @@ +#![deny(rust_2018_idioms)] #![allow(unused_imports)] #![allow(dead_code)] use kanban_tui::*;