You can now edit an existing task
This commit is contained in:
parent
bef0836184
commit
78cb7fe84a
13
src/app.rs
13
src/app.rs
@ -60,7 +60,7 @@ impl Default for Project {
|
||||
pub enum TaskEditFocus {
|
||||
Title,
|
||||
Description,
|
||||
CreateBtn,
|
||||
ConfirmBtn,
|
||||
CancelBtn,
|
||||
}
|
||||
|
||||
@ -141,17 +141,6 @@ impl Column {
|
||||
pub fn select_last_task(&mut self) {
|
||||
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 {
|
||||
|
27
src/input.rs
27
src/input.rs
@ -24,19 +24,26 @@ pub fn handle_input(state: &mut AppState) -> Result<(), std::io::Error> {
|
||||
}
|
||||
TaskEditFocus::Description => {
|
||||
match key.code {
|
||||
KeyCode::Tab => task.focus = TaskEditFocus::CreateBtn,
|
||||
KeyCode::Tab => task.focus = TaskEditFocus::ConfirmBtn,
|
||||
KeyCode::BackTab => task.focus = TaskEditFocus::Title,
|
||||
_ => { task.description.input(key); }
|
||||
}
|
||||
}
|
||||
TaskEditFocus::CreateBtn => {
|
||||
TaskEditFocus::ConfirmBtn => {
|
||||
match key.code {
|
||||
KeyCode::Tab => task.focus = TaskEditFocus::CancelBtn,
|
||||
KeyCode::BackTab => task.focus = TaskEditFocus::Description,
|
||||
KeyCode::Enter => {
|
||||
let title = task.title.clone().into_lines().join("\n");
|
||||
let description = task.description.clone().into_lines().clone().join("\n");
|
||||
column.add_task(title, description);
|
||||
if task.is_edit {
|
||||
if let Some(selected_task) = column.get_selected_task_mut() {
|
||||
selected_task.title = title;
|
||||
selected_task.description = description;
|
||||
}
|
||||
} else {
|
||||
column.add_task(title, description);
|
||||
}
|
||||
state.task_edit_state = None
|
||||
}
|
||||
_ => (),
|
||||
@ -45,7 +52,7 @@ pub fn handle_input(state: &mut AppState) -> Result<(), std::io::Error> {
|
||||
TaskEditFocus::CancelBtn => {
|
||||
match key.code {
|
||||
KeyCode::Tab => task.focus = TaskEditFocus::Title,
|
||||
KeyCode::BackTab => task.focus = TaskEditFocus::CreateBtn,
|
||||
KeyCode::BackTab => task.focus = TaskEditFocus::ConfirmBtn,
|
||||
KeyCode::Enter => {
|
||||
state.task_edit_state = None
|
||||
}
|
||||
@ -75,8 +82,16 @@ 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') => {
|
||||
let task = column.get_task_state_from_curr_selected();
|
||||
state.task_edit_state = task;
|
||||
if let Some(task) = column.get_selected_task() {
|
||||
let task_state =
|
||||
TaskState {
|
||||
title: TextArea::from(task.title.lines()),
|
||||
description: TextArea::from(task.description.lines()),
|
||||
focus: TaskEditFocus::Title,
|
||||
is_edit: true
|
||||
};
|
||||
state.task_edit_state = Some(task_state);
|
||||
}
|
||||
}
|
||||
KeyCode::Char('D') => column.remove_task(),
|
||||
_ => {}
|
||||
|
@ -129,7 +129,7 @@ pub fn draw_task_popup<B: Backend>(f: &mut Frame<B>, state: &mut AppState, popup
|
||||
let cancel_style;
|
||||
let cancel_txt;
|
||||
match task.focus {
|
||||
TaskEditFocus::CreateBtn => {
|
||||
TaskEditFocus::ConfirmBtn => {
|
||||
create_style = Style::default().fg(Color::Yellow);
|
||||
cancel_style = Style::default();
|
||||
create_txt = "[Confirm]";
|
||||
|
Loading…
x
Reference in New Issue
Block a user