#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QAction>
#include <QGridLayout>
#include <QLabel>
#include <QLineEdit>
#include <QMainWindow>
#include <QMenu>
#include <QMenuBar>
#include <QProcess>
#include <QPushButton>
#include <QTextEdit>
#include <QWebEngineView>

#include "SDFPDlg.h"
#include "Src/GDDC/gddcdlg.h"
#include "Src/HomePage/homepagedlg.h"
#include "Src/ModelCamera/modelcameradlg.h"
#include "Src/RescueLoad/rescueloadwidget.h"

#ifdef Q_OS_WIN
// #include <QWindow>
// #include <WinUser.h>
// #include <windows.h>
#endif
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE

class MainWindow : public QMainWindow {
    Q_OBJECT

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

private:
    Ui::MainWindow *ui;

    void initFile();

public:
    void initWindow();
    void initButton();
    void initSignalSlot();
private slots:
    void toolButton_clicked();
    void toolButton_2_clicked();
    void toolButton_3_clicked();
    void toolButton_4_clicked();
    void toolButton_5_clicked();
    void toolButton_6_clicked();
    void toolButton_7_clicked();
    void toolButton_8_clicked();
    void toolButton_9_clicked();

public:
    GDDCdlg *m_GDDCdlg;
    HomePageDlg *m_HomePagedlg;
    RescueLoadWidget *m_rescueLoadWidget;
    SDFPDlg *m_SDFPDlg;
    // QWeb *m_qWeb;
    // QWebEngineView *mWeb;
    ModelCameraDlg *m_ModelCameraDlg;
    QWebEngineView *lLinkWeb;          // L链
    QWebEngineView *adHocNetworkWeb;   // 自组网
    QWebEngineView *satelliteCommWeb;  // 卫通
private:
    QProcess *processPDT;
    QString exeDirPathName = "";
    std::unordered_map<QString, settingStruct> m_allSetMap;

public:
    void changeBtnColor(int num);

private:
    /**
     * @brief 初始化UAVID与推流APPName的映射关系
     */
    void initUAVIDMap();

    void initNotifyManager();
};
#endif  // MAINWINDOW_H