irda-app-scene-edit-rename.cpp 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #include "../irda-app.hpp"
  2. void IrdaAppSceneEditRename::on_enter(IrdaApp* app) {
  3. IrdaAppViewManager* view_manager = app->get_view_manager();
  4. TextInput* text_input = view_manager->get_text_input();
  5. auto remote_manager = app->get_remote_manager();
  6. if(app->get_edit_element() == IrdaApp::EditElement::Button) {
  7. furi_assert(app->get_current_button() != IrdaApp::ButtonNA);
  8. auto button_name = remote_manager->get_button_name(app->get_current_button());
  9. strncpy(app->get_text_store(0), button_name.c_str(), app->get_text_store_size());
  10. } else {
  11. auto remote_name = remote_manager->get_remote_name();
  12. strncpy(app->get_text_store(0), remote_name.c_str(), app->get_text_store_size());
  13. }
  14. text_input_set_header_text(text_input, "Name the key");
  15. text_input_set_result_callback(
  16. text_input,
  17. IrdaApp::text_input_callback,
  18. app,
  19. app->get_text_store(0),
  20. app->get_text_store_size());
  21. view_manager->switch_to(IrdaAppViewManager::ViewType::TextInput);
  22. }
  23. bool IrdaAppSceneEditRename::on_event(IrdaApp* app, IrdaAppEvent* event) {
  24. bool consumed = false;
  25. if(event->type == IrdaAppEvent::Type::TextEditDone) {
  26. auto remote_manager = app->get_remote_manager();
  27. bool result = false;
  28. if(app->get_edit_element() == IrdaApp::EditElement::Button) {
  29. result =
  30. remote_manager->rename_button(app->get_current_button(), app->get_text_store(0));
  31. app->set_current_button(IrdaApp::ButtonNA);
  32. } else {
  33. result = remote_manager->rename_remote(app->get_text_store(0));
  34. }
  35. if(!result) {
  36. app->search_and_switch_to_previous_scene(
  37. {IrdaApp::Scene::Start, IrdaApp::Scene::RemoteList});
  38. } else {
  39. app->switch_to_next_scene_without_saving(IrdaApp::Scene::EditRenameDone);
  40. }
  41. consumed = true;
  42. }
  43. return consumed;
  44. }
  45. void IrdaAppSceneEditRename::on_exit(IrdaApp* app) {
  46. }