From 86c67a3017eae916deceb22810d5030e99976d0b Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Sat, 8 Apr 2017 02:01:21 +0100 Subject: [PATCH 1/6] tablet pages --- .../qml/dialogs/TabletLoginDialog.qml | 7 ++- .../resources/qml/hifi/tablet/TabletRoot.qml | 44 ++++++++++++++++ .../src/TabletScriptingInterface.cpp | 52 +++++++++++++++++++ .../src/TabletScriptingInterface.h | 7 +++ scripts/system/snapshot.js | 10 +++- 5 files changed, 117 insertions(+), 3 deletions(-) diff --git a/interface/resources/qml/dialogs/TabletLoginDialog.qml b/interface/resources/qml/dialogs/TabletLoginDialog.qml index 78e5edebb5..89e94c3a57 100644 --- a/interface/resources/qml/dialogs/TabletLoginDialog.qml +++ b/interface/resources/qml/dialogs/TabletLoginDialog.qml @@ -66,7 +66,12 @@ TabletModalWindow { HifiConstants { id: hifi } 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 { diff --git a/interface/resources/qml/hifi/tablet/TabletRoot.qml b/interface/resources/qml/hifi/tablet/TabletRoot.qml index f5144e698f..8214c5452c 100644 --- a/interface/resources/qml/hifi/tablet/TabletRoot.qml +++ b/interface/resources/qml/hifi/tablet/TabletRoot.qml @@ -14,6 +14,8 @@ Item { property string subMenu: "" signal showDesktop(); property bool shown: true + property int currentApp: -1; + property alias tabletApps: tabletApps function setOption(value) { option = value; @@ -56,13 +58,47 @@ Item { } function loadSource(url) { + tabletApps.clear(); loader.source = ""; // make sure we load the qml fresh each time. 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) { loader.item.url = url; 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. @@ -97,6 +133,14 @@ Item { username = newUsername; } + ListModel { + id: tabletApps + onCountChanged: { + currentApp = count; + console.log("[DR] -> the currnet count: " + currentApp); + } + } + Loader { id: loader objectName: "loader" diff --git a/libraries/script-engine/src/TabletScriptingInterface.cpp b/libraries/script-engine/src/TabletScriptingInterface.cpp index b4d8977b6d..bf207d361a 100644 --- a/libraries/script-engine/src/TabletScriptingInterface.cpp +++ b/libraries/script-engine/src/TabletScriptingInterface.cpp @@ -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) { QObject* root = nullptr; @@ -433,6 +465,26 @@ void TabletProxy::gotoWebScreen(const QString& 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) { QObject* root = nullptr; diff --git a/libraries/script-engine/src/TabletScriptingInterface.h b/libraries/script-engine/src/TabletScriptingInterface.h index e9ae60fee1..fc586957cd 100644 --- a/libraries/script-engine/src/TabletScriptingInterface.h +++ b/libraries/script-engine/src/TabletScriptingInterface.h @@ -120,6 +120,13 @@ public: Q_INVOKABLE void pushOntoStack(const QVariant& path); 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 * Check if the tablet has a message dialog open * @function TabletProxy#isMessageDialogOpen diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index 8f393846c0..479545791d 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -70,7 +70,7 @@ function onMessage(message) { || (!HMD.active && Settings.getValue("desktopTabletBecomesToolbar"))) { Desktop.show("hifi/dialogs/GeneralPreferencesDialog.qml", "General Preferences"); } else { - tablet.loadQMLSource("TabletGeneralPreferences.qml"); + tablet.loadQMLOnTop("TabletGeneralPreferences.qml"); } break; case 'setOpenFeedFalse': @@ -96,12 +96,18 @@ function onMessage(message) { } else { print('not sharing', submessage.localPath); } + }); if (!outstanding && shouldOpenFeedAfterShare()) { //showFeedWindow(); } 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(); + } } } } From 92bb7f2329df832ca6028c85b9b9ae2f4d3db19c Mon Sep 17 00:00:00 2001 From: druiz17 Date: Sun, 9 Apr 2017 18:55:53 -0700 Subject: [PATCH 2/6] saving work --- .../resources/qml/hifi/tablet/TabletRoot.qml | 20 ++++++++----------- .../tabletWindows/TabletPreferencesDialog.qml | 2 +- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/interface/resources/qml/hifi/tablet/TabletRoot.qml b/interface/resources/qml/hifi/tablet/TabletRoot.qml index 8214c5452c..4bbcb201bc 100644 --- a/interface/resources/qml/hifi/tablet/TabletRoot.qml +++ b/interface/resources/qml/hifi/tablet/TabletRoot.qml @@ -61,33 +61,31 @@ Item { tabletApps.clear(); loader.source = ""; // make sure we load the qml fresh each time. loader.source = url; - //tabletApps.append({appUrl: url, isWebUrl: false, scriptUrl: ""}); } function loadQMLOnTop(url) { + console.log("[DR] -> loading the url: " + url); tabletApps.append({"appUrl": url, "isWebUrl": false, "scriptUrl": ""}); loader.source = ""; loader.source = tabletApps.get(currentApp).appUrl; } function loadWebOnTop(url, injectJavaScriptUrl) { + console.log("[DR] -> loading the url: " + url); 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; + var webUrl = tabletApps.get(currentApp).appWebUrl; + var scriptUrl = tabletApps.get(currentApp).scriptUrl; + loadSource("TabletWebView.qml"); + loadWebUrl(webUrl, scriptUrl); } else { console.log(tabletApps.get(currentApp).appUrl); loader.source = tabletApps.get(currentApp).appUrl; @@ -97,8 +95,7 @@ Item { function loadWebUrl(url, injectedJavaScriptUrl) { loader.item.url = url; loader.item.scriptURL = injectedJavaScriptUrl; - var appUrl = loader.source; - tabletApps.append({"appUrl": "Tablet.qml", "isWebUrl": true, "scriptUrl": injectedJavaScriptUrl, "appWebUrl": url}); + tabletApps.append({"appUrl": "TabletWebView.qml", "isWebUrl": true, "scriptUrl": injectedJavaScriptUrl, "appWebUrl": url}); } // used to send a message from qml to interface script. @@ -136,8 +133,7 @@ Item { ListModel { id: tabletApps onCountChanged: { - currentApp = count; - console.log("[DR] -> the currnet count: " + currentApp); + currentApp = count - 1 } } diff --git a/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml b/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml index c96099a78a..7ce0a6d714 100644 --- a/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml +++ b/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml @@ -55,7 +55,7 @@ Item { } function closeDialog() { - Tablet.getTablet("com.highfidelity.interface.tablet.system").gotoHomeScreen(); + Tablet.getTablet("com.highfidelity.interface.tablet.system").returnToPreviousApp(); } Rectangle { From 4e94aaa9e848041ded416c79b625ccab7cee45a8 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Mon, 10 Apr 2017 20:58:10 +0100 Subject: [PATCH 3/6] finished allowing to go back to previous app --- .../qml/dialogs/TabletLoginDialog.qml | 5 ++-- .../hifi/tablet/TabletGeneralPreferences.qml | 2 +- .../resources/qml/hifi/tablet/TabletRoot.qml | 14 ++++++---- .../tabletWindows/TabletPreferencesDialog.qml | 9 +++++- .../src/TabletScriptingInterface.h | 2 +- scripts/system/snapshot.js | 28 ++++++++++++++----- 6 files changed, 43 insertions(+), 17 deletions(-) diff --git a/interface/resources/qml/dialogs/TabletLoginDialog.qml b/interface/resources/qml/dialogs/TabletLoginDialog.qml index 89e94c3a57..7523d0406d 100644 --- a/interface/resources/qml/dialogs/TabletLoginDialog.qml +++ b/interface/resources/qml/dialogs/TabletLoginDialog.qml @@ -23,7 +23,7 @@ TabletModalWindow { property var eventBridge; signal sendToScript(var message); property bool isHMD: false - + property bool gotoPreviousApp: false; color: hifi.colors.baseGray property int colorScheme: hifi.colorSchemes.dark @@ -68,10 +68,11 @@ TabletModalWindow { onCanceled: { if (loginDialogRoot.Stack.view) { loginDialogRoot.Stack.view.pop(); - } else { + } else if (gotoPreviousApp) { var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); tablet.returnToPreviousApp(); } + } LoginDialog { diff --git a/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml b/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml index 6fc29ac920..d23daddd8d 100644 --- a/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml +++ b/interface/resources/qml/hifi/tablet/TabletGeneralPreferences.qml @@ -18,7 +18,7 @@ StackView { initialItem: root objectName: "stack" property string title: "General Settings" - + property alias gotoPreviousApp: root.gotoPreviousApp; property var eventBridge; signal sendToScript(var message); diff --git a/interface/resources/qml/hifi/tablet/TabletRoot.qml b/interface/resources/qml/hifi/tablet/TabletRoot.qml index 4bbcb201bc..446d4c91ff 100644 --- a/interface/resources/qml/hifi/tablet/TabletRoot.qml +++ b/interface/resources/qml/hifi/tablet/TabletRoot.qml @@ -61,38 +61,42 @@ Item { tabletApps.clear(); loader.source = ""; // make sure we load the qml fresh each time. loader.source = url; + tabletApps.append({"appUrl": url, "isWebUrl": false, "scriptUrl": "", "appWebUrl": ""}); } function loadQMLOnTop(url) { - console.log("[DR] -> loading the url: " + url); - tabletApps.append({"appUrl": url, "isWebUrl": false, "scriptUrl": ""}); + tabletApps.append({"appUrl": url, "isWebUrl": false, "scriptUrl": "", "appWebUrl": ""}); loader.source = ""; loader.source = tabletApps.get(currentApp).appUrl; + if (loader.item.hasOwnProperty("gotoPreviousApp")) { + loader.item.gotoPreviousApp = true; + } } function loadWebOnTop(url, injectJavaScriptUrl) { - console.log("[DR] -> loading the url: " + url); 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; + if (loader.item.hasOwnProperty("gotoPreviousApp")) { + loader.item.gotoPreviousApp = true; + } } function returnToPreviousApp() { tabletApps.remove(currentApp); var isWebPage = tabletApps.get(currentApp).isWebUrl; - console.log(isWebPage); if (isWebPage) { var webUrl = tabletApps.get(currentApp).appWebUrl; var scriptUrl = tabletApps.get(currentApp).scriptUrl; loadSource("TabletWebView.qml"); loadWebUrl(webUrl, scriptUrl); } else { - console.log(tabletApps.get(currentApp).appUrl); loader.source = tabletApps.get(currentApp).appUrl; } } function loadWebUrl(url, injectedJavaScriptUrl) { + tabletApps.clear(); loader.item.url = url; loader.item.scriptURL = injectedJavaScriptUrl; tabletApps.append({"appUrl": "TabletWebView.qml", "isWebUrl": true, "scriptUrl": injectedJavaScriptUrl, "appWebUrl": url}); diff --git a/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml b/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml index 7ce0a6d714..2c8f6d9ea0 100644 --- a/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml +++ b/interface/resources/qml/hifi/tablet/tabletWindows/TabletPreferencesDialog.qml @@ -31,6 +31,7 @@ Item { property bool keyboardEnabled: false property bool keyboardRaised: false property bool punctuationMode: false + property bool gotoPreviousApp: false property var tablet; @@ -55,7 +56,13 @@ Item { } function closeDialog() { - Tablet.getTablet("com.highfidelity.interface.tablet.system").returnToPreviousApp(); + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + + if (gotoPreviousApp) { + tablet.returnToPreviousApp(); + } else { + tablet.gotoHomeScreen(); + } } Rectangle { diff --git a/libraries/script-engine/src/TabletScriptingInterface.h b/libraries/script-engine/src/TabletScriptingInterface.h index fc586957cd..be056dbf6f 100644 --- a/libraries/script-engine/src/TabletScriptingInterface.h +++ b/libraries/script-engine/src/TabletScriptingInterface.h @@ -99,7 +99,7 @@ public: bool getToolbarMode() const { return _toolbarMode; } void setToolbarMode(bool toolbarMode); - void initialScreen(const QVariant& url); + Q_INVOKABLE void initialScreen(const QVariant& url); /**jsdoc * transition to the home screen diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index 479545791d..78b9f210ba 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -37,13 +37,15 @@ function showFeedWindow() { || (!HMD.active && Settings.getValue("desktopTabletBecomesToolbar"))) { DialogsManager.showFeed(); } else { - tablet.loadQMLSource("TabletAddressDialog.qml"); + tablet.initialScreen("TabletAddressDialog.qml"); HMD.openTablet(); } } var outstanding; var readyData; +var shareAfterLogin = false; +var snapshotToShareAfterLogin; function onMessage(message) { // Receives message from the html dialog via the qwebchannel EventBridge. This is complicated by the following: // 1. Although we can send POJOs, we cannot receive a toplevel object. (Arrays of POJOs are fine, though.) @@ -82,24 +84,27 @@ function onMessage(message) { default: //tablet.webEventReceived.disconnect(onMessage); // <<< It's probably this that's missing?! HMD.closeTablet(); - tablet.gotoHomeScreen(); isLoggedIn = Account.isLoggedIn(); message.action.forEach(function (submessage) { if (submessage.share && !isLoggedIn) { needsLogin = true; submessage.share = false; + shareAfterLogin = true; + snapshotToShareAfterLogin = {path: submessage.localPath, href: submessage.href}; } if (submessage.share) { print('sharing', submessage.localPath); - outstanding++; - Window.shareSnapshot(submessage.localPath, submessage.href); + outstanding = true; + //Window.shareSnapshot(submessage.localPath, submessage.href); } else { print('not sharing', submessage.localPath); } }); - if (!outstanding && shouldOpenFeedAfterShare()) { - //showFeedWindow(); + print(shouldOpenFeedAfterShare()); + if (outstanding && shouldOpenFeedAfterShare()) { + showFeedWindow(); + outstanding = false; } if (needsLogin) { // after the possible feed, so that the login is on top var isLoggedIn = Account.isLoggedIn(); @@ -241,13 +246,22 @@ function onTabletScreenChanged(type, url) { isInSnapshotReview = false; } } +function onConnected() { + if (shareAfterLogin && Account.isLoggedIn()) { + print('sharing', snapshotToShareAfterLogin.path); + Window.shareSnapshot(snapshotToShareAfterLogin.path, snapshotToShareAfterLogin.href); + shareAfterLogin = false; + showFeedWindow(); + } + +} button.clicked.connect(onClicked); buttonConnected = true; Window.snapshotShared.connect(snapshotShared); Window.processingGif.connect(processingGif); tablet.screenChanged.connect(onTabletScreenChanged); - +Account.usernameChanged.connect(onConnected); Script.scriptEnding.connect(function () { if (buttonConnected) { button.clicked.disconnect(onClicked); From 6922ba5c77f2536a6db49eb893f9892cbeea0096 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Mon, 10 Apr 2017 21:08:40 +0100 Subject: [PATCH 4/6] removed unnessary prints --- scripts/system/snapshot.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index 78b9f210ba..fd13e436d6 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -95,13 +95,12 @@ function onMessage(message) { if (submessage.share) { print('sharing', submessage.localPath); outstanding = true; - //Window.shareSnapshot(submessage.localPath, submessage.href); + Window.shareSnapshot(submessage.localPath, submessage.href); } else { print('not sharing', submessage.localPath); } }); - print(shouldOpenFeedAfterShare()); if (outstanding && shouldOpenFeedAfterShare()) { showFeedWindow(); outstanding = false; From df6498c67ca80c88ed989e19b57ab52d7b26a438 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Mon, 10 Apr 2017 21:59:37 +0100 Subject: [PATCH 5/6] fix snapshot login for toolbar-mode --- scripts/system/snapshot.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index fd13e436d6..6255842a63 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -35,7 +35,7 @@ function shouldOpenFeedAfterShare() { function showFeedWindow() { if ((HMD.active && Settings.getValue("hmdTabletBecomesToolbar")) || (!HMD.active && Settings.getValue("desktopTabletBecomesToolbar"))) { - DialogsManager.showFeed(); + tablet.loadQMLSource("TabletAddressDialog.qml"); } else { tablet.initialScreen("TabletAddressDialog.qml"); HMD.openTablet(); @@ -109,8 +109,13 @@ function onMessage(message) { var isLoggedIn = Account.isLoggedIn(); if (!isLoggedIn) { - tablet.loadQMLOnTop("../../dialogs/TabletLoginDialog.qml"); - HMD.openTablet(); + if ((HMD.active && Settings.getValue("hmdTabletBecomesToolbar")) + || (!HMD.active && Settings.getValue("desktopTabletBecomesToolbar"))) { + Menu.triggerOption("Login / Sign Up"); + } else { + tablet.loadQMLOnTop("../../dialogs/TabletLoginDialog.qml"); + HMD.openTablet(); + } } } } From 382204a9a98bba7a1885ca22c2628ff81f5967b1 Mon Sep 17 00:00:00 2001 From: Dante Ruiz Date: Mon, 10 Apr 2017 22:33:07 +0100 Subject: [PATCH 6/6] open feed after logging in --- scripts/system/snapshot.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/scripts/system/snapshot.js b/scripts/system/snapshot.js index 6255842a63..76f72d97e1 100644 --- a/scripts/system/snapshot.js +++ b/scripts/system/snapshot.js @@ -255,7 +255,9 @@ function onConnected() { print('sharing', snapshotToShareAfterLogin.path); Window.shareSnapshot(snapshotToShareAfterLogin.path, snapshotToShareAfterLogin.href); shareAfterLogin = false; - showFeedWindow(); + if (shouldOpenFeedAfterShare()) { + showFeedWindow(); + } } }