From d2f024e84d2acedd9bf355a53307f00765a42c72 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Tue, 24 Jan 2017 11:40:20 -0800 Subject: [PATCH 1/2] Fix for "ReferenceError: globalPosition is not defined" warning --- interface/resources/qml/hifi/tablet/TabletRoot.qml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/interface/resources/qml/hifi/tablet/TabletRoot.qml b/interface/resources/qml/hifi/tablet/TabletRoot.qml index 8e524761c0..99559fc984 100644 --- a/interface/resources/qml/hifi/tablet/TabletRoot.qml +++ b/interface/resources/qml/hifi/tablet/TabletRoot.qml @@ -7,7 +7,7 @@ Item { property var eventBridge; signal showDesktop(); - + function loadSource(url) { loader.source = url; } @@ -23,7 +23,11 @@ Item { } function playButtonClickSound() { - buttonClickSound.play(globalPosition); + // Because of the asynchronous nature of initalization, it is possible for this function to be + // called before the C++ has set the globalPosition context variable. + if (typeof globalPosition !== 'undefined') { + buttonClickSound.play(globalPosition); + } } Loader { From bff0eeef75468685508fb78d082f72e8e4c4f78f Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Tue, 24 Jan 2017 14:31:57 -0800 Subject: [PATCH 2/2] Added username to tablet header --- .../resources/qml/hifi/tablet/Tablet.qml | 29 ++++++++++++++----- .../resources/qml/hifi/tablet/TabletRoot.qml | 5 ++++ .../src/TabletScriptingInterface.cpp | 23 ++++++++++++++- 3 files changed, 48 insertions(+), 9 deletions(-) diff --git a/interface/resources/qml/hifi/tablet/Tablet.qml b/interface/resources/qml/hifi/tablet/Tablet.qml index 9ca230b577..08e0599a50 100644 --- a/interface/resources/qml/hifi/tablet/Tablet.qml +++ b/interface/resources/qml/hifi/tablet/Tablet.qml @@ -1,5 +1,6 @@ import QtQuick 2.0 import QtGraphicalEffects 1.0 +import "../../styles-uit" Item { id: tablet @@ -98,8 +99,10 @@ Item { Item { id: item1 - width: 225 + width: 170 height: 10 + anchors.left: parent.left + anchors.leftMargin: 50 anchors.verticalCenter: parent.verticalCenter Rectangle { id: audioBarBase @@ -123,18 +126,18 @@ Item { anchors.fill: audioBarMask source: audioBarMask start: Qt.point(0, 0) - end: Qt.point(225, 0) + end: Qt.point(170, 0) gradient: Gradient { GradientStop { position: 0 color: "#2c8e72" } GradientStop { - position: 0.9 + position: 0.8 color: "#1fc6a6" } GradientStop { - position: 0.91 + position: 0.81 color: "#ea4c5f" } GradientStop { @@ -144,6 +147,17 @@ Item { } } } + + RalewaySemiBold { + id: usernameText + text: tablet.parent.parent.username + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + anchors.rightMargin: 0 + horizontalAlignment: Text.AlignRight + font.pixelSize: 20 + color: "#afafaf" + } } } @@ -229,7 +243,7 @@ Item { }; setCurrentItemState("hover state"); } - + function previousItem() { setCurrentItemState("base state"); var prevIndex = (columnIndex + 3 - 1) % 3; @@ -238,7 +252,7 @@ Item { } setCurrentItemState("hover state"); } - + function upItem() { setCurrentItemState("base state"); rowIndex = rowIndex - 3; @@ -251,7 +265,7 @@ Item { } setCurrentItemState("hover state"); } - + function downItem() { setCurrentItemState("base state"); rowIndex = rowIndex + 3; @@ -275,4 +289,3 @@ Item { Keys.onUpPressed: upItem(); Keys.onReturnPressed: selectItem(); } - diff --git a/interface/resources/qml/hifi/tablet/TabletRoot.qml b/interface/resources/qml/hifi/tablet/TabletRoot.qml index 99559fc984..ded91a5eff 100644 --- a/interface/resources/qml/hifi/tablet/TabletRoot.qml +++ b/interface/resources/qml/hifi/tablet/TabletRoot.qml @@ -4,6 +4,7 @@ import Hifi 1.0 Item { id: tabletRoot objectName: "tabletRoot" + property string username: "Unknown user" property var eventBridge; signal showDesktop(); @@ -30,6 +31,10 @@ Item { } } + function setUsername(newUsername) { + username = newUsername; + } + Loader { id: loader objectName: "loader" diff --git a/libraries/script-engine/src/TabletScriptingInterface.cpp b/libraries/script-engine/src/TabletScriptingInterface.cpp index 60aa63952d..944da0aa8d 100644 --- a/libraries/script-engine/src/TabletScriptingInterface.cpp +++ b/libraries/script-engine/src/TabletScriptingInterface.cpp @@ -11,6 +11,7 @@ #include #include +#include #include #include #include "ScriptEngineLogging.h" @@ -166,6 +167,16 @@ static void addButtonProxyToQmlTablet(QQuickItem* qmlTablet, TabletButtonProxy* buttonProxy->setQmlButton(qobject_cast(qmlButton)); } +static QString getUsername() { + QString username = "Unknown user"; + auto accountManager = DependencyManager::get(); + if (accountManager->isLoggedIn()) { + return accountManager->getAccountInfo().getUsername(); + } else { + return "Unknown user"; + } +} + void TabletProxy::setQmlTabletRoot(QQuickItem* qmlTabletRoot, QObject* qmlOffscreenSurface) { std::lock_guard guard(_mutex); _qmlOffscreenSurface = qmlOffscreenSurface; @@ -173,6 +184,16 @@ void TabletProxy::setQmlTabletRoot(QQuickItem* qmlTabletRoot, QObject* qmlOffscr if (_qmlTabletRoot && _qmlOffscreenSurface) { QObject::connect(_qmlOffscreenSurface, SIGNAL(webEventReceived(QVariant)), this, SIGNAL(webEventReceived(QVariant))); gotoHomeScreen(); + + QMetaObject::invokeMethod(_qmlTabletRoot, "setUsername", Q_ARG(const QVariant&, QVariant(getUsername()))); + + // hook up username changed signal. + auto accountManager = DependencyManager::get(); + QObject::connect(accountManager.data(), &AccountManager::profileChanged, [this]() { + if (_qmlTabletRoot) { + QMetaObject::invokeMethod(_qmlTabletRoot, "setUsername", Q_ARG(const QVariant&, QVariant(getUsername()))); + } + }); } else { removeButtonsFromHomeScreen(); _state = State::Uninitialized; @@ -196,7 +217,7 @@ void TabletProxy::gotoHomeScreen() { auto loader = _qmlTabletRoot->findChild("loader"); QObject::connect(loader, SIGNAL(loaded()), this, SLOT(addButtonsToHomeScreen())); QMetaObject::invokeMethod(_qmlTabletRoot, "loadSource", Q_ARG(const QVariant&, QVariant(TABLET_SOURCE_URL))); - QMetaObject::invokeMethod(_qmlTabletRoot, "playButtonClickSound"); + QMetaObject::invokeMethod(_qmlTabletRoot, "playButtonClickSound"); _state = State::Home; } }