#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QNetworkAccessManager>

#include "ZMQServer.h"


namespace Ui {
class MainWindow;
}

struct Widget {
    int x{ 0 };
    int y{ 0 };
    int width{ 0 };
    int height{ 0 };
    QString bg;
    int anim{ 0 }; // 0 左到右, 1 右到左 2 上到下 3 下到上
    int duration{ 30 };
    QString tag;
};

struct Setting {
    int total{ 1 };
    int start{ 0 };
    int count{ 1 };
    int port{ 9532 };

    QVector<Widget> widgets;
};

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    static MainWindow& Get();

protected:
    void OnDataRead();
    void ShowPaper(const QString& filePath, const QString& url, const QString& info);
    void closeEvent(QCloseEvent* event) override;

    bool ParseSetting();
    void OnHandleMessage(const QString& message);

    void ScreenChange();


private:
    Ui::MainWindow *ui;
    //class NetClient* m_netClient;
    ZMQServer zmqServer_;
    QString m_serverIp;

    QVector<class DisplayWidget*> m_widgets;
    QNetworkAccessManager manager;

    Setting m_setting;
    class TokenRequest* m_tokenRequest{ nullptr };
};

#endif // MAINWINDOW_H