lfrfid_app_scene_save_data.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #include "lfrfid_app_scene_save_data.h"
  2. #include <dolphin/dolphin.h>
  3. void LfRfidAppSceneSaveData::on_enter(LfRfidApp* app, bool need_restore) {
  4. auto byte_input = app->view_controller.get<ByteInputVM>();
  5. size_t size = protocol_dict_get_data_size(app->dict, app->protocol_id);
  6. if(need_restore) {
  7. protocol_dict_set_data(app->dict, app->protocol_id, app->old_key_data, size);
  8. } else {
  9. protocol_dict_get_data(app->dict, app->protocol_id, app->old_key_data, size);
  10. }
  11. protocol_dict_get_data(app->dict, app->protocol_id, app->new_key_data, size);
  12. byte_input->set_header_text("Enter the data in hex");
  13. byte_input->set_result_callback(save_callback, NULL, app, app->new_key_data, size);
  14. app->view_controller.switch_to<ByteInputVM>();
  15. }
  16. bool LfRfidAppSceneSaveData::on_event(LfRfidApp* app, LfRfidApp::Event* event) {
  17. bool consumed = false;
  18. if(event->type == LfRfidApp::EventType::Next) {
  19. size_t size = protocol_dict_get_data_size(app->dict, app->protocol_id);
  20. protocol_dict_set_data(app->dict, app->protocol_id, app->new_key_data, size);
  21. DOLPHIN_DEED(DolphinDeedRfidAdd);
  22. app->scene_controller.switch_to_next_scene(LfRfidApp::SceneType::SaveName);
  23. }
  24. return consumed;
  25. }
  26. void LfRfidAppSceneSaveData::on_exit(LfRfidApp* app) {
  27. app->view_controller.get<ByteInputVM>()->clean();
  28. }
  29. void LfRfidAppSceneSaveData::save_callback(void* context) {
  30. LfRfidApp* app = static_cast<LfRfidApp*>(context);
  31. LfRfidApp::Event event;
  32. event.type = LfRfidApp::EventType::Next;
  33. app->view_controller.send_event(&event);
  34. }