Преглед на файлове

reload configure from update

xuqiang преди 4 месеца
родител
ревизия
de2f8d6057
променени са 8 файла, в които са добавени 86 реда и са изтрити 2 реда
  1. 1 0
      include/appcontext.h
  2. 2 0
      include/canvas.h
  3. 1 1
      include/fileserver.h
  4. 1 0
      include/mainwindow.h
  5. 1 1
      scripts/deploy.sh
  6. 4 0
      src/appcontext.cpp
  7. 7 0
      src/canvas.cpp
  8. 69 0
      src/mainwindow.cpp

+ 1 - 0
include/appcontext.h

@@ -21,6 +21,7 @@ public:
     ProjectManager &projectManager();
     Network &network();
     SerialPort &serialPort();
+    FileServer &fileserver();
 
 private:
     PluginManager m_pluginMgr;

+ 2 - 0
include/canvas.h

@@ -20,6 +20,8 @@ public:
     QList<QWidget *> widgetList() const;
     QList<QStringList> parameterList() const;
 
+    void clear();
+
 protected:
     void paintEvent(QPaintEvent *event) override;
 

+ 1 - 1
include/fileserver.h

@@ -27,7 +27,7 @@ private:
     QThread m_thread;
 
 signals:
-    void monitorConfigureUpdate();
+    void monitorConfigureUpdate(const QString &filename);
 
 private slots:
     void run_hhttp_sever();

+ 1 - 0
include/mainwindow.h

@@ -23,6 +23,7 @@ private:
 public slots:
     void onUpdateScreen(const QJsonObject &obj);
     void onPageSwitdh(int state);
+    void onConfigureUpdate(const QString &filename);
     
 };
 

+ 1 - 1
scripts/deploy.sh

@@ -1,3 +1,3 @@
 #!/bin/bash
 
-scp -r  build/release/monitor forlinx@192.168.1.101:/home/forlinx
+scp -r  build/release/monitor forlinx@192.168.1.15:/home/forlinx

+ 4 - 0
src/appcontext.cpp

@@ -39,3 +39,7 @@ SerialPort &AppContext::serialPort()
     return m_serialPort;
 }
 
+FileServer &AppContext::fileserver()
+{
+    return m_fileServer;
+}

+ 7 - 0
src/canvas.cpp

@@ -214,6 +214,13 @@ QList<QStringList> Canvas::parameterList() const
     return m_parameterList;
 }
 
+void Canvas::clear()
+{
+    qDeleteAll(m_widgetList);
+    m_widgetList.clear();
+    m_parameterList.clear();
+}
+
 void Canvas::paintEvent(QPaintEvent *event)
 {
     // 绘制背景颜色

+ 69 - 0
src/mainwindow.cpp

@@ -20,6 +20,9 @@ MainWindow::MainWindow(QWidget *parent)
 
     SerialPort &serialPort = AppContext::instance().serialPort();
     connect(&serialPort, &SerialPort::pageSwitch, this, &MainWindow::onPageSwitdh);
+
+    FileServer &fileServer = AppContext::instance().fileserver();
+    connect(&fileServer, &FileServer::monitorConfigureUpdate, this, &MainWindow::onConfigureUpdate);
 }
 
 MainWindow::~MainWindow()
@@ -137,3 +140,69 @@ void MainWindow::onPageSwitdh(int state)
 
     m_pStackedWidget->setCurrentIndex(nextIndex);
 }
+
+void MainWindow::onConfigureUpdate(const QString &filename)
+{
+    ProjectManager &projectMgr = AppContext::instance().projectManager();
+    projectMgr.closeProject();
+
+    QString srcFileName = QString("%1/%2").arg(QDir::currentPath(), "update/monitor.xml");
+    QString dstFileName = QString("%1/%2").arg(QDir::currentPath(), "conf/monitor.xml");
+    bool ret;
+    // bool result = projectMgr.openProject(fileName);
+
+    LOG_INFO("begin delete current monitor configure...");
+    QFile dstFile = QFile(dstFileName);
+    if(dstFile.exists())
+    {
+        ret = dstFile.remove();
+        if(ret) {
+            LOG_INFO("remove current monitor configure successfully");
+        } else {
+            LOG_ERROR("remove current monitor configure failed");
+            return;
+        }
+    }
+
+    LOG_INFO("begin copy new monitor configure...");
+    QFile srcFile = QFile(srcFileName);
+    if(srcFile.exists())
+    {
+        ret = QFile::copy(srcFileName, dstFileName);
+        if(ret) {
+            LOG_INFO("update monitor configure successfully");
+        } else {
+            LOG_ERROR("update monitor configure failed");
+            return;
+        }
+    }
+    else
+    {
+        LOG_ERROR("update monitor configure file not exist");
+        return;
+    }
+
+    bool result = projectMgr.openProject(dstFileName);
+    if(result)
+    {
+        LOG_INFO("open monitor config xml success: {}, canvas count: {}", dstFileName.toUtf8().data(), projectMgr.canvasCount());
+    }
+    else
+    {
+        LOG_ERROR("open monitor config xml failed: {}", dstFileName.toUtf8().data());
+        return;
+    }
+
+    LOG_INFO("start reload monitor configure");
+    int canvasCount = projectMgr.canvasCount();
+    for(int i = 0; i < canvasCount; i++)
+    {
+        LOG_DEBUG("----------------canvas {}----------------", i);
+        Canvas *pCanvas = new Canvas(projectMgr.canvas(i), m_pStackedWidget);
+        pCanvas->resize(1280, 720);
+        m_pStackedWidget->insertWidget(i, pCanvas);
+    }
+    LOG_INFO("reload monitor configure complete");
+
+    m_pStackedWidget->setCurrentIndex(0);
+}