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);
}
// server GUI element
// server and UI elements when in disconnect
ui->frp_CurrentServer->setReadOnly(true);
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);
// inital setup, if data already available
@@ -243,7 +247,9 @@ namespace BlackGui
this->updateOwnAircaftIcaoValuesFromGuiValues();
// 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)
{
case INetwork::LoginStealth:
@@ -626,6 +632,20 @@ namespace BlackGui
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)
{
// completers where possible

View File

@@ -26,6 +26,7 @@
#include "blackmisc/datacache.h"
#include <QFrame>
#include <QIcon>
#include <QObject>
#include <QScopedPointer>
#include <QString>
@@ -122,6 +123,9 @@ namespace BlackGui
//! Launch mapping wizard
void mappingWizard();
//! Pause/Continue timeout
void toggleTimeout();
//! GUI aircraft values, formatted
struct CGuiAircraftValues
{
@@ -206,8 +210,10 @@ namespace BlackGui
BlackMisc::CDigestSignal m_changedLoginDataDigestSignal { this, &CLoginComponent::loginDataChangedDigest, 1500, 10 };
bool m_autoPopupWizard = false; //!< automatically popup wizard if mapping is needed
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
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::CSetting<BlackGui::Settings::TOwnAircraftModel> m_currentAircraftModel { this }; //!< current settings of aircraft
BlackMisc::CData<BlackCore::Data::TVatsimCurrentServer> m_currentVatsimServer { this }; //!< cache for current VATSIM server

View File

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