Showing the changes to interface/src/scripting/ToolbarScriptingInterface.cpp (1 of 12 files). Show all
Unified · Split
| @@ -19,15 +19,33 @@ class ToolbarButtonProxy : public QmlWrapper { · 18 unmodified lines | |||
| 19 | 19 | ||
| 20 | public: | 20 | public: |
| 21 | ToolbarButtonProxy(QObject* qmlObject, QObject* parent = nullptr) : QmlWrapper(qmlObject, parent) { | 21 | ToolbarButtonProxy(QObject* qmlObject, QObject* parent = nullptr) : QmlWrapper(qmlObject, parent) { |
| 22 | std::lock_guard<std::mutex> guard(_mutex); | ||
| 23 | _qmlButton = qobject_cast<QQuickItem*>(qmlObject); | ||
| 22 | connect(qmlObject, SIGNAL(clicked()), this, SIGNAL(clicked())); | 24 | connect(qmlObject, SIGNAL(clicked()), this, SIGNAL(clicked())); |
| 23 | } | 25 | } |
| 24 | 26 | ||
| 25 | Q_INVOKABLE void editProperties(QVariantMap properties) { | 27 | Q_INVOKABLE void editProperties(QVariantMap properties) { |
| 26 | qDebug() << "XXX WRITE TabletButtonProxy::editProperties"; | 28 | std::lock_guard<std::mutex> guard(_mutex); |
| 29 | QVariantMap::const_iterator iter = properties.constBegin(); | ||
| 30 | while (iter != properties.constEnd()) { | ||
| 31 | _properties[iter.key()] = iter.value(); | ||
| 32 | if (_qmlButton) { | ||
| 33 | // [01/25 14:26:20] [WARNING] [default] QMetaObject::invokeMethod: No such method ToolbarButton_QMLTYPE_195::changeProperty(QVariant,QVariant) | ||
| 34 | |||
| 35 | QMetaObject::invokeMethod(_qmlButton, "changeProperty", Qt::AutoConnection, | ||
| 36 | Q_ARG(QVariant, QVariant(iter.key())), Q_ARG(QVariant, iter.value())); | ||
| 37 | } | ||
| 38 | ++iter; | ||
| 39 | } | ||
| 27 | } | 40 | } |
| 28 | 41 | ||
| 29 | signals: | 42 | signals: |
| 30 | void clicked(); | 43 | void clicked(); |
| 44 | |||
| 45 | protected: | ||
| 46 | mutable std::mutex _mutex; | ||
| 47 | QQuickItem* _qmlButton { nullptr }; | ||
| 48 | QVariantMap _properties; | ||
| 31 | }; | 49 | }; |
| 32 | 50 | ||
| 33 | class ToolbarProxy : public QmlWrapper { | 51 | class ToolbarProxy : public QmlWrapper { |