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

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. false);
  22. view_manager->switch_to(IrdaAppViewManager::ViewType::TextInput);
  23. }
  24. bool IrdaAppSceneEditRename::on_event(IrdaApp* app, IrdaAppEvent* event) {
  25. bool consumed = false;
  26. if(event->type == IrdaAppEvent::Type::TextEditDone) {
  27. auto remote_manager = app->get_remote_manager();
  28. bool result = false;
  29. if(app->get_edit_element() == IrdaApp::EditElement::Button) {
  30. result =
  31. remote_manager->rename_button(app->get_current_button(), app->get_text_store(0));
  32. app->set_current_button(IrdaApp::ButtonNA);
  33. } else {
  34. result = remote_manager->rename_remote(app->get_text_store(0));
  35. }
  36. if(!result) {
  37. app->search_and_switch_to_previous_scene(
  38. {IrdaApp::Scene::Start, IrdaApp::Scene::RemoteList});
  39. } else {
  40. app->switch_to_next_scene_without_saving(IrdaApp::Scene::EditRenameDone);
  41. }
  42. consumed = true;
  43. }
  44. return consumed;
  45. }
  46. void IrdaAppSceneEditRename::on_exit(IrdaApp* app) {
  47. }