mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 17:49:27 +02:00
tablet pages
This commit is contained in:
parent
b9c7d6351f
commit
86c67a3017
5 changed files with 117 additions and 3 deletions
|
@ -66,7 +66,12 @@ TabletModalWindow {
|
||||||
HifiConstants { id: hifi }
|
HifiConstants { id: hifi }
|
||||||
|
|
||||||
onCanceled: {
|
onCanceled: {
|
||||||
loginDialogRoot.Stack.view.pop()
|
if (loginDialogRoot.Stack.view) {
|
||||||
|
loginDialogRoot.Stack.view.pop();
|
||||||
|
} else {
|
||||||
|
var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system");
|
||||||
|
tablet.returnToPreviousApp();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LoginDialog {
|
LoginDialog {
|
||||||
|
|
|
@ -14,6 +14,8 @@ Item {
|
||||||
property string subMenu: ""
|
property string subMenu: ""
|
||||||
signal showDesktop();
|
signal showDesktop();
|
||||||
property bool shown: true
|
property bool shown: true
|
||||||
|
property int currentApp: -1;
|
||||||
|
property alias tabletApps: tabletApps
|
||||||
|
|
||||||
function setOption(value) {
|
function setOption(value) {
|
||||||
option = value;
|
option = value;
|
||||||
|
@ -56,13 +58,47 @@ Item {
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadSource(url) {
|
function loadSource(url) {
|
||||||
|
tabletApps.clear();
|
||||||
loader.source = ""; // make sure we load the qml fresh each time.
|
loader.source = ""; // make sure we load the qml fresh each time.
|
||||||
loader.source = url;
|
loader.source = url;
|
||||||
|
//tabletApps.append({appUrl: url, isWebUrl: false, scriptUrl: ""});
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadQMLOnTop(url) {
|
||||||
|
tabletApps.append({"appUrl": url, "isWebUrl": false, "scriptUrl": ""});
|
||||||
|
loader.source = "";
|
||||||
|
loader.source = tabletApps.get(currentApp).appUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadWebOnTop(url, injectJavaScriptUrl) {
|
||||||
|
tabletApps.append({"appUrl": loader.source, "isWebUrl": true, "scriptUrl": injectJavaScriptUrl, "appWebUrl": url});
|
||||||
|
loader.item.url = tabletApps.get(currentApp).appWebUrl;
|
||||||
|
loader.item.scriptUrl = tabletApps.get(currentApp).scriptUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
function returnToPreviousApp() {
|
||||||
|
loader.source = "";
|
||||||
|
tabletApps.remove(currentApp);
|
||||||
|
var isWebPage = tabletApps.get(currentApp).isWebUrl;
|
||||||
|
console.log(isWebPage);
|
||||||
|
if (isWebPage) {
|
||||||
|
console.log(tabletApps.get(currentApp).appUrl);
|
||||||
|
loader.source = tabletApps.get(currentApp).appUrl;
|
||||||
|
console.log(tabletApps.get(currentApp).appWebUrl);
|
||||||
|
console.log(tabletApps.get(currentApp).scriptUrl);
|
||||||
|
loader.item.url = tabletApps.get(currentApp).appWebUrl;
|
||||||
|
loader.item.scriptUrl = tabletApps.get(currentApp).scriptUrl;
|
||||||
|
} else {
|
||||||
|
console.log(tabletApps.get(currentApp).appUrl);
|
||||||
|
loader.source = tabletApps.get(currentApp).appUrl;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadWebUrl(url, injectedJavaScriptUrl) {
|
function loadWebUrl(url, injectedJavaScriptUrl) {
|
||||||
loader.item.url = url;
|
loader.item.url = url;
|
||||||
loader.item.scriptURL = injectedJavaScriptUrl;
|
loader.item.scriptURL = injectedJavaScriptUrl;
|
||||||
|
var appUrl = loader.source;
|
||||||
|
tabletApps.append({"appUrl": "Tablet.qml", "isWebUrl": true, "scriptUrl": injectedJavaScriptUrl, "appWebUrl": url});
|
||||||
}
|
}
|
||||||
|
|
||||||
// used to send a message from qml to interface script.
|
// used to send a message from qml to interface script.
|
||||||
|
@ -97,6 +133,14 @@ Item {
|
||||||
username = newUsername;
|
username = newUsername;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ListModel {
|
||||||
|
id: tabletApps
|
||||||
|
onCountChanged: {
|
||||||
|
currentApp = count;
|
||||||
|
console.log("[DR] -> the currnet count: " + currentApp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Loader {
|
Loader {
|
||||||
id: loader
|
id: loader
|
||||||
objectName: "loader"
|
objectName: "loader"
|
||||||
|
|
|
@ -349,6 +349,38 @@ void TabletProxy::gotoMenuScreen(const QString& submenu) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TabletProxy::loadQMLOnTop(const QVariant& path) {
|
||||||
|
QObject* root = nullptr;
|
||||||
|
if (!_toolbarMode && _qmlTabletRoot) {
|
||||||
|
root = _qmlTabletRoot;
|
||||||
|
} else if (_toolbarMode && _desktopWindow) {
|
||||||
|
root = _desktopWindow->asQuickItem();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (root) {
|
||||||
|
QMetaObject::invokeMethod(root, "loadQMLOnTop", Q_ARG(const QVariant&, path));
|
||||||
|
QMetaObject::invokeMethod(root, "setShown", Q_ARG(const QVariant&, QVariant(true)));
|
||||||
|
} else {
|
||||||
|
qCDebug(scriptengine) << "tablet cannot load QML because _qmlTabletRoot is null";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TabletProxy::returnToPreviousApp() {
|
||||||
|
QObject* root = nullptr;
|
||||||
|
if (!_toolbarMode && _qmlTabletRoot) {
|
||||||
|
root = _qmlTabletRoot;
|
||||||
|
} else if (_toolbarMode && _desktopWindow) {
|
||||||
|
root = _desktopWindow->asQuickItem();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (root) {
|
||||||
|
QMetaObject::invokeMethod(root, "returnToPreviousApp");
|
||||||
|
QMetaObject::invokeMethod(root, "setShown", Q_ARG(const QVariant&, QVariant(true)));
|
||||||
|
} else {
|
||||||
|
qCDebug(scriptengine) << "tablet cannot load QML because _qmlTabletRoot is null";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void TabletProxy::loadQMLSource(const QVariant& path) {
|
void TabletProxy::loadQMLSource(const QVariant& path) {
|
||||||
|
|
||||||
QObject* root = nullptr;
|
QObject* root = nullptr;
|
||||||
|
@ -433,6 +465,26 @@ void TabletProxy::gotoWebScreen(const QString& url) {
|
||||||
gotoWebScreen(url, "");
|
gotoWebScreen(url, "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TabletProxy::loadWebScreenOnTop(const QVariant& url) {
|
||||||
|
loadWebScreenOnTop(url, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
void TabletProxy::loadWebScreenOnTop(const QVariant& url, const QString& injectJavaScriptUrl) {
|
||||||
|
QObject* root = nullptr;
|
||||||
|
if (!_toolbarMode && _qmlTabletRoot) {
|
||||||
|
root = _qmlTabletRoot;
|
||||||
|
} else if (_toolbarMode && _desktopWindow) {
|
||||||
|
root = _desktopWindow->asQuickItem();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (root) {
|
||||||
|
QMetaObject::invokeMethod(root, "loadQMLOnTop", Q_ARG(const QVariant&, QVariant(WEB_VIEW_SOURCE_URL)));
|
||||||
|
QMetaObject::invokeMethod(root, "setShown", Q_ARG(const QVariant&, QVariant(true)));
|
||||||
|
QMetaObject::invokeMethod(root, "loadWebOnTop", Q_ARG(const QVariant&, QVariant(url)), Q_ARG(const QVariant&, QVariant(injectJavaScriptUrl)));
|
||||||
|
}
|
||||||
|
_state = State::Web;
|
||||||
|
}
|
||||||
|
|
||||||
void TabletProxy::gotoWebScreen(const QString& url, const QString& injectedJavaScriptUrl) {
|
void TabletProxy::gotoWebScreen(const QString& url, const QString& injectedJavaScriptUrl) {
|
||||||
|
|
||||||
QObject* root = nullptr;
|
QObject* root = nullptr;
|
||||||
|
|
|
@ -120,6 +120,13 @@ public:
|
||||||
Q_INVOKABLE void pushOntoStack(const QVariant& path);
|
Q_INVOKABLE void pushOntoStack(const QVariant& path);
|
||||||
Q_INVOKABLE void popFromStack();
|
Q_INVOKABLE void popFromStack();
|
||||||
|
|
||||||
|
Q_INVOKABLE void loadQMLOnTop(const QVariant& path);
|
||||||
|
Q_INVOKABLE void loadWebScreenOnTop(const QVariant& url);
|
||||||
|
Q_INVOKABLE void loadWebScreenOnTop(const QVariant& url, const QString& injectedJavaScriptUrl);
|
||||||
|
Q_INVOKABLE void returnToPreviousApp();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** jsdoc
|
/** jsdoc
|
||||||
* Check if the tablet has a message dialog open
|
* Check if the tablet has a message dialog open
|
||||||
* @function TabletProxy#isMessageDialogOpen
|
* @function TabletProxy#isMessageDialogOpen
|
||||||
|
|
|
@ -70,7 +70,7 @@ function onMessage(message) {
|
||||||
|| (!HMD.active && Settings.getValue("desktopTabletBecomesToolbar"))) {
|
|| (!HMD.active && Settings.getValue("desktopTabletBecomesToolbar"))) {
|
||||||
Desktop.show("hifi/dialogs/GeneralPreferencesDialog.qml", "General Preferences");
|
Desktop.show("hifi/dialogs/GeneralPreferencesDialog.qml", "General Preferences");
|
||||||
} else {
|
} else {
|
||||||
tablet.loadQMLSource("TabletGeneralPreferences.qml");
|
tablet.loadQMLOnTop("TabletGeneralPreferences.qml");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'setOpenFeedFalse':
|
case 'setOpenFeedFalse':
|
||||||
|
@ -96,12 +96,18 @@ function onMessage(message) {
|
||||||
} else {
|
} else {
|
||||||
print('not sharing', submessage.localPath);
|
print('not sharing', submessage.localPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
if (!outstanding && shouldOpenFeedAfterShare()) {
|
if (!outstanding && shouldOpenFeedAfterShare()) {
|
||||||
//showFeedWindow();
|
//showFeedWindow();
|
||||||
}
|
}
|
||||||
if (needsLogin) { // after the possible feed, so that the login is on top
|
if (needsLogin) { // after the possible feed, so that the login is on top
|
||||||
Account.checkAndSignalForAccessToken();
|
var isLoggedIn = Account.isLoggedIn();
|
||||||
|
|
||||||
|
if (!isLoggedIn) {
|
||||||
|
tablet.loadQMLOnTop("../../dialogs/TabletLoginDialog.qml");
|
||||||
|
HMD.openTablet();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue