main_menu.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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->file_selected) {
  37. nfc_playlist->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_item(
  43. nfc_playlist->submenu,
  44. "Start",
  45. NfcPlaylistMenuSelection_Start,
  46. nfc_playlist_main_menu_menu_callback,
  47. nfc_playlist);
  48. submenu_add_item(
  49. nfc_playlist->submenu,
  50. "Select playlist",
  51. NfcPlaylistMenuSelection_FileSelect,
  52. nfc_playlist_main_menu_menu_callback,
  53. nfc_playlist);
  54. submenu_add_item(
  55. nfc_playlist->submenu,
  56. "Edit playlist",
  57. NfcPlaylistMenuSelection_FileEdit,
  58. nfc_playlist_main_menu_menu_callback,
  59. nfc_playlist);
  60. submenu_add_item(
  61. nfc_playlist->submenu,
  62. "Settings",
  63. NfcPlaylistMenuSelection_Settings,
  64. nfc_playlist_main_menu_menu_callback,
  65. nfc_playlist);
  66. view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Menu);
  67. }
  68. bool nfc_playlist_main_menu_scene_on_event(void* context, SceneManagerEvent event) {
  69. NfcPlaylist* nfc_playlist = context;
  70. bool consumed = false;
  71. if (event.type == SceneManagerEventTypeCustom) {
  72. switch(event.event) {
  73. case NfcPlaylistEvent_ShowEmulatingPopup:
  74. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_EmulatingPopup);
  75. consumed = true;
  76. break;
  77. case NfcPlaylistEvent_ShowFileSelect:
  78. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_FileSelect);
  79. consumed = true;
  80. break;
  81. case NfcPlaylistEvent_ShowFileEdit:
  82. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_FileEdit);
  83. consumed = true;
  84. break;
  85. case NfcPlaylistEvent_ShowSettings:
  86. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_Settings);
  87. consumed = true;
  88. break;
  89. default:
  90. break;
  91. }
  92. }
  93. return consumed;
  94. }
  95. void nfc_playlist_main_menu_scene_on_exit(void* context) {
  96. NfcPlaylist* nfc_playlist = context;
  97. submenu_reset(nfc_playlist->submenu);
  98. }