History

get button-states for toolbar buttons working again

Seth Alves committed 9 years ago

Commit ff8d13e1 parent 98f166412 files · +49 −34Browse files

Showing the changes to interface/src/scripting/ToolbarScriptingInterface.cpp (1 of 12 files). Show all

Unified · Split

interface/src/scripting/ToolbarScriptingInterface.cpp+19−1
@@ -19,15 +19,33 @@ class ToolbarButtonProxy : public QmlWrapper { · 18 unmodified lines
1919
2020 public:
2121 ToolbarButtonProxy(QObject* qmlObject, QObject* parent = nullptr) : QmlWrapper(qmlObject, parent) {
22+ std::lock_guard<std::mutex> guard(_mutex);
23+ _qmlButton = qobject_cast<QQuickItem*>(qmlObject);
2224 connect(qmlObject, SIGNAL(clicked()), this, SIGNAL(clicked()));
2325 }
2426
2527 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+ }
2740 }
2841
2942 signals:
3043 void clicked();
44+
45+protected:
46+ mutable std::mutex _mutex;
47+ QQuickItem* _qmlButton { nullptr };
48+ QVariantMap _properties;
3149 };
3250
3351 class ToolbarProxy : public QmlWrapper {