Display domain login menu item only on domains that have domain login

This commit is contained in:
David Rowe 2020-08-23 15:56:27 +12:00
parent 29e5bfdb94
commit 67100b5a20
3 changed files with 10 additions and 0 deletions

View file

@ -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<DialogsManager>();
auto accountManager = DependencyManager::get<AccountManager>();
auto domainAccountManager = DependencyManager::get<DomainAccountManager>();
// 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>();
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);

View file

@ -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() {

View file

@ -53,6 +53,7 @@ public slots:
void requestAccessTokenFinished();
signals:
void hasLogInChanged(bool hasLogIn);
void authRequired(const QString& domain);
void loginComplete();
void loginFailed();