main_menu.c 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. if (event.type == SceneManagerEventTypeCustom) {
  61. switch(event.event) {
  62. case NfcPlaylistEvent_ShowEmulatingPopup:
  63. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_EmulatingPopup);
  64. consumed = true;
  65. break;
  66. case NfcPlaylistEvent_ShowFileSelect:
  67. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_FileSelect);
  68. consumed = true;
  69. break;
  70. case NfcPlaylistEvent_ShowSettings:
  71. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_Settings);
  72. consumed = true;
  73. break;
  74. default:
  75. break;
  76. }
  77. }
  78. return consumed;
  79. }
  80. void nfc_playlist_main_menu_scene_on_exit(void* context) {
  81. NfcPlaylist* nfc_playlist = context;
  82. submenu_reset(nfc_playlist->submenu);
  83. }