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 | 20 | public: |
| 21 | 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 | 24 | connect(qmlObject, SIGNAL(clicked()), this, SIGNAL(clicked())); |
| 23 | 25 | } |
| 24 | 26 | |
| 25 | 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 | 42 | signals: |
| 30 | 43 | void clicked(); |
| 44 | + | |
| 45 | +protected: | |
| 46 | + mutable std::mutex _mutex; | |
| 47 | + QQuickItem* _qmlButton { nullptr }; | |
| 48 | + QVariantMap _properties; | |
| 31 | 49 | }; |
| 32 | 50 | |
| 33 | 51 | class ToolbarProxy : public QmlWrapper { |