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 {
|
pub enum TaskEditFocus {
|
||||||
Title,
|
Title,
|
||||||
Description,
|
Description,
|
||||||
CreateBtn,
|
ConfirmBtn,
|
||||||
CancelBtn,
|
CancelBtn,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,17 +141,6 @@ impl Column {
|
|||||||
pub fn select_last_task(&mut self) {
|
pub fn select_last_task(&mut self) {
|
||||||
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 {
|
||||||
|
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 => {
|
TaskEditFocus::Description => {
|
||||||
match key.code {
|
match key.code {
|
||||||
KeyCode::Tab => task.focus = TaskEditFocus::CreateBtn,
|
KeyCode::Tab => task.focus = TaskEditFocus::ConfirmBtn,
|
||||||
KeyCode::BackTab => task.focus = TaskEditFocus::Title,
|
KeyCode::BackTab => task.focus = TaskEditFocus::Title,
|
||||||
_ => { task.description.input(key); }
|
_ => { task.description.input(key); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
TaskEditFocus::CreateBtn => {
|
TaskEditFocus::ConfirmBtn => {
|
||||||
match key.code {
|
match key.code {
|
||||||
KeyCode::Tab => task.focus = TaskEditFocus::CancelBtn,
|
KeyCode::Tab => task.focus = TaskEditFocus::CancelBtn,
|
||||||
KeyCode::BackTab => task.focus = TaskEditFocus::Description,
|
KeyCode::BackTab => task.focus = TaskEditFocus::Description,
|
||||||
KeyCode::Enter => {
|
KeyCode::Enter => {
|
||||||
let title = task.title.clone().into_lines().join("\n");
|
let title = task.title.clone().into_lines().join("\n");
|
||||||
let description = task.description.clone().into_lines().clone().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
|
state.task_edit_state = None
|
||||||
}
|
}
|
||||||
_ => (),
|
_ => (),
|
||||||
@ -45,7 +52,7 @@ pub fn handle_input(state: &mut AppState) -> Result<(), std::io::Error> {
|
|||||||
TaskEditFocus::CancelBtn => {
|
TaskEditFocus::CancelBtn => {
|
||||||
match key.code {
|
match key.code {
|
||||||
KeyCode::Tab => task.focus = TaskEditFocus::Title,
|
KeyCode::Tab => task.focus = TaskEditFocus::Title,
|
||||||
KeyCode::BackTab => task.focus = TaskEditFocus::CreateBtn,
|
KeyCode::BackTab => task.focus = TaskEditFocus::ConfirmBtn,
|
||||||
KeyCode::Enter => {
|
KeyCode::Enter => {
|
||||||
state.task_edit_state = None
|
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('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') => {
|
||||||
let task = column.get_task_state_from_curr_selected();
|
if let Some(task) = column.get_selected_task() {
|
||||||
state.task_edit_state = 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(),
|
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_style;
|
||||||
let cancel_txt;
|
let cancel_txt;
|
||||||
match task.focus {
|
match task.focus {
|
||||||
TaskEditFocus::CreateBtn => {
|
TaskEditFocus::ConfirmBtn => {
|
||||||
create_style = Style::default().fg(Color::Yellow);
|
create_style = Style::default().fg(Color::Yellow);
|
||||||
cancel_style = Style::default();
|
cancel_style = Style::default();
|
||||||
create_txt = "[Confirm]";
|
create_txt = "[Confirm]";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user