#ifndef MAINWINDOW_H #define MAINWINDOW_H #include #include #include #include #include #include #include #include "PageBaseWidget.h" #include "Config.h" #include "ZMQClient.h" #include "VlcMediaListPlayer.h" namespace Ui { class MainWindow; } namespace irrklang { class ISoundEngine; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); static MainWindow& Get(); bool Initialize(); bool SaveConfig(); QImage* GetBackground() { return &videoImage_; } void ShowHomeScreen(); void ShowDetailedTown(DetailedType dt); bool SwitchToPage(PageBaseWidget::PageType pageType); void ShowContentWidget(int32_t detailedType, const QString& btnName); const Config& GetConfig() const { return m_config; } bool GetMediaInfo(int32_t detailedType, const QString& btnName, MediaInfo& item) const; MediaInfo* GetMediaInfo(int32_t detailedType, const QString& btnName); bool UpdateConfigLandmark(int32_t detailedType, const QString& btnName, const QPoint& pos); void SendCmd(const QString& cmd); const QString GetDetailedTypeName(DetailedType dt) const; bool PlayAudio(); protected: void mousePressEvent(QMouseEvent* event) override; void closeEvent(QCloseEvent* event) override; void paintEvent(QPaintEvent* event) override; protected: void InitializePageWidget(PageBaseWidget* widget); void HideAllWidget(); void GenertorConfig(); void ShowItemImages(); void PlayBackgroundMovie(); private: void slotSetOneFrame(QImage image) { videoImage_ = std::move(image); } private: Ui::MainWindow *ui; // class QMainServer* m_mainServer; ZMQClient zmqClient_; QElapsedTimer elapsedTimer; qint32 clickCount{ 0 }; QMap m_pageWidgets; Config m_config; class TokenRequest* m_tokenRequest{ nullptr }; VlcMediaListPlayer vlcPlayer_; QImage videoImage_; QTimer videoUpdate_; irrklang::ISoundEngine* soundEngine_{ nullptr }; }; #endif // MAINWINDOW_H