lfrfid_app_scene_raw_name.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #include "lfrfid_app_scene_raw_name.h"
  2. #include "m-string.h"
  3. #include <lib/toolbox/random_name.h>
  4. #include <lib/toolbox/path.h>
  5. void LfRfidAppSceneRawName::on_enter(LfRfidApp* app, bool /* need_restore */) {
  6. const char* key_name = string_get_cstr(app->raw_file_name);
  7. bool key_name_empty = (string_size(app->raw_file_name) == 0);
  8. if(key_name_empty) {
  9. app->text_store.set("RfidRecord");
  10. } else {
  11. app->text_store.set("%s", key_name);
  12. }
  13. auto text_input = app->view_controller.get<TextInputVM>();
  14. text_input->set_header_text("Name the raw file");
  15. text_input->set_result_callback(
  16. save_callback, app, app->text_store.text, LFRFID_KEY_NAME_SIZE, key_name_empty);
  17. app->view_controller.switch_to<TextInputVM>();
  18. }
  19. bool LfRfidAppSceneRawName::on_event(LfRfidApp* app, LfRfidApp::Event* event) {
  20. bool consumed = false;
  21. if(event->type == LfRfidApp::EventType::Next) {
  22. string_set_str(app->raw_file_name, app->text_store.text);
  23. app->scene_controller.switch_to_next_scene(LfRfidApp::SceneType::RawInfo);
  24. }
  25. return consumed;
  26. }
  27. void LfRfidAppSceneRawName::on_exit(LfRfidApp* app) {
  28. app->view_controller.get<TextInputVM>()->clean();
  29. }
  30. void LfRfidAppSceneRawName::save_callback(void* context) {
  31. LfRfidApp* app = static_cast<LfRfidApp*>(context);
  32. LfRfidApp::Event event;
  33. event.type = LfRfidApp::EventType::Next;
  34. app->view_controller.send_event(&event);
  35. }