diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 15545a0275..cdf19ea6ac 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2301,6 +2301,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo AndroidHelper::instance().notifyLoadComplete(); #endif + connect(this, &Application::loginDialogPoppedUp, DependencyManager::get().data(), &DialogsManager::loginDialogPoppedUp); + static int CHECK_LOGIN_TIMER = 3000; QTimer* checkLoginTimer = new QTimer(this); checkLoginTimer->setInterval(CHECK_LOGIN_TIMER); @@ -2309,6 +2311,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer& startupTimer, bo auto accountManager = DependencyManager::get(); auto dialogsManager = DependencyManager::get(); if (!accountManager->isLoggedIn() && !qApp->isHMDMode()) { + emit loginDialogPoppedUp(); dialogsManager->showLoginDialog(); QJsonObject loginData = {}; loginData["action"] = "login dialog shown"; diff --git a/interface/src/Application.h b/interface/src/Application.h index aa8323cd38..d661a74bcb 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -331,6 +331,8 @@ signals: void uploadRequest(QString path); + void loginDialogPoppedUp(); + public slots: QVector pasteEntities(float x, float y, float z); bool exportEntities(const QString& filename, const QVector& entityIDs, const glm::vec3* givenOffset = nullptr); diff --git a/interface/src/ui/DialogsManager.cpp b/interface/src/ui/DialogsManager.cpp index 83601a2797..960b099d22 100644 --- a/interface/src/ui/DialogsManager.cpp +++ b/interface/src/ui/DialogsManager.cpp @@ -117,6 +117,10 @@ void DialogsManager::showLoginDialog() { LoginDialog::showWithSelection(); } +void DialogsManager::loginDialogPoppedUp() { + LoginDialog::setLoginDialogPoppedUp(true); +} + void DialogsManager::showUpdateDialog() { UpdateDialog::show(); } diff --git a/interface/src/ui/DialogsManager.h b/interface/src/ui/DialogsManager.h index 0633dec573..9dc70d0cd0 100644 --- a/interface/src/ui/DialogsManager.h +++ b/interface/src/ui/DialogsManager.h @@ -48,6 +48,7 @@ public slots: void setDomainConnectionFailureVisibility(bool visible); void toggleLoginDialog(); void showLoginDialog(); + void loginDialogPoppedUp(); void octreeStatsDetails(); void lodTools(); void hmdTools(bool showTools); diff --git a/interface/src/ui/LoginDialog.h b/interface/src/ui/LoginDialog.h index 210438b856..f9580d0bfe 100644 --- a/interface/src/ui/LoginDialog.h +++ b/interface/src/ui/LoginDialog.h @@ -23,6 +23,7 @@ class QNetworkReply; class LoginDialog : public OffscreenQmlDialog { Q_OBJECT + Q_PROPERTY(bool poppedUp READ getLoginDialogPoppedUp) HIFI_QML_DECL public: @@ -33,6 +34,9 @@ public: virtual ~LoginDialog(); static void showWithSelection(); + + bool getLoginDialogPoppedUp() { return _poppedUp; } + void setLoginDialogPoppedUp(bool poppedUp) { _poppedUp = poppedUp; } signals: void handleLoginCompleted(); void handleLoginFailed(); @@ -68,6 +72,8 @@ protected slots: Q_INVOKABLE void openUrl(const QString& url) const; +private: + bool _poppedUp {false}; }; #endif // hifi_LoginDialog_h