From 90c3c7955ad94f0bb1f6386843bd0e947d3f916f Mon Sep 17 00:00:00 2001 From: Atlante45 Date: Sun, 18 Jan 2015 05:16:33 -0800 Subject: [PATCH] Moved chat out of Menu Move into DialogsManager Done moving dialogs out of Menu!!! --- interface/src/Menu.cpp | 51 ++--------------------------- interface/src/Menu.h | 4 --- interface/src/ui/DialogsManager.cpp | 48 +++++++++++++++++++++++++++ interface/src/ui/DialogsManager.h | 15 ++++++--- 4 files changed, 61 insertions(+), 57 deletions(-) diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index 1baa73ca0b..19b6f74d8e 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -197,20 +197,9 @@ Menu::Menu() { #endif #ifdef HAVE_QXMPP - _chatAction = addActionToQMenuAndActionHash(toolsMenu, - MenuOption::Chat, - Qt::Key_Backslash, - this, - SLOT(showChat())); - - const QXmppClient& xmppClient = XmppClient::getInstance().getXMPPClient(); - toggleChat(); - connect(&xmppClient, &QXmppClient::connected, this, &Menu::toggleChat); - connect(&xmppClient, &QXmppClient::disconnected, this, &Menu::toggleChat); - - QDir::setCurrent(PathUtils::resourcesPath()); - // init chat window to listen chat - _chatWindow = new ChatWindow(Application::getInstance()->getWindow()); + addActionToQMenuAndActionHash(toolsMenu, MenuOption::Chat, Qt::Key_Backslash, + dialogsManager.data(), SLOT(showChat())); + dialogsManager->setupChat(); #endif addActionToQMenuAndActionHash(toolsMenu, @@ -1180,44 +1169,10 @@ void Menu::displayNameLocationResponse(const QString& errorString) { } } -void Menu::showChat() { - if (AccountManager::getInstance().isLoggedIn()) { - QMainWindow* mainWindow = Application::getInstance()->getWindow(); - if (!_chatWindow) { - _chatWindow = new ChatWindow(mainWindow); - } - - if (_chatWindow->isHidden()) { - _chatWindow->show(); - } - _chatWindow->raise(); - _chatWindow->activateWindow(); - _chatWindow->setFocus(); - } else { - Application::getInstance()->getTrayIcon()->showMessage("Interface", "You need to login to be able to chat with others on this domain."); - } -} - void Menu::loadRSSDKFile() { RealSense::getInstance()->loadRSSDKFile(); } -void Menu::toggleChat() { -#ifdef HAVE_QXMPP - _chatAction->setEnabled(XmppClient::getInstance().getXMPPClient().isConnected()); - if (!_chatAction->isEnabled() && _chatWindow && AccountManager::getInstance().isLoggedIn()) { - if (_chatWindow->isHidden()) { - _chatWindow->show(); - _chatWindow->raise(); - _chatWindow->activateWindow(); - _chatWindow->setFocus(); - } else { - _chatWindow->hide(); - } - } -#endif -} - void Menu::audioMuteToggled() { QAction *muteAction = _actionHash.value(MenuOption::MuteAudio); if (muteAction) { diff --git a/interface/src/Menu.h b/interface/src/Menu.h index 97e6a20fd7..9e0cea66a5 100644 --- a/interface/src/Menu.h +++ b/interface/src/Menu.h @@ -159,8 +159,6 @@ private slots: void bumpSettings(); void changePrivateKey(); void runTests(); - void showChat(); - void toggleChat(); void audioMuteToggled(); void displayNameLocationResponse(const QString& errorString); void changeVSync(); @@ -170,9 +168,7 @@ private: #if defined(Q_OS_MAC) || defined(Q_OS_WIN) SpeechRecognizer _speechRecognizer; #endif - QPointer _chatWindow; - QAction* _chatAction = nullptr; QString _snapshotsLocation; QString _scriptsLocation; QByteArray _walletPrivateKey; diff --git a/interface/src/ui/DialogsManager.cpp b/interface/src/ui/DialogsManager.cpp index b2234eb0a3..40ebf61c64 100644 --- a/interface/src/ui/DialogsManager.cpp +++ b/interface/src/ui/DialogsManager.cpp @@ -9,8 +9,11 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +#include #include #include +#include +#include #include "AddressBarDialog.h" #include "AnimationsDialog.h" @@ -160,6 +163,51 @@ void DialogsManager::showScriptEditor() { _scriptEditor->raise(); } +void DialogsManager::setupChat() { + const QXmppClient& xmppClient = XmppClient::getInstance().getXMPPClient(); + connect(&xmppClient, &QXmppClient::connected, this, &DialogsManager::toggleChat); + connect(&xmppClient, &QXmppClient::disconnected, this, &DialogsManager::toggleChat); + + QDir::setCurrent(PathUtils::resourcesPath()); + // init chat window to listen chat + maybeCreateDialog(_chatWindow); +} + +void DialogsManager::showChat() { + if (AccountManager::getInstance().isLoggedIn()) { + maybeCreateDialog(_chatWindow); + + if (_chatWindow->isHidden()) { + _chatWindow->show(); + } + _chatWindow->raise(); + _chatWindow->activateWindow(); + _chatWindow->setFocus(); + } else { + qApp->getTrayIcon()->showMessage("Interface", + "You need to login to be able to chat with others on this domain."); + } +} + +void DialogsManager::toggleChat() { +#ifdef HAVE_QXMPP + QAction* chatAction = Menu::getInstance()->getActionForOption(MenuOption::Login); + Q_CHECK_PTR(chatAction); + + chatAction->setEnabled(XmppClient::getInstance().getXMPPClient().isConnected()); + if (!chatAction->isEnabled() && _chatWindow && AccountManager::getInstance().isLoggedIn()) { + if (_chatWindow->isHidden()) { + _chatWindow->show(); + _chatWindow->raise(); + _chatWindow->activateWindow(); + _chatWindow->setFocus(); + } else { + _chatWindow->hide(); + } + } +#endif +} + diff --git a/interface/src/ui/DialogsManager.h b/interface/src/ui/DialogsManager.h index 0762f73c2a..8a8b1302d7 100644 --- a/interface/src/ui/DialogsManager.h +++ b/interface/src/ui/DialogsManager.h @@ -16,17 +16,19 @@ #include +class QAction; + class DialogsManager : public QObject, public Dependency { Q_OBJECT SINGLETON_DEPENDENCY public: - QPointer getOctreeStatsDialog() { return _octreeStatsDialog; } + QPointer getBandwidthDialog() const { return _bandwidthDialog; } + QPointer getHMDToolsDialog() const { return _hmdToolsDialog; } + QPointer getLodToolsDialog() const { return _lodToolsDialog; } + QPointer getOctreeStatsDialog() const { return _octreeStatsDialog; } - - BandwidthDialog* getBandwidthDialog() const { return _bandwidthDialog; } - LodToolsDialog* getLodToolsDialog() const { return _lodToolsDialog; } - HMDToolsDialog* getHMDToolsDialog() const { return _hmdToolsDialog; } + void setupChat(); public slots: void toggleAddressBar(); @@ -43,10 +45,12 @@ public slots: void showMetavoxelEditor(); void showMetavoxelNetworkSimulator(); void showScriptEditor(); + void showChat(); private slots: void toggleToolWindow(); void hmdToolsClosed(); + void toggleChat(); private: DialogsManager() {} @@ -70,6 +74,7 @@ private: QPointer _attachmentsDialog; QPointer _bandwidthDialog; QPointer _cachesSizeDialog; + QPointer _chatWindow; QPointer _hmdToolsDialog; QPointer _lodToolsDialog; QPointer _loginDialog;