Răsfoiți Sursa

add default canvas display

xuqiang 4 luni în urmă
părinte
comite
3c034a3743
3 a modificat fișierele cu 49 adăugiri și 2 ștergeri
  1. 3 0
      include/canvas.h
  2. 15 0
      src/canvas.cpp
  3. 31 2
      src/mainwindow.cpp

+ 3 - 0
include/canvas.h

@@ -20,6 +20,8 @@ public:
     QList<QWidget *> widgetList() const;
     QList<QStringList> parameterList() const;
 
+    bool isDefault() const;
+
     void clear();
 
 protected:
@@ -29,6 +31,7 @@ private:
     QColor m_backgroundColor;
     QList<QWidget *> m_widgetList;
     QList<QStringList> m_parameterList;
+    bool m_isDefault;
 
 };
 

+ 15 - 0
src/canvas.cpp

@@ -8,6 +8,7 @@
 Canvas::Canvas(const xmlNodePtr canvasNodePtr, QWidget *parent)
     : QWidget{parent}
     , m_backgroundColor(Qt::black)
+    , m_isDefault(false)
 {
     load(canvasNodePtr);
 }
@@ -46,6 +47,7 @@ bool Canvas::load(const xmlNodePtr canvasNodePtr)
 
         int canvasWidth = 1280;
         int canvasHeight = 720;
+        int isDefault;
 
         value = xmlGetProp(canvasNodePtr, BAD_CAST "backgroundColor");
         if(value) {
@@ -66,6 +68,14 @@ bool Canvas::load(const xmlNodePtr canvasNodePtr)
             xmlFree(value);
         }
 
+        value = xmlGetProp(canvasNodePtr, BAD_CAST "default");
+        if (value) {
+            isDefault = QString((char *)value).toInt();
+            if(isDefault)
+                m_isDefault = true;
+            xmlFree(value);
+        }
+
         resize(canvasWidth, canvasHeight);
 
         xmlNodePtr child = canvasNodePtr->children;
@@ -214,6 +224,11 @@ QList<QStringList> Canvas::parameterList() const
     return m_parameterList;
 }
 
+bool Canvas::isDefault() const
+{
+    return m_isDefault;
+}
+
 void Canvas::clear()
 {
     qDeleteAll(m_widgetList);

+ 31 - 2
src/mainwindow.cpp

@@ -7,6 +7,7 @@
 #include "logger.h"
 #include "utils.h"
 #include "abstractwidget.h"
+#include <QSettings>
 
 MainWindow::MainWindow(QWidget *parent)
     : QMainWindow(parent)
@@ -50,7 +51,18 @@ void MainWindow::init_ui()
         m_pStackedWidget->insertWidget(i, pCanvas);
     }
 
-    m_pStackedWidget->setCurrentIndex(0);
+    int index = 0;
+    QSettings settings("settings.ini", QSettings::IniFormat);
+    settings.setIniCodec("UTF-8");
+    settings.beginGroup("CANVAS");
+    if(settings.contains("INDEX")) {
+        index = settings.value("INDEX").toInt();
+        LOG_INFO("find saved canvas index, set index {}", index);
+    } else {
+        LOG_INFO("not find saved canvas index, set index 0");
+    }
+    settings.endGroup();
+    m_pStackedWidget->setCurrentIndex(index);
 }
 
 void MainWindow::onUpdateScreen(const QJsonObject &obj)
@@ -139,6 +151,12 @@ void MainWindow::onPageSwitdh(int state)
     }
 
     m_pStackedWidget->setCurrentIndex(nextIndex);
+
+    QSettings settings("settings.ini", QSettings::IniFormat);
+    settings.setIniCodec("UTF-8");
+    settings.beginGroup("CANVAS");
+    settings.setValue("INDEX", nextIndex);
+    settings.endGroup();
 }
 
 void MainWindow::onConfigureUpdate(const QString &filename)
@@ -195,14 +213,25 @@ void MainWindow::onConfigureUpdate(const QString &filename)
 
     LOG_INFO("start reload monitor configure");
     int canvasCount = projectMgr.canvasCount();
+    int index = -1;
     for(int i = 0; i < canvasCount; i++)
     {
         LOG_DEBUG("----------------canvas {}----------------", i);
         Canvas *pCanvas = new Canvas(projectMgr.canvas(i), m_pStackedWidget);
         pCanvas->resize(1280, 720);
+        if(pCanvas->isDefault()) {
+            index = i;
+        }
         m_pStackedWidget->insertWidget(i, pCanvas);
     }
     LOG_INFO("reload monitor configure complete");
 
-    m_pStackedWidget->setCurrentIndex(0);
+    if(index > 0 && index < canvasCount) {
+        m_pStackedWidget->setCurrentIndex(index);
+        LOG_INFO("update: default canvas index is {}", index);
+    }
+    else {
+        m_pStackedWidget->setCurrentIndex(0);
+        LOG_INFO("update: not set default canvas index, set index 0");
+    }
 }