mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
Added DialogsManager
Moved login dialog out of menu into the dialog manager More to follow!
This commit is contained in:
parent
e8a396b08b
commit
8f9507cd4c
7 changed files with 139 additions and 69 deletions
|
@ -114,7 +114,9 @@
|
||||||
#include "scripting/WebWindowClass.h"
|
#include "scripting/WebWindowClass.h"
|
||||||
|
|
||||||
#include "ui/DataWebDialog.h"
|
#include "ui/DataWebDialog.h"
|
||||||
|
#include "ui/DialogsManager.h"
|
||||||
#include "ui/InfoView.h"
|
#include "ui/InfoView.h"
|
||||||
|
#include "ui/LoginDialog.h"
|
||||||
#include "ui/Snapshot.h"
|
#include "ui/Snapshot.h"
|
||||||
#include "ui/StandAloneJSConsole.h"
|
#include "ui/StandAloneJSConsole.h"
|
||||||
#include "ui/Stats.h"
|
#include "ui/Stats.h"
|
||||||
|
@ -177,6 +179,7 @@ bool setupEssentials(int& argc, char** argv) {
|
||||||
auto audioToolBox = DependencyManager::set<AudioToolBox>();
|
auto audioToolBox = DependencyManager::set<AudioToolBox>();
|
||||||
auto lodManager = DependencyManager::set<LODManager>();
|
auto lodManager = DependencyManager::set<LODManager>();
|
||||||
auto jsConsole = DependencyManager::set<StandAloneJSConsole>();
|
auto jsConsole = DependencyManager::set<StandAloneJSConsole>();
|
||||||
|
auto dialogsManager = DependencyManager::set<DialogsManager>();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -298,7 +301,6 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) :
|
||||||
connect(&domainHandler, SIGNAL(disconnectedFromDomain()), SLOT(updateWindowTitle()));
|
connect(&domainHandler, SIGNAL(disconnectedFromDomain()), SLOT(updateWindowTitle()));
|
||||||
connect(&domainHandler, SIGNAL(disconnectedFromDomain()), SLOT(clearDomainOctreeDetails()));
|
connect(&domainHandler, SIGNAL(disconnectedFromDomain()), SLOT(clearDomainOctreeDetails()));
|
||||||
connect(&domainHandler, &DomainHandler::settingsReceived, this, &Application::domainSettingsReceived);
|
connect(&domainHandler, &DomainHandler::settingsReceived, this, &Application::domainSettingsReceived);
|
||||||
connect(&domainHandler, &DomainHandler::hostnameChanged, Menu::getInstance(), &Menu::clearLoginDialogDisplayedFlag);
|
|
||||||
|
|
||||||
// update our location every 5 seconds in the data-server, assuming that we are authenticated with one
|
// update our location every 5 seconds in the data-server, assuming that we are authenticated with one
|
||||||
const qint64 DATA_SERVER_LOCATION_CHANGE_UPDATE_MSECS = 5 * 1000;
|
const qint64 DATA_SERVER_LOCATION_CHANGE_UPDATE_MSECS = 5 * 1000;
|
||||||
|
@ -324,7 +326,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) :
|
||||||
|
|
||||||
connect(&accountManager, &AccountManager::balanceChanged, this, &Application::updateWindowTitle);
|
connect(&accountManager, &AccountManager::balanceChanged, this, &Application::updateWindowTitle);
|
||||||
|
|
||||||
connect(&accountManager, &AccountManager::authRequired, Menu::getInstance(), &Menu::loginForCurrentDomain);
|
auto dialogsManager = DependencyManager::get<DialogsManager>();
|
||||||
|
connect(&accountManager, &AccountManager::authRequired, dialogsManager.data(), &DialogsManager::showLoginDialog);
|
||||||
connect(&accountManager, &AccountManager::usernameChanged, this, &Application::updateWindowTitle);
|
connect(&accountManager, &AccountManager::usernameChanged, this, &Application::updateWindowTitle);
|
||||||
|
|
||||||
// once we have a profile in account manager make sure we generate a new keypair
|
// once we have a profile in account manager make sure we generate a new keypair
|
||||||
|
|
|
@ -58,6 +58,7 @@
|
||||||
#include "ui/BandwidthDialog.h"
|
#include "ui/BandwidthDialog.h"
|
||||||
#include "ui/CachesSizeDialog.h"
|
#include "ui/CachesSizeDialog.h"
|
||||||
#include "ui/DataWebDialog.h"
|
#include "ui/DataWebDialog.h"
|
||||||
|
#include "ui/DialogsManager.h"
|
||||||
#include "ui/HMDToolsDialog.h"
|
#include "ui/HMDToolsDialog.h"
|
||||||
#include "ui/LodToolsDialog.h"
|
#include "ui/LodToolsDialog.h"
|
||||||
#include "ui/LoginDialog.h"
|
#include "ui/LoginDialog.h"
|
||||||
|
@ -102,20 +103,22 @@ Menu::Menu() {
|
||||||
SLOT(aboutApp()),
|
SLOT(aboutApp()),
|
||||||
QAction::AboutRole);
|
QAction::AboutRole);
|
||||||
#endif
|
#endif
|
||||||
|
auto dialogsManager = DependencyManager::get<DialogsManager>();
|
||||||
AccountManager& accountManager = AccountManager::getInstance();
|
AccountManager& accountManager = AccountManager::getInstance();
|
||||||
|
|
||||||
_loginAction = addActionToQMenuAndActionHash(fileMenu, MenuOption::Logout);
|
{
|
||||||
|
addActionToQMenuAndActionHash(fileMenu, MenuOption::Login);
|
||||||
// call our toggle login function now so the menu option is setup properly
|
|
||||||
toggleLoginMenuItem();
|
// connect to the appropriate signal of the AccountManager so that we can change the Login/Logout menu item
|
||||||
|
connect(&accountManager, &AccountManager::profileChanged,
|
||||||
// connect to the appropriate signal of the AccountManager so that we can change the Login/Logout menu item
|
dialogsManager.data(), &DialogsManager::toggleLoginDialog);
|
||||||
connect(&accountManager, &AccountManager::profileChanged, this, &Menu::toggleLoginMenuItem);
|
connect(&accountManager, &AccountManager::logoutComplete,
|
||||||
connect(&accountManager, &AccountManager::logoutComplete, this, &Menu::toggleLoginMenuItem);
|
dialogsManager.data(), &DialogsManager::toggleLoginDialog);
|
||||||
|
}
|
||||||
|
|
||||||
addDisabledActionAndSeparator(fileMenu, "Scripts");
|
addDisabledActionAndSeparator(fileMenu, "Scripts");
|
||||||
addActionToQMenuAndActionHash(fileMenu, MenuOption::LoadScript, Qt::CTRL | Qt::Key_O, appInstance, SLOT(loadDialog()));
|
addActionToQMenuAndActionHash(fileMenu, MenuOption::LoadScript, Qt::CTRL | Qt::Key_O,
|
||||||
|
appInstance, SLOT(loadDialog()));
|
||||||
addActionToQMenuAndActionHash(fileMenu, MenuOption::LoadScriptURL,
|
addActionToQMenuAndActionHash(fileMenu, MenuOption::LoadScriptURL,
|
||||||
Qt::CTRL | Qt::SHIFT | Qt::Key_O, appInstance, SLOT(loadScriptURLDialog()));
|
Qt::CTRL | Qt::SHIFT | Qt::Key_O, appInstance, SLOT(loadScriptURLDialog()));
|
||||||
addActionToQMenuAndActionHash(fileMenu, MenuOption::StopAllScripts, 0, appInstance, SLOT(stopAllScripts()));
|
addActionToQMenuAndActionHash(fileMenu, MenuOption::StopAllScripts, 0, appInstance, SLOT(stopAllScripts()));
|
||||||
|
@ -1109,26 +1112,6 @@ void sendFakeEnterEvent() {
|
||||||
|
|
||||||
const float DIALOG_RATIO_OF_WINDOW = 0.30f;
|
const float DIALOG_RATIO_OF_WINDOW = 0.30f;
|
||||||
|
|
||||||
void Menu::clearLoginDialogDisplayedFlag() {
|
|
||||||
// Needed for domains that don't require login.
|
|
||||||
_hasLoginDialogDisplayed = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Menu::loginForCurrentDomain() {
|
|
||||||
if (!_loginDialog && !_hasLoginDialogDisplayed) {
|
|
||||||
_loginDialog = new LoginDialog(Application::getInstance()->getWindow());
|
|
||||||
_loginDialog->show();
|
|
||||||
_loginDialog->resizeAndPosition(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
_hasLoginDialogDisplayed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Menu::showLoginForCurrentDomain() {
|
|
||||||
_hasLoginDialogDisplayed = false;
|
|
||||||
loginForCurrentDomain();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Menu::editPreferences() {
|
void Menu::editPreferences() {
|
||||||
if (!_preferencesDialog) {
|
if (!_preferencesDialog) {
|
||||||
_preferencesDialog = new PreferencesDialog();
|
_preferencesDialog = new PreferencesDialog();
|
||||||
|
@ -1226,23 +1209,6 @@ void Menu::displayNameLocationResponse(const QString& errorString) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Menu::toggleLoginMenuItem() {
|
|
||||||
AccountManager& accountManager = AccountManager::getInstance();
|
|
||||||
|
|
||||||
disconnect(_loginAction, 0, 0, 0);
|
|
||||||
|
|
||||||
if (accountManager.isLoggedIn()) {
|
|
||||||
// change the menu item to logout
|
|
||||||
_loginAction->setText("Logout " + accountManager.getAccountInfo().getUsername());
|
|
||||||
connect(_loginAction, &QAction::triggered, &accountManager, &AccountManager::logout);
|
|
||||||
} else {
|
|
||||||
// change the menu item to login
|
|
||||||
_loginAction->setText("Login");
|
|
||||||
|
|
||||||
connect(_loginAction, &QAction::triggered, this, &Menu::showLoginForCurrentDomain);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void Menu::bandwidthDetails() {
|
void Menu::bandwidthDetails() {
|
||||||
if (! _bandwidthDialog) {
|
if (! _bandwidthDialog) {
|
||||||
_bandwidthDialog = new BandwidthDialog(DependencyManager::get<GLCanvas>().data(),
|
_bandwidthDialog = new BandwidthDialog(DependencyManager::get<GLCanvas>().data(),
|
||||||
|
|
|
@ -153,10 +153,6 @@ signals:
|
||||||
void scriptLocationChanged(const QString& newPath);
|
void scriptLocationChanged(const QString& newPath);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
||||||
void clearLoginDialogDisplayedFlag();
|
|
||||||
void loginForCurrentDomain();
|
|
||||||
void showLoginForCurrentDomain();
|
|
||||||
void bandwidthDetails();
|
void bandwidthDetails();
|
||||||
void octreeStatsDetails();
|
void octreeStatsDetails();
|
||||||
void cachesSizeDialog();
|
void cachesSizeDialog();
|
||||||
|
@ -166,7 +162,6 @@ public slots:
|
||||||
void copyAddress();
|
void copyAddress();
|
||||||
void copyPath();
|
void copyPath();
|
||||||
|
|
||||||
void toggleLoginMenuItem();
|
|
||||||
void toggleSixense(bool shouldEnable);
|
void toggleSixense(bool shouldEnable);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
@ -195,8 +190,6 @@ private:
|
||||||
SpeechRecognizer _speechRecognizer;
|
SpeechRecognizer _speechRecognizer;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
bool _hasLoginDialogDisplayed = false;
|
|
||||||
|
|
||||||
QPointer<AddressBarDialog> _addressBarDialog;
|
QPointer<AddressBarDialog> _addressBarDialog;
|
||||||
QPointer<AnimationsDialog> _animationsDialog;
|
QPointer<AnimationsDialog> _animationsDialog;
|
||||||
QPointer<AttachmentsDialog> _attachmentsDialog;
|
QPointer<AttachmentsDialog> _attachmentsDialog;
|
||||||
|
@ -204,7 +197,6 @@ private:
|
||||||
QPointer<CachesSizeDialog> _cachesSizeDialog;
|
QPointer<CachesSizeDialog> _cachesSizeDialog;
|
||||||
QPointer<HMDToolsDialog> _hmdToolsDialog;
|
QPointer<HMDToolsDialog> _hmdToolsDialog;
|
||||||
QPointer<LodToolsDialog> _lodToolsDialog;
|
QPointer<LodToolsDialog> _lodToolsDialog;
|
||||||
QPointer<LoginDialog> _loginDialog;
|
|
||||||
QPointer<OctreeStatsDialog> _octreeStatsDialog;
|
QPointer<OctreeStatsDialog> _octreeStatsDialog;
|
||||||
QPointer<PreferencesDialog> _preferencesDialog;
|
QPointer<PreferencesDialog> _preferencesDialog;
|
||||||
|
|
||||||
|
@ -213,7 +205,6 @@ private:
|
||||||
QPointer<ScriptEditorWindow> _ScriptEditor;
|
QPointer<ScriptEditorWindow> _ScriptEditor;
|
||||||
QPointer<ChatWindow> _chatWindow;
|
QPointer<ChatWindow> _chatWindow;
|
||||||
|
|
||||||
QAction* _loginAction = nullptr;
|
|
||||||
QAction* _chatAction = nullptr;
|
QAction* _chatAction = nullptr;
|
||||||
QString _snapshotsLocation;
|
QString _snapshotsLocation;
|
||||||
QString _scriptsLocation;
|
QString _scriptsLocation;
|
||||||
|
@ -307,7 +298,6 @@ namespace MenuOption {
|
||||||
const QString LodTools = "LOD Tools";
|
const QString LodTools = "LOD Tools";
|
||||||
const QString Login = "Login";
|
const QString Login = "Login";
|
||||||
const QString Log = "Log";
|
const QString Log = "Log";
|
||||||
const QString Logout = "Logout";
|
|
||||||
const QString LowVelocityFilter = "Low Velocity Filter";
|
const QString LowVelocityFilter = "Low Velocity Filter";
|
||||||
const QString MetavoxelEditor = "Metavoxel Editor...";
|
const QString MetavoxelEditor = "Metavoxel Editor...";
|
||||||
const QString Metavoxels = "Metavoxels";
|
const QString Metavoxels = "Metavoxels";
|
||||||
|
|
29
interface/src/ui/DialogsManager.cpp
Normal file
29
interface/src/ui/DialogsManager.cpp
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
//
|
||||||
|
// DialogsManager.cpp
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Created by Clement on 1/18/15.
|
||||||
|
// Copyright 2015 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
//
|
||||||
|
|
||||||
|
#include <Application.h>
|
||||||
|
#include <MainWindow.h>
|
||||||
|
|
||||||
|
#include "LoginDialog.h"
|
||||||
|
|
||||||
|
#include "DialogsManager.h"
|
||||||
|
|
||||||
|
|
||||||
|
void DialogsManager::toggleLoginDialog() {
|
||||||
|
maybeCreateDialog(_loginDialog);
|
||||||
|
_loginDialog->toggleQAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
void DialogsManager::showLoginDialog() {
|
||||||
|
maybeCreateDialog(_loginDialog);
|
||||||
|
_loginDialog->showLoginForCurrentDomain();
|
||||||
|
}
|
||||||
|
|
45
interface/src/ui/DialogsManager.h
Normal file
45
interface/src/ui/DialogsManager.h
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
//
|
||||||
|
// DialogsManager.h
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Created by Clement on 1/18/15.
|
||||||
|
// Copyright 2015 High Fidelity, Inc.
|
||||||
|
//
|
||||||
|
// Distributed under the Apache License, Version 2.0.
|
||||||
|
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef hifi_DialogsManager_h
|
||||||
|
#define hifi_DialogsManager_h
|
||||||
|
|
||||||
|
#include <QPointer>
|
||||||
|
|
||||||
|
#include <DependencyManager.h>
|
||||||
|
|
||||||
|
class LoginDialog;
|
||||||
|
|
||||||
|
class DialogsManager : public QObject, public Dependency {
|
||||||
|
Q_OBJECT
|
||||||
|
SINGLETON_DEPENDENCY
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void toggleLoginDialog();
|
||||||
|
void showLoginDialog();
|
||||||
|
|
||||||
|
private:
|
||||||
|
DialogsManager() {}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void maybeCreateDialog(QPointer<T>& member) {
|
||||||
|
if (!member) {
|
||||||
|
MainWindow* parent = qApp->getWindow();
|
||||||
|
Q_CHECK_PTR(parent);
|
||||||
|
member = new T(parent);
|
||||||
|
Q_CHECK_PTR(member);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QPointer<LoginDialog> _loginDialog;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // hifi_DialogsManager_h
|
|
@ -29,12 +29,9 @@ LoginDialog::LoginDialog(QWidget* parent) :
|
||||||
_ui(new Ui::LoginDialog) {
|
_ui(new Ui::LoginDialog) {
|
||||||
|
|
||||||
_ui->setupUi(this);
|
_ui->setupUi(this);
|
||||||
_ui->errorLabel->hide();
|
reset();
|
||||||
_ui->emailLineEdit->setFocus();
|
|
||||||
_ui->logoLabel->setPixmap(QPixmap(PathUtils::resourcesPath() + "images/hifi-logo.svg"));
|
setAttribute(Qt::WA_DeleteOnClose, false);
|
||||||
_ui->loginButton->setIcon(QIcon(PathUtils::resourcesPath() + "images/login.svg"));
|
|
||||||
_ui->infoLabel->setVisible(false);
|
|
||||||
_ui->errorLabel->setVisible(false);
|
|
||||||
|
|
||||||
connect(&AccountManager::getInstance(), &AccountManager::loginComplete,
|
connect(&AccountManager::getInstance(), &AccountManager::loginComplete,
|
||||||
this, &LoginDialog::handleLoginCompleted);
|
this, &LoginDialog::handleLoginCompleted);
|
||||||
|
@ -50,9 +47,21 @@ LoginDialog::~LoginDialog() {
|
||||||
delete _ui;
|
delete _ui;
|
||||||
};
|
};
|
||||||
|
|
||||||
void LoginDialog::handleLoginCompleted(const QUrl& authURL) {
|
void LoginDialog::reset() {
|
||||||
|
_ui->errorLabel->hide();
|
||||||
|
_ui->emailLineEdit->setFocus();
|
||||||
|
_ui->logoLabel->setPixmap(QPixmap(PathUtils::resourcesPath() + "images/hifi-logo.svg"));
|
||||||
|
_ui->loginButton->setIcon(QIcon(PathUtils::resourcesPath() + "images/login.svg"));
|
||||||
_ui->infoLabel->setVisible(false);
|
_ui->infoLabel->setVisible(false);
|
||||||
_ui->errorLabel->setVisible(false);
|
_ui->errorLabel->setVisible(false);
|
||||||
|
|
||||||
|
_ui->emailLineEdit->setText("");
|
||||||
|
_ui->passwordLineEdit->setText("");
|
||||||
|
_ui->loginArea->setDisabled(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoginDialog::handleLoginCompleted(const QUrl& authURL) {
|
||||||
|
reset();
|
||||||
close();
|
close();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -87,3 +96,27 @@ void LoginDialog::moveEvent(QMoveEvent* event) {
|
||||||
// Modal dialogs seemed to get repositioned automatically. Combat this by moving the window if needed.
|
// Modal dialogs seemed to get repositioned automatically. Combat this by moving the window if needed.
|
||||||
resizeAndPosition();
|
resizeAndPosition();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void LoginDialog::toggleQAction() {
|
||||||
|
AccountManager& accountManager = AccountManager::getInstance();
|
||||||
|
QAction* loginAction = Menu::getInstance()->getActionForOption(MenuOption::Login);
|
||||||
|
Q_CHECK_PTR(loginAction);
|
||||||
|
|
||||||
|
disconnect(loginAction, 0, 0, 0);
|
||||||
|
|
||||||
|
if (accountManager.isLoggedIn()) {
|
||||||
|
// change the menu item to logout
|
||||||
|
loginAction->setText("Logout " + accountManager.getAccountInfo().getUsername());
|
||||||
|
connect(loginAction, &QAction::triggered, &accountManager, &AccountManager::logout);
|
||||||
|
} else {
|
||||||
|
// change the menu item to login
|
||||||
|
loginAction->setText("Login");
|
||||||
|
connect(loginAction, &QAction::triggered, this, &LoginDialog::showLoginForCurrentDomain);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoginDialog::showLoginForCurrentDomain() {
|
||||||
|
show();
|
||||||
|
resizeAndPosition(false);
|
||||||
|
}
|
||||||
|
|
|
@ -27,6 +27,11 @@ public:
|
||||||
~LoginDialog();
|
~LoginDialog();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
void toggleQAction();
|
||||||
|
void showLoginForCurrentDomain();
|
||||||
|
|
||||||
|
protected slots:
|
||||||
|
void reset();
|
||||||
void handleLoginClicked();
|
void handleLoginClicked();
|
||||||
void handleLoginCompleted(const QUrl& authURL);
|
void handleLoginCompleted(const QUrl& authURL);
|
||||||
void handleLoginFailed();
|
void handleLoginFailed();
|
||||||
|
@ -35,8 +40,7 @@ protected:
|
||||||
void moveEvent(QMoveEvent* event);
|
void moveEvent(QMoveEvent* event);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::LoginDialog* _ui;
|
Ui::LoginDialog* _ui = nullptr;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // hifi_LoginDialog_h
|
#endif // hifi_LoginDialog_h
|
||||||
|
|
Loading…
Reference in a new issue