#ifndef DEVICESTATEDLG_H
#define DEVICESTATEDLG_H

#include "homepagesetingwidget.h"
#include "networkDetection.h"
#include <QProcess>
#include <QThread>
#include <QTimer>
#include <QWidget>
#define deviceNum 5
namespace Ui {
class deviceStateDlg;
}

class deviceStateDlg : public QWidget {
  Q_OBJECT

public:
  explicit deviceStateDlg(QWidget *parent = nullptr);
  ~deviceStateDlg();
  void initWindow();
  void initParam();
signals:
  void switchToDevicePage(int id); // 发送切换到设备页信号
  // QVector<void (*)(int, QStringList)> startThread(int, QStringList);
  void startThread0(int, QStringList); // 启动线程
  void startThread1(int, QStringList); // 启动线程
  void startThread2(int, QStringList); // 启动线程
  void startThread3(int, QStringList); // 启动线程
  void startThread4(int, QStringList); // 启动线程

private slots:
  void on_pushButton_homePage_GDDC_clicked();

  void on_pushButton_homePage_LLink_clicked();

  void on_pushButton_homePage_adHocNetwork_clicked();

  void on_pushButton_homePage_rescue_clicked();

  void on_pushButton_homePage_PDT_clicked();

  void on_pushButton_homePage_3DCamra_clicked();

  void on_pushButton_homePage_KuSatelliteComm_clicked();

  void receiveResult(int, QString); // 接收线程结果
private:
  Ui::deviceStateDlg *ui;

public:
  QStringList cmdlist[deviceNum]; // 0光电吊舱,1L链 ,2 自组网,3ku卫通 ,4
  networkDetection *m_networkDetection[deviceNum];
  QThread *m_workerThread[deviceNum];
  QTimer *m_timer;
  void setDeviceIP(int, QString);
  QString stringIPSelect(QString);
  std::unordered_map<QString, QString> m_urlMap;             // 存储url地址
  void setUrl(std::unordered_map<QString, QString> &urlMap); // 获得url地址
  void startNetDetn();
  void stopNetDetn();
public slots:
  void onTimeOut();
};

#endif // DEVICESTATEDLG_H