nfc_playlist_scene_file_edit.c 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #include "../nfc_playlist.h"
  2. typedef enum {
  3. NfcPlaylistMenuSelection_CreatePlaylist,
  4. NfcPlaylistMenuSelection_DeletePlaylist,
  5. NfcPlaylistMenuSelection_RenamePlaylist,
  6. NfcPlaylistMenuSelection_ViewPlaylistContent,
  7. NfcPlaylistMenuSelection_AddNfcItem
  8. } NfcPlaylistFileEditMenuSelection;
  9. void nfc_playlist_file_edit_menu_callback(void* context, uint32_t index) {
  10. NfcPlaylist* nfc_playlist = context;
  11. scene_manager_handle_custom_event(nfc_playlist->scene_manager, index);
  12. }
  13. void nfc_playlist_file_edit_scene_on_enter(void* context) {
  14. NfcPlaylist* nfc_playlist = context;
  15. submenu_set_header(nfc_playlist->submenu, "Edit Playlist");
  16. submenu_add_item(
  17. nfc_playlist->submenu,
  18. "Create Playlist",
  19. NfcPlaylistMenuSelection_CreatePlaylist,
  20. nfc_playlist_file_edit_menu_callback,
  21. nfc_playlist);
  22. submenu_add_lockable_item(
  23. nfc_playlist->submenu,
  24. "Delete Playlist",
  25. NfcPlaylistMenuSelection_DeletePlaylist,
  26. nfc_playlist_file_edit_menu_callback,
  27. nfc_playlist,
  28. furi_string_empty(nfc_playlist->settings.file_path),
  29. "No\nplaylist\nselected");
  30. submenu_add_lockable_item(
  31. nfc_playlist->submenu,
  32. "Rename Playlist",
  33. NfcPlaylistMenuSelection_RenamePlaylist,
  34. nfc_playlist_file_edit_menu_callback,
  35. nfc_playlist,
  36. furi_string_empty(nfc_playlist->settings.file_path),
  37. "No\nplaylist\nselected");
  38. submenu_add_lockable_item(
  39. nfc_playlist->submenu,
  40. "View Playlist Content",
  41. NfcPlaylistMenuSelection_ViewPlaylistContent,
  42. nfc_playlist_file_edit_menu_callback,
  43. nfc_playlist,
  44. furi_string_empty(nfc_playlist->settings.file_path),
  45. "No\nplaylist\nselected");
  46. submenu_add_lockable_item(
  47. nfc_playlist->submenu,
  48. "Add NFC Item",
  49. NfcPlaylistMenuSelection_AddNfcItem,
  50. nfc_playlist_file_edit_menu_callback,
  51. nfc_playlist,
  52. furi_string_empty(nfc_playlist->settings.file_path),
  53. "No\nplaylist\nselected");
  54. view_dispatcher_switch_to_view(nfc_playlist->view_dispatcher, NfcPlaylistScene_FileEdit);
  55. }
  56. bool nfc_playlist_file_edit_scene_on_event(void* context, SceneManagerEvent event) {
  57. NfcPlaylist* nfc_playlist = context;
  58. bool consumed = false;
  59. if(event.type == SceneManagerEventTypeCustom) {
  60. switch(event.event) {
  61. case NfcPlaylistMenuSelection_CreatePlaylist:
  62. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_NameNewFile);
  63. consumed = true;
  64. break;
  65. case NfcPlaylistMenuSelection_DeletePlaylist:
  66. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_ConfirmDelete);
  67. consumed = true;
  68. break;
  69. case NfcPlaylistMenuSelection_RenamePlaylist:
  70. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_FileRename);
  71. consumed = true;
  72. break;
  73. case NfcPlaylistMenuSelection_ViewPlaylistContent:
  74. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_ViewPlaylistContent);
  75. consumed = true;
  76. break;
  77. case NfcPlaylistMenuSelection_AddNfcItem:
  78. scene_manager_next_scene(nfc_playlist->scene_manager, NfcPlaylistScene_NfcSelect);
  79. consumed = true;
  80. break;
  81. default:
  82. break;
  83. }
  84. }
  85. return consumed;
  86. }
  87. void nfc_playlist_file_edit_scene_on_exit(void* context) {
  88. NfcPlaylist* nfc_playlist = context;
  89. submenu_reset(nfc_playlist->submenu);
  90. }