nfc_apdu_runner_scene_file_select.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include "../nfc_apdu_runner.h"
  2. #include "nfc_apdu_runner_scene.h"
  3. #include <storage/storage.h>
  4. #include <dialogs/dialogs.h>
  5. // 文件选择场景进入回调
  6. void nfc_apdu_runner_scene_file_select_on_enter(void* context) {
  7. NfcApduRunner* app = context;
  8. DialogsFileBrowserOptions browser_options;
  9. dialog_file_browser_set_basic_options(&browser_options, FILE_EXTENSION, NULL);
  10. browser_options.base_path = APP_DIRECTORY_PATH;
  11. browser_options.hide_ext = false;
  12. // 确保目录存在
  13. Storage* storage = app->storage;
  14. if(!storage_dir_exists(storage, APP_DIRECTORY_PATH)) {
  15. if(!storage_simply_mkdir(storage, APP_DIRECTORY_PATH)) {
  16. dialog_message_show_storage_error(app->dialogs, "Cannot create\napp folder");
  17. scene_manager_previous_scene(app->scene_manager);
  18. return;
  19. }
  20. }
  21. // 设置初始路径为APP_DIRECTORY_PATH
  22. furi_string_set(app->file_path, APP_DIRECTORY_PATH);
  23. // 显示文件浏览器
  24. bool success =
  25. dialog_file_browser_show(app->dialogs, app->file_path, app->file_path, &browser_options);
  26. if(success) {
  27. scene_manager_next_scene(app->scene_manager, NfcApduRunnerSceneCardPlacement);
  28. } else {
  29. scene_manager_previous_scene(app->scene_manager);
  30. }
  31. }
  32. // 文件选择场景事件回调
  33. bool nfc_apdu_runner_scene_file_select_on_event(void* context, SceneManagerEvent event) {
  34. UNUSED(context);
  35. UNUSED(event);
  36. return false;
  37. }
  38. // 文件选择场景退出回调
  39. void nfc_apdu_runner_scene_file_select_on_exit(void* context) {
  40. UNUSED(context);
  41. }