main_menu.c 3.3 KB

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