From 4ca024b018bb2a168e4b3fa36fd5347234a5eb46 Mon Sep 17 00:00:00 2001
From: wanghaoyu <1580258873@qq.com>
Date: Thu, 15 Aug 2024 09:46:08 +0800
Subject: [PATCH] =?UTF-8?q?[feat]=E4=B8=BB=E9=A1=B5=E6=96=B0=E5=A2=9E?=
 =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E6=8C=89=E9=92=AE=EF=BC=8C=E5=8F=AF=E9=85=8D?=
 =?UTF-8?q?=E7=BD=AE=E9=A1=B5=E9=9D=A2=E8=AF=BB=E5=8F=96=E7=9A=84url?=
 =?UTF-8?q?=EF=BC=8C=E5=AE=9E=E6=97=B6=E6=9B=B4=E6=96=B0=E5=B9=B6=E4=BF=9D?=
 =?UTF-8?q?=E5=AD=98=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 HomePageDlg.qrc                               |   1 -
 PayloadAPP.pro                                |   9 +-
 .../HomePage/homepagedlg.cpp                  |  31 ++
 homepagedlg.h => Src/HomePage/homepagedlg.h   |   4 +
 homepagedlg.ui => Src/HomePage/homepagedlg.ui |   0
 Src/HomePage/homepagesetingwidget.cpp         |  83 ++++++
 Src/HomePage/homepagesetingwidget.h           |  47 ++++
 Src/HomePage/homepagesetingwidget.ui          | 266 ++++++++++++++++++
 mainwindow.cpp                                |  26 +-
 mainwindow.h                                  |   2 +-
 10 files changed, 462 insertions(+), 7 deletions(-)
 delete mode 100644 HomePageDlg.qrc
 rename homepagedlg.cpp => Src/HomePage/homepagedlg.cpp (66%)
 rename homepagedlg.h => Src/HomePage/homepagedlg.h (85%)
 rename homepagedlg.ui => Src/HomePage/homepagedlg.ui (100%)
 create mode 100644 Src/HomePage/homepagesetingwidget.cpp
 create mode 100644 Src/HomePage/homepagesetingwidget.h
 create mode 100644 Src/HomePage/homepagesetingwidget.ui

diff --git a/HomePageDlg.qrc b/HomePageDlg.qrc
deleted file mode 100644
index 7646d2b..0000000
--- a/HomePageDlg.qrc
+++ /dev/null
@@ -1 +0,0 @@
-<RCC/>
diff --git a/PayloadAPP.pro b/PayloadAPP.pro
index f6b1c55..05f1bea 100644
--- a/PayloadAPP.pro
+++ b/PayloadAPP.pro
@@ -17,13 +17,14 @@ SOURCES += \
     Src/GDDC/gddcCmdDlg.cpp \
     Src/GDDC/gddcSet.cpp \
     Src/GDDC/gddcStateInfo.cpp \
+    Src/HomePage/homepagesetingwidget.cpp \
     cffmpeg_decode.cpp \
     customwebenginepage.cpp \
     cwebengineview.cpp \
     ffmpegvideodlg.cpp \
     Src/GDDC/gddcdlg.cpp \
     global.cpp \
-    homepagedlg.cpp \
+    Src/HomePage/homepagedlg.cpp \
     main.cpp \
     mainwindow.cpp \
     qweb.cpp \
@@ -36,13 +37,14 @@ HEADERS += \
     Src/GDDC/gddcSet.h \
     Src/GDDC/gddcStateInfo.h \
     Src/GDDC/structDefineMyslef.h \
+    Src/HomePage/homepagesetingwidget.h \
     cffmpeg_decode.h \
     customwebenginepage.h \
     cwebengineview.h \
     ffmpegvideodlg.h \
     Src/GDDC/gddcdlg.h \
     global.h \
-    homepagedlg.h \
+    Src/HomePage/homepagedlg.h \
     mainwindow.h \
     qweb.h \
     rescueload.h \
@@ -52,9 +54,10 @@ FORMS += \
     Src/GDDC/gddcCmdDlg.ui \
     Src/GDDC/gddcSet.ui \
     Src/GDDC/gddcStateInfo.ui \
+    Src/HomePage/homepagesetingwidget.ui \
     ffmpegvideodlg.ui \
     Src/GDDC/gddcdlg.ui \
