spi_mem_scene_read_filename.c 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "../spi_mem_app_i.h"
  2. #include "../spi_mem_files.h"
  3. void spi_mem_scene_read_filename_view_result_callback(void* context) {
  4. SPIMemApp* app = context;
  5. view_dispatcher_send_custom_event(app->view_dispatcher, SPIMemCustomEventTextEditResult);
  6. }
  7. void spi_mem_scene_read_set_random_filename(SPIMemApp* app) {
  8. if(furi_string_end_with(app->file_path, SPI_MEM_FILE_EXTENSION)) {
  9. size_t filename_start = furi_string_search_rchar(app->file_path, '/');
  10. furi_string_left(app->file_path, filename_start);
  11. }
  12. name_generator_make_auto(app->text_buffer, SPI_MEM_TEXT_BUFFER_SIZE, SPI_MEM_FILE_PREFIX);
  13. }
  14. void spi_mem_scene_read_filename_on_enter(void* context) {
  15. SPIMemApp* app = context;
  16. spi_mem_scene_read_set_random_filename(app);
  17. text_input_set_header_text(app->text_input, "Name the dump");
  18. text_input_set_result_callback(
  19. app->text_input,
  20. spi_mem_scene_read_filename_view_result_callback,
  21. app,
  22. app->text_buffer,
  23. SPI_MEM_FILE_NAME_SIZE,
  24. true);
  25. view_dispatcher_switch_to_view(app->view_dispatcher, SPIMemViewTextInput);
  26. }
  27. bool spi_mem_scene_read_filename_on_event(void* context, SceneManagerEvent event) {
  28. SPIMemApp* app = context;
  29. UNUSED(app);
  30. bool success = false;
  31. if(event.type == SceneManagerEventTypeCustom) {
  32. success = true;
  33. if(event.event == SPIMemCustomEventTextEditResult) {
  34. scene_manager_next_scene(app->scene_manager, SPIMemSceneRead);
  35. }
  36. }
  37. return success;
  38. }
  39. void spi_mem_scene_read_filename_on_exit(void* context) {
  40. SPIMemApp* app = context;
  41. text_input_reset(app->text_input);
  42. }