Merge pull request #9498 from hyperlogic/tablet-ui

Added username to tablet header
This commit is contained in:
Seth Alves 2017-01-24 15:19:16 -08:00 committed by GitHub
commit 990c7e6b28
3 changed files with 54 additions and 11 deletions

View file

@ -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();
}

View file

@ -4,10 +4,11 @@ import Hifi 1.0
Item {
id: tabletRoot
objectName: "tabletRoot"
property string username: "Unknown user"
property var eventBridge;
signal showDesktop();
function loadSource(url) {
loader.source = url;
}
@ -23,7 +24,15 @@ 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);
}
}
function setUsername(newUsername) {
username = newUsername;
}
Loader {

View file

@ -11,6 +11,7 @@
#include <QtCore/QThread>
#include <AudioInjector.h>
#include <AccountManager.h>
#include <PathUtils.h>
#include <RegisteredMetaTypes.h>
#include "ScriptEngineLogging.h"
@ -166,6 +167,16 @@ static void addButtonProxyToQmlTablet(QQuickItem* qmlTablet, TabletButtonProxy*
buttonProxy->setQmlButton(qobject_cast<QQuickItem*>(qmlButton));
}
static QString getUsername() {
QString username = "Unknown user";
auto accountManager = DependencyManager::get<AccountManager>();
if (accountManager->isLoggedIn()) {
return accountManager->getAccountInfo().getUsername();
} else {
return "Unknown user";
}
}
void TabletProxy::setQmlTabletRoot(QQuickItem* qmlTabletRoot, QObject* qmlOffscreenSurface) {
std::lock_guard<std::mutex> 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<AccountManager>();
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<QQuickItem*>("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;
}
}