|
@@ -1,9 +1,12 @@
|
|
|
#include "mainwindow.h"
|
|
#include "mainwindow.h"
|
|
|
#include <QVBoxLayout>
|
|
#include <QVBoxLayout>
|
|
|
#include <QDir>
|
|
#include <QDir>
|
|
|
|
|
+#include <QElapsedTimer>
|
|
|
#include "appcontext.h"
|
|
#include "appcontext.h"
|
|
|
#include "canvas.h"
|
|
#include "canvas.h"
|
|
|
#include "logger.h"
|
|
#include "logger.h"
|
|
|
|
|
+#include "utils.h"
|
|
|
|
|
+#include "abstractwidget.h"
|
|
|
|
|
|
|
|
MainWindow::MainWindow(QWidget *parent)
|
|
MainWindow::MainWindow(QWidget *parent)
|
|
|
: QMainWindow(parent)
|
|
: QMainWindow(parent)
|
|
@@ -11,6 +14,11 @@ MainWindow::MainWindow(QWidget *parent)
|
|
|
{
|
|
{
|
|
|
setWindowFlags(Qt::FramelessWindowHint | Qt::Window);
|
|
setWindowFlags(Qt::FramelessWindowHint | Qt::Window);
|
|
|
init_ui();
|
|
init_ui();
|
|
|
|
|
+
|
|
|
|
|
+ Network &network = AppContext::instance().network();
|
|
|
|
|
+ connect(&network, &Network::updateScreen, this, &MainWindow::onUpdateScreen);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
MainWindow::~MainWindow()
|
|
MainWindow::~MainWindow()
|
|
@@ -39,4 +47,48 @@ void MainWindow::init_ui()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
m_pStackedWidget->setCurrentIndex(0);
|
|
m_pStackedWidget->setCurrentIndex(0);
|
|
|
-}
|
|
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+void MainWindow::onUpdateScreen(const QJsonObject &obj)
|
|
|
|
|
+{
|
|
|
|
|
+ QElapsedTimer timer;
|
|
|
|
|
+ timer.start(); // 开始计时
|
|
|
|
|
+
|
|
|
|
|
+ Canvas *pCanvas = static_cast<Canvas *>(m_pStackedWidget->currentWidget());
|
|
|
|
|
+ if(!pCanvas) {
|
|
|
|
|
+ LOG_ERROR("error current canvas");
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ QList<QWidget *> widgets = pCanvas->widgetList();
|
|
|
|
|
+ QList<QStringList> parameters = pCanvas->parameterList();
|
|
|
|
|
+
|
|
|
|
|
+ if(widgets.count() != parameters.count()) {
|
|
|
|
|
+ LOG_ERROR("error widget count and parameters count");
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ int count = widgets.count();
|
|
|
|
|
+
|
|
|
|
|
+ for(int i = 0; i < count; i++)
|
|
|
|
|
+ {
|
|
|
|
|
+ AbstractWidget *pAbstractWidget = static_cast<AbstractWidget *>(widgets[i]);
|
|
|
|
|
+ QStringList widgetParameters;
|
|
|
|
|
+ QMetaObject::invokeMethod(pAbstractWidget, "parameters",
|
|
|
|
|
+ Qt::DirectConnection, Q_RETURN_ARG(QStringList, widgetParameters));
|
|
|
|
|
+
|
|
|
|
|
+ for(auto parameter : widgetParameters)
|
|
|
|
|
+ {
|
|
|
|
|
+ QMetaObject::invokeMethod(
|
|
|
|
|
+ pAbstractWidget,
|
|
|
|
|
+ "setValue",
|
|
|
|
|
+ Qt::DirectConnection,
|
|
|
|
|
+ Q_ARG(QString, parameter),
|
|
|
|
|
+ Q_ARG(QVariant, obj[parameter].toVariant()),
|
|
|
|
|
+ Q_ARG(QString, Utils::timestamp()));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ qint64 duration = timer.elapsed(); // 获取经过的毫秒数
|
|
|
|
|
+ LOG_DEBUG("update screen duration: {}ms", duration);
|
|
|
|
|
+}
|