From 5ece8d8707f65f02896944c570295c6d0652840b Mon Sep 17 00:00:00 2001 From: Wayne Chen Date: Mon, 10 Sep 2018 18:32:21 -0700 Subject: [PATCH] using different paradigm for checking login dialog popup --- interface/resources/qml/LoginDialog.qml | 3 ++- interface/src/Application.cpp | 12 ++++++++---- interface/src/ui/DialogsManager.cpp | 4 ---- interface/src/ui/DialogsManager.h | 1 - interface/src/ui/LoginDialog.cpp | 13 +++++++++++-- interface/src/ui/LoginDialog.h | 3 --- 6 files changed, 21 insertions(+), 15 deletions(-) diff --git a/interface/resources/qml/LoginDialog.qml b/interface/resources/qml/LoginDialog.qml index 6ad6cdf93d..227fce3454 100644 --- a/interface/resources/qml/LoginDialog.qml +++ b/interface/resources/qml/LoginDialog.qml @@ -86,11 +86,12 @@ ModalWindow { } } Component.onDestruction: { - if (closeButtonVisible && clickedCloseButton) { + if (closeButtonVisible && clickedCloseButton && Settings.getValue("loginDialogPoppedUp", false)) { var data = { "action": "opted out" }; UserActivityLogger.logAction("encourageLoginDialog", data); } + Settings.setValue("loginDialogPoppedUp", false); } } diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index cdf19ea6ac..7f437e273c 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -2301,23 +2301,24 @@ 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); checkLoginTimer->setSingleShot(true); - connect(checkLoginTimer, &QTimer::timeout, this, []() { + connect(checkLoginTimer, &QTimer::timeout, this, [this]() { auto accountManager = DependencyManager::get(); auto dialogsManager = DependencyManager::get(); if (!accountManager->isLoggedIn() && !qApp->isHMDMode()) { - emit loginDialogPoppedUp(); + Settings settings; + settings.setValue("loginDialogPoppedUp", true); dialogsManager->showLoginDialog(); QJsonObject loginData = {}; loginData["action"] = "login dialog shown"; UserActivityLogger::getInstance().logAction("encourageLoginDialog", loginData); } }); + Settings settings; + settings.setValue("loginDialogPoppedUp", false); checkLoginTimer->start(); } @@ -4948,6 +4949,9 @@ void Application::loadSettings() { } void Application::saveSettings() const { + Settings settings; + settings.setValue("loginDialogPoppedUp", false); + sessionRunTime.set(_sessionRunTimer.elapsed() / MSECS_PER_SECOND); DependencyManager::get()->saveSettings(); DependencyManager::get()->saveSettings(); diff --git a/interface/src/ui/DialogsManager.cpp b/interface/src/ui/DialogsManager.cpp index 960b099d22..83601a2797 100644 --- a/interface/src/ui/DialogsManager.cpp +++ b/interface/src/ui/DialogsManager.cpp @@ -117,10 +117,6 @@ 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 9dc70d0cd0..0633dec573 100644 --- a/interface/src/ui/DialogsManager.h +++ b/interface/src/ui/DialogsManager.h @@ -48,7 +48,6 @@ 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.cpp b/interface/src/ui/LoginDialog.cpp index 31a995c70b..6d94e1419b 100644 --- a/interface/src/ui/LoginDialog.cpp +++ b/interface/src/ui/LoginDialog.cpp @@ -20,6 +20,8 @@ #include #include +#include + #include "AccountManager.h" #include "DependencyManager.h" #include "Menu.h" @@ -38,11 +40,18 @@ LoginDialog::LoginDialog(QQuickItem *parent) : OffscreenQmlDialog(parent) { connect(accountManager.data(), &AccountManager::loginFailed, this, &LoginDialog::handleLoginFailed); #endif - } LoginDialog::~LoginDialog() { - qCDebug(login_dialog) << "killing"; + Settings settings; + Setting::Handle loginDialogPoppedUp{ "loginDialogPoppedUp", false }; + auto poppedUp = loginDialogPoppedUp.get(); + if (poppedUp) { + QJsonObject data; + data["action"] = "user opted out"; + UserActivityLogger::getInstance().logAction("encourageLoginDialog", data); + } + settings.setValue("loginDialogPoppedUp", false); } void LoginDialog::showWithSelection() diff --git a/interface/src/ui/LoginDialog.h b/interface/src/ui/LoginDialog.h index f9580d0bfe..155970e33d 100644 --- a/interface/src/ui/LoginDialog.h +++ b/interface/src/ui/LoginDialog.h @@ -23,7 +23,6 @@ class QNetworkReply; class LoginDialog : public OffscreenQmlDialog { Q_OBJECT - Q_PROPERTY(bool poppedUp READ getLoginDialogPoppedUp) HIFI_QML_DECL public: @@ -35,8 +34,6 @@ public: static void showWithSelection(); - bool getLoginDialogPoppedUp() { return _poppedUp; } - void setLoginDialogPoppedUp(bool poppedUp) { _poppedUp = poppedUp; } signals: void handleLoginCompleted(); void handleLoginFailed();