mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-26 17:15:17 +02:00
85 lines
2.6 KiB
C++
85 lines
2.6 KiB
C++
//
|
|
// Created by Bradley Austin Davis on 2016-06-16
|
|
// Copyright 2013-2016 High Fidelity, Inc.
|
|
//
|
|
// Distributed under the Apache License, Version 2.0.
|
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
|
//
|
|
|
|
#include "TabletScriptingInterface.h"
|
|
|
|
#include <QtCore/QThread>
|
|
|
|
QObject* TabletScriptingInterface::getTablet(const QString& tabletId) {
|
|
|
|
std::lock_guard<std::mutex> guard(_tabletProxiesMutex);
|
|
|
|
// look up tabletId in the map.
|
|
auto iter = _tabletProxies.find(tabletId);
|
|
if (iter != _tabletProxies.end()) {
|
|
// tablet already exists, just return it.
|
|
return iter->second.data();
|
|
} else {
|
|
// allocate a new tablet, add it to the map then return it.
|
|
auto tabletProxy = QSharedPointer<TabletProxy>(new TabletProxy(tabletId));
|
|
_tabletProxies[tabletId] = tabletProxy;
|
|
return tabletProxy.data();
|
|
}
|
|
}
|
|
|
|
void TabletScriptingInterface::setupTablet(QString tabletId, QQuickItem* qmlTablet) {
|
|
// AJT: TODO
|
|
qDebug() << "AJT: setupTablet objname = " << qmlTablet->objectName();
|
|
}
|
|
|
|
//
|
|
// TabletProxy
|
|
//
|
|
|
|
TabletProxy::TabletProxy(QString name) : _name(name) {
|
|
;
|
|
}
|
|
|
|
QObject* TabletProxy::addButton(const QVariant& properties) {
|
|
auto tabletButtonProxy = QSharedPointer<TabletButtonProxy>(new TabletButtonProxy(properties.toMap()));
|
|
std::lock_guard<std::mutex> guard(_tabletButtonProxiesMutex);
|
|
_tabletButtonProxies.push_back(tabletButtonProxy);
|
|
return tabletButtonProxy.data();
|
|
}
|
|
|
|
void TabletProxy::removeButton(QObject* tabletButtonProxy) {
|
|
std::lock_guard<std::mutex> guard(_tabletButtonProxiesMutex);
|
|
auto iter = std::find(_tabletButtonProxies.begin(), _tabletButtonProxies.end(), tabletButtonProxy);
|
|
if (iter != _tabletButtonProxies.end()) {
|
|
_tabletButtonProxies.erase(iter);
|
|
} else {
|
|
qWarning() << "TabletProxy::removeButton() could not find button " << tabletButtonProxy;
|
|
}
|
|
}
|
|
|
|
//
|
|
// TabletButtonProxy
|
|
//
|
|
|
|
TabletButtonProxy::TabletButtonProxy(const QVariantMap& properties) : _properties(properties) {
|
|
;
|
|
}
|
|
|
|
void TabletButtonProxy::setInitRequestHandler(const QScriptValue& handler) {
|
|
_initRequestHandler = handler;
|
|
}
|
|
|
|
static QString IMAGE_URL_KEY = "imageUrl";
|
|
static QString IMAGE_URL_DEFAULT = "";
|
|
|
|
QString TabletButtonProxy::getImageUrl() const {
|
|
std::lock_guard<std::mutex> guard(_propertiesMutex);
|
|
return _properties.value(IMAGE_URL_KEY, IMAGE_URL_DEFAULT).toString();
|
|
}
|
|
|
|
void TabletButtonProxy::setImageUrl(QString imageUrl) {
|
|
std::lock_guard<std::mutex> guard(_propertiesMutex);
|
|
_properties[IMAGE_URL_KEY] = imageUrl;
|
|
}
|
|
|
|
#include "TabletScriptingInterface.moc"
|