nfc_playlist_scene_main_menu.c 2.8 KB

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