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/5] 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/5] 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; } } From 95a92fc5ebfaa3d5ee9b525d459c3a568cfed08c Mon Sep 17 00:00:00 2001 From: Faye Li Date: Tue, 24 Jan 2017 14:42:28 -0800 Subject: [PATCH 3/5] added tablet button --- scripts/system/users.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/scripts/system/users.js b/scripts/system/users.js index 8c52240aa9..372bbb781d 100644 --- a/scripts/system/users.js +++ b/scripts/system/users.js @@ -13,6 +13,18 @@ (function() { // BEGIN LOCAL_SCOPE +// create tablet button +var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); +var button = tablet.addButton({ + icon: "icons/tablet-icons/people-i.svg", + text: "Users" +}); +function onClicked() { + // hide/show users overlays + +} +button.clicked.connect(onClicked); + // resolve these paths immediately var MIN_MAX_BUTTON_SVG = Script.resolvePath("assets/images/tools/min-max-toggle.svg"); var BASE_URL = Script.resolvePath("assets/images/tools/"); @@ -1234,4 +1246,11 @@ var usersWindow = (function () { Script.scriptEnding.connect(tearDown); }()); +function cleanup () { + //remove tablet button + button.clicked.disconnect(onClicked); + tablet.removeButton(button); +} +Script.scriptEnding.connect(cleanup); + }()); // END LOCAL_SCOPE From 5bed68ac4c75db32689a09b56918c13d4a1fcc4d Mon Sep 17 00:00:00 2001 From: Faye Li Date: Tue, 24 Jan 2017 14:56:58 -0800 Subject: [PATCH 4/5] button toggle --- scripts/system/users.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/scripts/system/users.js b/scripts/system/users.js index 372bbb781d..83eefd9aba 100644 --- a/scripts/system/users.js +++ b/scripts/system/users.js @@ -19,9 +19,16 @@ var button = tablet.addButton({ icon: "icons/tablet-icons/people-i.svg", text: "Users" }); +var showUsersOverlays = false; function onClicked() { + print(showUsersOverlays); // hide/show users overlays - + if (showUsersOverlays) { + showUsersOverlays = false; + } else { + showUsersOverlays = true; + } + button.editProperties({isActive: showUsersOverlays}); } button.clicked.connect(onClicked); From 71b60966445319d2754942212bf3ad98715dd016 Mon Sep 17 00:00:00 2001 From: Faye Li Date: Tue, 24 Jan 2017 15:12:46 -0800 Subject: [PATCH 5/5] toggle menu item --- scripts/system/users.js | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/scripts/system/users.js b/scripts/system/users.js index 83eefd9aba..4c9663e203 100644 --- a/scripts/system/users.js +++ b/scripts/system/users.js @@ -12,23 +12,17 @@ // (function() { // BEGIN LOCAL_SCOPE - +var MENU_ITEM = "Users Online"; // create tablet button var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); var button = tablet.addButton({ icon: "icons/tablet-icons/people-i.svg", - text: "Users" + text: "Users", + isActive: Menu.isOptionChecked(MENU_ITEM) }); -var showUsersOverlays = false; function onClicked() { - print(showUsersOverlays); - // hide/show users overlays - if (showUsersOverlays) { - showUsersOverlays = false; - } else { - showUsersOverlays = true; - } - button.editProperties({isActive: showUsersOverlays}); + Menu.setIsOptionChecked(MENU_ITEM, !Menu.isOptionChecked(MENU_ITEM)); + button.editProperties({isActive: Menu.isOptionChecked(MENU_ITEM)}); } button.clicked.connect(onClicked);