#pragma once #include "../irda_app_event.h" #include #include "irda.h" #include #include #include "../irda_app_brute_force.h" class IrdaApp; class IrdaAppScene { public: virtual void on_enter(IrdaApp* app) = 0; virtual bool on_event(IrdaApp* app, IrdaAppEvent* event) = 0; virtual void on_exit(IrdaApp* app) = 0; virtual ~IrdaAppScene(){}; private: }; class IrdaAppSceneStart : public IrdaAppScene { public: void on_enter(IrdaApp* app) final; bool on_event(IrdaApp* app, IrdaAppEvent* event) final; void on_exit(IrdaApp* app) final; private: uint32_t submenu_item_selected = 0; }; class IrdaAppSceneUniversal : public IrdaAppScene { public: void on_enter(IrdaApp* app) final; bool on_event(IrdaApp* app, IrdaAppEvent* event) final; void on_exit(IrdaApp* app) final; private: uint32_t submenu_item_selected = 0; }; class IrdaAppSceneLearn : public IrdaAppScene { public: void on_enter(IrdaApp* app) final; bool on_event(IrdaApp* app, IrdaAppEvent* event) final; void on_exit(IrdaApp* app) final; }; class IrdaAppSceneLearnSuccess : public IrdaAppScene { public: void on_enter(IrdaApp* app) final; bool on_event(IrdaApp* app, IrdaAppEvent* event) final; void on_exit(IrdaApp* app) final; }; class IrdaAppSceneLearnEnterName : public IrdaAppScene { public: void on_enter(IrdaApp* app) final; bool on_event(IrdaApp* app, IrdaAppEvent* event) final; void on_exit(IrdaApp* app) final; }; class IrdaAppSceneLearnDone : public IrdaAppScene { public: void on_enter(IrdaApp* app) final; bool on_event(IrdaApp* app, IrdaAppEvent* event) final; void on_exit(IrdaApp* app) final; }; class IrdaAppSceneRemote : public IrdaAppScene { public: void on_enter(IrdaApp* app) final; bool on_event(IrdaApp* app, IrdaAppEvent* event) final; void on_exit(IrdaApp* app) final; private: std::vector buttons_names; uint32_t buttonmenu_item_selected = 0; bool button_pressed = false; }; class IrdaAppSceneRemoteList : public IrdaAppScene { public: void on_enter(IrdaApp* app) final; bool on_event(IrdaApp* app, IrdaAppEvent* event) final; void on_exit(IrdaApp* app) final; private: uint32_t submenu_item_selected = 0; std::vector remote_names; }; class IrdaAppSceneAskBack : public IrdaAppScene { public: void on_enter(IrdaApp* app) final; bool on_event(IrdaApp* app, IrdaAppEvent* event) final; void on_exit(IrdaApp* app) final; }; class IrdaAppSceneEdit : public IrdaAppScene { public: void on_enter(IrdaApp* app) final; bool on_event(IrdaApp* app, IrdaAppEvent* event) final; void on_exit(IrdaApp* app) final; private: uint32_t submenu_item_selected = 0; }; class IrdaAppSceneEditKeySelect : public IrdaAppScene { public: void on_enter(IrdaApp* app) final; bool on_event(IrdaApp* app, IrdaAppEvent* event) final; void on_exit(IrdaApp* app) final; private: std::vector buttons_names; }; class IrdaAppSceneEditRename : public IrdaAppScene { public: void on_enter(IrdaApp* app) final; bool on_event(IrdaApp* app, IrdaAppEvent* event) final; void on_exit(IrdaApp* app) final; }; class IrdaAppSceneEditDelete : public IrdaAppScene { public: void on_enter(IrdaApp* app) final; bool on_event(IrdaApp* app, IrdaAppEvent* event) final; void on_exit(IrdaApp* app) final; }; class IrdaAppSceneEditRenameDone : public IrdaAppScene { public: void on_enter(IrdaApp* app) final; bool on_event(IrdaApp* app, IrdaAppEvent* event) final; void on_exit(IrdaApp* app) final; }; class IrdaAppSceneEditDeleteDone : public IrdaAppScene { public: void on_enter(IrdaApp* app) final; bool on_event(IrdaApp* app, IrdaAppEvent* event) final; void on_exit(IrdaApp* app) final; }; class IrdaAppSceneUniversalCommon : public IrdaAppScene { bool brute_force_started = false; protected: bool on_event(IrdaApp* app, IrdaAppEvent* event) final; void on_exit(IrdaApp* app) final; IrdaAppBruteForce brute_force; void remove_popup(IrdaApp* app); void show_popup(IrdaApp* app, int record_amount); bool progress_popup(IrdaApp* app); static void irda_app_item_callback(void* context, uint32_t index); IrdaAppSceneUniversalCommon(const char* filename) : brute_force(filename) { } ~IrdaAppSceneUniversalCommon() { } }; class IrdaAppSceneUniversalTV : public IrdaAppSceneUniversalCommon { public: void on_enter(IrdaApp* app) final; IrdaAppSceneUniversalTV() : IrdaAppSceneUniversalCommon("/ext/irda/assets/tv.ir") { } ~IrdaAppSceneUniversalTV() { } }; class IrdaAppSceneUniversalAudio : public IrdaAppSceneUniversalCommon { public: void on_enter(IrdaApp* app) final; IrdaAppSceneUniversalAudio() : IrdaAppSceneUniversalCommon("/ext/irda/assets/audio.ir") { } ~IrdaAppSceneUniversalAudio() { } };