main_menu.c 2.8 KB

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