xremote_scene_edit_item.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "../xremote.h"
  2. #include "../models/cross/xremote_remote.h"
  3. enum SubmenuIndexEdit {
  4. SubmenuIndexRename = 10,
  5. SubmenuIndexDelete,
  6. };
  7. void xremote_scene_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_edit_item_on_enter(void* context) {
  12. XRemote* app = context;
  13. submenu_add_item(
  14. app->editmenu, "Rename", SubmenuIndexRename, xremote_scene_edit_item_submenu_callback, app);
  15. submenu_add_item(
  16. app->editmenu, "Delete", SubmenuIndexDelete, xremote_scene_edit_item_submenu_callback, app);
  17. submenu_set_selected_item(
  18. app->editmenu, scene_manager_get_scene_state(app->scene_manager, XRemoteSceneMenu));
  19. view_dispatcher_switch_to_view(app->view_dispatcher, XRemoteViewIdEditItem);
  20. }
  21. bool xremote_scene_edit_item_on_event(void* context, SceneManagerEvent event) {
  22. XRemote* app = context;
  23. if(event.type == SceneManagerEventTypeBack) {
  24. //exit app
  25. scene_manager_previous_scene(app->scene_manager);
  26. return true;
  27. } else if(event.type == SceneManagerEventTypeCustom) {
  28. if(event.event == SubmenuIndexDelete) {
  29. cross_remote_remove_item(app->cross_remote, app->edit_item);
  30. } else if(event.event == SubmenuIndexRename) {
  31. scene_manager_next_scene(app->scene_manager, XRemoteSceneSaveRemoteItem);
  32. //scene_manager_next_scene(app->scene_manager, XRemoteSceneWip);
  33. return 0;
  34. }
  35. scene_manager_next_scene(app->scene_manager, XRemoteSceneCreate);
  36. }
  37. return 0;
  38. }
  39. void xremote_scene_edit_item_on_exit(void* context) {
  40. XRemote* app = context;
  41. submenu_reset(app->editmenu);
  42. }