irda-app-scene-learn-enter-name.cpp 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include "../irda-app.hpp"
  2. #include "gui/modules/text_input.h"
  3. #include <callback-connector.h>
  4. #include <string>
  5. #include <stdio.h>
  6. void IrdaAppSceneLearnEnterName::on_enter(IrdaApp* app) {
  7. IrdaAppViewManager* view_manager = app->get_view_manager();
  8. TextInput* text_input = view_manager->get_text_input();
  9. auto receiver = app->get_receiver();
  10. auto message = receiver->get_last_message();
  11. app->set_text_store(
  12. 0,
  13. "%.4s_%0*lX",
  14. irda_get_protocol_name(message->protocol),
  15. irda_get_protocol_command_length(message->protocol),
  16. message->command);
  17. text_input_set_header_text(text_input, "Name the key");
  18. text_input_set_result_callback(
  19. text_input,
  20. IrdaApp::text_input_callback,
  21. app,
  22. app->get_text_store(0),
  23. app->get_text_store_size());
  24. view_manager->switch_to(IrdaAppViewManager::ViewType::TextInput);
  25. }
  26. bool IrdaAppSceneLearnEnterName::on_event(IrdaApp* app, IrdaAppEvent* event) {
  27. bool consumed = false;
  28. if(event->type == IrdaAppEvent::Type::TextEditDone) {
  29. auto remote_manager = app->get_remote_manager();
  30. auto receiver = app->get_receiver();
  31. bool result = false;
  32. if(app->get_learn_new_remote()) {
  33. result = remote_manager->add_remote_with_button(
  34. app->get_text_store(0), receiver->get_last_message());
  35. } else {
  36. result =
  37. remote_manager->add_button(app->get_text_store(0), receiver->get_last_message());
  38. }
  39. if(!result) {
  40. app->search_and_switch_to_previous_scene(
  41. {IrdaApp::Scene::Start, IrdaApp::Scene::RemoteList});
  42. } else {
  43. app->switch_to_next_scene_without_saving(IrdaApp::Scene::LearnDone);
  44. }
  45. }
  46. return consumed;
  47. }
  48. void IrdaAppSceneLearnEnterName::on_exit(IrdaApp* app) {
  49. }