X-Git-Url: https://git.danieliu.xyz/?p=taskasaur.git;a=blobdiff_plain;f=render.c;fp=render.c;h=33cd48b1fa7438aea5c4fa644f3e00e1dabec288;hp=ee77fe665edbb0c72369093b6576143d366fe4ad;hb=fc9d31162f04dd3ceb2d222e3aa81549095f767b;hpb=62ca4f5c30c0518812acd4515259c36329b28d78 diff --git a/render.c b/render.c index ee77fe6..33cd48b 100644 --- a/render.c +++ b/render.c @@ -84,6 +84,8 @@ create_board_menu(Board* board) new_boardmenu->menu_list = make_menus(board, board->todolist_count); new_boardmenu->menu_count = board->todolist_count; new_boardmenu->selected = 0; + new_boardmenu->popup_menu = NULL; + new_boardmenu->popup_open = 0; return new_boardmenu; } @@ -291,10 +293,58 @@ update_menuitem_descrip(MenuItem* menuitem) } /* popup */ +Menu* +make_popup_menu(TodoItem* itemdata) +{ + MenuItem** subtask_menuitems; + Menu* new_popup_menu; + + /* subtask list */ + subtask_menuitems = subtasklist_to_menuitem(itemdata->subtask_list, itemdata->subtask_count); + new_popup_menu = create_menu(strdup(""), subtask_menuitems); + + return new_popup_menu; +} + WINDOW* -create_popup_win() +create_popup_win(TodoItem* item_info) +{ + int maxheight, maxwidth; + WINDOW* popup_win; + + getmaxyx(stdscr, maxheight, maxwidth); + popup_win = newwin( + maxheight-2*POPUP_BORDER, + maxwidth-2*2*POPUP_BORDER, + POPUP_BORDER, + POPUP_BORDER*2 + ); + box(popup_win, 0, 0); + + refresh(); + wrefresh(popup_win); + + return popup_win; +} + +/* this is copy paste of other, prob abstract */ +MenuItem** +subtasklist_to_menuitem(SubTask** subtask_list, int list_length) { - return NULL; + MenuItem** items; + + items = malloc((list_length+1)*sizeof(MenuItem*)); + for (int i = 0; i < list_length; i++) { + MenuItem* new_menuitem; + new_menuitem = create_menuitem(subtask_list[i]->subtask_name); + /* using same struct, careful if it gets freed */ + set_menuitem_userdata(new_menuitem, subtask_list[i]); + + items[i] = new_menuitem; + } + + items[list_length] = 0; //null terminate + return items; } /* helpers */