mirror of
https://github.com/IndeemaSoftware/QSimpleScada.git
synced 2026-10-16 21:01:05 +08:00
Implemented dynamic QML widget update for any UI
This commit is contained in:
+13
-17
@@ -2,7 +2,6 @@
|
||||
#include "qscadaboardinfo.h"
|
||||
#include "../QScadaObject/qscadaobjectinfo.h"
|
||||
#include "../QScadaObject/qscadaobjectqml.h"
|
||||
#include "../QScadaWidgets/qledindicator.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include <QPainter>
|
||||
@@ -53,16 +52,8 @@ void QScadaBoard::initBoard(QScadaBoardInfo *boardInfo)
|
||||
|
||||
QScadaObject *QScadaBoard::initNewObject(QScadaObjectInfo *info)
|
||||
{
|
||||
QScadaObject *rObject;
|
||||
QScadaObject *rObject = new QScadaObjectQML(info, this);
|
||||
|
||||
switch(info->type()){
|
||||
case QScadaObjectTypeWidget:
|
||||
rObject = new QLedIndicator(info, this);
|
||||
break;
|
||||
case QScadaObjectTypeQML:
|
||||
rObject = new QScadaObjectQML(info, this);
|
||||
break;
|
||||
}
|
||||
rObject->setIsEditable(mEditable);
|
||||
connect(rObject, SIGNAL(objectDoubleClicked(QScadaObject*)), this , SIGNAL(objectDoubleClicked(QScadaObject*)));
|
||||
connect(rObject, SIGNAL(objectSelected(int)), this , SLOT(newObjectSelected(int)));
|
||||
@@ -223,7 +214,6 @@ void QScadaBoard::resetGridPixmap()
|
||||
mUpdateGridPixmap = true;
|
||||
}
|
||||
|
||||
#include <QDebug>
|
||||
void QScadaBoard::orderObject(QScadaObject *o)
|
||||
{
|
||||
bool lIsNew = false;
|
||||
@@ -299,11 +289,21 @@ void QScadaBoard::updateObjectWithId(int id)
|
||||
}
|
||||
}
|
||||
|
||||
void QScadaBoard::updateStatusWithId(int id, QScadaObjectStatus status)
|
||||
void QScadaBoard::updateValue(int id, QVariant value)
|
||||
{
|
||||
for (QScadaObject *object : *mObjects) {
|
||||
if (id == object->info()->id()) {
|
||||
object->setStatus(status);
|
||||
object->updateValue(value);
|
||||
object->update();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void QScadaBoard::setPropertyWithId(int id, QString property, QVariant value)
|
||||
{
|
||||
for (QScadaObject *object : *mObjects) {
|
||||
if (id == object->info()->id()) {
|
||||
object->setProperty(property.toLocal8Bit().data(), value);
|
||||
object->update();
|
||||
}
|
||||
}
|
||||
@@ -311,13 +311,11 @@ void QScadaBoard::updateStatusWithId(int id, QScadaObjectStatus status)
|
||||
|
||||
bool QScadaBoard::showGrid() const
|
||||
{
|
||||
qDebug() << __FUNCTION__;
|
||||
return mShowGrid;
|
||||
}
|
||||
|
||||
void QScadaBoard::setShowGrid(bool showGrid)
|
||||
{
|
||||
qDebug() << __FUNCTION__;
|
||||
mShowGrid = showGrid;
|
||||
|
||||
repaint();
|
||||
@@ -325,13 +323,11 @@ void QScadaBoard::setShowGrid(bool showGrid)
|
||||
|
||||
bool QScadaBoard::editable() const
|
||||
{
|
||||
qDebug() << __FUNCTION__;
|
||||
return mEditable;
|
||||
}
|
||||
|
||||
void QScadaBoard::setEditable(bool editable)
|
||||
{
|
||||
qDebug() << __FUNCTION__;
|
||||
mEditable = editable;
|
||||
|
||||
for (QScadaObject *object : *mObjects) {
|
||||
|
||||
@@ -39,7 +39,9 @@ public:
|
||||
void deleteObjectWithId(int);
|
||||
void deleteObject(QScadaObject*);
|
||||
void updateObjectWithId(int);
|
||||
void updateStatusWithId(int, QScadaObjectStatus);
|
||||
|
||||
void updateValue(int id, QVariant value);
|
||||
void setPropertyWithId(int id, QString property, QVariant value);
|
||||
|
||||
QList<QScadaObject *> *objects() const;
|
||||
|
||||
|
||||
@@ -168,17 +168,6 @@ void QScadaBoardController::updateSavedObject(QScadaObjectInfo *info)
|
||||
}
|
||||
}
|
||||
|
||||
void QScadaBoardController::updateStatus()
|
||||
{
|
||||
qDebug() << __FUNCTION__;
|
||||
|
||||
int lNumber = 3;
|
||||
int lRandomValue = qrand() % lNumber;
|
||||
mBoard->updateStatusWithId(0, (QScadaObjectStatus)lRandomValue);
|
||||
lRandomValue = qrand() % lNumber;
|
||||
mBoard->updateStatusWithId(1, (QScadaObjectStatus)lRandomValue);
|
||||
}
|
||||
|
||||
void QScadaBoardController::objectDoubleClickedHandler(QScadaObject *o)
|
||||
{
|
||||
emit objectDoubleClicked(o);
|
||||
@@ -206,26 +195,6 @@ QList<QScadaBoard *> QScadaBoardController::getBoardListForDeviceIp(QString ip)
|
||||
return rList;
|
||||
}
|
||||
|
||||
void QScadaBoardController::updateStatus(QString id, int objectId, QScadaObjectStatus status)
|
||||
{
|
||||
qDebug() << __FUNCTION__;
|
||||
|
||||
QScadaBoard *lBoard = mBoardManager->getBoardForDeviceWithIp(id);
|
||||
|
||||
for (QScadaObject *object :*lBoard->objects()) {
|
||||
if (object->info()->id() == objectId) {
|
||||
object->setStatus(status);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void QScadaBoardController::updateStatus(QStringList device, QList<int> objectId, QList<QScadaObjectStatus> status)
|
||||
{
|
||||
for (int i=0; i< device.count(); i++) {
|
||||
updateStatus(device.at(i), objectId.at(i), status.at(i));
|
||||
}
|
||||
}
|
||||
|
||||
void QScadaBoardController::setEditingMode(bool editing)
|
||||
{
|
||||
mBoard->setEditable(editing);
|
||||
|
||||
@@ -30,9 +30,6 @@ public:
|
||||
QList<QScadaBoard*> getBoardList();
|
||||
QList<QScadaBoard*> getBoardListForDeviceIp(QString);
|
||||
|
||||
void updateStatus(QString device, int objectId, QScadaObjectStatus status);
|
||||
void updateStatus(QStringList device, QList<int> objectId, QList<QScadaObjectStatus> status);
|
||||
|
||||
void setEditingMode(bool);
|
||||
|
||||
signals:
|
||||
@@ -47,7 +44,6 @@ private slots:
|
||||
void updateObjectInfoDialog(QScadaObject *);
|
||||
void deleteObject(QScadaObjectInfo *);
|
||||
void updateSavedObject(QScadaObjectInfo *);
|
||||
void updateStatus();
|
||||
void objectDoubleClickedHandler(QScadaObject*);
|
||||
|
||||
protected:
|
||||
|
||||
@@ -82,7 +82,6 @@ void QConnectedDeviceInfo::initFromXml(const QByteArray &xmlData) {
|
||||
QScadaDeviceConfig *lDeviceConfig = nullptr;
|
||||
QScadaBoardInfo *lBoard = nullptr;
|
||||
QScadaObjectInfo *lObjectInfo = nullptr;
|
||||
QScadaObjectInfoAxis lAxis;
|
||||
|
||||
while (!lXmlStreamReader.atEnd() && !lXmlStreamReader.hasError()) {
|
||||
QXmlStreamReader::TokenType tokenType = lXmlStreamReader.readNext();
|
||||
@@ -156,19 +155,6 @@ void QConnectedDeviceInfo::initFromXml(const QByteArray &xmlData) {
|
||||
lXmlStreamReader.readElementText().toInt());
|
||||
|
||||
lObjectInfo->setGeometry(lRect);
|
||||
} else if (lXmlStreamReader.name() == tag_axis_enabled) {
|
||||
lObjectInfo->setAxiesEnabled((bool)lXmlStreamReader.readElementText().toInt());//-----------------
|
||||
} else if (lXmlStreamReader.name() == tag_axis_position) {
|
||||
lObjectInfo->setAxisPosition((QScadaObjectAxisPosition)lXmlStreamReader.readElementText().toInt());//new
|
||||
} else if (lXmlStreamReader.name() == tag_axis_x) {
|
||||
lAxis.setX((QScadaObjectInfoAxisDirrection)lXmlStreamReader.readElementText().toInt());//-----------
|
||||
lObjectInfo->setAxis(lAxis);
|
||||
} else if (lXmlStreamReader.name() == tag_axis_y) {
|
||||
lAxis.setY((QScadaObjectInfoAxisDirrection)lXmlStreamReader.readElementText().toInt());
|
||||
lObjectInfo->setAxis(lAxis);
|
||||
} else if (lXmlStreamReader.name() == tag_axis_z) {
|
||||
lAxis.setZ((QScadaObjectInfoAxisDirrection)lXmlStreamReader.readElementText().toInt());
|
||||
lObjectInfo->setAxis(lAxis);
|
||||
} else if (lXmlStreamReader.name() == order_level) {
|
||||
lObjectInfo->setOrderLevel(lXmlStreamReader.readElementText().toInt());
|
||||
}
|
||||
@@ -243,11 +229,6 @@ QString QConnectedDeviceInfo::XMLFromDeviceInfo(QList<QScadaDeviceInfo> deviceLi
|
||||
rDevices += i.formTagValue(tag_geometry_y, QString::number(object->info()->geometry().y()), true, 4);
|
||||
rDevices += i.formTagValue(tag_geometry_width, QString::number(object->info()->geometry().width()), true, 4);
|
||||
rDevices += i.formTagValue(tag_geometry_height, QString::number(object->info()->geometry().height()), true, 4);
|
||||
rDevices += i.formTagValue(tag_axis_enabled, QString::number(object->info()->axiesEnabled()), true, 4);
|
||||
rDevices += i.formTagValue(tag_axis_position, QString::number(object->info()->axisPosition()), true, 4);
|
||||
rDevices += i.formTagValue(tag_axis_x, QString::number(object->info()->axis().getX()), true, 4);
|
||||
rDevices += i.formTagValue(tag_axis_y, QString::number(object->info()->axis().getY()), true, 4);
|
||||
rDevices += i.formTagValue(tag_axis_z, QString::number(object->info()->axis().getZ()), true, 4);
|
||||
rDevices += i.formTagValue(order_level, QString::number(object->info()->orderLevel()), true, 4);
|
||||
rDevices += i.formTag(tag_object, true, true, 3);//"\t\t\t</object>\n";
|
||||
}
|
||||
|
||||
@@ -13,8 +13,7 @@
|
||||
QScadaObject::QScadaObject(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
mInfo{new QScadaObjectInfo(this)},
|
||||
mEffect{new QGraphicsDropShadowEffect},
|
||||
mStatus{QObjectStatusNone}
|
||||
mEffect{new QGraphicsDropShadowEffect}
|
||||
{
|
||||
this->initUI();
|
||||
}
|
||||
@@ -22,8 +21,7 @@ QScadaObject::QScadaObject(QWidget *parent) :
|
||||
QScadaObject::QScadaObject(QScadaObjectInfo *info, QWidget *parent):
|
||||
QWidget(parent),
|
||||
mInfo{new QScadaObjectInfo(info)},
|
||||
mEffect{new QGraphicsDropShadowEffect},
|
||||
mStatus{QObjectStatusNone}
|
||||
mEffect{new QGraphicsDropShadowEffect}
|
||||
{
|
||||
this->initUI();
|
||||
}
|
||||
@@ -120,7 +118,6 @@ void QScadaObject::mouseDoubleClickEvent(QMouseEvent *e)
|
||||
void QScadaObject::paintEvent(QPaintEvent *e)
|
||||
{
|
||||
QPainter lPainter(this);
|
||||
QPixmap lMarkerPixmap(info()->imageName(mStatus));
|
||||
QPixmap lBackgroundPixmap(info()->backGroundImage());
|
||||
QPen lLinepen(Qt::black);
|
||||
lLinepen.setCapStyle(Qt::RoundCap);
|
||||
@@ -155,26 +152,6 @@ void QScadaObject::paintEvent(QPaintEvent *e)
|
||||
QWidget::paintEvent(e);
|
||||
}
|
||||
|
||||
qreal QScadaObject::value() const
|
||||
{
|
||||
return mValue;
|
||||
}
|
||||
|
||||
void QScadaObject::setValue(const qreal &value)
|
||||
{
|
||||
mValue = value;
|
||||
}
|
||||
|
||||
QScadaObjectStatus QScadaObject::status() const
|
||||
{
|
||||
return mStatus;
|
||||
}
|
||||
|
||||
void QScadaObject::setStatus(const QScadaObjectStatus &status)
|
||||
{
|
||||
mStatus = status;
|
||||
}
|
||||
|
||||
bool QScadaObject::isEditable() const
|
||||
{
|
||||
return mIsEditable;
|
||||
|
||||
@@ -31,12 +31,8 @@ public:
|
||||
void setIsEditable(bool isEditable);
|
||||
|
||||
virtual void update();
|
||||
|
||||
QScadaObjectStatus status() const;
|
||||
void setStatus(const QScadaObjectStatus &status);
|
||||
|
||||
qreal value() const;
|
||||
void setValue(const qreal &value);
|
||||
virtual void setProperty(char*, QVariant) = 0;
|
||||
virtual void updateValue(QVariant) = 0;
|
||||
|
||||
private:
|
||||
QScadaObjectAction action() const;
|
||||
@@ -72,10 +68,6 @@ private:
|
||||
QScadaObjectInfo *mInfo;
|
||||
QGraphicsDropShadowEffect* mEffect;
|
||||
bool mSelected;
|
||||
|
||||
qreal mValue;
|
||||
|
||||
QScadaObjectStatus mStatus;// default is VObjectStatusNone
|
||||
};
|
||||
|
||||
#endif // VOBJECT_H
|
||||
|
||||
@@ -6,8 +6,6 @@ QScadaObjectInfo::QScadaObjectInfo(QObject *parent) :
|
||||
QObject(parent),
|
||||
mIsDynamic{false},
|
||||
mTitle{"Noname"},
|
||||
mAxiesEnabled{false},
|
||||
mAxisPosition{QObjectAxisPositionLeft},
|
||||
mOrderLevel{0},
|
||||
mShowBackgroundImage{false},
|
||||
mShowBackground{true},
|
||||
@@ -24,10 +22,7 @@ QScadaObjectInfo::QScadaObjectInfo(QScadaObjectInfo *o):
|
||||
mGeometry{o->geometry()},
|
||||
mId{o->id()},
|
||||
mTitle{o->title()},
|
||||
mAxiesEnabled{o->axiesEnabled()},
|
||||
mAxisPosition{o->axisPosition()},
|
||||
mOrderLevel{o->orderLevel()},
|
||||
mImageName{o->infoImage()},
|
||||
mBackGroundImage{o->backGroundImage()},
|
||||
mShowBackgroundImage{o->showBackgroundImage()},
|
||||
mShowBackground{o->showBackground()},
|
||||
@@ -59,26 +54,6 @@ void QScadaObjectInfo::setTitle(const QString &title)
|
||||
mTitle = title;
|
||||
}
|
||||
|
||||
QScadaObjectInfoAxis QScadaObjectInfo::axis()
|
||||
{
|
||||
return mAxis;
|
||||
}
|
||||
|
||||
void QScadaObjectInfo::setAxis(const QScadaObjectInfoAxis &axis)
|
||||
{
|
||||
mAxis = axis;
|
||||
}
|
||||
|
||||
bool QScadaObjectInfo::axiesEnabled() const
|
||||
{
|
||||
return mAxiesEnabled;
|
||||
}
|
||||
|
||||
void QScadaObjectInfo::setAxiesEnabled(bool axiesEnabled)
|
||||
{
|
||||
mAxiesEnabled = axiesEnabled;
|
||||
}
|
||||
|
||||
QRect QScadaObjectInfo::geometry() const
|
||||
{
|
||||
return mGeometry;
|
||||
@@ -102,21 +77,6 @@ void QScadaObjectInfo::setIsDynamic(bool isDynamic)
|
||||
emit dynamicStatusChanged(this);
|
||||
}
|
||||
|
||||
QScadaObjectInfoImage QScadaObjectInfo::infoImage()
|
||||
{
|
||||
return mImageName;
|
||||
}
|
||||
|
||||
QString QScadaObjectInfo::imageName(QScadaObjectStatus status)
|
||||
{
|
||||
return mImageName.getImageNameForStatus(status);
|
||||
}
|
||||
|
||||
void QScadaObjectInfo::setImageName(QString imageName, QScadaObjectStatus status)
|
||||
{
|
||||
mImageName.setImageNameForState(imageName, status);
|
||||
}
|
||||
|
||||
bool QScadaObjectInfo::showBackground() const
|
||||
{
|
||||
return mShowBackground;
|
||||
@@ -137,16 +97,6 @@ void QScadaObjectInfo::setShowMarkers(bool showMarkers)
|
||||
mShowMarkers = showMarkers;
|
||||
}
|
||||
|
||||
QScadaObjectAxisPosition QScadaObjectInfo::axisPosition() const
|
||||
{
|
||||
return mAxisPosition;
|
||||
}
|
||||
|
||||
void QScadaObjectInfo::setAxisPosition(const QScadaObjectAxisPosition &axisPosition)
|
||||
{
|
||||
mAxisPosition = axisPosition;
|
||||
}
|
||||
|
||||
QString QScadaObjectInfo::backGroundImage() const
|
||||
{
|
||||
return mBackGroundImage;
|
||||
@@ -230,44 +180,12 @@ void QScadaObjectInfo::setTo(const qreal &to)
|
||||
mTo = to;
|
||||
}
|
||||
|
||||
//implementations for VObjectInfoImage
|
||||
|
||||
QString QScadaObjectInfoImage::getImageNameForStatus(QScadaObjectStatus status)
|
||||
QMLInfo QScadaObjectInfo::qMLInfo() const
|
||||
{
|
||||
QString rValue;
|
||||
|
||||
switch(status) {
|
||||
case QObjectStatusNone:
|
||||
rValue = normal;
|
||||
break;
|
||||
case QObjectStatusGreen:
|
||||
rValue = green;
|
||||
break;
|
||||
case QObjectStatusYellow:
|
||||
rValue = yellow;
|
||||
break;
|
||||
case QObjectStatusRed:
|
||||
rValue = red;
|
||||
break;
|
||||
}
|
||||
|
||||
return rValue;
|
||||
return mQMLInfo;
|
||||
}
|
||||
|
||||
void QScadaObjectInfoImage::setImageNameForState(QString name, QScadaObjectStatus status)
|
||||
void QScadaObjectInfo::setQMLInfo(const QMLInfo &qMLInfo)
|
||||
{
|
||||
switch(status) {
|
||||
case QObjectStatusNone:
|
||||
normal = name;
|
||||
break;
|
||||
case QObjectStatusGreen:
|
||||
green = name;
|
||||
break;
|
||||
case QObjectStatusYellow:
|
||||
yellow = name;
|
||||
break;
|
||||
case QObjectStatusRed:
|
||||
red = name;
|
||||
break;
|
||||
}
|
||||
mQMLInfo = qMLInfo;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef VOBJECTINFO_H
|
||||
#define VOBJECTINFO_H
|
||||
|
||||
#include "qscadaobjectinfoaxis.h"
|
||||
#include "../qscadaconfig.h"
|
||||
|
||||
#include <QObject>
|
||||
#include <QColor>
|
||||
@@ -14,29 +14,6 @@ typedef enum {
|
||||
QObjectActionResize
|
||||
} QScadaObjectAction;
|
||||
|
||||
typedef enum {
|
||||
QObjectStatusNone,
|
||||
QObjectStatusRed,
|
||||
QObjectStatusYellow,
|
||||
QObjectStatusGreen
|
||||
} QScadaObjectStatus;
|
||||
|
||||
|
||||
typedef enum {
|
||||
QObjectAxisPositionLeft,
|
||||
QObjectAxisPositionRight
|
||||
} QScadaObjectAxisPosition;
|
||||
|
||||
struct QScadaObjectInfoImage {
|
||||
QString normal = ":/com/indeema/QSimpleScada/resources/green_marker.png";
|
||||
QString green = ":/com/indeema/QSimpleScada/resources/green_marker.png";
|
||||
QString yellow = ":/com/indeema/QSimpleScada/resources/yellow_marker.png";
|
||||
QString red = ":/com/indeema/QSimpleScada/resources/red_marker.png";
|
||||
|
||||
QString getImageNameForStatus(QScadaObjectStatus);
|
||||
void setImageNameForState(QString, QScadaObjectStatus);
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
QScadaObjectTypeWidget,
|
||||
QScadaObjectTypeQML
|
||||
@@ -46,7 +23,7 @@ class QScadaObjectInfo : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit QScadaObjectInfo(QObject *parent = 0);
|
||||
explicit QScadaObjectInfo(QObject *parent = nullptr);
|
||||
QScadaObjectInfo(QScadaObjectInfo*);
|
||||
|
||||
int id() const;
|
||||
@@ -55,31 +32,18 @@ public:
|
||||
QString title() const;
|
||||
void setTitle(const QString &title);
|
||||
|
||||
QScadaObjectInfoAxis axis();
|
||||
void setAxis(const QScadaObjectInfoAxis &axis);
|
||||
|
||||
bool axiesEnabled() const;
|
||||
void setAxiesEnabled(bool axiesEnabled);
|
||||
|
||||
QRect geometry() const;
|
||||
void setGeometry(const QRect &geometry);
|
||||
|
||||
bool isDynamic() const;
|
||||
void setIsDynamic(bool isDynamic);
|
||||
|
||||
QScadaObjectInfoImage infoImage();
|
||||
QString imageName(QScadaObjectStatus);
|
||||
void setImageName(QString imageName, QScadaObjectStatus);
|
||||
|
||||
bool showBackground() const;
|
||||
void setShowBackground(bool showBackground);
|
||||
|
||||
bool showMarkers() const;
|
||||
void setShowMarkers(bool showMarkers);
|
||||
|
||||
QScadaObjectAxisPosition axisPosition() const;
|
||||
void setAxisPosition(const QScadaObjectAxisPosition &axisPosition);
|
||||
|
||||
QString backGroundImage() const;
|
||||
void setBackGroundImage(const QString &backGroundImage);
|
||||
|
||||
@@ -103,6 +67,9 @@ public:
|
||||
qreal to() const;
|
||||
void setTo(const qreal &to);
|
||||
|
||||
QMLInfo qMLInfo() const;
|
||||
void setQMLInfo(const QMLInfo &qMLInfo);
|
||||
|
||||
signals:
|
||||
void infoChanged(QScadaObjectInfo *info);
|
||||
void geometryChanged(QScadaObjectInfo *info);
|
||||
@@ -113,12 +80,8 @@ private:
|
||||
QRect mGeometry;
|
||||
int mId;
|
||||
QString mTitle;
|
||||
QScadaObjectInfoAxis mAxis;
|
||||
bool mAxiesEnabled;
|
||||
QScadaObjectAxisPosition mAxisPosition;
|
||||
int mOrderLevel;
|
||||
|
||||
QScadaObjectInfoImage mImageName;
|
||||
QString mBackGroundImage;
|
||||
bool mShowBackgroundImage;
|
||||
bool mShowBackground;
|
||||
@@ -127,6 +90,8 @@ private:
|
||||
qreal mFrom;
|
||||
qreal mTo;
|
||||
|
||||
QMLInfo mQMLInfo;
|
||||
|
||||
QString mUIResourcePath;
|
||||
QScadaObjectType mType;
|
||||
};
|
||||
|
||||
@@ -1,119 +0,0 @@
|
||||
#include "qscadaobjectinfoaxis.h"
|
||||
|
||||
QScadaObjectInfoAxis::QScadaObjectInfoAxis()
|
||||
{
|
||||
mX = VObjectInfoAxisDirrectionUpside;
|
||||
mY = VObjectInfoAxisDirrectionAside;
|
||||
mZ = VObjectInfoAxisDirrectionInside;
|
||||
}
|
||||
|
||||
QString QScadaObjectInfoAxis::stringFromAxis(QScadaObjectInfoAxisDirrection dirr)
|
||||
{
|
||||
switch (dirr) {
|
||||
case VObjectInfoAxisDirrectionUpside:
|
||||
return AXIS_UP;
|
||||
case VObjectInfoAxisDirrectionAside:
|
||||
return AXIS_ASIDE;
|
||||
case VObjectInfoAxisDirrectionInside:
|
||||
return AXIS_INSIDE;
|
||||
case VObjectInfoAxisDirrectionUndefined:
|
||||
return AXIS_UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
QScadaObjectInfoAxisDirrection QScadaObjectInfoAxis::axisFromString(QString string)
|
||||
{
|
||||
if (string == QString(AXIS_UP)) {
|
||||
return VObjectInfoAxisDirrectionUpside;
|
||||
} else if (string == AXIS_ASIDE) {
|
||||
return VObjectInfoAxisDirrectionAside;
|
||||
} else if (string == AXIS_INSIDE) {
|
||||
return VObjectInfoAxisDirrectionInside;
|
||||
} else {
|
||||
return VObjectInfoAxisDirrectionUndefined;
|
||||
}
|
||||
}
|
||||
|
||||
QString QScadaObjectInfoAxis::upsideAxisString()
|
||||
{
|
||||
if (getX() == VObjectInfoAxisDirrectionUpside) {
|
||||
return ZXIS_X;
|
||||
} else if (getY() == VObjectInfoAxisDirrectionUpside) {
|
||||
return ZXIS_Y;
|
||||
} else if (getZ() == VObjectInfoAxisDirrectionUpside) {
|
||||
return ZXIS_Z;
|
||||
} else {
|
||||
return ZXIS_UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
QString QScadaObjectInfoAxis::asideAxisString()
|
||||
{
|
||||
if (getX() == VObjectInfoAxisDirrectionAside) {
|
||||
return ZXIS_X;
|
||||
} else if (getY() == VObjectInfoAxisDirrectionAside) {
|
||||
return ZXIS_Y;
|
||||
} else if (getZ() == VObjectInfoAxisDirrectionAside) {
|
||||
return ZXIS_Z;
|
||||
} else {
|
||||
return ZXIS_UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
QString QScadaObjectInfoAxis::insideAxisString()
|
||||
{
|
||||
if (getX() == VObjectInfoAxisDirrectionInside) {
|
||||
return ZXIS_X;
|
||||
} else if (getY() == VObjectInfoAxisDirrectionInside) {
|
||||
return ZXIS_Y;
|
||||
} else if (getZ() == VObjectInfoAxisDirrectionInside) {
|
||||
return ZXIS_Z;
|
||||
} else {
|
||||
return ZXIS_UNDEFINED;
|
||||
}
|
||||
}
|
||||
|
||||
QString QScadaObjectInfoAxis::getStringX()
|
||||
{
|
||||
return stringFromAxis(getX());
|
||||
}
|
||||
|
||||
QScadaObjectInfoAxisDirrection QScadaObjectInfoAxis::getX() const
|
||||
{
|
||||
return mX;
|
||||
}
|
||||
|
||||
void QScadaObjectInfoAxis::setX(const QScadaObjectInfoAxisDirrection &value)
|
||||
{
|
||||
mX = value;
|
||||
}
|
||||
|
||||
QString QScadaObjectInfoAxis::getStringY()
|
||||
{
|
||||
return stringFromAxis(getY());
|
||||
}
|
||||
|
||||
QScadaObjectInfoAxisDirrection QScadaObjectInfoAxis::getY() const
|
||||
{
|
||||
return mY;
|
||||
}
|
||||
|
||||
void QScadaObjectInfoAxis::setY(const QScadaObjectInfoAxisDirrection &value)
|
||||
{
|
||||
mY = value;
|
||||
}
|
||||
|
||||
QString QScadaObjectInfoAxis::getStringZ()
|
||||
{
|
||||
return stringFromAxis(getZ());
|
||||
}
|
||||
|
||||
QScadaObjectInfoAxisDirrection QScadaObjectInfoAxis::getZ() const
|
||||
{
|
||||
return mZ;
|
||||
}
|
||||
|
||||
void QScadaObjectInfoAxis::setZ(const QScadaObjectInfoAxisDirrection &value)
|
||||
{
|
||||
mZ = value;
|
||||
}
|
||||
@@ -1,54 +0,0 @@
|
||||
#ifndef VOBJECTINFOAXIS_H
|
||||
#define VOBJECTINFOAXIS_H
|
||||
|
||||
#include <QString>
|
||||
|
||||
#define AXIS_UP "Upside"
|
||||
#define AXIS_ASIDE "Aside"
|
||||
#define AXIS_INSIDE "Inside"
|
||||
#define AXIS_UNDEFINED "UNDEFINED"
|
||||
|
||||
#define ZXIS_X "x"
|
||||
#define ZXIS_Y "y"
|
||||
#define ZXIS_Z "z"
|
||||
#define ZXIS_UNDEFINED "-1"
|
||||
|
||||
typedef enum {
|
||||
VObjectInfoAxisDirrectionUndefined,
|
||||
VObjectInfoAxisDirrectionUpside,
|
||||
VObjectInfoAxisDirrectionAside,
|
||||
VObjectInfoAxisDirrectionInside
|
||||
} QScadaObjectInfoAxisDirrection;
|
||||
|
||||
class QScadaObjectInfoAxis
|
||||
{
|
||||
public:
|
||||
explicit QScadaObjectInfoAxis();
|
||||
|
||||
QString stringFromAxis(QScadaObjectInfoAxisDirrection dirr);
|
||||
|
||||
QScadaObjectInfoAxisDirrection axisFromString(QString string);
|
||||
|
||||
QString upsideAxisString();
|
||||
QString asideAxisString();
|
||||
QString insideAxisString();
|
||||
|
||||
QString getStringX();
|
||||
QScadaObjectInfoAxisDirrection getX() const;
|
||||
void setX(const QScadaObjectInfoAxisDirrection &value);
|
||||
|
||||
QString getStringY();
|
||||
QScadaObjectInfoAxisDirrection getY() const;
|
||||
void setY(const QScadaObjectInfoAxisDirrection &value);
|
||||
|
||||
QString getStringZ();
|
||||
QScadaObjectInfoAxisDirrection getZ() const;
|
||||
void setZ(const QScadaObjectInfoAxisDirrection &value);
|
||||
|
||||
private:
|
||||
QScadaObjectInfoAxisDirrection mX;
|
||||
QScadaObjectInfoAxisDirrection mY;
|
||||
QScadaObjectInfoAxisDirrection mZ;
|
||||
};
|
||||
|
||||
#endif // VOBJECTINFOAXIS_H
|
||||
@@ -11,8 +11,6 @@ QScadaObjectInfoDialog::QScadaObjectInfoDialog(QWidget *parent) :
|
||||
mLatestObject{nullptr}
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
initAxiesList();
|
||||
}
|
||||
|
||||
QScadaObjectInfoDialog::~QScadaObjectInfoDialog()
|
||||
@@ -39,23 +37,12 @@ void QScadaObjectInfoDialog::updateWithObjectInfo(QScadaObjectInfo *info)
|
||||
|
||||
mMarkerImage = mLatestObject->backGroundImage();
|
||||
|
||||
//axies
|
||||
QScadaObjectInfoAxis lAxis = mLatestObject->axis();
|
||||
enableAxis(info->axiesEnabled());
|
||||
ui->comboBoxAxisPosition->setCurrentText(info->axisPosition() == QObjectAxisPositionLeft? "Left" : "Right");
|
||||
ui->comboBoxX->setCurrentText(lAxis.getStringX());
|
||||
ui->comboBoxY->setCurrentText(lAxis.getStringY());
|
||||
ui->comboBoxZ->setCurrentText(lAxis.getStringZ());
|
||||
|
||||
//geometry
|
||||
geometryUpdated(mLatestObject);
|
||||
} else {
|
||||
//clear title
|
||||
ui->lineEditName->clear();
|
||||
|
||||
//clear axies
|
||||
enableAxis(false);
|
||||
|
||||
//geometry
|
||||
ui->spinBoxX->clear();
|
||||
ui->spinBoxY->clear();
|
||||
@@ -64,33 +51,6 @@ void QScadaObjectInfoDialog::updateWithObjectInfo(QScadaObjectInfo *info)
|
||||
}
|
||||
}
|
||||
|
||||
void QScadaObjectInfoDialog::enableAxis(bool enable)
|
||||
{
|
||||
ui->checkBoxAxis->setChecked(enable);
|
||||
|
||||
ui->comboBoxAxisPosition->setEnabled(enable);
|
||||
|
||||
ui->comboBoxX->setEnabled(enable);
|
||||
ui->comboBoxY->setEnabled(enable);
|
||||
ui->comboBoxZ->setEnabled(enable);
|
||||
}
|
||||
|
||||
void QScadaObjectInfoDialog::initAxiesList()
|
||||
{
|
||||
ui->comboBoxX->clear();
|
||||
ui->comboBoxY->clear();
|
||||
ui->comboBoxZ->clear();
|
||||
|
||||
QStringList lList;
|
||||
lList.append(AXIS_UP);
|
||||
lList.append(AXIS_ASIDE);
|
||||
lList.append(AXIS_INSIDE);
|
||||
|
||||
ui->comboBoxX->addItems(lList);
|
||||
ui->comboBoxY->addItems(lList);
|
||||
ui->comboBoxZ->addItems(lList);
|
||||
}
|
||||
|
||||
void QScadaObjectInfoDialog::geometryUpdated(QScadaObjectInfo *info)
|
||||
{
|
||||
ui->spinBoxX->setValue(info->geometry().x());
|
||||
@@ -119,14 +79,6 @@ void QScadaObjectInfoDialog::on_pushButton_2_pressed()
|
||||
mLatestObject->setShowBackgroundImage(ui->checkBoxShowBackGroundImage->isChecked());
|
||||
//axies
|
||||
|
||||
mLatestObject->setAxiesEnabled(ui->checkBoxAxis->isChecked());//status
|
||||
mLatestObject->setAxisPosition(ui->comboBoxAxisPosition->currentText() == "Left" ? QObjectAxisPositionLeft : QObjectAxisPositionRight);
|
||||
QScadaObjectInfoAxis lAxis;
|
||||
lAxis.setX(lAxis.axisFromString(ui->comboBoxX->currentText()));
|
||||
lAxis.setY(lAxis.axisFromString(ui->comboBoxY->currentText()));
|
||||
lAxis.setZ(lAxis.axisFromString(ui->comboBoxZ->currentText()));
|
||||
mLatestObject->setAxis(lAxis);
|
||||
|
||||
if (!mMarkerImage.isEmpty()) {
|
||||
mLatestObject->setBackGroundImage(mMarkerImage);
|
||||
}
|
||||
@@ -158,8 +110,6 @@ void QScadaObjectInfoDialog::on_checkBoxAxis_stateChanged(int arg1)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
enableAxis(lEnabled);
|
||||
}
|
||||
|
||||
void QScadaObjectInfoDialog::on_pushButton_3_clicked()
|
||||
|
||||
@@ -14,16 +14,12 @@ class QScadaObjectInfoDialog : public QWidget
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit QScadaObjectInfoDialog(QWidget *parent = 0);
|
||||
explicit QScadaObjectInfoDialog(QWidget *parent = nullptr);
|
||||
~QScadaObjectInfoDialog();
|
||||
|
||||
public slots:
|
||||
void updateWithObjectInfo(QScadaObjectInfo *info);
|
||||
|
||||
private:
|
||||
void enableAxis(bool);
|
||||
void initAxiesList();
|
||||
|
||||
private slots:
|
||||
void geometryUpdated(QScadaObjectInfo*);
|
||||
void on_pushButton_2_pressed();
|
||||
|
||||
@@ -10,34 +10,29 @@ const char *QScadaObjectQML::tagFrom = "from";
|
||||
const char *QScadaObjectQML::tagTo = "to";
|
||||
const char *QScadaObjectQML::tagValue = "value";
|
||||
|
||||
|
||||
QScadaObjectQML::QScadaObjectQML(QScadaObjectInfo *info, QWidget *parent) : QScadaObject(info, parent)
|
||||
QScadaObjectQML::QScadaObjectQML(QScadaObjectInfo *info, QWidget *parent) :
|
||||
QScadaObject(info, parent),
|
||||
mQMLObject{nullptr}
|
||||
{
|
||||
|
||||
QQuickWidget *lQmlWidget = new QQuickWidget();
|
||||
lQmlWidget->setClearColor(Qt::transparent);
|
||||
lQmlWidget->setSource(QUrl::fromLocalFile(info->uiResourcePath()));
|
||||
lQmlWidget->show();
|
||||
|
||||
mQMLObject = static_cast<QQuickItem*>(lQmlWidget->rootObject());
|
||||
|
||||
QVBoxLayout *lLayout = new QVBoxLayout(this);
|
||||
lLayout->setContentsMargins(0, 0, 0, 0);
|
||||
lLayout->addWidget(lQmlWidget);
|
||||
|
||||
this->updateQMLGeometry();
|
||||
initFromQML(info);
|
||||
}
|
||||
|
||||
qreal QScadaObjectQML::value() const
|
||||
void QScadaObjectQML::setProperty(QString key, QVariant value)
|
||||
{
|
||||
return QScadaObject::value();
|
||||
setProperty(key.toLocal8Bit().data(), value);
|
||||
}
|
||||
|
||||
void QScadaObjectQML::setValue(const qreal &value)
|
||||
void QScadaObjectQML::setProperty(char *key, QVariant value)
|
||||
{
|
||||
QScadaObject::setValue(value);
|
||||
mQMLObject->setProperty(key, value);
|
||||
}
|
||||
|
||||
mQMLObject->setProperty(QScadaObjectQML::tagValue, QVariant(value));
|
||||
void QScadaObjectQML::updateValue(QVariant value)
|
||||
{
|
||||
QVariant rReturn;
|
||||
QMetaObject::invokeMethod(mQMLObject, "update",
|
||||
Q_RETURN_ARG(QVariant, rReturn),
|
||||
Q_ARG(QVariant, value));
|
||||
}
|
||||
|
||||
void QScadaObjectQML::update()
|
||||
@@ -76,7 +71,31 @@ void QScadaObjectQML::setTo(qreal to)
|
||||
mQMLObject->setProperty(QScadaObjectQML::tagTo, QVariant(to));
|
||||
}
|
||||
|
||||
void QScadaObjectQML::initFromQML(QScadaObjectInfo *info)
|
||||
{
|
||||
QQuickWidget *lQmlWidget = new QQuickWidget();
|
||||
lQmlWidget->setClearColor(Qt::transparent);
|
||||
lQmlWidget->setSource(QUrl::fromLocalFile(info->uiResourcePath()));
|
||||
lQmlWidget->show();
|
||||
|
||||
mQMLObject = static_cast<QQuickItem*>(lQmlWidget->rootObject());
|
||||
|
||||
QVBoxLayout *lLayout = new QVBoxLayout(this);
|
||||
lLayout->setContentsMargins(0, 0, 0, 0);
|
||||
lLayout->addWidget(lQmlWidget);
|
||||
|
||||
this->updateQMLGeometry();
|
||||
|
||||
mMetaData = mQMLObject->property("metaData").toStringList();
|
||||
qDebug() << mMetaData;
|
||||
}
|
||||
|
||||
void QScadaObjectQML::dynamicStatusChanged(QScadaObjectInfo *)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
QStringList QScadaObjectQML::metaData() const
|
||||
{
|
||||
return mMetaData;
|
||||
}
|
||||
|
||||
@@ -16,14 +16,17 @@ public:
|
||||
|
||||
explicit QScadaObjectQML(QScadaObjectInfo *,QWidget *parent = nullptr);
|
||||
|
||||
qreal value() const;
|
||||
void setValue(const qreal &value);
|
||||
void setProperty(QString, QVariant);
|
||||
void setProperty(char*, QVariant);
|
||||
void updateValue(QVariant);
|
||||
|
||||
void update();
|
||||
|
||||
QQuickItem *QMLObject() const;
|
||||
void setQMLObject(QQuickItem *qMLObject);
|
||||
|
||||
QStringList metaData() const;
|
||||
|
||||
private:
|
||||
void resize(int, int);
|
||||
void updateQMLGeometry();
|
||||
@@ -32,10 +35,12 @@ private:
|
||||
void setTo(qreal);
|
||||
|
||||
protected slots:
|
||||
void initFromQML(QScadaObjectInfo *info);
|
||||
void dynamicStatusChanged(QScadaObjectInfo*);
|
||||
|
||||
private:
|
||||
QQuickItem *mQMLObject;
|
||||
QStringList mMetaData;
|
||||
};
|
||||
|
||||
#endif // QSCADAOBJECTQML_H
|
||||
|
||||
@@ -1,134 +0,0 @@
|
||||
#include "qledindicator.h"
|
||||
|
||||
#include <QPainter>
|
||||
|
||||
QLedIndicator::QLedIndicator(QScadaObjectInfo *info, QWidget *parent): QScadaObject(info, parent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void QLedIndicator::update()
|
||||
{
|
||||
QScadaObject::update();
|
||||
}
|
||||
|
||||
void QLedIndicator::paintEvent(QPaintEvent *e)
|
||||
{
|
||||
QScadaObject::paintEvent(e);
|
||||
|
||||
QPainter lPainter(this);
|
||||
QPixmap lMarkerPixmap(info()->imageName(this->status()));
|
||||
QPixmap lBackgroundPixmap(info()->backGroundImage());
|
||||
QPen lLinepen(Qt::black);
|
||||
lLinepen.setCapStyle(Qt::RoundCap);
|
||||
lPainter.setRenderHint(QPainter::Antialiasing,true);
|
||||
lPainter.setPen(lLinepen);
|
||||
|
||||
//draw object title
|
||||
lPainter.drawText(QPoint(10, 20), this->info()->title());
|
||||
int lX;
|
||||
int lY;
|
||||
|
||||
if (info()->axiesEnabled()) {
|
||||
//draw axies
|
||||
|
||||
switch(info()->axisPosition()) {
|
||||
case QObjectAxisPositionLeft:
|
||||
lX = 12;
|
||||
break;
|
||||
case QObjectAxisPositionRight:
|
||||
lX = geometry().width() - 30;
|
||||
break;
|
||||
}
|
||||
lY = geometry().height() - 10;
|
||||
int lWidth = 10;
|
||||
int lInner = 4;
|
||||
|
||||
lPainter.drawEllipse(lX-lInner/2,
|
||||
lY-lInner/2,
|
||||
lInner,
|
||||
lInner);
|
||||
lPainter.drawText(QPoint(lX - 10, geometry().height()-2), info()->axis().insideAxisString());//inside position
|
||||
|
||||
lPainter.drawLine(lX, lY,
|
||||
lX, lY -lWidth);
|
||||
lPainter.drawLine(lX, lY -lWidth-1,
|
||||
lX-3, lY -lWidth+3);
|
||||
lPainter.drawLine(lX, lY -lWidth-1,
|
||||
lX+3, lY -lWidth+3);
|
||||
lPainter.drawText(QPoint(lX - 3, lY -lWidth-3), info()->axis().upsideAxisString());//up possibtion
|
||||
|
||||
lPainter.drawLine(lX, lY,
|
||||
lX + lWidth, lY);
|
||||
lPainter.drawLine(lX + lWidth+1, lY,
|
||||
lX + lWidth-3, lY-3);
|
||||
lPainter.drawLine(lX + lWidth+1, lY,
|
||||
lX + lWidth-3, lY+3);
|
||||
lPainter.drawText(QPoint(lX + lWidth + 3, lY+3), info()->axis().asideAxisString());//aside position
|
||||
}
|
||||
|
||||
if (info()->showMarkers()) {
|
||||
QSize lSize = lMarkerPixmap.size();
|
||||
lPainter.drawPixmap(QRect((width() - lSize.width()) /2,
|
||||
(height() - lSize.height()) / 2,
|
||||
lSize.width(),
|
||||
lSize.height()),
|
||||
lMarkerPixmap);
|
||||
}
|
||||
|
||||
if (info()->showBackgroundImage()) {
|
||||
lPainter.drawPixmap(QRect(0,
|
||||
0,
|
||||
width(),
|
||||
height()),
|
||||
lBackgroundPixmap.scaled(width(), height(),
|
||||
Qt::KeepAspectRatioByExpanding));
|
||||
}
|
||||
|
||||
if (info()->isDynamic()) {
|
||||
switch(this->status()) {
|
||||
case QObjectStatusNone:
|
||||
lLinepen.setColor(Qt::darkGray);
|
||||
break;
|
||||
case QObjectStatusRed:
|
||||
lLinepen.setColor(QColor(171, 27, 227, 255));
|
||||
break;
|
||||
case QObjectStatusYellow:
|
||||
lLinepen.setColor(QColor(228, 221, 29, 255));
|
||||
break;
|
||||
case QObjectStatusGreen:
|
||||
lLinepen.setColor(QColor(14, 121, 7, 255));
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
lLinepen.setColor(Qt::black);
|
||||
}
|
||||
|
||||
QWidget::paintEvent(e);
|
||||
}
|
||||
|
||||
void QLedIndicator::dynamicStatusChanged(QScadaObjectInfo*)
|
||||
{
|
||||
if (info()->isDynamic() && info()->type() == QScadaObjectTypeWidget) {
|
||||
switch(status()) {
|
||||
case QObjectStatusNone:
|
||||
setPalette(QPalette(Qt::lightGray));
|
||||
break;
|
||||
case QObjectStatusRed:
|
||||
setPalette(QPalette(Qt::red));
|
||||
break;
|
||||
case QObjectStatusYellow:
|
||||
setPalette(QPalette(Qt::yellow));
|
||||
break;
|
||||
case QObjectStatusGreen:
|
||||
setPalette(QPalette(Qt::green));
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
setPalette(QPalette(Qt::white));
|
||||
}
|
||||
|
||||
if (!info()->showBackground()) {
|
||||
setPalette(QPalette(Qt::transparent));
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
#ifndef QLEDINDICATOR_H
|
||||
#define QLEDINDICATOR_H
|
||||
|
||||
#include "../QScadaObject/qscadaobject.h"
|
||||
#include "../QScadaObject/qscadaobjectinfo.h"
|
||||
|
||||
class QLedIndicator : public QScadaObject
|
||||
{
|
||||
public:
|
||||
explicit QLedIndicator(QScadaObjectInfo *, QWidget *parent = nullptr);
|
||||
|
||||
void update();
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *e);
|
||||
|
||||
protected slots:
|
||||
void dynamicStatusChanged(QScadaObjectInfo*);
|
||||
};
|
||||
|
||||
#endif // QLEDINDICATOR_H
|
||||
@@ -1,6 +0,0 @@
|
||||
#include "qwaterlevel.h"
|
||||
|
||||
QWaterLevel::QWaterLevel(QScadaObjectInfo *info, QWidget *parent) : QScadaObjectQML(info, parent)
|
||||
{
|
||||
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
#ifndef QWATERLEVEL_H
|
||||
#define QWATERLEVEL_H
|
||||
|
||||
#include "../QScadaObject/qscadaobjectqml.h"
|
||||
|
||||
class QWaterLevel : public QScadaObjectQML
|
||||
{
|
||||
public:
|
||||
explicit QWaterLevel(QScadaObjectInfo *, QWidget *parent = nullptr);
|
||||
};
|
||||
|
||||
#endif // QWATERLEVEL_H
|
||||
@@ -8,22 +8,18 @@ SOURCES += \
|
||||
$$PWD/QScadaObject/qscadaobject.cpp \
|
||||
$$PWD/QScadaObject/qscadaobjectinfo.cpp \
|
||||
$$PWD/QScadaObject/qscadaobjectinfodialog.cpp \
|
||||
$$PWD/QScadaObject/qscadaobjectinfoaxis.cpp \
|
||||
$$PWD/QScadaBoard/qscadaboard.cpp \
|
||||
$$PWD/QScadaBoard/qscadaboardcontroller.cpp \
|
||||
$$PWD/QScadaBoard/qscadaboardmanager.cpp \
|
||||
$$PWD/QScadaEntity/qscadaconnecteddeviceinfo.cpp \
|
||||
$$PWD/QScadaEntity/qscadabaseprefentity.cpp \
|
||||
$$PWD/QScadaDevice/qscadadeviceinfo.cpp \
|
||||
$$PWD/QScadaObject/qscadaobjectqml.cpp \
|
||||
$$PWD/QScadaWidgets/qledindicator.cpp \
|
||||
$$PWD/QScadaWidgets/qwaterlevel.cpp
|
||||
$$PWD/QScadaObject/qscadaobjectqml.cpp
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/QScadaObject/qscadaobject.h \
|
||||
$$PWD/QScadaObject/qscadaobjectinfo.h \
|
||||
$$PWD/QScadaObject/qscadaobjectinfodialog.h \
|
||||
$$PWD/QScadaObject/qscadaobjectinfoaxis.h \
|
||||
$$PWD/QScadaBoard/qscadaboard.h \
|
||||
$$PWD/QScadaBoard/qscadaboardcontroller.h \
|
||||
$$PWD/QScadaBoard/qscadaboardmanager.h \
|
||||
@@ -32,8 +28,6 @@ HEADERS += \
|
||||
$$PWD/QScadaEntity/qscadabaseprefentity.h \
|
||||
$$PWD/QScadaDevice/qscadadeviceinfo.h \
|
||||
$$PWD/QScadaObject/qscadaobjectqml.h \
|
||||
$$PWD/QScadaWidgets/qledindicator.h \
|
||||
$$PWD/QScadaWidgets/qwaterlevel.h \
|
||||
$$PWD/qscadaconfig.h
|
||||
|
||||
FORMS += $$PWD/QScadaObject/qscadaobjectinfodialog.ui
|
||||
|
||||
+43
-14
@@ -8,10 +8,20 @@
|
||||
|
||||
#define DEFAULT_QML_PATH ":/com/indeema/eeiot/EEIoT/"
|
||||
|
||||
struct QMLInfo {
|
||||
QString groupTitle = "";
|
||||
QString groupPath = "";
|
||||
};
|
||||
|
||||
struct QMLWidgetsConfig {
|
||||
QString title = "";
|
||||
QMLInfo info;
|
||||
bool isValid = false;
|
||||
|
||||
QStringList widgets() {
|
||||
return mQMLWidgets;
|
||||
}
|
||||
|
||||
QMLWidgetsConfig(){}
|
||||
QMLWidgetsConfig(QString path){
|
||||
if (!path.isEmpty()) {
|
||||
QDir directory(path);
|
||||
@@ -19,25 +29,19 @@ struct QMLWidgetsConfig {
|
||||
// Load all files with the *.PNG extension
|
||||
// (you can modify this to suit your needs.
|
||||
QStringList lQMLList = directory.entryList(QStringList("*.qml"));
|
||||
for (QString file : lQMLList) {
|
||||
qDebug() << file;
|
||||
}
|
||||
|
||||
if (lQMLList.count() > 0) {
|
||||
mQMLWidgets = lQMLList;
|
||||
info.groupPath = path;
|
||||
|
||||
QString lTmpTitle = path.split('/').last();
|
||||
//let secure from having / at end or not having
|
||||
if (lTmpTitle.isEmpty()) {
|
||||
title = path.split('/').at(path.split('/').count()-2);
|
||||
info.groupTitle = path.split('/').at(path.split('/').count()-2);
|
||||
} else {
|
||||
title = lTmpTitle;
|
||||
info.groupTitle = lTmpTitle;
|
||||
}
|
||||
}
|
||||
|
||||
// QDirIterator it("path", QDirIterator::Subdirectories);
|
||||
// while (it.hasNext()) {
|
||||
// qDebug() << it.next();
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,12 +70,37 @@ class QMLConfig
|
||||
}
|
||||
|
||||
void appendQMLPath(QString path) {
|
||||
mQMLPaths.append(path);
|
||||
mQMLWidgets.append(QMLWidgetsConfig(path));
|
||||
QMLWidgetsConfig lConf = QMLWidgetsConfig(path);
|
||||
|
||||
if (lConf.isValid) {
|
||||
//check if QML group is unique.
|
||||
//if it's already in list, it will be replaced with new
|
||||
for (int i=0; i < mQMLWidgets.count(); i++) {
|
||||
QMLWidgetsConfig tmpConf = mQMLWidgets.at(i);
|
||||
if (tmpConf.info.groupTitle == lConf.info.groupTitle) {
|
||||
mQMLWidgets.removeAt(i);
|
||||
}
|
||||
}
|
||||
mQMLWidgets.append(lConf);
|
||||
}
|
||||
}
|
||||
|
||||
QMLWidgetsConfig qmlWidgetConfForGroup(QString qmlGroupTitle) {
|
||||
QMLWidgetsConfig rConf;
|
||||
|
||||
for (QMLWidgetsConfig tmpConf : mQMLWidgets) {
|
||||
if (qmlGroupTitle == tmpConf.info.groupTitle) {
|
||||
rConf = tmpConf;
|
||||
}
|
||||
}
|
||||
|
||||
return rConf;
|
||||
}
|
||||
|
||||
QList<QMLWidgetsConfig> QMLWidgets(){
|
||||
return mQMLWidgets;
|
||||
}
|
||||
private:
|
||||
QStringList mQMLPaths;
|
||||
QList<QMLWidgetsConfig> mQMLWidgets;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user