Fix colors and style, condense some logic. Fix task_idx when moving task
This commit is contained in:
parent
d85bb5a77b
commit
4accf41c45
68
src/input.rs
68
src/input.rs
@ -44,11 +44,7 @@ pub fn handle_task_edit(
|
||||
} else {
|
||||
let task = db::insert_new_task(db_conn, title, description, column);
|
||||
column.add_task(task);
|
||||
db::set_selected_task_for_column(
|
||||
db_conn,
|
||||
column.selected_task_idx,
|
||||
column.id,
|
||||
);
|
||||
db::set_selected_task_for_column(db_conn, column.selected_task_idx, column.id);
|
||||
}
|
||||
*task_opt = None;
|
||||
}
|
||||
@ -76,19 +72,15 @@ pub fn handle_main(state: &mut State<'_>, key: event::KeyEvent) {
|
||||
}
|
||||
KeyCode::Char('j') | KeyCode::Down => {
|
||||
column.select_next_task();
|
||||
db::set_selected_task_for_column(
|
||||
&state.db_conn,
|
||||
column.selected_task_idx,
|
||||
project.get_selected_column().id,
|
||||
);
|
||||
let task_idx = column.selected_task_idx;
|
||||
let col_id = project.get_selected_column().id;
|
||||
db::set_selected_task_for_column(&state.db_conn, task_idx, col_id);
|
||||
}
|
||||
KeyCode::Char('k') | KeyCode::Up => {
|
||||
column.select_previous_task();
|
||||
db::set_selected_task_for_column(
|
||||
&state.db_conn,
|
||||
column.selected_task_idx,
|
||||
project.get_selected_column().id,
|
||||
);
|
||||
let task_idx = column.selected_task_idx;
|
||||
let col_id = project.get_selected_column().id;
|
||||
db::set_selected_task_for_column(&state.db_conn, task_idx, col_id);
|
||||
}
|
||||
KeyCode::Char('l') | KeyCode::Right => {
|
||||
project.select_next_column();
|
||||
@ -96,22 +88,21 @@ pub fn handle_main(state: &mut State<'_>, key: event::KeyEvent) {
|
||||
}
|
||||
KeyCode::Char('g') => {
|
||||
column.select_first_task();
|
||||
db::set_selected_task_for_column(
|
||||
&state.db_conn,
|
||||
column.selected_task_idx,
|
||||
project.get_selected_column().id,
|
||||
);
|
||||
let task_idx = column.selected_task_idx;
|
||||
let col_id = project.get_selected_column().id;
|
||||
db::set_selected_task_for_column(&state.db_conn, task_idx, col_id);
|
||||
}
|
||||
KeyCode::Char('G') => {
|
||||
column.select_last_task();
|
||||
db::set_selected_task_for_column(
|
||||
&state.db_conn,
|
||||
column.selected_task_idx,
|
||||
project.get_selected_column().id,
|
||||
);
|
||||
let task_idx = column.selected_task_idx;
|
||||
let col_id = project.get_selected_column().id;
|
||||
db::set_selected_task_for_column(&state.db_conn, task_idx, col_id);
|
||||
}
|
||||
KeyCode::Char('H') => {
|
||||
if !column.tasks.is_empty() {
|
||||
let first_col = project.get_selected_column_mut();
|
||||
let task_idx = first_col.selected_task_idx.saturating_sub(1);
|
||||
db::set_selected_task_for_column(&state.db_conn, task_idx, first_col.id);
|
||||
project.move_task_previous_column();
|
||||
let col = project.get_selected_column();
|
||||
let t = col.get_selected_task().unwrap();
|
||||
@ -121,6 +112,9 @@ pub fn handle_main(state: &mut State<'_>, key: event::KeyEvent) {
|
||||
}
|
||||
KeyCode::Char('L') => {
|
||||
if !column.tasks.is_empty() {
|
||||
let first_col = project.get_selected_column_mut();
|
||||
let task_idx = first_col.selected_task_idx.saturating_sub(1);
|
||||
db::set_selected_task_for_column(&state.db_conn, task_idx, first_col.id);
|
||||
project.move_task_next_column();
|
||||
let col = project.get_selected_column();
|
||||
let t = col.get_selected_task().unwrap();
|
||||
@ -133,11 +127,9 @@ pub fn handle_main(state: &mut State<'_>, key: event::KeyEvent) {
|
||||
let task1 = column.get_selected_task().unwrap();
|
||||
let task2 = column.get_previous_task().unwrap();
|
||||
db::swap_task_order(&mut state.db_conn, task1, task2);
|
||||
db::set_selected_task_for_column(
|
||||
&state.db_conn,
|
||||
column.selected_task_idx,
|
||||
project.get_selected_column().id,
|
||||
);
|
||||
let task_idx = column.selected_task_idx;
|
||||
let col_id = project.get_selected_column().id;
|
||||
db::set_selected_task_for_column(&state.db_conn, task_idx, col_id);
|
||||
}
|
||||
}
|
||||
KeyCode::Char('K') => {
|
||||
@ -145,11 +137,9 @@ pub fn handle_main(state: &mut State<'_>, key: event::KeyEvent) {
|
||||
let task1 = column.get_selected_task().unwrap();
|
||||
let task2 = column.get_next_task().unwrap();
|
||||
db::swap_task_order(&mut state.db_conn, task1, task2);
|
||||
db::set_selected_task_for_column(
|
||||
&state.db_conn,
|
||||
column.selected_task_idx,
|
||||
project.get_selected_column().id,
|
||||
);
|
||||
let task_idx = column.selected_task_idx;
|
||||
let col_id = project.get_selected_column().id;
|
||||
db::set_selected_task_for_column(&state.db_conn, task_idx, col_id);
|
||||
}
|
||||
}
|
||||
KeyCode::Char('n') => state.task_edit_state = Some(TaskState::default()),
|
||||
@ -158,11 +148,9 @@ pub fn handle_main(state: &mut State<'_>, key: event::KeyEvent) {
|
||||
if !column.tasks.is_empty() {
|
||||
db::delete_task(&state.db_conn, column.get_selected_task().unwrap());
|
||||
column.remove_task();
|
||||
db::set_selected_task_for_column(
|
||||
&state.db_conn,
|
||||
column.selected_task_idx,
|
||||
project.get_selected_column().id,
|
||||
);
|
||||
let task_idx = column.selected_task_idx;
|
||||
let col_id = project.get_selected_column().id;
|
||||
db::set_selected_task_for_column(&state.db_conn, task_idx, col_id);
|
||||
}
|
||||
}
|
||||
_ => {}
|
||||
|
31
src/ui.rs
31
src/ui.rs
@ -1,7 +1,7 @@
|
||||
use crate::app::{State, TaskEditFocus};
|
||||
use tui::backend::Backend;
|
||||
use tui::layout::{Alignment, Constraint, Direction, Layout, Rect};
|
||||
use tui::style::{Color, Modifier, Style};
|
||||
use tui::style::{Modifier, Style};
|
||||
use tui::text::{Span, Spans};
|
||||
use tui::widgets::{Block, Borders, Clear, List, ListItem, ListState, Paragraph, Wrap};
|
||||
use tui::Frame;
|
||||
@ -29,10 +29,9 @@ fn draw_tasks<B: Backend>(f: &mut Frame<'_, B>, area: Rect, state: &State<'_>) {
|
||||
let task_idx = state.project.get_selected_column().selected_task_idx;
|
||||
let item_txt;
|
||||
if i == col_idx && j == task_idx {
|
||||
style = style.fg(Color::White).add_modifier(Modifier::BOLD);
|
||||
style = style.add_modifier(Modifier::BOLD | Modifier::UNDERLINED);
|
||||
item_txt = format!("{} 👈", task.title);
|
||||
} else {
|
||||
style = style.fg(Color::White);
|
||||
item_txt = task.title.clone();
|
||||
}
|
||||
let mut s = Span::raw(item_txt);
|
||||
@ -42,17 +41,20 @@ fn draw_tasks<B: Backend>(f: &mut Frame<'_, B>, area: Rect, state: &State<'_>) {
|
||||
.collect();
|
||||
let mut style = Style::default();
|
||||
if i == state.project.selected_column_idx {
|
||||
style = style.fg(Color::Green);
|
||||
style = style.add_modifier(Modifier::REVERSED);
|
||||
};
|
||||
let mut s = Span::raw(column.name.as_str());
|
||||
s.style = Style::default()
|
||||
.add_modifier(Modifier::BOLD | Modifier::ITALIC | Modifier::UNDERLINED)
|
||||
.fg(Color::White);
|
||||
let block = Block::default().style(style).title(s).borders(Borders::ALL);
|
||||
let list = List::new(items).block(block);
|
||||
s.style =
|
||||
Style::default().add_modifier(Modifier::BOLD | Modifier::ITALIC | Modifier::UNDERLINED);
|
||||
// .fg(Color::White);
|
||||
let block = Block::default().title(s).borders(Borders::ALL);
|
||||
let inner_area = block.inner(columns[i]);
|
||||
let inner_block = Block::default().style(style);
|
||||
let list = List::new(items).block(inner_block);
|
||||
let mut list_state = ListState::default();
|
||||
list_state.select(Some(column.selected_task_idx + 1));
|
||||
f.render_stateful_widget(list, columns[i], &mut list_state);
|
||||
f.render_widget(block, columns[i]);
|
||||
f.render_stateful_widget(list, inner_area, &mut list_state);
|
||||
}
|
||||
}
|
||||
|
||||
@ -136,14 +138,14 @@ pub fn draw_task_popup<B: Backend>(f: &mut Frame<'_, B>, state: &mut State<'_>,
|
||||
let cancel_txt;
|
||||
match task.focus {
|
||||
TaskEditFocus::ConfirmBtn => {
|
||||
create_style = Style::default().fg(Color::Yellow);
|
||||
create_style = Style::default().add_modifier(Modifier::BOLD);
|
||||
cancel_style = Style::default();
|
||||
create_txt = "[Confirm]";
|
||||
cancel_txt = " Cancel ";
|
||||
}
|
||||
TaskEditFocus::CancelBtn => {
|
||||
create_style = Style::default();
|
||||
cancel_style = Style::default().fg(Color::Yellow);
|
||||
cancel_style = Style::default().add_modifier(Modifier::BOLD);
|
||||
create_txt = " Confirm ";
|
||||
cancel_txt = "[Cancel]";
|
||||
}
|
||||
@ -167,7 +169,8 @@ pub fn draw_task_popup<B: Backend>(f: &mut Frame<'_, B>, state: &mut State<'_>,
|
||||
|
||||
task.title.set_block(b1);
|
||||
if let TaskEditFocus::Title = task.focus {
|
||||
task.title.set_style(Style::default().fg(Color::Yellow));
|
||||
task.title
|
||||
.set_style(Style::default().add_modifier(Modifier::BOLD));
|
||||
task.title
|
||||
.set_cursor_style(Style::default().add_modifier(Modifier::REVERSED));
|
||||
} else {
|
||||
@ -179,7 +182,7 @@ pub fn draw_task_popup<B: Backend>(f: &mut Frame<'_, B>, state: &mut State<'_>,
|
||||
task.description.set_block(b2);
|
||||
if let TaskEditFocus::Description = task.focus {
|
||||
task.description
|
||||
.set_style(Style::default().fg(Color::Yellow));
|
||||
.set_style(Style::default().add_modifier(Modifier::BOLD));
|
||||
task.description
|
||||
.set_cursor_style(Style::default().add_modifier(Modifier::REVERSED));
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user