From d1672b510d5aec85145369e862984c36720909b3 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Mon, 11 Aug 2014 18:41:07 -0700 Subject: [PATCH 1/3] Add DomainHandler::disconnectedFromDomain signal --- libraries/networking/src/DomainHandler.cpp | 5 ++++- libraries/networking/src/DomainHandler.h | 1 + 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/libraries/networking/src/DomainHandler.cpp b/libraries/networking/src/DomainHandler.cpp index fcd284fd4a..91166129ad 100644 --- a/libraries/networking/src/DomainHandler.cpp +++ b/libraries/networking/src/DomainHandler.cpp @@ -36,6 +36,7 @@ DomainHandler::DomainHandler(QObject* parent) : void DomainHandler::clearConnectionInfo() { _uuid = QUuid(); _isConnected = false; + emit disconnectedFromDomain(); if (_handshakeTimer) { _handshakeTimer->stop(); @@ -129,6 +130,8 @@ void DomainHandler::setIsConnected(bool isConnected) { // we've connected to new domain - time to ask it for global settings requestDomainSettings(); + } else { + emit disconnectedFromDomain(); } } } @@ -196,4 +199,4 @@ void DomainHandler::parseDTLSRequirementPacket(const QByteArray& dtlsRequirement _sockAddr.setPort(dtlsPort); // initializeDTLSSession(); -} \ No newline at end of file +} diff --git a/libraries/networking/src/DomainHandler.h b/libraries/networking/src/DomainHandler.h index 28433c5455..91caddca22 100644 --- a/libraries/networking/src/DomainHandler.h +++ b/libraries/networking/src/DomainHandler.h @@ -70,6 +70,7 @@ private slots: signals: void hostnameChanged(const QString& hostname); void connectedToDomain(const QString& hostname); + void disconnectedFromDomain(); void settingsReceived(const QJsonObject& domainSettingsObject); void settingsReceiveFail(); From 0296d0deeb77e31b3703b868cbda3e7e2191c280 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Mon, 11 Aug 2014 18:43:26 -0700 Subject: [PATCH 2/3] Add domain connection status to window title --- interface/src/Application.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 6f7212e68f..9f14023dfc 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -242,6 +242,8 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : connect(&domainHandler, SIGNAL(hostnameChanged(const QString&)), SLOT(domainChanged(const QString&))); connect(&domainHandler, SIGNAL(connectedToDomain(const QString&)), SLOT(connectedToDomain(const QString&))); + connect(&domainHandler, SIGNAL(connectedToDomain(const QString&)), SLOT(updateWindowTitle())); + connect(&domainHandler, SIGNAL(disconnectedFromDomain()), SLOT(updateWindowTitle())); connect(&domainHandler, &DomainHandler::settingsReceived, this, &Application::domainSettingsReceived); // hookup VoxelEditSender to PaymentManager so we can pay for octree edits @@ -3320,9 +3322,10 @@ void Application::updateWindowTitle(){ QString buildVersion = " (build " + applicationVersion() + ")"; NodeList* nodeList = NodeList::getInstance(); + QString connectionStatus = nodeList->getDomainHandler().isConnected() ? "" : " (NOT CONNECTED) "; QString username = AccountManager::getInstance().getAccountInfo().getUsername(); QString title = QString() + (!username.isEmpty() ? username + " @ " : QString()) - + nodeList->getDomainHandler().getHostname() + buildVersion; + + nodeList->getDomainHandler().getHostname() + connectionStatus + buildVersion; AccountManager& accountManager = AccountManager::getInstance(); if (accountManager.getAccountInfo().hasBalance()) { From 4852fcc034964dd3027bef184209df6cc24986e2 Mon Sep 17 00:00:00 2001 From: Ryan Huffman Date: Mon, 11 Aug 2014 18:43:49 -0700 Subject: [PATCH 3/3] Add red border to main window when not connected to domain --- interface/src/ui/ApplicationOverlay.cpp | 29 +++++++++++++++++++++++++ interface/src/ui/ApplicationOverlay.h | 3 ++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/interface/src/ui/ApplicationOverlay.cpp b/interface/src/ui/ApplicationOverlay.cpp index c49873b5f5..7dcb50c314 100644 --- a/interface/src/ui/ApplicationOverlay.cpp +++ b/interface/src/ui/ApplicationOverlay.cpp @@ -57,6 +57,9 @@ ApplicationOverlay::~ApplicationOverlay() { const float WHITE_TEXT[] = { 0.93f, 0.93f, 0.93f }; const float RETICLE_COLOR[] = { 0.0f, 198.0f / 255.0f, 244.0f / 255.0f }; +const float CONNECTION_STATUS_BORDER_COLOR[] = { 1.0f, 0.0f, 0.0f }; +const float CONNECTION_STATUS_BORDER_LINE_WIDTH = 4.0f; + // Renders the overlays either to a texture or to the screen void ApplicationOverlay::renderOverlay(bool renderToTexture) { @@ -115,6 +118,8 @@ void ApplicationOverlay::renderOverlay(bool renderToTexture) { renderPointers(); + renderDomainConnectionStatusBorder(); + glPopMatrix(); @@ -1234,6 +1239,30 @@ void ApplicationOverlay::renderTexturedHemisphere() { } +void ApplicationOverlay::renderDomainConnectionStatusBorder() { + NodeList* nodeList = NodeList::getInstance(); + + if (nodeList && !nodeList->getDomainHandler().isConnected()) { + QGLWidget* glWidget = Application::getInstance()->getGLWidget(); + int right = glWidget->width(); + int bottom = glWidget->height(); + + glColor3f(CONNECTION_STATUS_BORDER_COLOR[0], + CONNECTION_STATUS_BORDER_COLOR[1], + CONNECTION_STATUS_BORDER_COLOR[2]); + glLineWidth(CONNECTION_STATUS_BORDER_LINE_WIDTH); + + glBegin(GL_LINE_LOOP); + + glVertex2i(0, 0); + glVertex2i(0, bottom); + glVertex2i(right, bottom); + glVertex2i(right, 0); + + glEnd(); + } +} + QOpenGLFramebufferObject* ApplicationOverlay::getFramebufferObject() { QSize size = Application::getInstance()->getGLWidget()->size(); if (!_framebufferObject || _framebufferObject->size() != size) { diff --git a/interface/src/ui/ApplicationOverlay.h b/interface/src/ui/ApplicationOverlay.h index 0c2ccc7b21..a493f6cd1b 100644 --- a/interface/src/ui/ApplicationOverlay.h +++ b/interface/src/ui/ApplicationOverlay.h @@ -56,6 +56,7 @@ private: void renderAudioMeter(); void renderStatsAndLogs(); void renderTexturedHemisphere(); + void renderDomainConnectionStatusBorder(); QOpenGLFramebufferObject* _framebufferObject; float _trailingAudioLoudness; @@ -76,4 +77,4 @@ private: GLuint _crosshairTexture; }; -#endif // hifi_ApplicationOverlay_h \ No newline at end of file +#endif // hifi_ApplicationOverlay_h