main_menu.c 2.4 KB

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