main_menu.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #include "nfc_playlist.h"
  2. #include "scences/main_menu.h"
  3. typedef enum {
  4. NfcPlaylistEvent_ShowEmulatingPopup,
  5. NfcPlaylistEvent_ShowFileSelect,
  6. NfcPlaylistEvent_ShowFileEdit,
  7. NfcPlaylistEvent_ShowSettings
  8. } NfcPlaylistMainMenuEvent;
  9. typedef enum {
  10. NfcPlaylistMenuSelection_Start,
  11. NfcPlaylistMenuSelection_FileSelect,
  12. NfcPlaylistMenuSelection_FileEdit,
  13. NfcPlaylistMenuSelection_Settings
  14. } NfcPlaylistMenuSelection;
  15. void nfc_playlist_main_menu_menu_callback(void* context, uint32_t index) {
  16. NfcPlaylist* nfc_playlist = context;
  17. switch(index) {
  18. case NfcPlaylistMenuSelection_Start:
  19. scene_manager_handle_custom_event(nfc_playlist->scene_manager, NfcPlaylistEvent_ShowEmulatingPopup);
  20. break;
  21. case NfcPlaylistMenuSelection_FileSelect:
  22. scene_manager_handle_custom_event(nfc_playlist->scene_manager, NfcPlaylistEvent_ShowFileSelect);
  23. break;
  24. case NfcPlaylistMenuSelection_FileEdit:
  25. scene_manager_handle_custom_event(nfc_playlist->scene_manager, NfcPlaylistEvent_ShowFileEdit);
  26. break;
  27. case NfcPlaylistMenuSelection_Settings:
  28. scene_manager_handle_custom_event(nfc_playlist->scene_manager, NfcPlaylistEvent_ShowSettings);
  29. break;
  30. default:
  31. break;
  32. }
  33. }
  34. void nfc_playlist_main_menu_scene_on_enter(void* context) {
  35. NfcPlaylist* nfc_playlist = context;
  36. if (!nfc_playlist->settings.file_selected) {
  37. nfc_playlist->settings.file_selected = true;
  38. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_FileSelect);
  39. return;
  40. }
  41. submenu_set_header(nfc_playlist->submenu, "NFC Playlist");
  42. submenu_add_lockable_item(
  43. nfc_playlist->submenu,
  44. "Start",
  45. NfcPlaylistMenuSelection_Start,
  46. nfc_playlist_main_menu_menu_callback,
  47. nfc_playlist,
  48. !nfc_playlist->settings.file_selected_check,
  49. "No\nplaylist\nselected");
  50. submenu_add_item(
  51. nfc_playlist->submenu,
  52. "Select playlist",
  53. NfcPlaylistMenuSelection_FileSelect,
  54. nfc_playlist_main_menu_menu_callback,
  55. nfc_playlist);
  56. submenu_add_item(
  57. nfc_playlist->submenu,
  58. "Edit playlist",
  59. NfcPlaylistMenuSelection_FileEdit,
  60. nfc_playlist_main_menu_menu_callback,
  61. nfc_playlist);
  62. submenu_add_item(
  63. nfc_playlist->submenu,
  64. "Settings",
  65. NfcPlaylistMenuSelection_Settings,
  66. nfc_playlist_main_menu_menu_callback,
  67. nfc_playlist);
  68. view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Menu);
  69. }
  70. bool nfc_playlist_main_menu_scene_on_event(void* context, SceneManagerEvent event) {
  71. NfcPlaylist* nfc_playlist = context;
  72. bool consumed = false;
  73. if (event.type == SceneManagerEventTypeCustom) {
  74. switch(event.event) {
  75. case NfcPlaylistEvent_ShowEmulatingPopup:
  76. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_EmulatingPopup);
  77. consumed = true;
  78. break;
  79. case NfcPlaylistEvent_ShowFileSelect:
  80. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_FileSelect);
  81. consumed = true;
  82. break;
  83. case NfcPlaylistEvent_ShowFileEdit:
  84. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_FileEdit);
  85. consumed = true;
  86. break;
  87. case NfcPlaylistEvent_ShowSettings:
  88. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_Settings);
  89. consumed = true;
  90. break;
  91. default:
  92. break;
  93. }
  94. }
  95. return consumed;
  96. }
  97. void nfc_playlist_main_menu_scene_on_exit(void* context) {
  98. NfcPlaylist* nfc_playlist = context;
  99. submenu_reset(nfc_playlist->submenu);
  100. }