636 lines · 22.8 KB · C++
RawDownload
        }        buttonProxy->setQmlButton(nullptr);    }} void TabletProxy::desktopWindowClosed() {    gotoHomeScreen();} void TabletProxy::addButtonsToToolbar() {    auto tabletScriptingInterface = DependencyManager::get<TabletScriptingInterface>();    QObject* toolbarProxy = tabletScriptingInterface->getSystemToolbarProxy();     Qt::ConnectionType connectionType = Qt::AutoConnection;    if (QThread::currentThread() != toolbarProxy->thread()) {        connectionType = Qt::BlockingQueuedConnection;    }     for (auto& buttonProxy : _tabletButtonProxies) {        // copy properties from tablet button proxy to toolbar button proxy.        QObject* toolbarButtonProxy = nullptr;        bool hasResult = QMetaObject::invokeMethod(toolbarProxy, "addButton", connectionType, Q_RETURN_ARG(QObject*, toolbarButtonProxy), Q_ARG(QVariant, buttonProxy->getProperties()));        if (hasResult) {            buttonProxy->setToolbarButtonProxy(toolbarButtonProxy);        } else {            qCWarning(scriptengine) << "ToolbarProxy addButton has no result";        }    }     // make the toolbar visible    QMetaObject::invokeMethod(toolbarProxy, "writeProperty", Qt::AutoConnection, Q_ARG(QString, "visible"), Q_ARG(QVariant, QVariant(true)));} void TabletProxy::removeButtonsFromToolbar() {    auto tabletScriptingInterface = DependencyManager::get<TabletScriptingInterface>();    QObject* toolbarProxy = tabletScriptingInterface->getSystemToolbarProxy();    for (auto& buttonProxy : _tabletButtonProxies) {        // remove button from toolbarProxy        QMetaObject::invokeMethod(toolbarProxy, "removeButton", Qt::AutoConnection, Q_ARG(QVariant, buttonProxy->getUuid().toString()));        buttonProxy->setToolbarButtonProxy(nullptr);    }} QQuickItem* TabletProxy::getQmlTablet() const {    if (!_qmlTabletRoot) {        return nullptr;    }     auto loader = _qmlTabletRoot->findChild<QQuickItem*>("loader");    if (!loader) {        return nullptr;    }     auto tablet = loader->findChild<QQuickItem*>("tablet");    if (!tablet) {        return nullptr;    }     return tablet;} QQuickItem* TabletProxy::getQmlMenu() const {     if (!_qmlTabletRoot) {        return nullptr;    }     auto loader = _qmlTabletRoot->findChild<QQuickItem*>("loader");    if (!loader) {        return nullptr;    }     QQuickItem* VrMenu = loader->findChild<QQuickItem*>("tabletMenu");    if (!VrMenu) {        return nullptr;    }     QQuickItem* menuList = VrMenu->findChild<QQuickItem*>("tabletMenuHandlerItem");    if (!menuList) {        return nullptr;    }    return menuList;} //// TabletButtonProxy// const QString UUID_KEY = "uuid";const QString OBJECT_NAME_KEY = "objectName";const QString STABLE_ORDER_KEY = "stableOrder";static int s_stableOrder = 1; TabletButtonProxy::TabletButtonProxy(const QVariantMap& properties) : _uuid(QUuid::createUuid()), _stableOrder(++s_stableOrder), _properties(properties) {    // this is used to uniquely identify this button.    _properties[UUID_KEY] = _uuid;    _properties[OBJECT_NAME_KEY] = _uuid.toString();    _properties[STABLE_ORDER_KEY] = _stableOrder;} void TabletButtonProxy::setQmlButton(QQuickItem* qmlButton) {    std::lock_guard<std::mutex> guard(_mutex);    _qmlButton = qmlButton;} void TabletButtonProxy::setToolbarButtonProxy(QObject* toolbarButtonProxy) {    std::lock_guard<std::mutex> guard(_mutex);    _toolbarButtonProxy = toolbarButtonProxy;    if (_toolbarButtonProxy) {        QObject::connect(_toolbarButtonProxy, SIGNAL(clicked()), this, SLOT(clickedSlot()));    }} QVariantMap TabletButtonProxy::getProperties() const {    std::lock_guard<std::mutex> guard(_mutex);    return _properties;} void TabletButtonProxy::editProperties(QVariantMap properties) {    std::lock_guard<std::mutex> guard(_mutex);     QVariantMap::const_iterator iter = properties.constBegin();    while (iter != properties.constEnd()) {        _properties[iter.key()] = iter.value();        if (_qmlButton) {            QMetaObject::invokeMethod(_qmlButton, "changeProperty", Qt::AutoConnection, Q_ARG(QVariant, QVariant(iter.key())), Q_ARG(QVariant, iter.value()));        }        ++iter;    }     if (_toolbarButtonProxy) {        QMetaObject::invokeMethod(_toolbarButtonProxy, "editProperties", Qt::AutoConnection, Q_ARG(QVariantMap, properties));    }} #include "TabletScriptingInterface.moc" 

Lines 501–636 of 636. Previous lines

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t