#include "homepagedlg.h"
#include "ui_homepagedlg.h"
#include <QDir>
#include <QPushButton>
#include <qsettings.h>

HomePageDlg::HomePageDlg(QWidget *parent)
    : QWidget(parent), ui(new Ui::HomePageDlg) {
  ui->setupUi(this);
  QPalette palette;
  // 设置主窗口背景颜色
  palette.setColor(QPalette::Window, QColor(50, 50, 50));
  this->setPalette(palette);
  // 嵌入到主窗口
  setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint);
  hide();

  settingWidget = new HomePageSetingWidget(this);
  settingWidget->setWindowFlags(Qt::Dialog);
  settingWidget->setWindowModality(Qt::WindowModal);//设置为模态对话框

  m_deviceStateDlg = new deviceStateDlg(this); // 状态嵌入窗口
  m_deviceStateDlg->show();
  std::unordered_map<QString, settingStruct> allParam =
      settingWidget->getAllParam();
  m_deviceStateDlg->setUrl(allParam);

  initButton();
}

HomePageDlg::~HomePageDlg() { delete ui; }

/**
 * @brief HomePageDlg::initButton 初始化按钮位置
 */
void HomePageDlg::initButton() {
  QIcon icon;
  icon.addFile(":/res/settings.png");
  m_settingBtn = new QPushButton;
  m_settingBtn->setParent(this);
  m_settingBtn->setMinimumSize(40, 40);
  m_settingBtn->setMaximumSize(40, 40);
  m_settingBtn->setIconSize(QSize(30, 30));
  m_settingBtn->setIcon(icon);

  // 点击主页按钮弹出设置页面1
  connect(m_settingBtn, &QPushButton::clicked, this, [&]() {
    // qDebug() << "homepagedlg上的设置按钮点击了";
    if (settingWidget->isVisible())
      settingWidget->close();
    else
      settingWidget->show();

    emit m_deviceStateDlg->stopMyThread(1);
  });

  // 设置页面设置ip后,更新网络检测页面ip
  connect(settingWidget, &HomePageSetingWidget::sendOneSet, this,
          [&](unsigned char urlIndex, settingStruct url) {
            m_deviceStateDlg->setDeviceIP(urlIndex, url);
          });
}

// 区域重绘
void HomePageDlg::resizeEvent(QResizeEvent *event) {
  double HomePageHeight = (double)(this->height());
  double HomePageWidth = (double)(this->width());
  // 设置按钮位置和大小
  m_settingBtn->setGeometry(HomePageWidth - 40, 0, 40, 40);
  m_deviceStateDlg->move(0.5 * (HomePageWidth - m_deviceStateDlg->width()),
                         0.5 * (HomePageHeight - m_deviceStateDlg->height()));
}