xremote_scene_xr_list_edit_item.c 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "../xremote.h"
  2. enum SubmenuIndexEdit {
  3. SubmenuIndexRename = 10,
  4. SubmenuIndexEdit,
  5. SubmenuIndexDelete,
  6. };
  7. void xremote_scene_xr_list_edit_item_submenu_callback(void* context, uint32_t index) {
  8. XRemote* app = context;
  9. view_dispatcher_send_custom_event(app->view_dispatcher, index);
  10. }
  11. void xremote_scene_xr_list_edit_item_on_enter(void* context) {
  12. XRemote* app = context;
  13. //submenu_add_item(app->editmenu, "Rename", SubmenuIndexRename, xremote_scene_xr_list_edit_item_submenu_callback, app);
  14. submenu_add_item(app->editmenu, "Edit", SubmenuIndexEdit, xremote_scene_xr_list_edit_item_submenu_callback, app);
  15. submenu_add_item(app->editmenu, "Delete", SubmenuIndexDelete, xremote_scene_xr_list_edit_item_submenu_callback, app);
  16. submenu_set_selected_item(app->editmenu, scene_manager_get_scene_state(app->scene_manager, XRemoteSceneMenu));
  17. view_dispatcher_switch_to_view(app->view_dispatcher, XRemoteViewIdEditItem);
  18. }
  19. bool xremote_scene_xr_list_edit_item_on_event(void* context, SceneManagerEvent event) {
  20. XRemote* app = context;
  21. if(event.type == SceneManagerEventTypeBack) {
  22. //exit app
  23. scene_manager_previous_scene(app->scene_manager);
  24. return true;
  25. } else if(event.type == SceneManagerEventTypeCustom) {
  26. if(event.event == SubmenuIndexDelete) {
  27. cross_remote_delete(app->cross_remote);
  28. } else if(event.event == SubmenuIndexEdit) {
  29. strncpy(app->text_store[0], cross_remote_get_name(app->cross_remote), XREMOTE_MAX_REMOTE_NAME_LENGTH);
  30. scene_manager_next_scene(app->scene_manager, XRemoteSceneCreate);
  31. return 0;
  32. } else if(event.event == SubmenuIndexRename) {
  33. //scene_manager_next_scene(app->scene_manager, XRemoteSceneSaveRemoteItem);
  34. //scene_manager_next_scene(app->scene_manager, XRemoteSceneWip);
  35. return 0;
  36. }
  37. scene_manager_previous_scene(app->scene_manager);
  38. }
  39. return 0;
  40. }
  41. void xremote_scene_xr_list_edit_item_on_exit(void* context) {
  42. XRemote* app = context;
  43. submenu_reset(app->editmenu);
  44. }