From b33fe9048aa2640dd9f0c44c9e9276d130045027 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 6 Aug 2019 11:29:29 +0200 Subject: [PATCH] Ref T659, login dialog can display connected and disconnected state and also change its state --- src/blackgui/components/logindialog.cpp | 43 +++++++++++++++++++++++++ src/blackgui/components/logindialog.h | 7 +++- src/blackgui/components/logindialog.ui | 16 +++++++++ src/swiftguistandard/swiftguistd.cpp | 4 +-- 4 files changed, 67 insertions(+), 3 deletions(-) diff --git a/src/blackgui/components/logindialog.cpp b/src/blackgui/components/logindialog.cpp index 4c7e20195..777022e26 100644 --- a/src/blackgui/components/logindialog.cpp +++ b/src/blackgui/components/logindialog.cpp @@ -9,6 +9,12 @@ #include "logindialog.h" #include "ui_logindialog.h" +#include "blackgui/guiapplication.h" +#include "blackcore/context/contextnetwork.h" + +using namespace BlackCore; +using namespace BlackCore::Context; + namespace BlackGui { namespace Components @@ -23,6 +29,11 @@ namespace BlackGui connect(ui->comp_LoginComponent, &CLoginAdvComponent::loginOrLogoffSuccessful, this, &CLoginDialog::onLoginOrLogoffSuccessful); connect(ui->comp_LoginComponent, &CLoginAdvComponent::loginOrLogoffCancelled, this, &CLoginDialog::onLoginOrLogoffCancelled); connect(ui->comp_LoginComponent, &CLoginAdvComponent::requestNetworkSettings, this, &CLoginDialog::onRequestNetworkSettings); + + if (sGui && sGui->getIContextNetwork()) + { + connect(sGui->getIContextNetwork(), &IContextNetwork::connectionStatusChanged, this, &CLoginDialog::onNetworkStatusChanged, Qt::QueuedConnection); + } } CLoginDialog::~CLoginDialog() @@ -31,6 +42,29 @@ namespace BlackGui void CLoginDialog::setAutoLogoff(bool logoff) { ui->comp_LoginComponent->setAutoLogoff(logoff); + ui->comp_LoginOverviewComponent->setAutoLogoff(logoff); + } + + void CLoginDialog::show() + { + this->init(); + QDialog::show(); + } + + void CLoginDialog::init() + { + bool connected = false; + if (sGui && sGui->getIContextNetwork()) + { + connected = sGui->getIContextNetwork()->isConnected(); + if (connected) + { + ui->comp_LoginOverviewComponent->showCurrentValues(); + } + } + + ui->comp_LoginComponent->setVisible(!connected); + ui->comp_LoginOverviewComponent->setVisible(connected); } void CLoginDialog::onLoginOrLogoffCancelled() @@ -48,5 +82,14 @@ namespace BlackGui emit this->requestNetworkSettings(); this->close(); } + + void CLoginDialog::onNetworkStatusChanged(BlackCore::INetwork::ConnectionStatus from, BlackCore::INetwork::ConnectionStatus to) + { + Q_UNUSED(from); + if (to == INetwork::Disconnected || to == INetwork::Connected) + { + this->init(); + } + } } // ns }// ns diff --git a/src/blackgui/components/logindialog.h b/src/blackgui/components/logindialog.h index 51cd5ad3f..2accb6021 100644 --- a/src/blackgui/components/logindialog.h +++ b/src/blackgui/components/logindialog.h @@ -12,6 +12,7 @@ #define BLACKGUI_COMPONENTS_LOGINDIALOG_H #include "blackgui/blackguiexport.h" +#include "blackcore/network.h" #include "blackmisc/aviation/airport.h" #include #include @@ -36,18 +37,22 @@ namespace BlackGui //! Set auto logoff void setAutoLogoff(bool logoff); + //! Init and show + void show(); + signals: //! Request server settings void requestNetworkSettings(); private: + void init(); void onLoginOrLogoffCancelled(); void onLoginOrLogoffSuccessful(); void onRequestNetworkSettings(); + void onNetworkStatusChanged(BlackCore::INetwork::ConnectionStatus from, BlackCore::INetwork::ConnectionStatus to); QScopedPointer ui; }; - } // ns }// ns diff --git a/src/blackgui/components/logindialog.ui b/src/blackgui/components/logindialog.ui index eb7fa01c7..3d0bfecc1 100644 --- a/src/blackgui/components/logindialog.ui +++ b/src/blackgui/components/logindialog.ui @@ -30,6 +30,16 @@ + + + + QFrame::StyledPanel + + + QFrame::Raised + + + @@ -39,6 +49,12 @@
blackgui/components/loginadvcomponent.h
1 + + BlackGui::Components::CLoginOverviewComponent + QFrame +
blackgui/components/loginoverviewcomponent.h
+ 1 +
diff --git a/src/swiftguistandard/swiftguistd.cpp b/src/swiftguistandard/swiftguistd.cpp index 79d521b20..d053c78dc 100644 --- a/src/swiftguistandard/swiftguistd.cpp +++ b/src/swiftguistandard/swiftguistd.cpp @@ -252,9 +252,9 @@ void SwiftGuiStd::loginRequested() } else { + // const bool connected = sGui->getIContextNetwork()->isConnected(); const bool shift = QApplication::keyboardModifiers() & Qt::ShiftModifier; - const bool connected = sGui->getIContextNetwork()->isConnected(); - if (!connected && shift) + if (shift) { if (!m_loginDialog) { m_loginDialog.reset(new CLoginDialog(this)); } connect(m_loginDialog.data(), &CLoginDialog::requestNetworkSettings, this, &SwiftGuiStd::displayNetworkSettings);