Merge PR #703: Add support for the providedInterfaces thing class property
This commit is contained in:
commit
10f6c0ba9c
@ -70,6 +70,21 @@ void ThingClassesProxy::setFilterInterface(const QString &filterInterface)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ThingClassesProxy::includeProvidedInterfaces() const
|
||||||
|
{
|
||||||
|
return m_includeProvidedInterfaces;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ThingClassesProxy::setIncludeProvidedInterfaces(bool includeProvidedInterfaces)
|
||||||
|
{
|
||||||
|
if (m_includeProvidedInterfaces != includeProvidedInterfaces) {
|
||||||
|
m_includeProvidedInterfaces = includeProvidedInterfaces;
|
||||||
|
emit includeProvidedInterfacesChanged();
|
||||||
|
invalidateFilter();
|
||||||
|
emit countChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QString ThingClassesProxy::filterDisplayName() const
|
QString ThingClassesProxy::filterDisplayName() const
|
||||||
{
|
{
|
||||||
return m_filterDisplayName;
|
return m_filterDisplayName;
|
||||||
@ -207,7 +222,11 @@ bool ThingClassesProxy::filterAcceptsRow(int sourceRow, const QModelIndex &sourc
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!m_filterInterface.isEmpty() && !thingClass->interfaces().contains(m_filterInterface)) {
|
if (!m_filterInterface.isEmpty() && !thingClass->interfaces().contains(m_filterInterface)) {
|
||||||
return false;
|
if (!m_includeProvidedInterfaces) {
|
||||||
|
return false;
|
||||||
|
} else if (!thingClass->providedInterfaces().contains(m_filterInterface)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!m_filterDisplayName.isEmpty() && !thingClass->displayName().toLower().contains(m_filterDisplayName.toLower())) {
|
if (!m_filterDisplayName.isEmpty() && !thingClass->displayName().toLower().contains(m_filterDisplayName.toLower())) {
|
||||||
|
|||||||
@ -46,6 +46,7 @@ class ThingClassesProxy : public QSortFilterProxyModel
|
|||||||
Q_PROPERTY(Engine *engine READ engine WRITE setEngine NOTIFY engineChanged)
|
Q_PROPERTY(Engine *engine READ engine WRITE setEngine NOTIFY engineChanged)
|
||||||
|
|
||||||
Q_PROPERTY(QString filterInterface READ filterInterface WRITE setFilterInterface NOTIFY filterInterfaceChanged)
|
Q_PROPERTY(QString filterInterface READ filterInterface WRITE setFilterInterface NOTIFY filterInterfaceChanged)
|
||||||
|
Q_PROPERTY(bool includeProvidedInterfaces READ includeProvidedInterfaces WRITE setIncludeProvidedInterfaces NOTIFY includeProvidedInterfacesChanged)
|
||||||
Q_PROPERTY(QString filterDisplayName READ filterDisplayName WRITE setFilterDisplayName NOTIFY filterDisplayNameChanged)
|
Q_PROPERTY(QString filterDisplayName READ filterDisplayName WRITE setFilterDisplayName NOTIFY filterDisplayNameChanged)
|
||||||
Q_PROPERTY(QUuid filterVendorId READ filterVendorId WRITE setFilterVendorId NOTIFY filterVendorIdChanged)
|
Q_PROPERTY(QUuid filterVendorId READ filterVendorId WRITE setFilterVendorId NOTIFY filterVendorIdChanged)
|
||||||
Q_PROPERTY(QString filterVendorName READ filterVendorName WRITE setFilterVendorName NOTIFY filterVendorNameChanged)
|
Q_PROPERTY(QString filterVendorName READ filterVendorName WRITE setFilterVendorName NOTIFY filterVendorNameChanged)
|
||||||
@ -67,6 +68,9 @@ public:
|
|||||||
QString filterInterface() const;
|
QString filterInterface() const;
|
||||||
void setFilterInterface(const QString &filterInterface);
|
void setFilterInterface(const QString &filterInterface);
|
||||||
|
|
||||||
|
bool includeProvidedInterfaces() const;
|
||||||
|
void setIncludeProvidedInterfaces(bool includeProvidedInterfaces);
|
||||||
|
|
||||||
QString filterDisplayName() const;
|
QString filterDisplayName() const;
|
||||||
void setFilterDisplayName(const QString &filter);
|
void setFilterDisplayName(const QString &filter);
|
||||||
|
|
||||||
@ -95,6 +99,7 @@ public:
|
|||||||
signals:
|
signals:
|
||||||
void engineChanged();
|
void engineChanged();
|
||||||
void filterInterfaceChanged();
|
void filterInterfaceChanged();
|
||||||
|
void includeProvidedInterfacesChanged();
|
||||||
void filterDisplayNameChanged();
|
void filterDisplayNameChanged();
|
||||||
void filterVendorIdChanged();
|
void filterVendorIdChanged();
|
||||||
void filterVendorNameChanged();
|
void filterVendorNameChanged();
|
||||||
@ -111,6 +116,7 @@ protected:
|
|||||||
private:
|
private:
|
||||||
Engine *m_engine = nullptr;
|
Engine *m_engine = nullptr;
|
||||||
QString m_filterInterface;
|
QString m_filterInterface;
|
||||||
|
bool m_includeProvidedInterfaces = false;
|
||||||
QString m_filterDisplayName;
|
QString m_filterDisplayName;
|
||||||
QUuid m_filterVendorId;
|
QUuid m_filterVendorId;
|
||||||
QString m_filterVendorName;
|
QString m_filterVendorName;
|
||||||
|
|||||||
@ -774,6 +774,7 @@ ThingClass *ThingManager::unpackThingClass(const QVariantMap &thingClassMap)
|
|||||||
thingClass->setCreateMethods(createMethods);
|
thingClass->setCreateMethods(createMethods);
|
||||||
thingClass->setSetupMethod(stringToSetupMethod(thingClassMap.value("setupMethod").toString()));
|
thingClass->setSetupMethod(stringToSetupMethod(thingClassMap.value("setupMethod").toString()));
|
||||||
thingClass->setInterfaces(thingClassMap.value("interfaces").toStringList());
|
thingClass->setInterfaces(thingClassMap.value("interfaces").toStringList());
|
||||||
|
thingClass->setProvidedInterfaces(thingClassMap.value("providedInterfaces").toStringList());
|
||||||
|
|
||||||
// ParamTypes
|
// ParamTypes
|
||||||
ParamTypes *paramTypes = new ParamTypes(thingClass);
|
ParamTypes *paramTypes = new ParamTypes(thingClass);
|
||||||
|
|||||||
@ -117,6 +117,16 @@ void ThingClass::setInterfaces(const QStringList &interfaces)
|
|||||||
m_interfaces = interfaces;
|
m_interfaces = interfaces;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QStringList ThingClass::providedInterfaces() const
|
||||||
|
{
|
||||||
|
return m_providedInterfaces;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ThingClass::setProvidedInterfaces(const QStringList &providedInterfaces)
|
||||||
|
{
|
||||||
|
m_providedInterfaces = providedInterfaces;
|
||||||
|
}
|
||||||
|
|
||||||
QString ThingClass::baseInterface() const
|
QString ThingClass::baseInterface() const
|
||||||
{
|
{
|
||||||
foreach (const QString &interface, m_interfaces) {
|
foreach (const QString &interface, m_interfaces) {
|
||||||
|
|||||||
@ -52,6 +52,7 @@ class ThingClass : public QObject
|
|||||||
Q_PROPERTY(QStringList createMethods READ createMethods CONSTANT)
|
Q_PROPERTY(QStringList createMethods READ createMethods CONSTANT)
|
||||||
Q_PROPERTY(SetupMethod setupMethod READ setupMethod CONSTANT)
|
Q_PROPERTY(SetupMethod setupMethod READ setupMethod CONSTANT)
|
||||||
Q_PROPERTY(QStringList interfaces READ interfaces CONSTANT)
|
Q_PROPERTY(QStringList interfaces READ interfaces CONSTANT)
|
||||||
|
Q_PROPERTY(QStringList providedInterfaces READ providedInterfaces CONSTANT)
|
||||||
Q_PROPERTY(QString baseInterface READ baseInterface CONSTANT)
|
Q_PROPERTY(QString baseInterface READ baseInterface CONSTANT)
|
||||||
Q_PROPERTY(bool browsable READ browsable CONSTANT)
|
Q_PROPERTY(bool browsable READ browsable CONSTANT)
|
||||||
Q_PROPERTY(ParamTypes *paramTypes READ paramTypes NOTIFY paramTypesChanged)
|
Q_PROPERTY(ParamTypes *paramTypes READ paramTypes NOTIFY paramTypesChanged)
|
||||||
@ -100,6 +101,9 @@ public:
|
|||||||
QStringList interfaces() const;
|
QStringList interfaces() const;
|
||||||
void setInterfaces(const QStringList &interfaces);
|
void setInterfaces(const QStringList &interfaces);
|
||||||
|
|
||||||
|
QStringList providedInterfaces() const;
|
||||||
|
void setProvidedInterfaces(const QStringList &providedInterfaces);
|
||||||
|
|
||||||
QString baseInterface() const;
|
QString baseInterface() const;
|
||||||
|
|
||||||
bool browsable() const;
|
bool browsable() const;
|
||||||
@ -146,6 +150,7 @@ private:
|
|||||||
QStringList m_createMethods;
|
QStringList m_createMethods;
|
||||||
SetupMethod m_setupMethod;
|
SetupMethod m_setupMethod;
|
||||||
QStringList m_interfaces;
|
QStringList m_interfaces;
|
||||||
|
QStringList m_providedInterfaces;
|
||||||
bool m_browsable = false;
|
bool m_browsable = false;
|
||||||
|
|
||||||
ParamTypes *m_paramTypes = nullptr;
|
ParamTypes *m_paramTypes = nullptr;
|
||||||
|
|||||||
@ -226,6 +226,8 @@ ApplicationWindow {
|
|||||||
return qsTr("Smart meters");
|
return qsTr("Smart meters");
|
||||||
case "heating":
|
case "heating":
|
||||||
return qsTr("Heating");
|
return qsTr("Heating");
|
||||||
|
case "cooling":
|
||||||
|
return qsTr("Cooling");
|
||||||
case "thermostat":
|
case "thermostat":
|
||||||
return qsTr("Thermostats");
|
return qsTr("Thermostats");
|
||||||
case "evcharger":
|
case "evcharger":
|
||||||
@ -360,6 +362,8 @@ ApplicationWindow {
|
|||||||
return Qt.resolvedUrl("images/fingerprint.svg")
|
return Qt.resolvedUrl("images/fingerprint.svg")
|
||||||
case "accesscontrol":
|
case "accesscontrol":
|
||||||
return Qt.resolvedUrl("images/lock-closed.svg");
|
return Qt.resolvedUrl("images/lock-closed.svg");
|
||||||
|
case "solarinverter":
|
||||||
|
return Qt.resolvedUrl("images/weathericons/weather-clear-day.svg")
|
||||||
case "smartmeter":
|
case "smartmeter":
|
||||||
case "smartmeterconsumer":
|
case "smartmeterconsumer":
|
||||||
case "smartmeterproducer":
|
case "smartmeterproducer":
|
||||||
|
|||||||
@ -149,12 +149,13 @@ Page {
|
|||||||
id: thingClassesProxy
|
id: thingClassesProxy
|
||||||
engine: _engine
|
engine: _engine
|
||||||
filterInterface: typeFilterModel.get(typeFilterComboBox.currentIndex).interfaceName
|
filterInterface: typeFilterModel.get(typeFilterComboBox.currentIndex).interfaceName
|
||||||
|
includeProvidedInterfaces: true
|
||||||
filterVendorId: vendorFilterComboBox.currentIndex >= 0 ? vendorsFilterModel.get(vendorFilterComboBox.currentIndex).vendorId : ""
|
filterVendorId: vendorFilterComboBox.currentIndex >= 0 ? vendorsFilterModel.get(vendorFilterComboBox.currentIndex).vendorId : ""
|
||||||
filterString: displayNameFilterField.displayText
|
filterString: displayNameFilterField.displayText
|
||||||
groupByInterface: true
|
groupByInterface: true
|
||||||
}
|
}
|
||||||
|
|
||||||
delegate: NymeaSwipeDelegate {
|
delegate: NymeaItemDelegate {
|
||||||
id: tingClassDelegate
|
id: tingClassDelegate
|
||||||
width: parent.width
|
width: parent.width
|
||||||
text: model.displayName
|
text: model.displayName
|
||||||
|
|||||||
@ -64,16 +64,15 @@ SettingsPageBase {
|
|||||||
text: qsTr("Interfaces")
|
text: qsTr("Interfaces")
|
||||||
}
|
}
|
||||||
|
|
||||||
Repeater {
|
Label {
|
||||||
model: root.thingClass.interfaces
|
Layout.fillWidth: true
|
||||||
delegate: Label {
|
Layout.leftMargin: Style.margins
|
||||||
Layout.fillWidth: true
|
Layout.rightMargin: Style.margins
|
||||||
Layout.leftMargin: Style.margins
|
wrapMode: Text.WordWrap
|
||||||
Layout.rightMargin: Style.margins
|
text: root.thingClass.interfaces.join(", ") + (root.thingClass.providedInterfaces.length > 0 ? " (" + root.thingClass.providedInterfaces.join(", ") + ")" : "")
|
||||||
text: modelData
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SettingsPageSectionHeader {
|
SettingsPageSectionHeader {
|
||||||
text: qsTr("Parameters")
|
text: qsTr("Parameters")
|
||||||
visible: root.thingClass.paramTypes.count > 0
|
visible: root.thingClass.paramTypes.count > 0
|
||||||
|
|||||||
Reference in New Issue
Block a user