irda_app_scene.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. #pragma once
  2. #include "../irda_app_event.h"
  3. #include <furi_hal_irda.h>
  4. #include "irda.h"
  5. #include <vector>
  6. #include <string>
  7. #include "../irda_app_brute_force.h"
  8. class IrdaApp;
  9. class IrdaAppScene {
  10. public:
  11. virtual void on_enter(IrdaApp* app) = 0;
  12. virtual bool on_event(IrdaApp* app, IrdaAppEvent* event) = 0;
  13. virtual void on_exit(IrdaApp* app) = 0;
  14. virtual ~IrdaAppScene(){};
  15. private:
  16. };
  17. class IrdaAppSceneStart : public IrdaAppScene {
  18. public:
  19. void on_enter(IrdaApp* app) final;
  20. bool on_event(IrdaApp* app, IrdaAppEvent* event) final;
  21. void on_exit(IrdaApp* app) final;
  22. private:
  23. uint32_t submenu_item_selected = 0;
  24. };
  25. class IrdaAppSceneUniversal : public IrdaAppScene {
  26. public:
  27. void on_enter(IrdaApp* app) final;
  28. bool on_event(IrdaApp* app, IrdaAppEvent* event) final;
  29. void on_exit(IrdaApp* app) final;
  30. private:
  31. uint32_t submenu_item_selected = 0;
  32. };
  33. class IrdaAppSceneLearn : public IrdaAppScene {
  34. public:
  35. void on_enter(IrdaApp* app) final;
  36. bool on_event(IrdaApp* app, IrdaAppEvent* event) final;
  37. void on_exit(IrdaApp* app) final;
  38. };
  39. class IrdaAppSceneLearnSuccess : public IrdaAppScene {
  40. public:
  41. void on_enter(IrdaApp* app) final;
  42. bool on_event(IrdaApp* app, IrdaAppEvent* event) final;
  43. void on_exit(IrdaApp* app) final;
  44. bool button_pressed = false;
  45. };
  46. class IrdaAppSceneLearnEnterName : public IrdaAppScene {
  47. public:
  48. void on_enter(IrdaApp* app) final;
  49. bool on_event(IrdaApp* app, IrdaAppEvent* event) final;
  50. void on_exit(IrdaApp* app) final;
  51. };
  52. class IrdaAppSceneLearnDone : public IrdaAppScene {
  53. public:
  54. void on_enter(IrdaApp* app) final;
  55. bool on_event(IrdaApp* app, IrdaAppEvent* event) final;
  56. void on_exit(IrdaApp* app) final;
  57. };
  58. class IrdaAppSceneRemote : public IrdaAppScene {
  59. public:
  60. void on_enter(IrdaApp* app) final;
  61. bool on_event(IrdaApp* app, IrdaAppEvent* event) final;
  62. void on_exit(IrdaApp* app) final;
  63. private:
  64. std::vector<std::string> buttons_names;
  65. uint32_t buttonmenu_item_selected = 0;
  66. bool button_pressed = false;
  67. };
  68. class IrdaAppSceneRemoteList : public IrdaAppScene {
  69. public:
  70. void on_enter(IrdaApp* app) final;
  71. bool on_event(IrdaApp* app, IrdaAppEvent* event) final;
  72. void on_exit(IrdaApp* app) final;
  73. private:
  74. uint32_t submenu_item_selected = 0;
  75. std::vector<std::string> remote_names;
  76. };
  77. class IrdaAppSceneAskBack : public IrdaAppScene {
  78. public:
  79. void on_enter(IrdaApp* app) final;
  80. bool on_event(IrdaApp* app, IrdaAppEvent* event) final;
  81. void on_exit(IrdaApp* app) final;
  82. };
  83. class IrdaAppSceneEdit : public IrdaAppScene {
  84. public:
  85. void on_enter(IrdaApp* app) final;
  86. bool on_event(IrdaApp* app, IrdaAppEvent* event) final;
  87. void on_exit(IrdaApp* app) final;
  88. private:
  89. uint32_t submenu_item_selected = 0;
  90. };
  91. class IrdaAppSceneEditKeySelect : public IrdaAppScene {
  92. public:
  93. void on_enter(IrdaApp* app) final;
  94. bool on_event(IrdaApp* app, IrdaAppEvent* event) final;
  95. void on_exit(IrdaApp* app) final;
  96. private:
  97. std::vector<std::string> buttons_names;
  98. };
  99. class IrdaAppSceneEditRename : public IrdaAppScene {
  100. public:
  101. void on_enter(IrdaApp* app) final;
  102. bool on_event(IrdaApp* app, IrdaAppEvent* event) final;
  103. void on_exit(IrdaApp* app) final;
  104. };
  105. class IrdaAppSceneEditDelete : public IrdaAppScene {
  106. public:
  107. void on_enter(IrdaApp* app) final;
  108. bool on_event(IrdaApp* app, IrdaAppEvent* event) final;
  109. void on_exit(IrdaApp* app) final;
  110. };
  111. class IrdaAppSceneEditRenameDone : public IrdaAppScene {
  112. public:
  113. void on_enter(IrdaApp* app) final;
  114. bool on_event(IrdaApp* app, IrdaAppEvent* event) final;
  115. void on_exit(IrdaApp* app) final;
  116. };
  117. class IrdaAppSceneEditDeleteDone : public IrdaAppScene {
  118. public:
  119. void on_enter(IrdaApp* app) final;
  120. bool on_event(IrdaApp* app, IrdaAppEvent* event) final;
  121. void on_exit(IrdaApp* app) final;
  122. };
  123. class IrdaAppSceneUniversalCommon : public IrdaAppScene {
  124. bool brute_force_started = false;
  125. protected:
  126. bool on_event(IrdaApp* app, IrdaAppEvent* event) final;
  127. void on_exit(IrdaApp* app) final;
  128. IrdaAppBruteForce brute_force;
  129. void remove_popup(IrdaApp* app);
  130. void show_popup(IrdaApp* app, int record_amount);
  131. bool progress_popup(IrdaApp* app);
  132. static void irda_app_item_callback(void* context, uint32_t index);
  133. IrdaAppSceneUniversalCommon(const char* filename)
  134. : brute_force(filename) {
  135. }
  136. ~IrdaAppSceneUniversalCommon() {
  137. }
  138. };
  139. class IrdaAppSceneUniversalTV : public IrdaAppSceneUniversalCommon {
  140. public:
  141. void on_enter(IrdaApp* app) final;
  142. IrdaAppSceneUniversalTV()
  143. : IrdaAppSceneUniversalCommon("/ext/irda/assets/tv.ir") {
  144. }
  145. ~IrdaAppSceneUniversalTV() {
  146. }
  147. };
  148. class IrdaAppSceneUniversalAudio : public IrdaAppSceneUniversalCommon {
  149. public:
  150. void on_enter(IrdaApp* app) final;
  151. IrdaAppSceneUniversalAudio()
  152. : IrdaAppSceneUniversalCommon("/ext/irda/assets/audio.ir") {
  153. }
  154. ~IrdaAppSceneUniversalAudio() {
  155. }
  156. };