-    homepagedlg.ui \
+    Src/HomePage/homepagedlg.ui \
     mainwindow.ui \
     qweb.ui \
     rescueloadwidget.ui
diff --git a/homepagedlg.cpp b/Src/HomePage/homepagedlg.cpp
similarity index 66%
rename from homepagedlg.cpp
rename to Src/HomePage/homepagedlg.cpp
index b6a0223..78326dd 100644
--- a/homepagedlg.cpp
+++ b/Src/HomePage/homepagedlg.cpp
@@ -1,6 +1,7 @@
 #include "homepagedlg.h"
 #include "ui_homepagedlg.h"
 #include <QDir>
+#include <QPushButton>
 #include <qsettings.h>
 
 HomePageDlg::HomePageDlg(QWidget *parent)
@@ -18,7 +19,12 @@ HomePageDlg::HomePageDlg(QWidget *parent)
     //嵌入到主窗口
     setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);
     hide();
+
+    settingWidget = new HomePageSetingWidget(this);
+    settingWidget->setWindowFlags(Qt::Window);  // 设置为独立窗口
+
     initSettingUrl();
+    initButton();
 }
 
 HomePageDlg::~HomePageDlg()
@@ -54,6 +60,31 @@ void HomePageDlg::initSettingUrl()
     _urlMap.insert({"L链",_lLinkIp});
     _urlMap.insert({"宽带自组网",_adHocNetwork});
     _urlMap.insert({"机载卫通",_satelliteComm});
+
+    settingWidget->setUrl(_urlMap);
+}
+/**
+ * @brief HomePageDlg::initButton 初始化按钮位置
+ */
+void HomePageDlg::initButton()
+{
+    QIcon icon;
+    icon.addFile(":/res/settings.png");
+    QPushButton* btn = new QPushButton;
+    btn->setParent(this);
+    btn->setMinimumSize(40,40);
+    btn->setMaximumSize(40,40);
+    btn->setIconSize(QSize(30,30));
+    btn->setIcon(icon);
+
+    //点击主页按钮弹出设置页面
+    connect(btn,&QPushButton::clicked,this,[&](){
+        //qDebug() << "homepagedlg上的设置按钮点击了";
+        if(settingWidget->isVisible())
+            settingWidget->close();
+        else
+            settingWidget->show();
+    });
 }
 
 void HomePageDlg::on_pushButton_clicked()
diff --git a/homepagedlg.h b/Src/HomePage/homepagedlg.h
similarity index 85%
rename from homepagedlg.h
rename to Src/HomePage/homepagedlg.h
index c49ea6e..4e3ec79 100644
--- a/homepagedlg.h
+++ b/Src/HomePage/homepagedlg.h
@@ -3,6 +3,8 @@
 
 #include <QWidget>
 #include <unordered_map>
+#include "Src/HomePage/homepagesetingwidget.h"
+
 namespace Ui {
 class HomePageDlg;
 }
@@ -15,11 +17,13 @@ public:
     explicit HomePageDlg(QWidget *parent = nullptr);
     ~HomePageDlg();
     QPixmap m_pixmap;
+    HomePageSetingWidget* settingWidget;
 
     void getUrl(std::unordered_map<QString,QString>& urlMap);
 private:
     Ui::HomePageDlg *ui;
     void initSettingUrl();
+    void initButton();
 
     QString _lLinkIp;
     QString _adHocNetwork;
