X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=taskasaur.c;h=22e2f2a6200be7d0f5091e8d02d0071f596fcebf;hb=99cc6e19069115197e8101c1ed585fe0ae5de405;hp=50b72d4ab43c7769f834c1895463dd456fede760;hpb=8fb19bb7969617821e9c2c1c64d113ff2c26abaf;p=taskasaur.git diff --git a/taskasaur.c b/taskasaur.c index 50b72d4..22e2f2a 100644 --- a/taskasaur.c +++ b/taskasaur.c @@ -1,39 +1,86 @@ + #include "headers/parser.h" +#include "headers/render.h" +#include "headers/menu.h" +#include "headers/utils.h" +#include "config.h" + +MenuItem** todolist_to_menuitem(TodoItem** item_list, int list_length); int main(int argc, char** argv) { - Board* board; + /* read from todo file */ + Board* board; board = begin_parse("test_board.md"); + log_todo(board); + + /* init curses */ + init_tscurses(); + + TodoList* todo_list = board->todolist_list[0]; + MenuItem** item_list = todolist_to_menuitem(todo_list->item_list, todo_list->item_count); + Menu* menu = create_menu(todo_list->list_name, item_list); + WINDOW* win = newwin(20, 40, 5, 5); + set_menu_win(menu, win); + set_menu_focus(menu, true); + box(win, 0, 0); + refresh(); + wrefresh(win); + + render_menu(menu); + + char ch; + while ((ch = getch()) != BINDING_QUIT) { + + switch (ch) { + + case BINDING_SCROLL_UP: + menu_driver(menu, MENU_UP); + break; + case BINDING_SCROLL_DOWN: + menu_driver(menu, MENU_DOWN); + break; + case BINDING_JUMP_TOP: + menu_driver(menu, MENU_TOP); + break; + case BINDING_JUMP_BOTTOM: + menu_driver(menu, MENU_BOTTOM); + break; + case BINDING_MOVE_ITEM_UP: + menu_driver(menu, MENU_MOVE_UP); + break; + case BINDING_MOVE_ITEM_DOWN: + menu_driver(menu, MENU_MOVE_DOWN); + break; + case BINDING_DELETE_ITEM: + menu_driver(menu, MENU_DELETE); + break; - for (int i = 0; i < board->todolist_count; i++) { - TodoList* todolist; - printf("List =-=-=-=-=-==-=-=-=-=-=-\n"); - todolist = board->todolist_list[i]; - printf("List name: %s\n", todolist->list_name); - printf("Num of items: %d\n", todolist->item_count); - - for (int j = 0; j < todolist->item_count; j++) { - TodoItem* todoitem; - printf("Item =-=-=-=-=-\n"); - todoitem = todolist->item_list[j]; - printf("Item name: %s\n", todoitem->item_name); - printf("Description: %s\n", todoitem->description); - printf("Num of subtasks: %d\n", todoitem->subtask_count); - - for (int k = 0; k < todoitem->subtask_count; k++) { - SubTask* subtask; - int done; - - subtask = todoitem->subtask_list[k]; - printf("Subtask: %s, %d\n", subtask->subtask_name, subtask->done); - } } + render_menu(menu); } - /* printf("%d\n", board->todolist_count); */ - /* printf("%s\n", board->todolist_list[1]->list_name); */ + + exit_tscurses(); return 0; } + +MenuItem** +todolist_to_menuitem(TodoItem** item_list, int list_length) +{ + MenuItem** items; + + items = malloc((list_length+1)*sizeof(MenuItem*)); + for (int i = 0; i < list_length; i++) { + items[i] = create_menuitem(item_list[i]->item_name); + } + + items[list_length] = 0; //null terminate + return items; +} + + +