#ifndef CPLEXSDOSD_H #define CPLEXSDOSD_H #include #include #include #include #include #include #include #include "Config.h" #include "Plexservice.h" #include "plexgdm.h" #include "hlsPlayerControl.h" #include "browserGrid.h" #include "detailView.h" #include "tokendefinitions.h" #include #include class cPlexSdOsd : public skindesignerapi::cSkindesignerOsdObject { private: static bool m_bSdSupport; std::shared_ptr m_pBrowserGrid = nullptr; std::shared_ptr m_pDetailGrid = nullptr; std::shared_ptr m_pMessage = nullptr; bool m_messageDisplayed = false; bool m_detailsActive = false; std::shared_ptr m_pDetailContainer = nullptr; std::shared_ptr m_pRootView = nullptr; std::shared_ptr m_pDetailsView = nullptr; void Flush(); void DrawMessage(std::string message); public: cPlexSdOsd(skindesignerapi::cPluginStructure *plugStruct); cPlexSdOsd(skindesignerapi::cPluginStructure *plugStruct, std::shared_ptr detailContainer); ~cPlexSdOsd(); virtual void Show(void); void ShowDetails(std::shared_ptr container); void ShowDetails(plexclient::cVideo* vid); virtual eOSState ProcessKey(eKeys Key); eOSState ProcessKeyDetailView(eKeys Key); eOSState ProcessKeyBrowserView(eKeys Key); bool SdSupport(); static cMutex RedrawMutex; static void DefineTokens(eViewElementsRoot ve, skindesignerapi::cTokenContainer *tk); static void DefineGridTokens(skindesignerapi::cTokenContainer *tk); static void DefineFooterTokens(skindesignerapi::cTokenContainer *tk); static void DefineWatchTokens(skindesignerapi::cTokenContainer *tk); static void DefineDetailsTokens(eViewElementsDetail ve, skindesignerapi::cTokenContainer *tk); }; #endif // CPLEXSDOSD_H