diff --git a/homepagedlg.ui b/Src/HomePage/homepagedlg.ui
similarity index 100%
rename from homepagedlg.ui
rename to Src/HomePage/homepagedlg.ui
diff --git a/Src/HomePage/homepagesetingwidget.cpp b/Src/HomePage/homepagesetingwidget.cpp
new file mode 100644
index 0000000..d5dc648
--- /dev/null
+++ b/Src/HomePage/homepagesetingwidget.cpp
@@ -0,0 +1,83 @@
+#include "homepagesetingwidget.h"
+#include "ui_homepagesetingwidget.h"
+
+HomePageSetingWidget::HomePageSetingWidget(QWidget *parent)
+    : QWidget(parent)
+    , ui(new Ui::HomePageSetingWidget)
+    , _lLinkIp(""), _adHocNetwork(""), _satelliteComm("")
+{
+    ui->setupUi(this);
+    urlFile = QCoreApplication::applicationDirPath()+"/config.ini";
+    _configIni = std::make_unique<QSettings>(urlFile,QSettings::IniFormat);
+}
+
+HomePageSetingWidget::~HomePageSetingWidget()
+{
+    delete ui;
+}
+
+/**
+ * @brief HomePageSetingWidget::setUrl 初始话后从.ini文件中读取的数据显示
+ * @param urlMap
+ */
+void HomePageSetingWidget::setUrl(std::unordered_map<QString,QString>& urlMap)
+{
+    _lLinkIp = urlMap["L链"];
+    _adHocNetwork = urlMap["宽带自组网"];
+    _satelliteComm = urlMap["机载卫通"];
+    initEdit();
+}
+
+/**
+ * @brief HomePageSetingWidget::initEdit 初始化Edit控件参数
+ */
+void HomePageSetingWidget::initEdit()
+{
+    ui->lLinkLineEdit->setText(_lLinkIp);
+    ui->netLineEdit->setText(_adHocNetwork);
+    ui->sateliteLineEdit->setText(_satelliteComm);
+}
+
+void HomePageSetingWidget::on_lLinkButton_clicked()
+{
+    //写参数到配置文件
+    _lLinkIp = ui->lLinkLineEdit->text();
+    _configIni->setValue("L链/IP", _lLinkIp);
+    emit sendOnlyUrl(L_Link,_lLinkIp);
+}
+
+void HomePageSetingWidget::on_netButton_clicked()
+{
+    //写参数到配置文件
+    _adHocNetwork = ui->netLineEdit->text();
+    _configIni->setValue("宽带自组网/IP", _adHocNetwork);
+    emit sendOnlyUrl(Adhoc_Network,_adHocNetwork);
+}
+
+
+void HomePageSetingWidget::on_sateliteButton_clicked()
+{
+    //写参数到配置文件
+    _satelliteComm = ui->sateliteLineEdit->text();
+    _configIni->setValue("机载卫通/IP", _satelliteComm);
+    emit sendOnlyUrl(Satelite_Comm,_satelliteComm);
+}
+
+
+void HomePageSetingWidget::on_oneKeyButton_clicked()
+{
+    //写参数到配置文件
+    _lLinkIp = ui->lLinkLineEdit->text();
+    _configIni->setValue("L链/IP", _lLinkIp);
+    _adHocNetwork = ui->netLineEdit->text();
+    _configIni->setValue("宽带自组网/IP", _adHocNetwork);
+    _satelliteComm = ui->sateliteLineEdit->text();
+    _configIni->setValue("机载卫通/IP", _satelliteComm);
+
+    std::unordered_map<QString,QString> urlMap;
+    urlMap.insert({"L链",_lLinkIp});
+    urlMap.insert({"宽带自组网",_adHocNetwork});
+    urlMap.insert({"机载卫通",_satelliteComm});
+    emit sendAllUrl(urlMap);
+}
+
diff --git a/Src/HomePage/homepagesetingwidget.h b/Src/HomePage/homepagesetingwidget.h
new file mode 100644
index 0000000..c335a5a
--- /dev/null
+++ b/Src/HomePage/homepagesetingwidget.h
@@ -0,0 +1,47 @@
+#ifndef HOMEPAGESETINGWIDGET_H
+#define HOMEPAGESETINGWIDGET_H
+
+#include <QWidget>
+#include <QSettings>
+
+namespace Ui {
+class HomePageSetingWidget;
+}
+
+class HomePageSetingWidget : public QWidget
+{
+    Q_OBJECT
+
+public:
+    explicit HomePageSetingWidget(QWidget *parent = nullptr);
+    ~HomePageSetingWidget();
+private:
+    Ui::HomePageSetingWidget *ui;
+    QString _lLinkIp;           //L链
+    QString _adHocNetwork;      //自组网
+    QString _satelliteComm;     //PDT
+    std::unique_ptr<QSettings> _configIni;         //配置文件写入
+    QString urlFile;            //配置文件路径
+private:
+    void initEdit();
+public:
+    void setUrl(std::unordered_map<QString,QString>& urlMap);
+
+private slots:
+    void on_lLinkButton_clicked();
+    void on_netButton_clicked();
+    void on_sateliteButton_clicked();
+    void on_oneKeyButton_clicked();
+signals:
+    void sendOnlyUrl(unsigned char urlIndex, QString url); //发送信号给网页显示
+    void sendAllUrl(std::unordered_map<QString,QString> urlMap);
+public:
+    enum urlEnum:unsigned char
+    {
+        L_Link = 1,
+        Adhoc_Network,
+        Satelite_Comm
+    };
+};
+
+#endif // HOMEPAGESETINGWIDGET_H
diff --git a/Src/HomePage/homepagesetingwidget.ui b/Src/HomePage/homepagesetingwidget.ui
new file mode 100644
index 0000000..a678061
--- /dev/null
+++ b/Src/HomePage/homepagesetingwidget.ui
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>HomePageSetingWidget</class>
+ <widget class="QWidget" name="HomePageSetingWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>725</width>
+    <height>443</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>设置</string>
+  </property>
+  <property name="windowIcon">
+   <iconset resource="../../mainwindow.qrc">
+    <normaloff>:/res/settings.png</normaloff>:/res/settings.png</iconset>
+  </property>
+  <widget class="QFrame" name="frame_2">
+   <property name="geometry">
+    <rect>
+     <x>30</x>
+     <y>10</y>
+     <width>661</width>
+     <height>181</height>
+    </rect>
+   </property>
+   <property name="frameShape">
+    <enum>QFrame::Shape::StyledPanel</enum>
+   </property>
+   <property name="frameShadow">
+    <enum>QFrame::Shadow::Raised</enum>
+   </property>
+   <layout class="QVBoxLayout" name="verticalLayout_3">
+    <item>
+     <widget class="QFrame" name="frame">
+      <property name="frameShape">
+       <enum>QFrame::Shape::StyledPanel</enum>
+      </property>
+      <property name="frameShadow">
+       <enum>QFrame::Shadow::Raised</enum>
+      </property>
+      <layout class="QHBoxLayout" name="horizontalLayout_5">
+       <item>
+        <widget class="QGroupBox" name="lLinkGroupBox">
+         <property name="title">
+          <string>L链</string>
+         </property>
+         <layout class="QGridLayout" name="gridLayout">
+          <item row="0" column="0">
+           <widget class="QLabel" name="label">
+            <property name="text">
+             <string>IP:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1">
+           <widget class="QLineEdit" name="lLinkLineEdit"/>
+          </item>
+          <item row="4" column="1">
+           <layout class="QHBoxLayout" name="horizontalLayout_2">
+            <item>
+             <spacer name="horizontalSpacer">
+              <property name="orientation">
+               <enum>Qt::Orientation::Horizontal</enum>
+              </property>
+              <property name="sizeType">
+               <enum>QSizePolicy::Policy::Fixed</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>60</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item>
+             <widget class="QPushButton" name="lLinkButton">
+              <property name="maximumSize">
+               <size>
+                <width>100</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>设置</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="netGroupBox">
+         <property name="title">
+          <string>宽带自组网</string>
+         </property>
+         <layout class="QGridLayout" name="gridLayout_2">
+          <item row="4" column="1">
+           <layout class="QHBoxLayout" name="horizontalLayout_3">
+            <item>
+             <spacer name="horizontalSpacer_2">
+              <property name="orientation">
+               <enum>Qt::Orientation::Horizontal</enum>
+              </property>
+              <property name="sizeType">
+               <enum>QSizePolicy::Policy::Fixed</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>60</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item>
+             <widget class="QPushButton" name="netButton">
+              <property name="maximumSize">
+               <size>
+                <width>100</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>设置</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+          <item row="0" column="0">
+           <widget class="QLabel" name="label_2">
+            <property name="text">
+             <string>IP:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1">
+           <widget class="QLineEdit" name="netLineEdit"/>
+          </item>
+         </layout>
+        </widget>
+       </item>
+       <item>
+        <widget class="QGroupBox" name="netGroupBox_2">
+         <property name="title">
+          <string>卫通</string>
+         </property>
+         <layout class="QGridLayout" name="gridLayout_3">
+          <item row="0" column="0">
+           <widget class="QLabel" name="label_3">
+            <property name="text">
+             <string>IP:</string>
+            </property>
+           </widget>
+          </item>
+          <item row="0" column="1">
+           <widget class="QLineEdit" name="sateliteLineEdit"/>
+          </item>
+          <item row="4" column="1">
+           <layout class="QHBoxLayout" name="horizontalLayout_4">
+            <item>
+             <spacer name="horizontalSpacer_3">
+              <property name="orientation">
+               <enum>Qt::Orientation::Horizontal</enum>
+              </property>
+              <property name="sizeType">
+               <enum>QSizePolicy::Policy::Fixed</enum>
+              </property>
+              <property name="sizeHint" stdset="0">
+               <size>
+                <width>60</width>
+                <height>20</height>
+               </size>
+              </property>
+             </spacer>
+            </item>
+            <item>
+             <widget class="QPushButton" name="sateliteButton">
+              <property name="maximumSize">
+               <size>
+                <width>100</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>设置</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+         </layout>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </item>
+    <item>
+     <layout class="QHBoxLayout" name="horizontalLayout_6">
+      <item>
+       <spacer name="horizontalSpacer_4">
+        <property name="orientation">
+         <enum>Qt::Orientation::Horizontal</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Policy::Fixed</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>450</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+      <item>
+       <widget class="QPushButton" name="oneKeyButton">
+        <property name="sizePolicy">
+         <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+          <horstretch>0</horstretch>
+          <verstretch>0</verstretch>
+         </sizepolicy>
+        </property>
+        <property name="minimumSize">
+         <size>
+          <width>160</width>
+          <height>30</height>
+         </size>
+        </property>
+        <property name="text">
+         <string>一键设置</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <spacer name="horizontalSpacer_5">
+        <property name="orientation">
+         <enum>Qt::Orientation::Horizontal</enum>
+        </property>
+        <property name="sizeType">
+         <enum>QSizePolicy::Policy::Fixed</enum>
+        </property>
+        <property name="sizeHint" stdset="0">
+         <size>
+          <width>15</width>
+          <height>20</height>
+         </size>
+        </property>
+       </spacer>
+      </item>
+     </layout>
+    </item>
+   </layout>
+  </widget>
+ </widget>
+ <resources>
+  <include location="../../mainwindow.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/mainwindow.cpp b/mainwindow.cpp
index bfdce92..955bf7c 100644
--- a/mainwindow.cpp
+++ b/mainwindow.cpp
@@ -8,7 +8,7 @@
 #include <QFile>
 #include <qpushbutton.h>
 #include <QAction>
