rest of insert commands
[taskasaur.git] / taskasaur.c
index 03c3ab4..8eb2f89 100644 (file)
@@ -17,7 +17,6 @@ int set_selected_menu(BoardMenu* boardmenu, int index);
 MenuItem** todolist_to_menuitem(TodoItem** item_list, int list_length);
 Menu** make_menus(Board* board, int todolist_length);
 
-
 int
 main(int argc, char** argv)
 {
@@ -70,17 +69,35 @@ main(int argc, char** argv)
                 break;
             case BINDING_MOVE_ITEM_DOWN:
                 menu_driver(active_menu, MENU_MOVE_DOWN);
+                break;
+            case BINDING_MOVE_ITEM_LEFT:
+
+                break;
+            case BINDING_MOVE_ITEM_RIGHT:
+
                 break;
             case BINDING_DELETE_ITEM:
                 menu_driver(active_menu, MENU_DELETE);
                 break;
-
+            case BINDING_APPEND_ITEM:
+                menu_driver(active_menu, MENU_APPEND);
+                break;
+            case BINDING_INSERT_ABOVE:
+                menu_driver(active_menu, MENU_INSERT_ABOVE);
+                break;
+            case BINDING_INSERT_BELOW:
+                menu_driver(active_menu, MENU_INSERT_BELOW);
+                break;
+            case BINDING_EDIT_ITEM:
+                menu_driver(active_menu, MENU_EDIT);
+                break;
         }
 
         for (int i = 0; i < boardmenu->menu_count; i++) {
             render_menu(boardmenu->menu_list[i]);
         }
 
+
     }
 
     exit_tscurses();
@@ -106,6 +123,7 @@ set_selected_menu(BoardMenu* boardmenu, int index)
 {
     Menu* old_menu;
     Menu* new_menu;
+    int new_pos;
     
     old_menu = boardmenu->menu_list[boardmenu->selected];
     new_menu = boardmenu->menu_list[index];
@@ -113,6 +131,12 @@ set_selected_menu(BoardMenu* boardmenu, int index)
     set_menu_focus(old_menu, false);
     set_menu_focus(new_menu, true);
 
+    /* also try to jump to a similar position if possible */
+    /* rn theres a bug if old menu is empty */
+    new_pos = (get_selected_item(old_menu) > get_menu_length(new_menu)-1) ?
+        get_menu_length(new_menu)-1 : get_selected_item(old_menu);
+    set_selected_item(new_menu, new_pos);
+
     boardmenu->selected = index;
 
     return 0;