Login UI/lookup improvements

* made tool -> push buttons as easier to spot
* reverse lookup of model before login -> always latest DB data
* use "text only" ICAO code if loading from DB yields no result
This commit is contained in:
Klaus Basan
2019-01-16 18:56:05 +01:00
committed by Mat Sutcliffe
parent 985674f1cf
commit 13c67e4838
12 changed files with 96 additions and 51 deletions

View File

@@ -34,7 +34,7 @@ namespace BlackGui
connect(sGui->getWebDataServices(), &CWebDataServices::swiftDbAllDataRead, this, &CAirportSmallCompleter::onAirportsChanged);
connect(ui->le_Icao, &QLineEdit::editingFinished, this, &CAirportSmallCompleter::onIcaoChanged);
connect(ui->le_Icao, &QLineEdit::editingFinished, this, &CAirportSmallCompleter::editingFinished);
connect(ui->tb_Dialog, &QToolButton::clicked, this, &CAirportSmallCompleter::showAirportsDialog);
connect(ui->pb_Dialog, &QPushButton::clicked, this, &CAirportSmallCompleter::showAirportsDialog);
this->onAirportsChanged();
}
@@ -80,13 +80,13 @@ namespace BlackGui
void CAirportSmallCompleter::setReadOnly(bool readOnly)
{
ui->le_Icao->setReadOnly(readOnly);
ui->tb_Dialog->setEnabled(!readOnly);
ui->pb_Dialog->setEnabled(!readOnly);
}
void CAirportSmallCompleter::clear()
{
ui->le_Icao->clear();
this->m_current = CAirport();
m_current = CAirport();
}
void CAirportSmallCompleter::onIcaoChanged()

View File

@@ -30,9 +30,9 @@
<widget class="QLineEdit" name="le_Icao"/>
</item>
<item>
<widget class="QToolButton" name="tb_Dialog">
<widget class="QPushButton" name="pb_Dialog">
<property name="text">
<string>...</string>
<string/>
</property>
<property name="icon">
<iconset resource="../../blackmisc/blackmisc.qrc">
@@ -44,7 +44,7 @@
</widget>
<tabstops>
<tabstop>le_Icao</tabstop>
<tabstop>tb_Dialog</tabstop>
<tabstop>pb_Dialog</tabstop>
</tabstops>
<resources>
<include location="../../blackmisc/blackmisc.qrc"/>

View File

@@ -67,7 +67,7 @@ namespace BlackGui
setIcao = sGui->getWebDataServices()->smartAircraftIcaoSelector(icao);
}
const QString icaoStr(this->m_display == DisplayIcaoAndId ? setIcao.getDesignatorDbKey() : setIcao.getCombinedIcaoStringWithKey());
const QString icaoStr(m_display == DisplayIcaoAndId ? setIcao.getDesignatorDbKey() : setIcao.getCombinedIcaoStringWithKey());
ui->le_Aircraft->setText(icaoStr);
ui->lbl_Description->setText(setIcao.getManufacturer());
if (setIcao != m_currentIcao)
@@ -98,14 +98,22 @@ namespace BlackGui
CAircraftIcaoCode CDbAircraftIcaoSelectorComponent::getAircraftIcao() const
{
QString text(ui->le_Aircraft->text().trimmed().toUpper());
int key = CDatastoreUtility::extractIntegerKey(text);
const QString text(ui->le_Aircraft->text().trimmed().toUpper());
const int key = CDatastoreUtility::extractIntegerKey(text);
if (key < 0)
{
if (this->m_currentIcao.getDesignator() == text) { return this->m_currentIcao; }
return CAircraftIcaoCode(text);
const QString icaoOnly = CDatastoreUtility::stripKeyInParentheses(text);
if (m_currentIcao.getDesignator() == icaoOnly) { return m_currentIcao; }
return CAircraftIcaoCode(icaoOnly);
}
CAircraftIcaoCode icao(sGui->getWebDataServices()->getAircraftIcaoCodeForDbKey(key));
if (icao.isNull())
{
// did not find by key
const QString icaoOnly = CDatastoreUtility::stripKeyInParentheses(text);
if (m_currentIcao.getDesignator() == icaoOnly) { return m_currentIcao; }
return CAircraftIcaoCode(icaoOnly);
}
return icao;
}
@@ -209,7 +217,7 @@ namespace BlackGui
}
else
{
this->m_completerIcaoDescription.reset(nullptr);
m_completerIcaoDescription.reset(nullptr);
}
}
}

View File

@@ -64,7 +64,7 @@ namespace BlackGui
//! \return changed
bool setAircraftIcao(int key);
//! Distributor
//! ICAO code
BlackMisc::Aviation::CAircraftIcaoCode getAircraftIcao() const;
//! Raw designator

