From d0cdae7356cb1347c6f8a4ef35a738eeef7ef4a5 Mon Sep 17 00:00:00 2001 From: Roland Winklmeier Date: Sat, 28 Jan 2017 00:50:46 +0100 Subject: [PATCH] Conditionally limit UI login modes in case no simulator is attached Currently the logic to fall back to observer login, in case no simulator is attached, is implemented in core. Apart from a log message there was no clear feedback to the user what has happened. With this commit, the pilot related login modes are disabled if no simulator is attached. A tool tip explains the reason. This is enabled only for shipped versions. refs #872 --- src/blackgui/loginmodebuttons.cpp | 29 +++++++++++++++++++++++++++++ src/blackgui/loginmodebuttons.h | 2 ++ 2 files changed, 31 insertions(+) diff --git a/src/blackgui/loginmodebuttons.cpp b/src/blackgui/loginmodebuttons.cpp index b3cccb6c1..484c5d6e1 100644 --- a/src/blackgui/loginmodebuttons.cpp +++ b/src/blackgui/loginmodebuttons.cpp @@ -7,12 +7,17 @@ * contained in the LICENSE file. */ +#include "blackconfig/buildconfig.h" #include "blackgui/loginmodebuttons.h" +#include "blackgui/guiapplication.h" +#include "blackcore/context/contextsimulator.h" #include "ui_loginmodebuttons.h" #include +using namespace BlackConfig; using namespace BlackCore; +using namespace BlackCore::Context; namespace BlackGui { @@ -21,6 +26,9 @@ namespace BlackGui ui(new Ui::CLoginModeButtons) { ui->setupUi(this); + configureLoginModes(); + connect(sGui->getIContextSimulator(), &IContextSimulator::simulatorStatusChanged, + this, &CLoginModeButtons::configureLoginModes); } CLoginModeButtons::~CLoginModeButtons() @@ -56,4 +64,25 @@ namespace BlackGui break; } } + + void CLoginModeButtons::configureLoginModes() + { + if(CBuildConfig::isShippedVersion() && !sGui->getIContextSimulator()->isSimulatorSimulating()) + { + // Disable pilot login modes + ui->rb_LoginNormal->setEnabled(false); + ui->rb_LoginStealth->setEnabled(false); + ui->rb_LoginNormal->setToolTip("No simulator available"); + ui->rb_LoginStealth->setToolTip("No simulator available"); + ui->rb_LoginObserver->setChecked(true); + } + else + { + ui->rb_LoginNormal->setEnabled(true); + ui->rb_LoginStealth->setEnabled(true); + ui->rb_LoginNormal->setToolTip({}); + ui->rb_LoginStealth->setToolTip({}); + ui->rb_LoginNormal->setChecked(true); + } + } } diff --git a/src/blackgui/loginmodebuttons.h b/src/blackgui/loginmodebuttons.h index faac07678..434947ab4 100644 --- a/src/blackgui/loginmodebuttons.h +++ b/src/blackgui/loginmodebuttons.h @@ -44,6 +44,8 @@ namespace BlackGui void setLoginMode(BlackCore::INetwork::LoginMode mode); private: + void configureLoginModes(); + QScopedPointer ui; }; }