aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c61
1 files changed, 46 insertions, 15 deletions
diff --git a/main.c b/main.c
index 51f7bc8..005cbd5 100644
--- a/main.c
+++ b/main.c
@@ -45,7 +45,7 @@ const size_t SIZEOF_DATABASE_T = sizeof(database_t);
const char* DAYS_OF_WEEK[] = { "sun", "mon", "tue", "wed", "thu", "fri", "sat" };
const uint8_t DAYS_ON_WEEK = sizeof(DAYS_OF_WEEK)/sizeof(char*);
-uint32_t selected_task;
+task_t* selected_task;
database_t database;
// Given an UTF8 encoded string, truncate it to length without breaking any UTF8 character.
@@ -573,11 +573,12 @@ void initialize_layouts() {
void initialization() {
- selected_task = 0;
+ selected_task = NULL;
if (load_database(&database, DB_BIN_PATH_NAME) == false) {
memset(&database, 0, SIZEOF_DATABASE_T);
}
+ selected_task = database.tasks;
}
void free_memory() {
@@ -625,7 +626,6 @@ void draw_header() {
void draw_table() {
task_t* task;
task_t* active_task;
- task_t* selected_taskx; // TODO Improve naming.
layout_t* layout = &layouts[selected_layout];
int table_size = layout->table_size;
@@ -656,7 +656,6 @@ void draw_table() {
// Draw rows with tasks.
move(1, 0);
active_task = database.active_task;
- selected_taskx = &database.tasks[selected_task];
for (uint32_t idx = 0; idx < database.count; idx++){
task = &database.tasks[idx];
@@ -666,10 +665,10 @@ void draw_table() {
if (task == active_task) {
color_pair = 1;
}
- if (task == selected_taskx) {
+ if (task == selected_task) {
color_pair = 2;
}
- if (task == active_task && task == selected_taskx) {
+ if (task == active_task && task == selected_task) {
color_pair = 3;
}
if (color_pair > 0) {
@@ -814,6 +813,13 @@ int main(int argc, char *argv[]) {
return EXIT_SUCCESS;
}
+ action = "--t_ecsv";
+ do_action = strncmp(argv[idx], action, strlen(action)) == 0;
+ if (do_action) {
+ prototype(T_ECSV);
+ return EXIT_SUCCESS;
+ }
+
action = "--t_lbin";
do_action = strncmp(argv[idx], action, strlen(action)) == 0;
if (do_action) {
@@ -872,11 +878,12 @@ int main(int argc, char *argv[]) {
{
task_t* new_task;
create_task(&database, &new_task);
- move(database.count, 2);
+ int row = database.count;
+ mvaddch(row, 0, ACS_DIAMOND);
clrtoeol();
- mvaddch(database.count, size_x-1, ACS_VLINE);
+ mvaddch(row, size_x-1, ACS_VLINE);
curs_set(1);
- mvgetnstr(database.count, 2, new_task->name, MAX_TASK_NAME-1);
+ mvgetnstr(row, 2, new_task->name, MAX_TASK_NAME-1);
// TODO Move this empty-name-cleaning code elsewhere.
bool is_empty = true;
@@ -891,22 +898,42 @@ int main(int argc, char *argv[]) {
if (strlen(new_task->name) == 0 || is_empty) {
strcpy(new_task->name, "-- new task --");
}
+ new_task->name[MAX_TASK_NAME-1] = '\0';
+ char* name = new_task->name;
+ truncate_string_utf8(name, MAX_TASK_NAME-1);
curs_set(0);
break;
}
case KEY_F(2):
- remove_task(&database, selected_task);
- if (selected_task >= database.count) {
- selected_task = database.count-1;
+ {
+ // rename stuff
+ int row = selected_task - database.tasks + 1;
+ mvaddch(row, 0, ACS_DIAMOND);
+// move(row, 2);
+ clrtoeol();
+ mvaddch(row, size_x-1, ACS_VLINE);
+ curs_set(1);
+ mvgetnstr(row, 2, selected_task->name, MAX_TASK_NAME-1);
+
+ break;
+ }
+
+ case KEY_F(3):
+ delete_task(&database, selected_task);
+ if (selected_task >= database.tasks+database.count) {
+ selected_task = database.tasks+database.count-1;
}
+// if (selected_task >= database.count) {
+// selected_task = database.count-1;
+// }
break;
case '\n':
case ' ':
if (true) {
task_t* current_task = database.active_task;
- task_t* next_task = &database.tasks[selected_task];
+ task_t* next_task = selected_task;
if (current_task != NULL) {
// TODO Add remaining time to task.
database.active_task = NULL;
@@ -939,11 +966,15 @@ int main(int argc, char *argv[]) {
break;
case KEY_UP:
- selected_task = selected_task == 0 ? 0 : selected_task - 1;
+ if (selected_task > database.tasks) {
+ selected_task--;
+ }
break;
case KEY_DOWN:
- selected_task = (selected_task+1) == database.count ? selected_task : selected_task + 1;
+ if (selected_task < database.tasks + database.count - 1) {
+ selected_task++;
+ }
break;
}