View File

@@ -96,7 +96,7 @@ namespace BlackGui
connect(ui->pb_Cancel, &QPushButton::clicked, this, &CLoginComponent::loginCancelled);
connect(ui->pb_Ok, &QPushButton::clicked, this, &CLoginComponent::toggleNetworkConnection);
connect(ui->pb_OtherServersGotoSettings, &QPushButton::pressed, this, &CLoginComponent::requestNetworkSettings);
connect(ui->tb_MappingWizard, &QToolButton::clicked, this, &CLoginComponent::mappingWizard);
connect(ui->pb_MappingWizard, &QToolButton::clicked, this, &CLoginComponent::mappingWizard);
connect(&m_networkSetup, &CNetworkSetup::setupChanged, this, &CLoginComponent::reloadOtherServersSetup, Qt::QueuedConnection);
ui->form_FsdDetails->showEnableInfo(true);
@@ -132,7 +132,7 @@ namespace BlackGui
connect(ui->le_AircraftCombinedType, &QLineEdit::editingFinished, this, &CLoginComponent::validateAircraftValues);
connect(ui->selector_AircraftIcao, &CDbAircraftIcaoSelectorComponent::changedAircraftIcao, this, &CLoginComponent::changedAircraftIcao, Qt::QueuedConnection);
connect(ui->selector_AirlineIcao, &CDbAirlineIcaoSelectorComponent::changedAirlineIcao, this, &CLoginComponent::changedAirlineIcao, Qt::QueuedConnection);
connect(ui->tb_SimulatorIcaoReverseLookup, &QToolButton::clicked, this, &CLoginComponent::reverseLookupAircraftModel);
connect(ui->pb_SimulatorLookup, &QToolButton::clicked, this, &CLoginComponent::lookupOwnAircraftModel);
connect(ui->tw_Details, &QTabWidget::currentChanged, this, &CLoginComponent::onDetailsTabChanged);
if (sGui && sGui->getIContextSimulator())
@@ -456,8 +456,8 @@ namespace BlackGui
CGuiAircraftValues values;
values.ownCallsign = CCallsign(ui->le_Callsign->text().trimmed().toUpper());
values.ownAircraftIcao = ui->selector_AircraftIcao->getAircraftIcao();
values.ownAirlineIcao = ui->selector_AirlineIcao->getAirlineIcao();
values.ownAircraftCombinedType = ui->le_AircraftCombinedType->text().trimmed().toUpper();
values.ownAirlineIcao = ui->selector_AirlineIcao->getAirlineIcao();
values.ownAircraftCombinedType = ui->le_AircraftCombinedType->text().trimmed().toUpper();
values.ownAircraftSimulatorModel = ui->le_SimulatorModel->text().trimmed().toUpper();
return values;
}
@@ -670,7 +670,7 @@ namespace BlackGui
emit this->requestLoginPage();
}
void CLoginComponent::reverseLookupAircraftModel()
void CLoginComponent::lookupOwnAircraftModel()
{
if (!sGui->getIContextSimulator()->isSimulatorAvailable()) { return; }
const CAircraftModel model(sGui->getIContextOwnAircraft()->getOwnAircraft().getModel());
@@ -682,17 +682,26 @@ namespace BlackGui
if (!sGui || !sGui->getIContextNetwork() || sApp->isShuttingDown()) { return; }
const bool isNetworkConnected = sGui && sGui->getIContextNetwork()->isConnected();
if (isNetworkConnected) { return; }
const QString modelStr(model.hasModelString() ? model.getModelString() : "<unknown>");
if (!model.hasModelString())
// update with latest DB data
CAircraftModel reverseModel(model);
if (sGui->hasWebDataServices())
{
CLogMessage(this).validationInfo(u"Invalid lookup for '%1' successful: %2") << modelStr << model.toQString();
reverseModel = sGui->getWebDataServices()->getModelForModelString(model.getModelString());
if (!reverseModel.isLoadedFromDb()) { reverseModel = model; } // reset if not found
}
const QString modelStr(reverseModel.hasModelString() ? reverseModel.getModelString() : "<unknown>");
if (!reverseModel.hasModelString())
{
CLogMessage(this).validationInfo(u"Invalid lookup for '%1' successful: %2") << modelStr << reverseModel.toQString();
CLogMessage(this).validationInfo(u"Hint: Are you using the emulated driver? Set a model if so!");
return;
}
this->setOwnModelAndIcaoValues();
// open dialog for model mapping
if (m_autoPopupWizard && !model.isLoadedFromDb())
if (m_autoPopupWizard && !reverseModel.isLoadedFromDb())
{
this->mappingWizard();
}

View File

@@ -183,8 +183,8 @@ namespace BlackGui
//! Auto-logoff detection
void autoLogoffDetection();
//! Reverse lookup model
void reverseLookupAircraftModel();
//! Lookup own model
void lookupOwnAircraftModel();
//! Simulator model has been changed
void onSimulatorModelChanged(const BlackMisc::Simulation::CAircraftModel &model);

View File

@@ -473,9 +473,15 @@
</widget>
</item>
<item>
<widget class="QToolButton" name="tb_SimulatorIcaoReverseLookup">
<property name="text">
<string>...</string>
<widget class="QPushButton" name="pb_SimulatorLookup">
<property name="maximumSize">
<size>
<width>35</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>refresh</string>
</property>
<property name="icon">
<iconset resource="../../blackmisc/blackmisc.qrc">
@@ -484,9 +490,15 @@
</widget>
</item>
<item>
<widget class="QToolButton" name="tb_MappingWizard">
<property name="text">
<string>...</string>
<widget class="QPushButton" name="pb_MappingWizard">
<property name="maximumSize">
<size>
<width>35</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>quick mapping wizard</string>
</property>
<property name="icon">
<iconset resource="../../blackmisc/blackmisc.qrc">
@@ -924,8 +936,8 @@
<tabstop>tw_Details</tabstop>
<tabstop>form_Pilot</tabstop>
<tabstop>le_SimulatorModel</tabstop>
<tabstop>tb_SimulatorIcaoReverseLookup</tabstop>
<tabstop>tb_MappingWizard</tabstop>
<tabstop>pb_SimulatorLookup</tabstop>
<tabstop>pb_MappingWizard</tabstop>
<tabstop>le_Callsign</tabstop>
<tabstop>selector_AircraftIcao</tabstop>
<tabstop>le_AircraftCombinedType</tabstop>

View File

@@ -39,7 +39,7 @@ namespace BlackGui
ui->lblp_Password->setToolTips("ok", "wrong");
ui->lblp_RealName->setToolTips("ok", "wrong");
connect(ui->tb_UnhidePassword, &QToolButton::clicked, this, &CPilotForm::unhidePassword);
connect(ui->pb_UnhidePassword, &QPushButton::clicked, this, &CPilotForm::unhidePassword);
connect(ui->le_Id, &QLineEdit::editingFinished, this, &CPilotForm::doValidation);
connect(ui->comp_HomeAirport, &CAirportSmallCompleter::editingFinished, this, &CPilotForm::doValidation);
connect(ui->le_Password, &QLineEdit::editingFinished, this, &CPilotForm::doValidation);

View File

@@ -105,20 +105,6 @@
</property>
</widget>
</item>
<item row="0" column="6">
<widget class="QToolButton" name="tb_UnhidePassword">
<property name="toolTip">
<string>unhide password</string>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../../blackmisc/blackmisc.qrc">
<normaloff>:/diagona/icons/diagona/icons/question-button.png</normaloff>:/diagona/icons/diagona/icons/question-button.png</iconset>
</property>
</widget>
</item>
<item row="1" column="5" colspan="2">
<widget class="BlackGui::Components::CAirportSmallCompleter" name="comp_HomeAirport">
<property name="focusPolicy">
@@ -126,6 +112,20 @@
</property>
</widget>
</item>
<item row="0" column="6">
<widget class="QPushButton" name="pb_UnhidePassword">
<property name="toolTip">
<string>unhide password</string>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="../../blackmisc/blackmisc.qrc">
<normaloff>:/diagona/icons/diagona/icons/question-button.png</normaloff>:/diagona/icons/diagona/icons/question-button.png</iconset>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
@@ -144,7 +144,7 @@
<tabstops>
<tabstop>le_Id</tabstop>
<tabstop>le_Password</tabstop>
<tabstop>tb_UnhidePassword</tabstop>
<tabstop>pb_UnhidePassword</tabstop>
<tabstop>le_RealName</tabstop>
</tabstops>
<resources>

View File

@@ -105,6 +105,12 @@ BlackGui--Components--CSetupLoadingDialog #fr_Details {
}
*/
/** dialog for airports **/
BlackGui--Components--CAirportDialog {
background: black; /* background is background color here */
background-image: url(:/textures/icons/textures/texture-inner.jpg);
}
/* core settings */
/* needed for CCoreSettingsDialog */
/* BlackGui::Components::CSettingsComponent */
@@ -222,11 +228,10 @@ QPushButton {
color: yellow; /* font color */
padding: 0px 0.25em 0px 0.25em;
margin-right: 5px;
min-width:40px;
min-height:20px;
min-width: 25px;
min-height: 20px;
}
QPushButton::disabled {
background-color: rgba(77, 88, 99, 128); /* slated gray if a channel) */
border-style: none;