diff options
| author | dam <dam@gudinoff> | 2022-08-30 20:16:45 +0000 |
|---|---|---|
| committer | dam <dam@gudinoff> | 2022-08-30 20:16:45 +0000 |
| commit | 893b71c056098ce73af9165fa542be825ccd0401 (patch) | |
| tree | fb8925b2c256805d7eca43628af3dcc92abba911 | |
| parent | 7875033562db9f337d00a8f125560efb139be611 (diff) | |
| download | task-time-tracker-893b71c056098ce73af9165fa542be825ccd0401.tar.zst task-time-tracker-893b71c056098ce73af9165fa542be825ccd0401.zip | |
Allow to rename tasks.
| -rw-r--r-- | main.c | 61 |
1 files changed, 46 insertions, 15 deletions
@@ -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; } |
