nfc_playlist_scene_main_menu.c 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include "../nfc_playlist.h"
  2. typedef enum {
  3. NfcPlaylistMenuSelection_Start,
  4. NfcPlaylistMenuSelection_PlaylistSelect,
  5. NfcPlaylistMenuSelection_FileEdit,
  6. NfcPlaylistMenuSelection_Settings
  7. } NfcPlaylistMainMenuMenuSelection;
  8. void nfc_playlist_main_menu_menu_callback(void* context, uint32_t index) {
  9. NfcPlaylist* nfc_playlist = context;
  10. scene_manager_handle_custom_event(nfc_playlist->scene_manager, index);
  11. }
  12. void nfc_playlist_main_menu_scene_on_enter(void* context) {
  13. NfcPlaylist* nfc_playlist = context;
  14. if (!nfc_playlist->settings.playlist_selected) {
  15. nfc_playlist->settings.playlist_selected = true;
  16. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_PlaylistSelect);
  17. return;
  18. }
  19. FuriString* header = furi_string_alloc_printf("NFC Playlist v%s", FAP_VERSION);
  20. submenu_set_header(nfc_playlist->submenu, furi_string_get_cstr(header));
  21. furi_string_free(header);
  22. submenu_add_lockable_item(
  23. nfc_playlist->submenu,
  24. "Start",
  25. NfcPlaylistMenuSelection_Start,
  26. nfc_playlist_main_menu_menu_callback,
  27. nfc_playlist,
  28. furi_string_empty(nfc_playlist->settings.playlist_path),
  29. "No\nplaylist\nselected");
  30. submenu_add_item(
  31. nfc_playlist->submenu,
  32. "Select playlist",
  33. NfcPlaylistMenuSelection_PlaylistSelect,
  34. nfc_playlist_main_menu_menu_callback,
  35. nfc_playlist);
  36. submenu_add_item(
  37. nfc_playlist->submenu,
  38. "Edit playlist",
  39. NfcPlaylistMenuSelection_FileEdit,
  40. nfc_playlist_main_menu_menu_callback,
  41. nfc_playlist);
  42. submenu_add_item(
  43. nfc_playlist->submenu,
  44. "Settings",
  45. NfcPlaylistMenuSelection_Settings,
  46. nfc_playlist_main_menu_menu_callback,
  47. nfc_playlist);
  48. view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistView_Submenu);
  49. }
  50. bool nfc_playlist_main_menu_scene_on_event(void* context, SceneManagerEvent event) {
  51. NfcPlaylist* nfc_playlist = context;
  52. bool consumed = false;
  53. if (event.type == SceneManagerEventTypeCustom) {
  54. switch(event.event) {
  55. case NfcPlaylistMenuSelection_Start:
  56. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_Emulation);
  57. consumed = true;
  58. break;
  59. case NfcPlaylistMenuSelection_PlaylistSelect:
  60. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_PlaylistSelect);
  61. consumed = true;
  62. break;
  63. case NfcPlaylistMenuSelection_FileEdit:
  64. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_PlaylistEdit);
  65. consumed = true;
  66. break;
  67. case NfcPlaylistMenuSelection_Settings:
  68. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_Settings);
  69. consumed = true;
  70. break;
  71. default:
  72. break;
  73. }
  74. }
  75. return consumed;
  76. }
  77. void nfc_playlist_main_menu_scene_on_exit(void* context) {
  78. NfcPlaylist* nfc_playlist = context;
  79. submenu_reset(nfc_playlist->submenu);
  80. }