Ref T146, improved login component

* logoff countdown can be stopped
* login mode (normal, obs, ..) shown
This commit is contained in:
Klaus Basan
2017-09-02 19:48:23 +02:00
committed by Mathew Sutcliffe
parent adfd341cbc
commit 7946fd8d18
3 changed files with 92 additions and 37 deletions

View File

@@ -140,10 +140,14 @@ namespace BlackGui
connect(sGui->getIContextSimulator(), &IContextSimulator::ownAircraftModelChanged, this, &CLoginComponent::simulatorModelChanged); connect(sGui->getIContextSimulator(), &IContextSimulator::ownAircraftModelChanged, this, &CLoginComponent::simulatorModelChanged);
} }
// server GUI element // server and UI elements when in disconnect
ui->frp_CurrentServer->setReadOnly(true); ui->frp_CurrentServer->setReadOnly(true);
ui->frp_CurrentServer->showPasswordField(false); ui->frp_CurrentServer->showPasswordField(false);
ui->gbp_LoginWithMode->setReadOnly(true);
ui->tb_Timeout->setIcon(m_iconPause);
connect(ui->tb_Timeout, &QToolButton::clicked, this, &CLoginComponent::toggleTimeout);
// web service data
connect(sGui->getIContextNetwork(), &IContextNetwork::webServiceDataRead, this, &CLoginComponent::onWebServiceDataRead); connect(sGui->getIContextNetwork(), &IContextNetwork::webServiceDataRead, this, &CLoginComponent::onWebServiceDataRead);
// inital setup, if data already available // inital setup, if data already available
@@ -243,7 +247,9 @@ namespace BlackGui
this->updateOwnAircaftIcaoValuesFromGuiValues(); this->updateOwnAircaftIcaoValuesFromGuiValues();
// Login mode // Login mode
INetwork::LoginMode mode = ui->gbp_LoginMode->getLoginMode(); const INetwork::LoginMode mode = ui->gbp_LoginMode->getLoginMode();
ui->gbp_LoginWithMode->setLoginMode(mode);
ui->gbp_LoginWithMode->setReadOnly(true); // need to be set after each change
switch (mode) switch (mode)
{ {
case INetwork::LoginStealth: case INetwork::LoginStealth:
@@ -626,6 +632,20 @@ namespace BlackGui
this->m_mappingWizard->show(); this->m_mappingWizard->show();
} }
void CLoginComponent::toggleTimeout()
{
if (m_logoffCountdownTimer->isActive())
{
m_logoffCountdownTimer->stop();
ui->tb_Timeout->setIcon(m_iconPlay);
}
else
{
m_logoffCountdownTimer->start();
ui->tb_Timeout->setIcon(m_iconPause);
}
}
void CLoginComponent::initCompleters(CEntityFlags::Entity entity) void CLoginComponent::initCompleters(CEntityFlags::Entity entity)
{ {
// completers where possible // completers where possible

View File

@@ -26,6 +26,7 @@
#include "blackmisc/datacache.h" #include "blackmisc/datacache.h"
#include <QFrame> #include <QFrame>
#include <QIcon>
#include <QObject> #include <QObject>
#include <QScopedPointer> #include <QScopedPointer>
#include <QString> #include <QString>
@@ -122,6 +123,9 @@ namespace BlackGui
//! Launch mapping wizard //! Launch mapping wizard
void mappingWizard(); void mappingWizard();
//! Pause/Continue timeout
void toggleTimeout();
//! GUI aircraft values, formatted //! GUI aircraft values, formatted
struct CGuiAircraftValues struct CGuiAircraftValues
{ {
@@ -206,8 +210,10 @@ namespace BlackGui
BlackMisc::CDigestSignal m_changedLoginDataDigestSignal { this, &CLoginComponent::loginDataChangedDigest, 1500, 10 }; BlackMisc::CDigestSignal m_changedLoginDataDigestSignal { this, &CLoginComponent::loginDataChangedDigest, 1500, 10 };
bool m_autoPopupWizard = false; //!< automatically popup wizard if mapping is needed bool m_autoPopupWizard = false; //!< automatically popup wizard if mapping is needed
bool m_visible = false; //!< is this component selected? bool m_visible = false; //!< is this component selected?
QIcon m_iconPlay {":/famfamfam/icons/famfamfam/icons/silk/control_play_blue.png"};
QIcon m_iconPause {":/famfamfam/icons/famfamfam/icons/silk/control_pause_blue.png"};
const int LogoffIntervalSeconds = 20; //!< time before logoff const int LogoffIntervalSeconds = 20; //!< time before logoff
QTimer *m_logoffCountdownTimer { nullptr }; //!< timer used logoff countdown QTimer *m_logoffCountdownTimer { nullptr }; //!< timer for logoff countdown
BlackMisc::CSettingReadOnly<BlackCore::Vatsim::TTrafficServers> m_otherTrafficNetworkServers { this, &CLoginComponent::reloadSettings }; BlackMisc::CSettingReadOnly<BlackCore::Vatsim::TTrafficServers> m_otherTrafficNetworkServers { this, &CLoginComponent::reloadSettings };
BlackMisc::CSetting<BlackGui::Settings::TOwnAircraftModel> m_currentAircraftModel { this }; //!< current settings of aircraft BlackMisc::CSetting<BlackGui::Settings::TOwnAircraftModel> m_currentAircraftModel { this }; //!< current settings of aircraft
BlackMisc::CData<BlackCore::Data::TVatsimCurrentServer> m_currentVatsimServer { this }; //!< cache for current VATSIM server BlackMisc::CData<BlackCore::Data::TVatsimCurrentServer> m_currentVatsimServer { this }; //!< cache for current VATSIM server

View File

@@ -6,34 +6,28 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>384</width> <width>348</width>
<height>576</height> <height>625</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Login component</string> <string>Login component</string>
</property> </property>
<property name="frameShape"> <layout class="QVBoxLayout" name="hl_Timeout_2">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="vl_LoginComponent">
<property name="spacing"> <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
<property name="leftMargin"> <property name="leftMargin">
<number>2</number> <number>1</number>
</property> </property>
<property name="topMargin"> <property name="topMargin">
<number>2</number> <number>1</number>
</property> </property>
<property name="rightMargin"> <property name="rightMargin">
<number>2</number> <number>1</number>
</property> </property>
<property name="bottomMargin"> <property name="bottomMargin">
<number>2</number> <number>1</number>
</property> </property>
<item> <item>
<widget class="QGroupBox" name="gb_Network"> <widget class="QGroupBox" name="gb_Network">
@@ -65,10 +59,7 @@
</size> </size>
</property> </property>
<property name="title"> <property name="title">
<string/> <string>Login mode</string>
</property>
<property name="flat">
<bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
@@ -583,21 +574,14 @@
<enum>QFrame::Raised</enum> <enum>QFrame::Raised</enum>
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0"> <item row="1" column="0">
<widget class="QLabel" name="lbl_LoginAsAircraft"> <widget class="QLabel" name="lbl_LoginAsAircraft">
<property name="text"> <property name="text">
<string>Your aircraft:</string> <string>Your aircraft:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="2"> <item row="2" column="0">
<widget class="QLineEdit" name="le_LoginAsAircaft">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="lbl_LoginSince"> <widget class="QLabel" name="lbl_LoginSince">
<property name="text"> <property name="text">
<string>Login since:</string> <string>Login since:</string>
@@ -605,12 +589,26 @@
</widget> </widget>
</item> </item>
<item row="1" column="2"> <item row="1" column="2">
<widget class="QLineEdit" name="le_LoginAsAircaft">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLineEdit" name="le_LoginSince"> <widget class="QLineEdit" name="le_LoginSince">
<property name="readOnly"> <property name="readOnly">
<bool>true</bool> <bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="0" colspan="3">
<widget class="BlackGui::CLoginModeButtons" name="gbp_LoginWithMode">
<property name="title">
<string>Login mode</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>
@@ -618,16 +616,47 @@
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QProgressBar" name="pb_LogoffTimeout"> <widget class="QFrame" name="fr_Timeout">
<property name="maximum"> <property name="frameShape">
<number>10</number> <enum>QFrame::StyledPanel</enum>
</property> </property>
<property name="value"> <property name="frameShadow">
<number>10</number> <enum>QFrame::Raised</enum>
</property>
<property name="format">
<string>%v</string>
</property> </property>
<layout class="QHBoxLayout" name="hl_Timeout">
<property name="leftMargin">
<number>1</number>
</property>
<property name="topMargin">
<number>1</number>
</property>
<property name="rightMargin">
<number>1</number>
</property>
<property name="bottomMargin">
<number>1</number>
</property>
<item>
<widget class="QProgressBar" name="pb_LogoffTimeout">
<property name="maximum">
<number>10</number>
</property>
<property name="value">
<number>10</number>
</property>
<property name="format">
<string>%v</string>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="tb_Timeout">
<property name="text">
<string>...</string>
</property>
</widget>
</item>
</layout>
</widget> </widget>
</item> </item>
</layout> </layout>