History

Pass tablet QQuickItem to TabletScriptingInterface

Also, moved TabletScriptingInterface to script-engine library for easy access, baby.

Anthony J. Thibault committed 9 years ago

Commit d4f9d211 parent db0b2ba6 files · +21 −4Browse files

Showing the changes to libraries/script-engine/src/TabletScriptingInterface.cpp (1 of 6 files). Show all

Unified · Split

libraries/script-engine/src/TabletScriptingInterface.cpp+85−0
@@ -0,0 +1,85 @@
1//
2// Created by Bradley Austin Davis on 2016-06-16
3// Copyright 2013-2016 High Fidelity, Inc.
4//
5// Distributed under the Apache License, Version 2.0.
6// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
7//
8
9#include "TabletScriptingInterface.h"
10
11#include <QtCore/QThread>
12
13QObject* TabletScriptingInterface::getTablet(const QString& tabletId) {
14
15 std::lock_guard<std::mutex> guard(_tabletProxiesMutex);
16
17 // look up tabletId in the map.
18 auto iter = _tabletProxies.find(tabletId);
19 if (iter != _tabletProxies.end()) {
20 // tablet already exists, just return it.
21 return iter->second.data();
22 } else {
23 // allocate a new tablet, add it to the map then return it.
24 auto tabletProxy = QSharedPointer<TabletProxy>(new TabletProxy(tabletId));
25 _tabletProxies[tabletId] = tabletProxy;
26 return tabletProxy.data();
27 }
28}
29
30void TabletScriptingInterface::setupTablet(QString tabletId, QQuickItem* qmlTablet) {
31 // AJT: TODO
32 qDebug() << "AJT: setupTablet objname = " << qmlTablet->objectName();
33}
34
35//
36// TabletProxy
37//
38
39TabletProxy::TabletProxy(QString name) : _name(name) {
40 ;
41}
42
43QObject* TabletProxy::addButton(const QVariant& properties) {
44 auto tabletButtonProxy = QSharedPointer<TabletButtonProxy>(new TabletButtonProxy(properties.toMap()));
45 std::lock_guard<std::mutex> guard(_tabletButtonProxiesMutex);
46 _tabletButtonProxies.push_back(tabletButtonProxy);
47 return tabletButtonProxy.data();
48}
49
50void TabletProxy::removeButton(QObject* tabletButtonProxy) {
51 std::lock_guard<std::mutex> guard(_tabletButtonProxiesMutex);
52 auto iter = std::find(_tabletButtonProxies.begin(), _tabletButtonProxies.end(), tabletButtonProxy);
53 if (iter != _tabletButtonProxies.end()) {
54 _tabletButtonProxies.erase(iter);
55 } else {
56 qWarning() << "TabletProxy::removeButton() could not find button " << tabletButtonProxy;
57 }
58}
59
60//
61// TabletButtonProxy
62//
63
64TabletButtonProxy::TabletButtonProxy(const QVariantMap& properties) : _properties(properties) {
65 ;
66}
67
68void TabletButtonProxy::setInitRequestHandler(const QScriptValue& handler) {
69 _initRequestHandler = handler;
70}
71
72static QString IMAGE_URL_KEY = "imageUrl";
73static QString IMAGE_URL_DEFAULT = "";
74
75QString TabletButtonProxy::getImageUrl() const {
76 std::lock_guard<std::mutex> guard(_propertiesMutex);
77 return _properties.value(IMAGE_URL_KEY, IMAGE_URL_DEFAULT).toString();
78}
79
80void TabletButtonProxy::setImageUrl(QString imageUrl) {
81 std::lock_guard<std::mutex> guard(_propertiesMutex);
82 _properties[IMAGE_URL_KEY] = imageUrl;
83}
84
85#include "TabletScriptingInterface.moc"