diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 64cdf98239..4ee3865600 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -43,6 +43,7 @@ #include "avatar/AvatarManager.h" #include "avatar/AvatarPackager.h" #include "AvatarBookmarks.h" +#include "DomainAccountManager.h" #include "MainWindow.h" #include "render/DrawStatus.h" #include "scripting/MenuScriptingInterface.h" @@ -73,6 +74,7 @@ const char* EXCLUSION_GROUP_KEY = "exclusionGroup"; Menu::Menu() { auto dialogsManager = DependencyManager::get(); auto accountManager = DependencyManager::get(); + auto domainAccountManager = DependencyManager::get(); // File/Application menu ---------------------------------- MenuWrapper* fileMenu = addMenu("File"); @@ -89,11 +91,15 @@ Menu::Menu() { } auto domainLogin = addActionToQMenuAndActionHash(fileMenu, "Domain: Log In"); + domainLogin->setVisible(false); connect(domainLogin, &QAction::triggered, [] { auto dialogsManager = DependencyManager::get(); dialogsManager->setDomainLoginState(); dialogsManager->showDomainLoginDialog(); }); + connect(domainAccountManager.data(), &DomainAccountManager::hasLogInChanged, [domainLogin](bool hasLogIn) { + domainLogin->setVisible(hasLogIn); + }); // File > Quit addActionToQMenuAndActionHash(fileMenu, MenuOption::Quit, Qt::CTRL | Qt::Key_Q, qApp, SLOT(quit()), QAction::QuitRole); diff --git a/libraries/networking/src/DomainAccountManager.cpp b/libraries/networking/src/DomainAccountManager.cpp index e2eec7a13e..d257994bea 100644 --- a/libraries/networking/src/DomainAccountManager.cpp +++ b/libraries/networking/src/DomainAccountManager.cpp @@ -51,6 +51,7 @@ void DomainAccountManager::setDomainURL(const QUrl& domainURL) { _currentAuth.domainURL = domainURL; } + emit hasLogInChanged(hasLogIn()); } void DomainAccountManager::setAuthURL(const QUrl& authURL) { @@ -64,6 +65,8 @@ void DomainAccountManager::setAuthURL(const QUrl& authURL) { _currentAuth.accessToken = ""; _currentAuth.refreshToken = ""; + + emit hasLogInChanged(hasLogIn()); } bool DomainAccountManager::hasLogIn() { diff --git a/libraries/networking/src/DomainAccountManager.h b/libraries/networking/src/DomainAccountManager.h index 08ebe59882..6a1da84aff 100644 --- a/libraries/networking/src/DomainAccountManager.h +++ b/libraries/networking/src/DomainAccountManager.h @@ -53,6 +53,7 @@ public slots: void requestAccessTokenFinished(); signals: + void hasLogInChanged(bool hasLogIn); void authRequired(const QString& domain); void loginComplete(); void loginFailed();