xremote_scene_edit_item.c 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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) == XRemoteRemoteItemTypeInfrared) {
  17. submenu_add_item(
  18. app->editmenu, "Set Timing", SubmenuIndexTiming, xremote_scene_edit_item_submenu_callback, app);
  19. }
  20. submenu_add_item(
  21. app->editmenu, "Delete", SubmenuIndexDelete, xremote_scene_edit_item_submenu_callback, app);
  22. submenu_set_selected_item(
  23. app->editmenu, scene_manager_get_scene_state(app->scene_manager, XRemoteSceneMenu));
  24. view_dispatcher_switch_to_view(app->view_dispatcher, XRemoteViewIdEditItem);
  25. }
  26. bool xremote_scene_edit_item_on_event(void* context, SceneManagerEvent event) {
  27. XRemote* app = context;
  28. if(event.type == SceneManagerEventTypeBack) {
  29. //exit app
  30. scene_manager_previous_scene(app->scene_manager);
  31. return true;
  32. } else if(event.type == SceneManagerEventTypeCustom) {
  33. if(event.event == SubmenuIndexDelete) {
  34. xremote_cross_remote_remove_item(app->cross_remote, app->edit_item);
  35. } else if(event.event == SubmenuIndexRename) {
  36. scene_manager_next_scene(app->scene_manager, XRemoteSceneSaveRemoteItem);
  37. //scene_manager_next_scene(app->scene_manager, XRemoteSceneWip);
  38. return 0;
  39. } else if(event.event == SubmenuIndexTiming) {
  40. scene_manager_next_scene(app->scene_manager, XRemoteSceneIrTimer);
  41. return 0;
  42. }
  43. scene_manager_next_scene(app->scene_manager, XRemoteSceneCreate);
  44. }
  45. return 0;
  46. }
  47. void xremote_scene_edit_item_on_exit(void* context) {
  48. XRemote* app = context;
  49. submenu_reset(app->editmenu);
  50. }