mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 14:00:43 +02:00
staging
This commit is contained in:
parent
0fbb4fb37d
commit
28a950fe9f
11 changed files with 207 additions and 31 deletions
|
@ -1198,6 +1198,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
|
||||||
|
|
||||||
connect(&domainHandler, SIGNAL(domainURLChanged(QUrl)), SLOT(domainURLChanged(QUrl)));
|
connect(&domainHandler, SIGNAL(domainURLChanged(QUrl)), SLOT(domainURLChanged(QUrl)));
|
||||||
connect(&domainHandler, SIGNAL(redirectToErrorDomainURL(QUrl)), SLOT(goToErrorDomainURL(QUrl)));
|
connect(&domainHandler, SIGNAL(redirectToErrorDomainURL(QUrl)), SLOT(goToErrorDomainURL(QUrl)));
|
||||||
|
connect(this, SIGNAL(loginScreenStateChanged(bool)), &domainHandler, SLOT((loginScreenStateChanged(bool))));
|
||||||
connect(&domainHandler, &DomainHandler::domainURLChanged, [](QUrl domainURL){
|
connect(&domainHandler, &DomainHandler::domainURLChanged, [](QUrl domainURL){
|
||||||
setCrashAnnotation("domain", domainURL.toString().toStdString());
|
setCrashAnnotation("domain", domainURL.toString().toStdString());
|
||||||
});
|
});
|
||||||
|
@ -1212,6 +1213,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
|
||||||
connect(&domainHandler, &DomainHandler::domainConnectionRefused, this, &Application::domainConnectionRefused);
|
connect(&domainHandler, &DomainHandler::domainConnectionRefused, this, &Application::domainConnectionRefused);
|
||||||
|
|
||||||
nodeList->getDomainHandler().setErrorDomainURL(QUrl(REDIRECT_HIFI_ADDRESS));
|
nodeList->getDomainHandler().setErrorDomainURL(QUrl(REDIRECT_HIFI_ADDRESS));
|
||||||
|
nodeList->getDomainHandler().setLoginScreenDomainURL(QUrl(LOGIN_SCREEN_HIFI_ADDRESS));
|
||||||
|
|
||||||
// We could clear ATP assets only when changing domains, but it's possible that the domain you are connected
|
// We could clear ATP assets only when changing domains, but it's possible that the domain you are connected
|
||||||
// to has gone down and switched to a new content set, so when you reconnect the cached ATP assets will no longer be valid.
|
// to has gone down and switched to a new content set, so when you reconnect the cached ATP assets will no longer be valid.
|
||||||
|
@ -2277,6 +2279,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo
|
||||||
connect(this, &QCoreApplication::aboutToQuit, this, &Application::addAssetToWorldMessageClose);
|
connect(this, &QCoreApplication::aboutToQuit, this, &Application::addAssetToWorldMessageClose);
|
||||||
connect(&domainHandler, &DomainHandler::domainURLChanged, this, &Application::addAssetToWorldMessageClose);
|
connect(&domainHandler, &DomainHandler::domainURLChanged, this, &Application::addAssetToWorldMessageClose);
|
||||||
connect(&domainHandler, &DomainHandler::redirectToErrorDomainURL, this, &Application::addAssetToWorldMessageClose);
|
connect(&domainHandler, &DomainHandler::redirectToErrorDomainURL, this, &Application::addAssetToWorldMessageClose);
|
||||||
|
connect(&domainHandler, &DomainHandler::redirectToLoginScreenDomainURL, this, &Application::addAssetToWorldMessageClose);
|
||||||
|
|
||||||
updateSystemTabletMode();
|
updateSystemTabletMode();
|
||||||
|
|
||||||
|
@ -2878,22 +2881,31 @@ void Application::initializeRenderEngine() {
|
||||||
extern void setupPreferences();
|
extern void setupPreferences();
|
||||||
static void addDisplayPluginToMenu(const DisplayPluginPointer& displayPlugin, int index, bool active = false);
|
static void addDisplayPluginToMenu(const DisplayPluginPointer& displayPlugin, int index, bool active = false);
|
||||||
|
|
||||||
|
void Application::showLoginScreen() {
|
||||||
|
auto accountManager = DependencyManager::get<AccountManager>();
|
||||||
|
if (!accountManager->isLoggedIn()) {
|
||||||
|
Setting::Handle<bool>{"loginDialogPoppedUp", false}.set(true);
|
||||||
|
// dialogsManager->showLoginScreenDialog();
|
||||||
|
QJsonObject loginData = {};
|
||||||
|
loginData["action"] = "login dialog shown";
|
||||||
|
UserActivityLogger::getInstance().logAction("encourageLoginDialog", loginData);
|
||||||
|
if (qApp->isHMDMode()) {
|
||||||
|
// create web overlay.
|
||||||
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
|
auto loginScreenDomainURL = nodeList->getDomainHandler().getLoginScreenDomainURL();
|
||||||
|
goToLoginScreenDomainURL(loginScreenDomainURL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Setting::Handle<bool>{"loginDialogPoppedUp", false}.set(false);
|
||||||
|
}
|
||||||
|
|
||||||
void Application::initializeQml() {
|
void Application::initializeQml() {
|
||||||
if (QThread::currentThread() != thread()) {
|
if (QThread::currentThread() != thread()) {
|
||||||
QMetaObject::invokeMethod(this, "initializeQml");
|
QMetaObject::invokeMethod(this, "initializeQml");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#if !defined(Q_OS_ANDROID)
|
#if !defined(Q_OS_ANDROID)
|
||||||
auto accountManager = DependencyManager::get<AccountManager>();
|
showLoginScreen();
|
||||||
auto dialogsManager = DependencyManager::get<DialogsManager>();
|
|
||||||
if (!accountManager->isLoggedIn()) {
|
|
||||||
Setting::Handle<bool>{"loginDialogPoppedUp", false}.set(true);
|
|
||||||
dialogsManager->showLoginDialog();
|
|
||||||
QJsonObject loginData = {};
|
|
||||||
loginData["action"] = "login dialog shown";
|
|
||||||
UserActivityLogger::getInstance().logAction("encourageLoginDialog", loginData);
|
|
||||||
}
|
|
||||||
Setting::Handle<bool>{"loginDialogPoppedUp", false}.set(false);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3551,13 +3563,9 @@ void Application::setIsServerlessMode(bool serverlessDomain) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Application::loadServerlessDomain(QUrl domainURL, bool errorDomain) {
|
std::map<QString, QString> Application::prepareServerlessDomainContents(QUrl domainURL) {
|
||||||
if (QThread::currentThread() != thread()) {
|
if (QThread::currentThread() != thread()) {
|
||||||
QMetaObject::invokeMethod(this, "loadServerlessDomain", Q_ARG(QUrl, domainURL), Q_ARG(bool, errorDomain));
|
QMetaObject::invokeMethod(this, "prepareServerlessDomainContents", Q_ARG(QUrl, domainURL));
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (domainURL.isEmpty()) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3584,13 +3592,61 @@ void Application::loadServerlessDomain(QUrl domainURL, bool errorDomain) {
|
||||||
tmpTree->sendEntities(&_entityEditSender, getEntities()->getTree(), 0, 0, 0);
|
tmpTree->sendEntities(&_entityEditSender, getEntities()->getTree(), 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::map<QString, QString> namedPaths = tmpTree->getNamedPaths();
|
return tmpTree->getNamedPaths();
|
||||||
if (errorDomain) {
|
|
||||||
nodeList->getDomainHandler().loadedErrorDomain(namedPaths);
|
}
|
||||||
} else {
|
|
||||||
nodeList->getDomainHandler().connectedToServerless(namedPaths);
|
void Application::loadServerlessDomain(QUrl domainURL) {
|
||||||
|
if (QThread::currentThread() != thread()) {
|
||||||
|
QMetaObject::invokeMethod(this, "loadServerlessDomain", Q_ARG(QUrl, domainURL));
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (domainURL.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto namedPaths = prepareServerlessDomainContents(domainURL);
|
||||||
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
|
|
||||||
|
nodeList->getDomainHandler().connectedToServerless(namedPaths);
|
||||||
|
|
||||||
|
_fullSceneReceivedCounter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Application::loadErrorDomain(QUrl domainURL) {
|
||||||
|
if (QThread::currentThread() != thread()) {
|
||||||
|
QMetaObject::invokeMethod(this, "loadErrorDomain", Q_ARG(QUrl, domainURL));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (domainURL.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto namedPaths = prepareServerlessDomainContents(domainURL);
|
||||||
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
|
|
||||||
|
nodeList->getDomainHandler().loadedErrorDomain(namedPaths);
|
||||||
|
|
||||||
|
_fullSceneReceivedCounter++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Application::loadLoginScreenDomain(QUrl domainURL) {
|
||||||
|
if (QThread::currentThread() != thread()) {
|
||||||
|
QMetaObject::invokeMethod(this, "loadLoginScreenDomain", Q_ARG(QUrl, domainURL));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (domainURL.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto namedPaths = prepareServerlessDomainContents(domainURL);
|
||||||
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
|
|
||||||
|
nodeList->getDomainHandler().loadedLoginScreenDomain(namedPaths);
|
||||||
|
|
||||||
_fullSceneReceivedCounter++;
|
_fullSceneReceivedCounter++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6410,6 +6466,7 @@ void Application::updateWindowTitle() const {
|
||||||
auto nodeList = DependencyManager::get<NodeList>();
|
auto nodeList = DependencyManager::get<NodeList>();
|
||||||
auto accountManager = DependencyManager::get<AccountManager>();
|
auto accountManager = DependencyManager::get<AccountManager>();
|
||||||
auto isInErrorState = nodeList->getDomainHandler().isInErrorState();
|
auto isInErrorState = nodeList->getDomainHandler().isInErrorState();
|
||||||
|
auto isInLoginScreenState = nodeList->getDomainHandler().isInLoginScreenState();
|
||||||
|
|
||||||
QString buildVersion = " - "
|
QString buildVersion = " - "
|
||||||
+ (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build"))
|
+ (BuildInfo::BUILD_TYPE == BuildInfo::BuildType::Stable ? QString("Version") : QString("Build"))
|
||||||
|
@ -6419,6 +6476,8 @@ void Application::updateWindowTitle() const {
|
||||||
|
|
||||||
QString connectionStatus = isInErrorState ? " (ERROR CONNECTING)" :
|
QString connectionStatus = isInErrorState ? " (ERROR CONNECTING)" :
|
||||||
nodeList->getDomainHandler().isConnected() ? "" : " (NOT CONNECTED)";
|
nodeList->getDomainHandler().isConnected() ? "" : " (NOT CONNECTED)";
|
||||||
|
// check for login state - login state needs empty connection status
|
||||||
|
connectionStatus = isInLoginScreenState ? "" : connectionStatus;
|
||||||
QString username = accountManager->getAccountInfo().getUsername();
|
QString username = accountManager->getAccountInfo().getUsername();
|
||||||
|
|
||||||
setCrashAnnotation("username", username.toStdString());
|
setCrashAnnotation("username", username.toStdString());
|
||||||
|
@ -6427,6 +6486,8 @@ void Application::updateWindowTitle() const {
|
||||||
if (isServerlessMode()) {
|
if (isServerlessMode()) {
|
||||||
if (isInErrorState) {
|
if (isInErrorState) {
|
||||||
currentPlaceName = "serverless: " + nodeList->getDomainHandler().getErrorDomainURL().toString();
|
currentPlaceName = "serverless: " + nodeList->getDomainHandler().getErrorDomainURL().toString();
|
||||||
|
} else if (isInLoginScreenState) {
|
||||||
|
currentPlaceName = "High Fidelity Interface";
|
||||||
} else {
|
} else {
|
||||||
currentPlaceName = "serverless: " + DependencyManager::get<AddressManager>()->getDomainURL().toString();
|
currentPlaceName = "serverless: " + DependencyManager::get<AddressManager>()->getDomainURL().toString();
|
||||||
}
|
}
|
||||||
|
@ -6497,11 +6558,27 @@ void Application::goToErrorDomainURL(QUrl errorDomainURL) {
|
||||||
resetPhysicsReadyInformation();
|
resetPhysicsReadyInformation();
|
||||||
setIsServerlessMode(errorDomainURL.scheme() != URL_SCHEME_HIFI);
|
setIsServerlessMode(errorDomainURL.scheme() != URL_SCHEME_HIFI);
|
||||||
if (isServerlessMode()) {
|
if (isServerlessMode()) {
|
||||||
loadServerlessDomain(errorDomainURL, true);
|
loadErrorDomain(errorDomainURL);
|
||||||
}
|
}
|
||||||
updateWindowTitle();
|
updateWindowTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Application::goToLoginScreenDomainURL(QUrl loginScreenDomainURL) {
|
||||||
|
// disable physics until we have enough information about our new location to not cause craziness.
|
||||||
|
resetPhysicsReadyInformation();
|
||||||
|
setIsServerlessMode(loginScreenDomainURL.scheme() != URL_SCHEME_HIFI);
|
||||||
|
|
||||||
|
// show avatar as a mesh and show hand controllers.
|
||||||
|
qApp->getMyAvatar()->setEnableMeshVisible(false);
|
||||||
|
DependencyManager::get<HMDScriptingInterface>()->requestShowHandControllers();
|
||||||
|
// set into login screen state.
|
||||||
|
emit loginScreenStateChanged(true);
|
||||||
|
|
||||||
|
if (isServerlessMode()) {
|
||||||
|
loadLoginScreenDomain(loginScreenDomainURL);
|
||||||
|
}
|
||||||
|
updateWindowTitle();
|
||||||
|
}
|
||||||
|
|
||||||
void Application::resettingDomain() {
|
void Application::resettingDomain() {
|
||||||
_notifiedPacketVersionMismatchThisDomain = false;
|
_notifiedPacketVersionMismatchThisDomain = false;
|
||||||
|
|
|
@ -335,7 +335,7 @@ signals:
|
||||||
|
|
||||||
void uploadRequest(QString path);
|
void uploadRequest(QString path);
|
||||||
|
|
||||||
void loginDialogPoppedUp();
|
void loginScreenStateChanged(bool isInLoginScreenState);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
QVector<EntityItemID> pasteEntities(float x, float y, float z);
|
QVector<EntityItemID> pasteEntities(float x, float y, float z);
|
||||||
|
@ -345,6 +345,7 @@ public slots:
|
||||||
void updateThreadPoolCount() const;
|
void updateThreadPoolCount() const;
|
||||||
void updateSystemTabletMode();
|
void updateSystemTabletMode();
|
||||||
void goToErrorDomainURL(QUrl errorDomainURL);
|
void goToErrorDomainURL(QUrl errorDomainURL);
|
||||||
|
void goToLoginScreenDomainURL(QUrl loginScreenDomainURL);
|
||||||
|
|
||||||
Q_INVOKABLE void loadDialog();
|
Q_INVOKABLE void loadDialog();
|
||||||
Q_INVOKABLE void loadScriptURLDialog() const;
|
Q_INVOKABLE void loadScriptURLDialog() const;
|
||||||
|
@ -357,6 +358,8 @@ public slots:
|
||||||
|
|
||||||
void showDialog(const QUrl& widgetUrl, const QUrl& tabletUrl, const QString& name) const;
|
void showDialog(const QUrl& widgetUrl, const QUrl& tabletUrl, const QString& name) const;
|
||||||
|
|
||||||
|
void showLoginScreen();
|
||||||
|
|
||||||
// FIXME: Move addAssetToWorld* methods to own class?
|
// FIXME: Move addAssetToWorld* methods to own class?
|
||||||
void addAssetToWorldFromURL(QString url);
|
void addAssetToWorldFromURL(QString url);
|
||||||
void addAssetToWorldFromURLRequestFinished();
|
void addAssetToWorldFromURLRequestFinished();
|
||||||
|
@ -433,7 +436,11 @@ public slots:
|
||||||
void setPreferredCursor(const QString& cursor);
|
void setPreferredCursor(const QString& cursor);
|
||||||
|
|
||||||
void setIsServerlessMode(bool serverlessDomain);
|
void setIsServerlessMode(bool serverlessDomain);
|
||||||
void loadServerlessDomain(QUrl domainURL, bool errorDomain = false);
|
std::map<QString, QString> prepareServerlessDomainContents(QUrl domainURL);
|
||||||
|
|
||||||
|
void loadServerlessDomain(QUrl domainURL);
|
||||||
|
void loadErrorDomain(QUrl domainURL);
|
||||||
|
void loadLoginScreenDomain(QUrl domainURL);
|
||||||
void setIsInterstitialMode(bool interstitialMode);
|
void setIsInterstitialMode(bool interstitialMode);
|
||||||
|
|
||||||
void updateVerboseLogging();
|
void updateVerboseLogging();
|
||||||
|
|
|
@ -33,6 +33,7 @@ void ConnectionMonitor::init() {
|
||||||
connect(&domainHandler, &DomainHandler::connectedToDomain, this, &ConnectionMonitor::stopTimer);
|
connect(&domainHandler, &DomainHandler::connectedToDomain, this, &ConnectionMonitor::stopTimer);
|
||||||
connect(&domainHandler, &DomainHandler::domainConnectionRefused, this, &ConnectionMonitor::stopTimer);
|
connect(&domainHandler, &DomainHandler::domainConnectionRefused, this, &ConnectionMonitor::stopTimer);
|
||||||
connect(&domainHandler, &DomainHandler::redirectToErrorDomainURL, this, &ConnectionMonitor::stopTimer);
|
connect(&domainHandler, &DomainHandler::redirectToErrorDomainURL, this, &ConnectionMonitor::stopTimer);
|
||||||
|
connect(&domainHandler, &DomainHandler::redirectToLoginScreenDomainURL, this, &ConnectionMonitor::stopTimer);
|
||||||
connect(this, &ConnectionMonitor::setRedirectErrorState, &domainHandler, &DomainHandler::setRedirectErrorState);
|
connect(this, &ConnectionMonitor::setRedirectErrorState, &domainHandler, &DomainHandler::setRedirectErrorState);
|
||||||
|
|
||||||
_timer.setSingleShot(true);
|
_timer.setSingleShot(true);
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#include "HMDToolsDialog.h"
|
#include "HMDToolsDialog.h"
|
||||||
#include "LodToolsDialog.h"
|
#include "LodToolsDialog.h"
|
||||||
#include "LoginDialog.h"
|
#include "LoginDialog.h"
|
||||||
|
#include "LoginScreenDialog.h"
|
||||||
#include "OctreeStatsDialog.h"
|
#include "OctreeStatsDialog.h"
|
||||||
#include "PreferencesDialog.h"
|
#include "PreferencesDialog.h"
|
||||||
#include "UpdateDialog.h"
|
#include "UpdateDialog.h"
|
||||||
|
@ -117,6 +118,10 @@ void DialogsManager::showLoginDialog() {
|
||||||
LoginDialog::showWithSelection();
|
LoginDialog::showWithSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DialogsManager::showLoginScreenDialog() {
|
||||||
|
LoginScreenDialog::showWithSelection();
|
||||||
|
}
|
||||||
|
|
||||||
void DialogsManager::showUpdateDialog() {
|
void DialogsManager::showUpdateDialog() {
|
||||||
UpdateDialog::show();
|
UpdateDialog::show();
|
||||||
}
|
}
|
||||||
|
@ -203,4 +208,4 @@ void DialogsManager::showDomainConnectionDialog() {
|
||||||
|
|
||||||
_domainConnectionDialog->show();
|
_domainConnectionDialog->show();
|
||||||
_domainConnectionDialog->raise();
|
_domainConnectionDialog->raise();
|
||||||
}
|
}
|
|
@ -46,8 +46,12 @@ public slots:
|
||||||
void hideAddressBar();
|
void hideAddressBar();
|
||||||
void showFeed();
|
void showFeed();
|
||||||
void setDomainConnectionFailureVisibility(bool visible);
|
void setDomainConnectionFailureVisibility(bool visible);
|
||||||
|
// toggles login screen that appears upon `File > Log In/Sign Up`.
|
||||||
void toggleLoginDialog();
|
void toggleLoginDialog();
|
||||||
|
// shows login screen that appears upon `File > Log In/Sign Up`.
|
||||||
void showLoginDialog();
|
void showLoginDialog();
|
||||||
|
// toggles login screen that appears upon application startup.
|
||||||
|
void showLoginScreenDialog();
|
||||||
void octreeStatsDetails();
|
void octreeStatsDetails();
|
||||||
void lodTools();
|
void lodTools();
|
||||||
void hmdTools(bool showTools);
|
void hmdTools(bool showTools);
|
||||||
|
|
|
@ -8,6 +8,4 @@
|
||||||
// Distributed under the Apache License, Version 2.0.
|
// Distributed under the Apache License, Version 2.0.
|
||||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
//
|
//
|
||||||
LoginScreenDialog::LoginScreenDialog() {
|
#include "LoginScreenDialog.h"
|
||||||
|
|
||||||
}
|
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
|
|
||||||
const QString DEFAULT_HIFI_ADDRESS = "file:///~/serverless/tutorial.json";
|
const QString DEFAULT_HIFI_ADDRESS = "file:///~/serverless/tutorial.json";
|
||||||
const QString REDIRECT_HIFI_ADDRESS = "file:///~/serverless/redirect.json";
|
const QString REDIRECT_HIFI_ADDRESS = "file:///~/serverless/redirect.json";
|
||||||
|
const QString LOGIN_SCREEN_HIFI_ADDRESS = "file:///~/serverless/login.json";
|
||||||
const QString ADDRESS_MANAGER_SETTINGS_GROUP = "AddressManager";
|
const QString ADDRESS_MANAGER_SETTINGS_GROUP = "AddressManager";
|
||||||
const QString SETTINGS_CURRENT_ADDRESS_KEY = "address";
|
const QString SETTINGS_CURRENT_ADDRESS_KEY = "address";
|
||||||
|
|
||||||
|
@ -162,11 +163,15 @@ void AddressManager::storeCurrentAddress() {
|
||||||
// url.scheme() == URL_SCHEME_HTTP ||
|
// url.scheme() == URL_SCHEME_HTTP ||
|
||||||
// url.scheme() == URL_SCHEME_HTTPS ||
|
// url.scheme() == URL_SCHEME_HTTPS ||
|
||||||
bool isInErrorState = DependencyManager::get<NodeList>()->getDomainHandler().isInErrorState();
|
bool isInErrorState = DependencyManager::get<NodeList>()->getDomainHandler().isInErrorState();
|
||||||
|
bool isInLoginScreenState = DependencyManager::get<NodeList>()->getDomainHandler().isInLoginScreenState();
|
||||||
|
if (isInLoginScreenState) {
|
||||||
|
qCWarning(networking) << "Ignoring attempt to save current address because in login screen domain:" << url;
|
||||||
|
}
|
||||||
if (isConnected()) {
|
if (isConnected()) {
|
||||||
if (isInErrorState) {
|
if (isInErrorState) {
|
||||||
// save the last address visited before the problem url.
|
// save the last address visited before the problem url.
|
||||||
currentAddressHandle.set(lastAddress());
|
currentAddressHandle.set(lastAddress());
|
||||||
} else {
|
} else {
|
||||||
currentAddressHandle.set(url);
|
currentAddressHandle.set(url);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -824,8 +829,10 @@ bool AddressManager::setDomainInfo(const QUrl& domainURL, LookupTrigger trigger)
|
||||||
bool emitHostChanged { false };
|
bool emitHostChanged { false };
|
||||||
// Check if domain handler is in error state. always emit host changed if true.
|
// Check if domain handler is in error state. always emit host changed if true.
|
||||||
bool isInErrorState = DependencyManager::get<NodeList>()->getDomainHandler().isInErrorState();
|
bool isInErrorState = DependencyManager::get<NodeList>()->getDomainHandler().isInErrorState();
|
||||||
|
// Check if domain handler is in login screen state. always emit host changed if true.
|
||||||
|
bool isInLoginScreenState = DependencyManager::get<NodeList>()->getDomainHandler().isInLoginScreenState();
|
||||||
|
|
||||||
if (domainURL != _domainURL || isInErrorState) {
|
if (domainURL != _domainURL || isInErrorState || isInLoginScreenState) {
|
||||||
addCurrentAddressToHistory(trigger);
|
addCurrentAddressToHistory(trigger);
|
||||||
emitHostChanged = true;
|
emitHostChanged = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
|
|
||||||
extern const QString DEFAULT_HIFI_ADDRESS;
|
extern const QString DEFAULT_HIFI_ADDRESS;
|
||||||
extern const QString REDIRECT_HIFI_ADDRESS;
|
extern const QString REDIRECT_HIFI_ADDRESS;
|
||||||
|
extern const QString LOGIN_SCREEN_HIFI_ADDRESS;
|
||||||
|
|
||||||
const QString SANDBOX_HIFI_ADDRESS = "hifi://localhost";
|
const QString SANDBOX_HIFI_ADDRESS = "hifi://localhost";
|
||||||
const QString INDEX_PATH = "/";
|
const QString INDEX_PATH = "/";
|
||||||
|
|
|
@ -62,6 +62,9 @@ DomainHandler::DomainHandler(QObject* parent) :
|
||||||
|
|
||||||
// stop the refresh timer if redirected to the error domain
|
// stop the refresh timer if redirected to the error domain
|
||||||
connect(this, &DomainHandler::redirectToErrorDomainURL, &_apiRefreshTimer, &QTimer::stop);
|
connect(this, &DomainHandler::redirectToErrorDomainURL, &_apiRefreshTimer, &QTimer::stop);
|
||||||
|
|
||||||
|
// stop the refresh timer if redirected to the login screen domain
|
||||||
|
connect(this, &DomainHandler::redirectToLoginScreenDomainURL, &_apiRefreshTimer, &QTimer::stop);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DomainHandler::disconnect() {
|
void DomainHandler::disconnect() {
|
||||||
|
@ -113,7 +116,7 @@ void DomainHandler::softReset() {
|
||||||
QMetaObject::invokeMethod(&_settingsTimer, "stop");
|
QMetaObject::invokeMethod(&_settingsTimer, "stop");
|
||||||
|
|
||||||
// restart the API refresh timer in case we fail to connect and need to refresh information
|
// restart the API refresh timer in case we fail to connect and need to refresh information
|
||||||
if (!_isInErrorState) {
|
if (!_isInErrorState || !_isInLoginScreenState) {
|
||||||
QMetaObject::invokeMethod(&_apiRefreshTimer, "start");
|
QMetaObject::invokeMethod(&_apiRefreshTimer, "start");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -125,6 +128,9 @@ void DomainHandler::hardReset() {
|
||||||
_isInErrorState = false;
|
_isInErrorState = false;
|
||||||
emit redirectErrorStateChanged(_isInErrorState);
|
emit redirectErrorStateChanged(_isInErrorState);
|
||||||
|
|
||||||
|
_isInLoginScreenState = false;
|
||||||
|
emit loginScreenStateChanged(_isInLoginScreenState);
|
||||||
|
|
||||||
qCDebug(networking) << "Hard reset in NodeList DomainHandler.";
|
qCDebug(networking) << "Hard reset in NodeList DomainHandler.";
|
||||||
_pendingDomainID = QUuid();
|
_pendingDomainID = QUuid();
|
||||||
_iceServerSockAddr = HifiSockAddr();
|
_iceServerSockAddr = HifiSockAddr();
|
||||||
|
@ -363,6 +369,17 @@ void DomainHandler::loadedErrorDomain(std::map<QString, QString> namedPaths) {
|
||||||
DependencyManager::get<AddressManager>()->goToViewpointForPath(viewpoint, QString());
|
DependencyManager::get<AddressManager>()->goToViewpointForPath(viewpoint, QString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DomainHandler::loadedLoginScreenDomain(std::map<QString, QString> namedPaths) {
|
||||||
|
auto lookup = namedPaths.find("/");
|
||||||
|
QString viewpoint;
|
||||||
|
if (lookup != namedPaths.end()) {
|
||||||
|
viewpoint = lookup->second;
|
||||||
|
} else {
|
||||||
|
viewpoint = DOMAIN_SPAWNING_POINT;
|
||||||
|
}
|
||||||
|
DependencyManager::get<AddressManager>()->goToViewpointForPath(viewpoint, QString());
|
||||||
|
}
|
||||||
|
|
||||||
void DomainHandler::setRedirectErrorState(QUrl errorUrl, QString reasonMessage, int reasonCode, const QString& extraInfo) {
|
void DomainHandler::setRedirectErrorState(QUrl errorUrl, QString reasonMessage, int reasonCode, const QString& extraInfo) {
|
||||||
_lastDomainConnectionError = reasonCode;
|
_lastDomainConnectionError = reasonCode;
|
||||||
if (getInterstitialModeEnabled() && isHardRefusal(reasonCode)) {
|
if (getInterstitialModeEnabled() && isHardRefusal(reasonCode)) {
|
||||||
|
@ -376,6 +393,12 @@ void DomainHandler::setRedirectErrorState(QUrl errorUrl, QString reasonMessage,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DomainHandler::redirectToLoginScreenDomainURL() {
|
||||||
|
_isInLoginScreenState = true;
|
||||||
|
qCDebug(networking) << "Redirecting user to " << _loginScreenDomainURL;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void DomainHandler::requestDomainSettings() {
|
void DomainHandler::requestDomainSettings() {
|
||||||
qCDebug(networking) << "Requesting settings from domain server";
|
qCDebug(networking) << "Requesting settings from domain server";
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,9 @@ public:
|
||||||
|
|
||||||
int getLastDomainConnectionError() { return _lastDomainConnectionError; }
|
int getLastDomainConnectionError() { return _lastDomainConnectionError; }
|
||||||
|
|
||||||
|
QUrl getLoginScreenDomainURL(){ return _loginScreenDomainURL; }
|
||||||
|
void setLoginScreenDomainURL(const QUrl& url);
|
||||||
|
|
||||||
const QHostAddress& getIP() const { return _sockAddr.getAddress(); }
|
const QHostAddress& getIP() const { return _sockAddr.getAddress(); }
|
||||||
void setIPToLocalhost() { _sockAddr.setAddress(QHostAddress(QHostAddress::LocalHost)); }
|
void setIPToLocalhost() { _sockAddr.setAddress(QHostAddress(QHostAddress::LocalHost)); }
|
||||||
|
|
||||||
|
@ -93,6 +96,8 @@ public:
|
||||||
|
|
||||||
void loadedErrorDomain(std::map<QString, QString> namedPaths);
|
void loadedErrorDomain(std::map<QString, QString> namedPaths);
|
||||||
|
|
||||||
|
void loadedLoginScreenDomain(std::map<QString, QString> namedPaths);
|
||||||
|
|
||||||
QString getViewPointFromNamedPath(QString namedPath);
|
QString getViewPointFromNamedPath(QString namedPath);
|
||||||
|
|
||||||
bool hasSettings() const { return !_settingsObject.isEmpty(); }
|
bool hasSettings() const { return !_settingsObject.isEmpty(); }
|
||||||
|
@ -179,6 +184,7 @@ public slots:
|
||||||
void setRedirectErrorState(QUrl errorUrl, QString reasonMessage = "", int reason = -1, const QString& extraInfo = "");
|
void setRedirectErrorState(QUrl errorUrl, QString reasonMessage = "", int reason = -1, const QString& extraInfo = "");
|
||||||
|
|
||||||
bool isInErrorState() { return _isInErrorState; }
|
bool isInErrorState() { return _isInErrorState; }
|
||||||
|
bool isInLoginScreenState() { return _isInLoginScreenState; }
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void completedHostnameLookup(const QHostInfo& hostInfo);
|
void completedHostnameLookup(const QHostInfo& hostInfo);
|
||||||
|
@ -205,6 +211,9 @@ signals:
|
||||||
void redirectToErrorDomainURL(QUrl errorDomainURL);
|
void redirectToErrorDomainURL(QUrl errorDomainURL);
|
||||||
void redirectErrorStateChanged(bool isInErrorState);
|
void redirectErrorStateChanged(bool isInErrorState);
|
||||||
|
|
||||||
|
void redirectToLoginScreenDomainURL();
|
||||||
|
void loginScreenStateChanged(bool isInLoginScreenState);
|
||||||
|
|
||||||
void limitOfSilentDomainCheckInsReached();
|
void limitOfSilentDomainCheckInsReached();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -218,6 +227,7 @@ private:
|
||||||
Node::LocalID _localID;
|
Node::LocalID _localID;
|
||||||
QUrl _domainURL;
|
QUrl _domainURL;
|
||||||
QUrl _errorDomainURL;
|
QUrl _errorDomainURL;
|
||||||
|
QUrl _loginScreenDomainURL;
|
||||||
HifiSockAddr _sockAddr;
|
HifiSockAddr _sockAddr;
|
||||||
QUuid _assignmentUUID;
|
QUuid _assignmentUUID;
|
||||||
QUuid _connectionToken;
|
QUuid _connectionToken;
|
||||||
|
@ -227,6 +237,7 @@ private:
|
||||||
NetworkPeer _icePeer;
|
NetworkPeer _icePeer;
|
||||||
bool _isConnected { false };
|
bool _isConnected { false };
|
||||||
bool _isInErrorState { false };
|
bool _isInErrorState { false };
|
||||||
|
bool _isInLoginScreenState { false };
|
||||||
QJsonObject _settingsObject;
|
QJsonObject _settingsObject;
|
||||||
QString _pendingPath;
|
QString _pendingPath;
|
||||||
QTimer _settingsTimer;
|
QTimer _settingsTimer;
|
||||||
|
|
|
@ -917,6 +917,7 @@ var onQmlMessageReceived = function onQmlMessageReceived(message) {
|
||||||
Menu.setIsOptionChecked("Disable Preview", true);
|
Menu.setIsOptionChecked("Disable Preview", true);
|
||||||
setTabletVisibleInSecondaryCamera(false);
|
setTabletVisibleInSecondaryCamera(false);
|
||||||
}
|
}
|
||||||
|
<<<<<<< Updated upstream
|
||||||
break;
|
break;
|
||||||
case 'maybeEnableHmdPreview':
|
case 'maybeEnableHmdPreview':
|
||||||
maybeEnableHMDPreview();
|
maybeEnableHMDPreview();
|
||||||
|
@ -962,6 +963,47 @@ var onQmlMessageReceived = function onQmlMessageReceived(message) {
|
||||||
Script.update.connect(updateOverlays);
|
Script.update.connect(updateOverlays);
|
||||||
isUpdateOverlaysWired = true;
|
isUpdateOverlaysWired = true;
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
}
|
||||||
|
|
||||||
|
<<<<<<< Updated upstream
|
||||||
|
// Function Name: onTabletScreenChanged()
|
||||||
|
//
|
||||||
|
// Description:
|
||||||
|
// -Called when the TabletScriptingInterface::screenChanged() signal is emitted. The "type" argument can be either the string
|
||||||
|
// value of "Home", "Web", "Menu", "QML", or "Closed". The "url" argument is only valid for Web and QML.
|
||||||
|
var onWalletScreen = false;
|
||||||
|
var onCommerceScreen = false;
|
||||||
|
function onTabletScreenChanged(type, url) {
|
||||||
|
onMarketplaceScreen = type === "Web" && url.indexOf(MARKETPLACE_URL) !== -1;
|
||||||
|
var onWalletScreenNow = url.indexOf(MARKETPLACE_WALLET_QML_PATH) !== -1;
|
||||||
|
var onCommerceScreenNow = type === "QML" && (url.indexOf(MARKETPLACE_CHECKOUT_QML_PATH) !== -1 || url === MARKETPLACE_PURCHASES_QML_PATH
|
||||||
|
|| url.indexOf(MARKETPLACE_INSPECTIONCERTIFICATE_QML_PATH) !== -1);
|
||||||
|
|
||||||
|
if ((!onWalletScreenNow && onWalletScreen) || (!onCommerceScreenNow && onCommerceScreen)) { // exiting wallet or commerce screen
|
||||||
|
maybeEnableHMDPreview();
|
||||||
|
}
|
||||||
|
=======
|
||||||
|
// console.debug(ui.buttonName + " app reports: Tablet screen changed.\nNew screen type: " + type +
|
||||||
|
// "\nNew screen URL: " + url + "\nCurrent app open status: " + ui.isOpen + "\n");
|
||||||
|
};
|
||||||
|
|
||||||
|
function notificationDataProcessPage(data) {
|
||||||
|
return data.data.updates;
|
||||||
|
}
|
||||||
|
>>>>>>> Stashed changes
|
||||||
|
|
||||||
|
onCommerceScreen = onCommerceScreenNow;
|
||||||
|
onWalletScreen = onWalletScreenNow;
|
||||||
|
wireEventBridge(onMarketplaceScreen || onCommerceScreen || onWalletScreen);
|
||||||
|
|
||||||
|
if (url === MARKETPLACE_PURCHASES_QML_PATH) {
|
||||||
|
sendToQml({
|
||||||
|
method: 'updatePurchases',
|
||||||
|
referrerURL: referrerURL,
|
||||||
|
filterText: filterText
|
||||||
|
});
|
||||||
|
>>>>>>> Stashed changes
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'disable_ChooseRecipientNearbyMode':
|
case 'disable_ChooseRecipientNearbyMode':
|
||||||
|
|
Loading…
Reference in a new issue