From 46c1a9d59ac577a7cc0565c2ad90ebf6ccfd873f Mon Sep 17 00:00:00 2001 From: David Rowe Date: Thu, 28 Aug 2014 11:25:13 -0700 Subject: [PATCH] Make login dialog automatically show only once per domain visit --- interface/src/Application.cpp | 3 ++- interface/src/Menu.cpp | 19 +++++++++++++++++-- interface/src/Menu.h | 3 +++ 3 files changed, 22 insertions(+), 3 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 90da5e5046..f1c0014ef9 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -246,7 +246,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : connect(&domainHandler, SIGNAL(connectedToDomain(const QString&)), SLOT(updateWindowTitle())); connect(&domainHandler, SIGNAL(disconnectedFromDomain()), SLOT(updateWindowTitle())); connect(&domainHandler, &DomainHandler::settingsReceived, this, &Application::domainSettingsReceived); - + connect(&domainHandler, &DomainHandler::hostnameChanged, Menu::getInstance(), &Menu::clearLoginDomain); + // hookup VoxelEditSender to PaymentManager so we can pay for octree edits const PaymentManager& paymentManager = PaymentManager::getInstance(); connect(&_voxelEditSender, &VoxelEditPacketSender::octreePaymentRequired, diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 5ef64741cf..15a674566b 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -114,6 +114,7 @@ Menu::Menu() : _loginAction(NULL), _preferencesDialog(NULL), _loginDialog(NULL), + _loginDomain(), _snapshotsLocation(), _scriptsLocation(), _walletPrivateKey() @@ -1052,14 +1053,28 @@ void sendFakeEnterEvent() { const float DIALOG_RATIO_OF_WINDOW = 0.30f; +void Menu::clearLoginDomain() { + // Needed for domains that don't require login. + _loginDomain = QString(); +} + void Menu::loginForCurrentDomain() { - if (!_loginDialog) { + QString domain = NodeList::getInstance()->getDomainHandler().getHostname(); + bool hasShownForDomain = domain == _loginDomain; + + if (!_loginDialog && !hasShownForDomain) { + _loginDomain = domain; _loginDialog = new LoginDialog(Application::getInstance()->getWindow()); _loginDialog->show(); _loginDialog->resizeAndPosition(false); } } +void Menu::showLoginForCurrentDomain() { + _loginDomain = QString(); + loginForCurrentDomain(); +} + void Menu::editPreferences() { if (!_preferencesDialog) { _preferencesDialog = new PreferencesDialog(Application::getInstance()->getWindow()); @@ -1404,7 +1419,7 @@ void Menu::toggleLoginMenuItem() { // change the menu item to login _loginAction->setText("Login"); - connect(_loginAction, &QAction::triggered, this, &Menu::loginForCurrentDomain); + connect(_loginAction, &QAction::triggered, this, &Menu::showLoginForCurrentDomain); } } diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 6c7a867584..8f6724af24 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -175,7 +175,9 @@ signals: public slots: + void clearLoginDomain(); void loginForCurrentDomain(); + void showLoginForCurrentDomain(); void bandwidthDetails(); void octreeStatsDetails(); void lodTools(); @@ -302,6 +304,7 @@ private: QPointer _attachmentsDialog; QPointer _animationsDialog; QPointer _loginDialog; + QString _loginDomain; QAction* _chatAction; QString _snapshotsLocation; QString _scriptsLocation;