-
+#include "Src/HomePage/homepagesetingwidget.h"
 
 MainWindow::MainWindow(QWidget *parent)
     : QMainWindow(parent)
@@ -92,7 +92,6 @@ void MainWindow::initWindow()
     });
 
     //使用类中的get方法获取配置文件中的IP
-
     m_HomePagedlg->getUrl(m_urlMap);
 
     qDebug() << "=============设备配置================";
@@ -116,6 +115,29 @@ void MainWindow::initWindow()
     satelliteCommWeb->setPage(new CustomWebEnginePage());
     satelliteCommWeb->load(QUrl(m_urlMap["机载卫通"]));
 
+    //接收主页面设置窗口的url数据传递并设置
+    connect(m_HomePagedlg->settingWidget, &HomePageSetingWidget::sendOnlyUrl, this, [&](unsigned char urlIndex, QString url){
+        switch (urlIndex) {
+        case HomePageSetingWidget::L_Link:
+            lLinkWeb->load(QUrl(url));
+            break;
+        case HomePageSetingWidget::Adhoc_Network:
+            lLinkWeb->load(QUrl(url));
+            break;
+        case HomePageSetingWidget::Satelite_Comm:
+            lLinkWeb->load(QUrl(url));
+            break;
+        default:
+            break;
+        }
+    });
+
+    //接收主页面设置窗口的url数据传递并设置 一键设置
+    connect(m_HomePagedlg->settingWidget, &HomePageSetingWidget::sendAllUrl, this, [&](std::unordered_map<QString,QString> urlMap){
+         lLinkWeb->load(QUrl(urlMap["L链"]));
+         adHocNetworkWeb->load(QUrl(urlMap["宽带自组网"]));
+         satelliteCommWeb->load(QUrl(urlMap["机载卫通"]));
+    });
     // 设置栈窗口,多页面共享同一窗口
     ui->stackedWidget->addWidget(mWeb);
     ui->stackedWidget->addWidget(lLinkWeb);
diff --git a/mainwindow.h b/mainwindow.h
index 720e795..d4e85cb 100644
--- a/mainwindow.h
+++ b/mainwindow.h
@@ -3,7 +3,7 @@
 
 #include <QMainWindow>
 #include "Src/GDDC/gddcdlg.h"
-#include "homepagedlg.h"
+#include "Src/HomePage/homepagedlg.h"
 #include "rescueloadwidget.h"
 #include <QPushButton>
 #include <QLabel>