ibutton_scene_read_key_menu.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include "../ibutton_i.h"
  2. typedef enum {
  3. SubmenuIndexSave,
  4. SubmenuIndexEmulate,
  5. SubmenuIndexWrite,
  6. } SubmenuIndex;
  7. void ibutton_scene_read_key_menu_submenu_callback(void* context, uint32_t index) {
  8. iButton* ibutton = context;
  9. view_dispatcher_send_custom_event(ibutton->view_dispatcher, index);
  10. }
  11. void ibutton_scene_read_key_menu_on_enter(void* context) {
  12. iButton* ibutton = context;
  13. Submenu* submenu = ibutton->submenu;
  14. submenu_add_item(
  15. submenu, "Save", SubmenuIndexSave, ibutton_scene_read_key_menu_submenu_callback, ibutton);
  16. submenu_add_item(
  17. submenu,
  18. "Emulate",
  19. SubmenuIndexEmulate,
  20. ibutton_scene_read_key_menu_submenu_callback,
  21. ibutton);
  22. if(ibutton_key_get_type(ibutton->key) == iButtonKeyDS1990) {
  23. submenu_add_item(
  24. submenu,
  25. "Write",
  26. SubmenuIndexWrite,
  27. ibutton_scene_read_key_menu_submenu_callback,
  28. ibutton);
  29. }
  30. submenu_set_selected_item(submenu, SubmenuIndexSave);
  31. view_dispatcher_switch_to_view(ibutton->view_dispatcher, iButtonViewSubmenu);
  32. }
  33. bool ibutton_scene_read_key_menu_on_event(void* context, SceneManagerEvent event) {
  34. iButton* ibutton = context;
  35. bool consumed = false;
  36. if(event.type == SceneManagerEventTypeCustom) {
  37. consumed = true;
  38. if(event.event == SubmenuIndexSave) {
  39. scene_manager_next_scene(ibutton->scene_manager, iButtonSceneSaveName);
  40. } else if(event.event == SubmenuIndexEmulate) {
  41. scene_manager_next_scene(ibutton->scene_manager, iButtonSceneEmulate);
  42. } else if(event.event == SubmenuIndexWrite) {
  43. scene_manager_next_scene(ibutton->scene_manager, iButtonSceneWrite);
  44. }
  45. }
  46. return consumed;
  47. }
  48. void ibutton_scene_read_key_menu_on_exit(void* context) {
  49. iButton* ibutton = context;
  50. submenu_reset(ibutton->submenu);
  51. }