xremote_scene_edit_item.c 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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. {
  13. XRemote* app = context;
  14. submenu_add_item(app->editmenu, "Rename", SubmenuIndexRename, xremote_scene_edit_item_submenu_callback, app);
  15. submenu_add_item(app->editmenu, "Delete", SubmenuIndexDelete, xremote_scene_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_edit_item_on_event(void* context, SceneManagerEvent event)
  20. {
  21. XRemote* app = context;
  22. if(event.type == SceneManagerEventTypeBack) {
  23. //exit app
  24. scene_manager_previous_scene(app->scene_manager);
  25. return true;
  26. } else if(event.type == SceneManagerEventTypeCustom) {
  27. if(event.event == SubmenuIndexDelete) {
  28. cross_remote_remove_item(app->cross_remote, app->edit_item);
  29. } else if(event.event == SubmenuIndexRename) {
  30. scene_manager_next_scene(app->scene_manager, XRemoteSceneSaveRemoteItem);
  31. //scene_manager_next_scene(app->scene_manager, XRemoteSceneWip);
  32. return 0;
  33. }
  34. scene_manager_next_scene(app->scene_manager, XRemoteSceneCreate);
  35. }
  36. return 0;
  37. }
  38. void xremote_scene_edit_item_on_exit(void* context)
  39. {
  40. XRemote* app = context;
  41. submenu_reset(app->editmenu);
  42. }