// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_GUI_H #define CHIAKI_GUI_H #include #include #include "nanovg.h" #include "nanovg_gl.h" #include "nanovg_gl_utils.h" #include #include #include #include "discoverymanager.h" #include "host.h" #include "io.h" #include "settings.h" class HostInterface : public brls::List { private: IO *io; Host *host; Settings *settings; bool connected = false; public: HostInterface(Host *host); ~HostInterface(); static void Register(Host *host, std::function success_cb = nullptr); void Register(); void Wakeup(brls::View *view); void Connect(brls::View *view); void ConnectSession(); void Disconnect(); void Stream(); void CloseStream(ChiakiQuitEvent *quit); }; class MainApplication { private: Settings *settings; ChiakiLog *log; DiscoveryManager *discoverymanager; IO *io; brls::TabFrame *rootFrame; std::map host_menuitems; bool BuildConfigurationMenu(brls::List *, Host *host = nullptr); void BuildAddHostConfigurationMenu(brls::List *); public: MainApplication(DiscoveryManager *discoverymanager); ~MainApplication(); bool Load(); }; class PSRemotePlay : public brls::View { private: brls::AppletFrame *frame; // to display stream on screen IO *io; // to send gamepad inputs Host *host; brls::Label *label; public: PSRemotePlay(Host *host); ~PSRemotePlay(); void draw(NVGcontext *vg, int x, int y, unsigned width, unsigned height, brls::Style *style, brls::FrameContext *ctx) override; }; #endif // CHIAKI_GUI_H