Ref T659, UI changed for modelstring/livery and checkboxes to decide if those are sent

This commit is contained in:
Klaus Basan
2019-07-22 01:39:11 +02:00
committed by Mat Sutcliffe
parent 4761f5f356
commit eb4c8eed35
3 changed files with 225 additions and 158 deletions

View File

@@ -22,7 +22,7 @@
#include "blackmisc/logmessage.h"
#include "blackconfig/buildconfig.h"
#include <QToolButton>
#include <QPushButton>
using namespace BlackConfig;
using namespace BlackMisc;
@@ -46,6 +46,9 @@ namespace BlackGui
ui->selector_AircraftIcao->displayMode(CDbAircraftIcaoSelectorComponent::DisplayIcaoAndId);
ui->selector_AirlineIcao->displayMode(CDbAirlineIcaoSelectorComponent::DisplayVDesignatorAndId);
ui->cb_Model->setChecked(true);
ui->cb_Livery->setChecked(true);
// own aircraft
ui->lblp_AircraftCombinedType->setToolTips("ok", "wrong");
ui->lblp_AirlineIcao->setToolTips("ok", "wrong");
@@ -62,18 +65,20 @@ namespace BlackGui
ui->le_AircraftCombinedType->setMaxLength(3);
ui->le_AircraftCombinedType->setValidator(new CUpperCaseValidator(this));
ui->comp_ModelStringCompleter->setSourceVisible(CAircraftModelStringCompleter::OwnModels, false);
ui->comp_ModelStringCompleter->selectSource(CAircraftModelStringCompleter::ModelSet);
connect(ui->le_Callsign, &QLineEdit::editingFinished, this, &COwnAircraftComponent::validate);
connect(ui->comp_ModelStringCompleter, &CAircraftModelStringCompleter::modelStringChanged, this, &COwnAircraftComponent::onModelStringSendChanged);
connect(ui->le_AircraftCombinedType, &QLineEdit::editingFinished, this, &COwnAircraftComponent::validate);
connect(ui->selector_AircraftIcao, &CDbAircraftIcaoSelectorComponent::changedAircraftIcao, this, &COwnAircraftComponent::changedAircraftIcao, Qt::QueuedConnection);
connect(ui->selector_AirlineIcao, &CDbAirlineIcaoSelectorComponent::changedAirlineIcao, this, &COwnAircraftComponent::changedAirlineIcao, Qt::QueuedConnection);
connect(ui->pb_SimulatorLookup, &QToolButton::clicked, this, &COwnAircraftComponent::lookupOwnAircraftModel);
connect(ui->pb_MappingWizard, &QToolButton::clicked, this, &COwnAircraftComponent::mappingWizard, Qt::QueuedConnection);
connect(ui->selector_AirlineIcao, &CDbAirlineIcaoSelectorComponent::changedAirlineIcao, this, &COwnAircraftComponent::changedAirlineIcao, Qt::QueuedConnection);
connect(ui->pb_SimulatorLookup, &QPushButton::clicked, this, &COwnAircraftComponent::lookupOwnAircraftModel);
connect(ui->pb_MappingWizard, &QPushButton::clicked, this, &COwnAircraftComponent::mappingWizard, Qt::QueuedConnection);
connect(ui->pb_Clear, &QPushButton::clicked, this, &COwnAircraftComponent::clearLivery, Qt::QueuedConnection);
if (sGui && sGui->getIContextSimulator())
{
connect(sGui->getIContextSimulator(), &IContextSimulator::ownAircraftModelChanged, this, &COwnAircraftComponent::onSimulatorModelChanged, Qt::QueuedConnection);
connect(sGui->getIContextSimulator(), &IContextSimulator::ownAircraftModelChanged, this, &COwnAircraftComponent::onSimulatorModelChanged, Qt::QueuedConnection);
connect(sGui->getIContextSimulator(), &IContextSimulator::simulatorStatusChanged, this, &COwnAircraftComponent::onSimulatorStatusChanged, Qt::QueuedConnection);
}
@@ -143,6 +148,7 @@ namespace BlackGui
if (!this->hasValidContexts()) { return; }
if (!sGui->hasWebDataServices()) { return; }
const QString modelString = ui->comp_ModelStringCompleter->getModelString();
if (modelString.isEmpty()) { return; } // keep last values
const CAircraftModel model = sGui->getWebDataServices()->getModelForModelString(modelString);
this->setGuiIcaoValues(model, false);
}
@@ -208,10 +214,12 @@ namespace BlackGui
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.ownAircraftCombinedType = ui->le_AircraftCombinedType->text().trimmed().toUpper();
values.ownAircraftSimulatorModelString = ui->le_SimulatorModel->text().trimmed().toUpper();
values.ownAircraftModelStringSend = ui->comp_ModelStringCompleter->getModelString().toUpper();
values.ownLivery = ui->le_SendLivery->text().trimmed().toUpper();
values.ownAircraftModelStringSend = ui->comp_ModelStringCompleter->getModelString().toUpper();
values.ownLiverySend = ui->le_SendLivery->text().trimmed().toUpper();
values.useLivery = ui->cb_Livery->isChecked();
values.useModelString = ui->cb_Model->isChecked();
return values;
}
@@ -248,6 +256,16 @@ namespace BlackGui
changed = true;
}
}
if (!onlyIfEmpty || ui->le_SendLivery->text().trimmed().isEmpty())
{
const QString ls(model.getSwiftLiveryString());
if (ui->le_SendLivery->text() != ls)
{
ui->le_SendLivery->setText(ls);
changed = true;
}
}
const bool valid = this->validate().isSuccess();
return valid ? changed : false;
}
@@ -270,6 +288,11 @@ namespace BlackGui
return true;
}
void COwnAircraftComponent::clearLivery()
{
ui->le_SendLivery->clear();
}
CAircraftModel COwnAircraftComponent::getPrefillModel() const
{
const CAircraftModel model = m_lastAircraftModel.get();

View File

@@ -34,6 +34,20 @@ namespace BlackGui
Q_OBJECT
public:
//! GUI aircraft values, formatted
struct CGuiAircraftValues
{
BlackMisc::Aviation::CCallsign ownCallsign; //!< own aircraft callsign
BlackMisc::Aviation::CAircraftIcaoCode ownAircraftIcao; //!< ICAO aircraft
BlackMisc::Aviation::CAirlineIcaoCode ownAirlineIcao; //!< ICAO airline
QString ownAircraftCombinedType; //!< own aircraft combined type
QString ownAircraftSimulatorModelString; //!< own aircraft model string
QString ownAircraftModelStringSend; //!< send model string
QString ownLiverySend; //!< send livery
bool useModelString = true; //!< use model string
bool useLivery = true; //!< use livery
};
//! Constructor
explicit COwnAircraftComponent(QWidget *parent = nullptr);
@@ -46,32 +60,24 @@ namespace BlackGui
//! Set a user
void setUser(const BlackMisc::Network::CUser &user);
//! Own model and ICAO data for GUI and own aircraft
void setOwnModelAndIcaoValues(const BlackMisc::Simulation::CAircraftModel &ownModel = {});
//! Values from GUI
BlackMisc::Aviation::CCallsign getCallsignFromGui() const;
//! Own model and ICAO data for GUI and own aircraft
void setOwnModelAndIcaoValues(const BlackMisc::Simulation::CAircraftModel &ownModel = {});
//! Update own ICAO values (own aircraft from what is set in the GUI)
//! \return changed?
bool updateOwnAircaftIcaoValuesFromGuiValues();
//! Values from GUI
CGuiAircraftValues getAircraftValuesFromGui() const;
signals:
//! Changed values
void aircraftDataChanged();
private:
//! GUI aircraft values, formatted
struct CGuiAircraftValues
{
BlackMisc::Aviation::CCallsign ownCallsign;
BlackMisc::Aviation::CAircraftIcaoCode ownAircraftIcao;
BlackMisc::Aviation::CAirlineIcaoCode ownAirlineIcao;
QString ownAircraftCombinedType;
QString ownAircraftSimulatorModelString;
QString ownAircraftModelStringSend;
QString ownLivery;
};
//! Launch mapping wizard
void mappingWizard();
@@ -88,9 +94,6 @@ namespace BlackGui
//! Status has changed
void onSimulatorStatusChanged(int status);
//! Values from GUI
CGuiAircraftValues getAircraftValuesFromGui() const;
//! Set ICAO values
//! \return changed values?
bool setGuiIcaoValues(const BlackMisc::Simulation::CAircraftModel &model, bool onlyIfEmpty);
@@ -107,6 +110,9 @@ namespace BlackGui
//! Has contexts?
bool hasValidContexts() const;
//! Clear livery
void clearLivery();
//! Get a prefill model
BlackMisc::Simulation::CAircraftModel getPrefillModel() const;

View File

@@ -6,14 +6,14 @@
<rect>
<x>0</x>
<y>0</y>
<width>266</width>
<width>261</width>
<height>132</height>
</rect>
</property>
<property name="windowTitle">
<string>Frame</string>
<string>Own aircraft</string>
</property>
<layout class="QGridLayout" name="gl_OwnAircraftComponent">
<layout class="QGridLayout" name="gl_OwnAircraftComponent" columnstretch="0,0,0,0,0,0,0,0,0">
<property name="leftMargin">
<number>2</number>
</property>
@@ -26,137 +26,27 @@
<property name="bottomMargin">
<number>2</number>
</property>
<item row="1" column="0">
<widget class="QLabel" name="lbl_ModelSent">
<item row="1" column="2">
<widget class="QCheckBox" name="cb_Model">
<property name="text">
<string>Model send</string>
<string/>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="lbl_LiverySend">
<property name="text">
<string>Livery sent</string>
</property>
</widget>
</item>
<item row="4" column="4">
<widget class="QLabel" name="lbl_AircraftIcaoDesignator">
<item row="6" column="1">
<widget class="QLabel" name="lbl_AircraftCombinedType">
<property name="toolTip">
<string>ICAO code e.g. B737, A320, F18</string>
<string>Aircraft type e.g. L2J, L1P, ....</string>
</property>
<property name="text">
<string>Aircraft</string>
<string>Type</string>
</property>
</widget>
</item>
<item row="5" column="4">
<widget class="QLabel" name="lbl_AircraftIcaoAirline">
<property name="toolTip">
<string>ICAO code e.g. DLH, LHA, ...</string>
</property>
<property name="text">
<string>Airline</string>
</property>
</widget>
</item>
<item row="5" column="7">
<widget class="BlackGui::CTickLabel" name="lblp_AirlineIcao">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="4" column="3">
<widget class="BlackGui::CTickLabel" name="lblp_Callsign">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="4" column="7">
<widget class="BlackGui::CTickLabel" name="lblp_AircraftIcao">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="4" column="5" colspan="2">
<widget class="BlackGui::Components::CDbAircraftIcaoSelectorComponent" name="selector_AircraftIcao">
<property name="minimumSize">
<size>
<width>75</width>
<height>0</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item row="4" column="0" colspan="2">
<widget class="QLabel" name="lbl_Callsign">
<property name="text">
<string>Callsign</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="lbl_Model">
<property name="toolTip">
<string>Launch </string>
</property>
<property name="text">
<string>Model</string>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QLineEdit" name="le_AircraftCombinedType">
<property name="toolTip">
<string>e.g. L2J</string>
</property>
<property name="inputMask">
<string/>
</property>
<property name="text">
<string/>
</property>
<property name="maxLength">
<number>3</number>
</property>
<property name="placeholderText">
<string>e.g. &quot;L2J&quot;</string>
</property>
</widget>
</item>
<item row="5" column="5" colspan="2">
<widget class="BlackGui::Components::CDbAirlineIcaoSelectorComponent" name="selector_AirlineIcao">
<property name="minimumSize">
<size>
<width>75</width>
<height>0</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item row="5" column="3">
<widget class="BlackGui::CTickLabel" name="lblp_AircraftCombinedType">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="4" column="2">
<item row="5" column="2" colspan="2">
<widget class="QLineEdit" name="le_Callsign">
<property name="toolTip">
<string>e.g. DEMBZ</string>
@@ -172,17 +62,30 @@
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<widget class="QLabel" name="lbl_AircraftCombinedType">
<property name="toolTip">
<string>Aircraft type e.g. L2J, L1P, ....</string>
<item row="6" column="6" colspan="2">
<widget class="BlackGui::Components::CDbAirlineIcaoSelectorComponent" name="selector_AirlineIcao">
<property name="minimumSize">
<size>
<width>75</width>
<height>0</height>
</size>
</property>
<property name="text">
<string>Type</string>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item row="1" column="2" colspan="6">
<item row="5" column="5">
<widget class="QLabel" name="lbl_AircraftIcaoDesignator">
<property name="toolTip">
<string>ICAO code e.g. B737, A320, F18</string>
</property>
<property name="text">
<string>Aircraft</string>
</property>
</widget>
</item>
<item row="1" column="3" colspan="6">
<widget class="BlackGui::Components::CAircraftModelStringCompleter" name="comp_ModelStringCompleter">
<property name="minimumSize">
<size>
@@ -190,9 +93,12 @@
<height>20</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item row="0" column="2" colspan="6">
<item row="0" column="2" colspan="7">
<widget class="QWidget" name="wi_ModelString" native="true">
<layout class="QHBoxLayout" name="hl_ModelString">
<property name="leftMargin">
@@ -254,13 +160,141 @@
</layout>
</widget>
</item>
<item row="3" column="2" colspan="5">
<item row="5" column="6" colspan="2">
<widget class="BlackGui::Components::CDbAircraftIcaoSelectorComponent" name="selector_AircraftIcao">
<property name="minimumSize">
<size>
<width>75</width>
<height>0</height>
</size>
</property>
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
</property>
</widget>
</item>
<item row="6" column="2" colspan="2">
<widget class="QLineEdit" name="le_AircraftCombinedType">
<property name="toolTip">
<string>e.g. L2J</string>
</property>
<property name="inputMask">
<string/>
</property>
<property name="text">
<string/>
</property>
<property name="maxLength">
<number>3</number>
</property>
<property name="placeholderText">
<string>e.g. &quot;L2J&quot;</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLabel" name="lbl_LiverySend">
<property name="text">
<string>Livery send</string>
</property>
</widget>
</item>
<item row="6" column="8">
<widget class="BlackGui::CTickLabel" name="lblp_AirlineIcao">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="5" column="4">
<widget class="BlackGui::CTickLabel" name="lblp_Callsign">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="3" column="3" colspan="5">
<widget class="QLineEdit" name="le_SendLivery">
<property name="placeholderText">
<string>livery string send</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="lbl_Model">
<property name="toolTip">
<string>Launch </string>
</property>
<property name="text">
<string>Model</string>
</property>
</widget>
</item>
<item row="5" column="1">
<widget class="QLabel" name="lbl_Callsign">
<property name="text">
<string>Callsign</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="lbl_ModelSent">
<property name="text">
<string>Model send</string>
</property>
</widget>
</item>
<item row="6" column="4">
<widget class="BlackGui::CTickLabel" name="lblp_AircraftCombinedType">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="6" column="5">
<widget class="QLabel" name="lbl_AircraftIcaoAirline">
<property name="toolTip">
<string>ICAO code e.g. DLH, LHA, ...</string>
</property>
<property name="text">
<string>Airline</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QCheckBox" name="cb_Livery">
<property name="text">
<string/>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="5" column="8">
<widget class="BlackGui::CTickLabel" name="lblp_AircraftIcao">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="3" column="8">
<widget class="QPushButton" name="pb_Clear">
<property name="toolTip">
<string>clear livery</string>
</property>
<property name="icon">
<iconset resource="../../blackmisc/blackmisc.qrc">
<normaloff>:/diagona/icons/diagona/icons/cross.png</normaloff>:/diagona/icons/diagona/icons/cross.png</iconset>
</property>
</widget>
</item>
</layout>
</widget>
<customwidgets>
@@ -292,7 +326,11 @@
<tabstop>le_SimulatorModel</tabstop>
<tabstop>pb_SimulatorLookup</tabstop>
<tabstop>pb_MappingWizard</tabstop>
<tabstop>cb_Model</tabstop>
<tabstop>comp_ModelStringCompleter</tabstop>
<tabstop>cb_Livery</tabstop>
<tabstop>le_SendLivery</tabstop>
<tabstop>pb_Clear</tabstop>
<tabstop>le_Callsign</tabstop>
<tabstop>selector_AircraftIcao</tabstop>
<tabstop>le_AircraftCombinedType</tabstop>