xremote_scene_edit_item.c 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #include "../xremote.h"
  2. #include "../models/cross/xremote_cross_remote.h"
  3. enum SubmenuIndexEdit {
  4. SubmenuIndexRename = 10,
  5. SubmenuIndexTiming,
  6. SubmenuIndexDelete,
  7. };
  8. void xremote_scene_edit_item_submenu_callback(void* context, uint32_t index) {
  9. XRemote* app = context;
  10. view_dispatcher_send_custom_event(app->view_dispatcher, index);
  11. }
  12. void xremote_scene_edit_item_on_enter(void* context) {
  13. XRemote* app = context;
  14. submenu_add_item(
  15. app->editmenu, "Rename", SubmenuIndexRename, xremote_scene_edit_item_submenu_callback, app);
  16. if(xremote_cross_remote_get_item_type(app->cross_remote, app->edit_item) ==
  17. XRemoteRemoteItemTypeInfrared) {
  18. submenu_add_item(
  19. app->editmenu,
  20. "Set Timing",
  21. SubmenuIndexTiming,
  22. xremote_scene_edit_item_submenu_callback,
  23. app);
  24. }
  25. submenu_add_item(
  26. app->editmenu, "Delete", SubmenuIndexDelete, xremote_scene_edit_item_submenu_callback, app);
  27. submenu_set_selected_item(
  28. app->editmenu, scene_manager_get_scene_state(app->scene_manager, XRemoteSceneMenu));
  29. view_dispatcher_switch_to_view(app->view_dispatcher, XRemoteViewIdEditItem);
  30. }
  31. bool xremote_scene_edit_item_on_event(void* context, SceneManagerEvent event) {
  32. XRemote* app = context;
  33. if(event.type == SceneManagerEventTypeBack) {
  34. //exit app
  35. scene_manager_previous_scene(app->scene_manager);
  36. return true;
  37. } else if(event.type == SceneManagerEventTypeCustom) {
  38. if(event.event == SubmenuIndexDelete) {
  39. xremote_cross_remote_remove_item(app->cross_remote, app->edit_item);
  40. } else if(event.event == SubmenuIndexRename) {
  41. scene_manager_next_scene(app->scene_manager, XRemoteSceneSaveRemoteItem);
  42. //scene_manager_next_scene(app->scene_manager, XRemoteSceneWip);
  43. return 0;
  44. } else if(event.event == SubmenuIndexTiming) {
  45. scene_manager_next_scene(app->scene_manager, XRemoteSceneIrTimer);
  46. return 0;
  47. }
  48. scene_manager_next_scene(app->scene_manager, XRemoteSceneCreate);
  49. }
  50. return 0;
  51. }
  52. void xremote_scene_edit_item_on_exit(void* context) {
  53. XRemote* app = context;
  54. submenu_reset(app->editmenu);
  55. }