From 905461369c994f0b4ad0ef4c3e64ffcffc5de99e Mon Sep 17 00:00:00 2001 From: vshevchyk Date: Fri, 19 Jul 2019 14:59:16 +0300 Subject: [PATCH] Refactoring and fitting for dynamic load of qml widgets --- QScadaBoard/qscadaboard.cpp | 24 ++++++++++------------ QScadaBoard/qscadaboard.h | 2 +- QScadaBoard/qscadaboardcontroller.cpp | 11 ---------- QScadaBoard/qscadaboardmanager.h | 2 +- QScadaEntity/qscadaconnecteddeviceinfo.cpp | 3 --- QScadaObject/qscadaobjectinfo.cpp | 12 ----------- QScadaObject/qscadaobjectinfo.h | 4 ---- QScadaObject/qscadaobjectinfodialog.cpp | 2 -- QScadaObject/qscadaobjectinfodialog.ui | 11 ++-------- qscadaconfig.h | 11 +++++++--- 10 files changed, 23 insertions(+), 59 deletions(-) diff --git a/QScadaBoard/qscadaboard.cpp b/QScadaBoard/qscadaboard.cpp index 382a6d4..64ad418 100644 --- a/QScadaBoard/qscadaboard.cpp +++ b/QScadaBoard/qscadaboard.cpp @@ -14,7 +14,7 @@ QScadaBoard::QScadaBoard(QWidget *parent) : mEditable{false}, mShowGrid{true}, mGrid{10}, - mPixmap{nullptr} + mGridPixmap{nullptr} { setPalette(QPalette(Qt::transparent)); setAutoFillBackground(true); @@ -82,7 +82,6 @@ void QScadaBoard::createNewObject(int id) { QScadaObjectInfo *lInfo = new QScadaObjectInfo(); lInfo->setId(id); - lInfo->setShowMarkers(true); lInfo->setShowBackground(true); lInfo->setShowBackgroundImage(false); lInfo->setIsDynamic(true); @@ -95,7 +94,6 @@ void QScadaBoard::createQMLObject(int id, QString path) { QScadaObjectInfo *lInfo = new QScadaObjectInfo(); lInfo->setId(id); - lInfo->setShowMarkers(true); lInfo->setShowBackground(true); lInfo->setShowBackgroundImage(false); lInfo->setIsDynamic(true); @@ -128,19 +126,19 @@ void QScadaBoard::mousePressEvent(QMouseEvent *event) void QScadaBoard::paintEvent(QPaintEvent *e) { - if (mPixmap == nullptr) { + if (mGridPixmap == nullptr) { resetGridPixmap(); } - if ((mPixmap->width() != this->width()) - || (mPixmap->height() != this->height())) { - delete mPixmap; + if ((mGridPixmap->width() != this->width()) + || (mGridPixmap->height() != this->height())) { + delete mGridPixmap; resetGridPixmap(); } if (mUpdateGridPixmap) { - QPainter lPainter(mPixmap); - mPixmap->fill(Qt::white); + QPainter lPainter(mGridPixmap); + mGridPixmap->fill(Qt::white); QPen lLinepen(Qt::darkGray); lLinepen.setCapStyle(Qt::RoundCap); lLinepen.setWidth(1); @@ -150,8 +148,8 @@ void QScadaBoard::paintEvent(QPaintEvent *e) int lX = this->width(); int lY = this->height(); - mPixmap->scaledToWidth(lX); - mPixmap->scaledToHeight(lY); + mGridPixmap->scaledToWidth(lX); + mGridPixmap->scaledToHeight(lY); for (int i=0; i<=lX; i++) { for (int j=1; j<=lY; j++) { @@ -163,7 +161,7 @@ void QScadaBoard::paintEvent(QPaintEvent *e) } QPainter lPainter(this); - lPainter.drawPixmap(0, 0, mPixmap->width(), mPixmap->height(), *mPixmap); + lPainter.drawPixmap(0, 0, mGridPixmap->width(), mGridPixmap->height(), *mGridPixmap); QWidget::paintEvent(e); } @@ -210,7 +208,7 @@ QList QScadaBoard::getSeletedObjects() void QScadaBoard::resetGridPixmap() { - mPixmap = new QPixmap(this->width(), this->height()); + mGridPixmap = new QPixmap(this->width(), this->height()); mUpdateGridPixmap = true; } diff --git a/QScadaBoard/qscadaboard.h b/QScadaBoard/qscadaboard.h index 1a04273..600cbb7 100644 --- a/QScadaBoard/qscadaboard.h +++ b/QScadaBoard/qscadaboard.h @@ -76,7 +76,7 @@ private: bool mEditable; //default value false bool mShowGrid; //default value true int mGrid; //default value 10 - QPixmap *mPixmap; + QPixmap *mGridPixmap; bool mUpdateGridPixmap; }; diff --git a/QScadaBoard/qscadaboardcontroller.cpp b/QScadaBoard/qscadaboardcontroller.cpp index c0efed7..9d92758 100644 --- a/QScadaBoard/qscadaboardcontroller.cpp +++ b/QScadaBoard/qscadaboardcontroller.cpp @@ -35,8 +35,6 @@ QScadaBoardController::~QScadaBoardController() void QScadaBoardController::clearBoard(QScadaBoard* board) { - qDebug() << __FUNCTION__; - for (QScadaObject *object : *board->objects()) { board->deleteObject(object); } @@ -45,7 +43,6 @@ void QScadaBoardController::clearBoard(QScadaBoard* board) void QScadaBoardController::clearAllBoards() { - qDebug() << __FUNCTION__; for (QScadaBoard *board:mBoardManager->getBoardList()) { clearBoard(board); } @@ -53,7 +50,6 @@ void QScadaBoardController::clearAllBoards() void QScadaBoardController::initConnectedDevices(const QList list) { - qDebug() << __FUNCTION__; for (QScadaBoardInfo *boardInfo : list) { if (boardInfo != nullptr) { mBoard->setEditable(false); @@ -68,7 +64,6 @@ void QScadaBoardController::initConnectedDevices(const QList void QScadaBoardController::initBoardForDeviceIp(QString ip) { - qDebug() << __FUNCTION__; if (mBoard != nullptr && mBoard->isVisible()) { mBoard->hide(); @@ -152,8 +147,6 @@ void QScadaBoardController::updateObjectInfoDialog(QScadaObject *object) void QScadaBoardController::deleteObject(QScadaObjectInfo *info) { - qDebug() << __FUNCTION__; - if (info != nullptr) { mBoard->deleteObjectWithId(info->id()); } @@ -161,8 +154,6 @@ void QScadaBoardController::deleteObject(QScadaObjectInfo *info) void QScadaBoardController::updateSavedObject(QScadaObjectInfo *info) { - qDebug() << __FUNCTION__; - if (info != nullptr) { mBoard->updateObjectWithId(info->id()); } @@ -175,8 +166,6 @@ void QScadaBoardController::objectDoubleClickedHandler(QScadaObject *o) void QScadaBoardController::resizeEvent(QResizeEvent*) { - qDebug() << __FUNCTION__; - if (mBoard != nullptr) { mBoard->setGeometry(QRect(0, 0, this->geometry().width(), this->geometry().height())); } diff --git a/QScadaBoard/qscadaboardmanager.h b/QScadaBoard/qscadaboardmanager.h index 5fea97d..c8594ae 100644 --- a/QScadaBoard/qscadaboardmanager.h +++ b/QScadaBoard/qscadaboardmanager.h @@ -10,7 +10,7 @@ class QScadaBoardManager : public QObject { Q_OBJECT public: - explicit QScadaBoardManager(QObject *parent = 0); + explicit QScadaBoardManager(QObject *parent = nullptr); QScadaBoard* getBoardForDeviceWithIp(QString); diff --git a/QScadaEntity/qscadaconnecteddeviceinfo.cpp b/QScadaEntity/qscadaconnecteddeviceinfo.cpp index f302475..349d22e 100644 --- a/QScadaEntity/qscadaconnecteddeviceinfo.cpp +++ b/QScadaEntity/qscadaconnecteddeviceinfo.cpp @@ -117,8 +117,6 @@ void QConnectedDeviceInfo::initFromXml(const QByteArray &xmlData) { lObjectInfo->setShowBackground((bool)lXmlStreamReader.readElementText().toInt());//new } else if (lXmlStreamReader.name() == tag_show_background_image) { lObjectInfo->setShowBackgroundImage((bool)lXmlStreamReader.readElementText().toInt());//new - } else if (lXmlStreamReader.name() == tag_show_marker) { - lObjectInfo->setShowMarkers((bool)lXmlStreamReader.readElementText().toInt());//new } else if (lXmlStreamReader.name() == tag_background_image) { lObjectInfo->setBackGroundImage(lXmlStreamReader.readElementText());//new } else if (lXmlStreamReader.name() == tag_is_dynamic) { @@ -223,7 +221,6 @@ QString QConnectedDeviceInfo::XMLFromDeviceInfo(QList deviceLi rDevices += i.formTagValue(tag_is_dynamic, QString::number(object->info()->isDynamic()), true, 4); rDevices += i.formTagValue(tag_show_background, QString::number(object->info()->showBackground()), true, 4); rDevices += i.formTagValue(tag_show_background_image, QString::number(object->info()->showBackgroundImage()), true, 4); - rDevices += i.formTagValue(tag_show_marker, QString::number(object->info()->showMarkers()), true, 4); rDevices += i.formTagValue(tag_background_image, object->info()->backGroundImage(), true, 4); rDevices += i.formTagValue(tag_geometry_x, QString::number(object->info()->geometry().x()), true, 4); rDevices += i.formTagValue(tag_geometry_y, QString::number(object->info()->geometry().y()), true, 4); diff --git a/QScadaObject/qscadaobjectinfo.cpp b/QScadaObject/qscadaobjectinfo.cpp index 80418cd..c7e5ea9 100644 --- a/QScadaObject/qscadaobjectinfo.cpp +++ b/QScadaObject/qscadaobjectinfo.cpp @@ -9,7 +9,6 @@ QScadaObjectInfo::QScadaObjectInfo(QObject *parent) : mOrderLevel{0}, mShowBackgroundImage{false}, mShowBackground{true}, - mShowMarkers{true}, mFrom{0}, mTo{100}, mUIResourcePath{""} @@ -26,7 +25,6 @@ QScadaObjectInfo::QScadaObjectInfo(QScadaObjectInfo *o): mBackGroundImage{o->backGroundImage()}, mShowBackgroundImage{o->showBackgroundImage()}, mShowBackground{o->showBackground()}, - mShowMarkers{o->showMarkers()}, mFrom{0}, mTo{100}, mUIResourcePath{""} @@ -87,16 +85,6 @@ void QScadaObjectInfo::setShowBackground(bool showBackground) mShowBackground = showBackground; } -bool QScadaObjectInfo::showMarkers() const -{ - return mShowMarkers; -} - -void QScadaObjectInfo::setShowMarkers(bool showMarkers) -{ - mShowMarkers = showMarkers; -} - QString QScadaObjectInfo::backGroundImage() const { return mBackGroundImage; diff --git a/QScadaObject/qscadaobjectinfo.h b/QScadaObject/qscadaobjectinfo.h index 6962e97..1396839 100644 --- a/QScadaObject/qscadaobjectinfo.h +++ b/QScadaObject/qscadaobjectinfo.h @@ -41,9 +41,6 @@ public: bool showBackground() const; void setShowBackground(bool showBackground); - bool showMarkers() const; - void setShowMarkers(bool showMarkers); - QString backGroundImage() const; void setBackGroundImage(const QString &backGroundImage); @@ -85,7 +82,6 @@ private: QString mBackGroundImage; bool mShowBackgroundImage; bool mShowBackground; - bool mShowMarkers; qreal mFrom; qreal mTo; diff --git a/QScadaObject/qscadaobjectinfodialog.cpp b/QScadaObject/qscadaobjectinfodialog.cpp index 53e4f49..3033e80 100644 --- a/QScadaObject/qscadaobjectinfodialog.cpp +++ b/QScadaObject/qscadaobjectinfodialog.cpp @@ -32,7 +32,6 @@ void QScadaObjectInfoDialog::updateWithObjectInfo(QScadaObjectInfo *info) ui->checkBoxDynamic->setChecked(info->isDynamic()); ui->spinBoxId->setValue(info->id()); ui->checkBoxShowBackground->setChecked(info->showBackground()); - ui->checkBoxShowMarkers->setChecked(info->showMarkers()); ui->checkBoxShowBackGroundImage->setChecked(mLatestObject->showBackgroundImage()); mMarkerImage = mLatestObject->backGroundImage(); @@ -75,7 +74,6 @@ void QScadaObjectInfoDialog::on_pushButton_2_pressed() mLatestObject->setGeometry(QRect(lX, lY, lWidth, lHeight)); mLatestObject->setShowBackground(ui->checkBoxShowBackground->isChecked()); - mLatestObject->setShowMarkers(ui->checkBoxShowMarkers->isChecked()); mLatestObject->setShowBackgroundImage(ui->checkBoxShowBackGroundImage->isChecked()); //axies diff --git a/QScadaObject/qscadaobjectinfodialog.ui b/QScadaObject/qscadaobjectinfodialog.ui index 46e7bb9..510f3bc 100644 --- a/QScadaObject/qscadaobjectinfodialog.ui +++ b/QScadaObject/qscadaobjectinfodialog.ui @@ -30,8 +30,8 @@ 0 0 - 360 - 727 + 368 + 658 @@ -81,13 +81,6 @@ - - - - Show Markers - - - diff --git a/qscadaconfig.h b/qscadaconfig.h index 4d9f7e7..8338261 100644 --- a/qscadaconfig.h +++ b/qscadaconfig.h @@ -13,6 +13,8 @@ struct QMLInfo { QString groupPath = ""; }; +Q_DECLARE_METATYPE(QMLInfo) + struct QMLWidgetsConfig { QMLInfo info; bool isValid = false; @@ -21,8 +23,8 @@ struct QMLWidgetsConfig { return mQMLWidgets; } - QMLWidgetsConfig(){} - QMLWidgetsConfig(QString path){ + QMLWidgetsConfig() {} + QMLWidgetsConfig(QString path) { if (!path.isEmpty()) { QDir directory(path); @@ -33,6 +35,7 @@ struct QMLWidgetsConfig { if (lQMLList.count() > 0) { mQMLWidgets = lQMLList; info.groupPath = path; + isValid = true; QString lTmpTitle = path.split('/').last(); //let secure from having / at end or not having @@ -49,6 +52,8 @@ private: QStringList mQMLWidgets; }; +Q_DECLARE_METATYPE(QMLWidgetsConfig) + class QMLConfig { private: @@ -70,7 +75,7 @@ class QMLConfig } void appendQMLPath(QString path) { - QMLWidgetsConfig lConf = QMLWidgetsConfig(path); + QMLWidgetsConfig lConf(path); if (lConf.isValid) { //check if QML group is unique.