diff --git a/src/blackgui/components/aircraftcombinedtypeselector.cpp b/src/blackgui/components/aircraftcombinedtypeselector.cpp index 5a5cdf73a..1e3859b7d 100644 --- a/src/blackgui/components/aircraftcombinedtypeselector.cpp +++ b/src/blackgui/components/aircraftcombinedtypeselector.cpp @@ -10,6 +10,7 @@ #include "aircraftcombinedtypeselector.h" #include "ui_aircraftcombinedtypeselector.h" #include "blackgui/guiutility.h" +#include "blackgui/uppercasevalidator.h" using namespace BlackMisc::Aviation; @@ -28,6 +29,8 @@ namespace BlackGui this->connect(ui->cb_EngineCount, &QComboBox::currentTextChanged, this, &CAircraftCombinedTypeSelector::ps_ChangedComboBox); this->connect(ui->cb_EngineType, &QComboBox::currentTextChanged, this, &CAircraftCombinedTypeSelector::ps_ChangedComboBox); this->connect(ui->cb_Type, &QComboBox::currentTextChanged, this, &CAircraftCombinedTypeSelector::ps_ChangedComboBox); + + ui->le_CombinedType->setValidator(new CUpperCaseValidator(this)); } CAircraftCombinedTypeSelector::~CAircraftCombinedTypeSelector() diff --git a/src/blackgui/components/dbaircrafticaoselectorcomponent.cpp b/src/blackgui/components/dbaircrafticaoselectorcomponent.cpp index 55a495f90..e7b76e750 100644 --- a/src/blackgui/components/dbaircrafticaoselectorcomponent.cpp +++ b/src/blackgui/components/dbaircrafticaoselectorcomponent.cpp @@ -12,6 +12,7 @@ #include "blackgui/guiapplication.h" #include "blackgui/uppercasevalidator.h" #include "blackmisc/datastoreutility.h" +#include "blackmisc/stringutils.h" #include using namespace BlackGui; @@ -79,6 +80,11 @@ namespace BlackGui this->ui->le_Aircraft->setReadOnly(readOnly); } + QString CDbAircraftIcaoSelectorComponent::getRawDesignator() const + { + return stripDesignatorFromCompleterString(ui->le_Aircraft->text()); + } + void CDbAircraftIcaoSelectorComponent::withIcaoDescription(bool description) { this->ui->lbl_Description->setVisible(description); @@ -141,7 +147,7 @@ namespace BlackGui { if (count > 0) { - QCompleter *c = new QCompleter(sGui->getWebDataServices()->getAircraftIcaoCodes().toCompleterStrings(true, true), this); + QCompleter *c = new QCompleter(sGui->getWebDataServices()->getAircraftIcaoCodes().toCompleterStrings(true, true, true), this); c->setCaseSensitivity(Qt::CaseInsensitive); c->setCompletionMode(QCompleter::PopupCompletion); c->setMaxVisibleItems(10); diff --git a/src/blackgui/components/dbaircrafticaoselectorcomponent.h b/src/blackgui/components/dbaircrafticaoselectorcomponent.h index c3b9e975d..ae9839a3a 100644 --- a/src/blackgui/components/dbaircrafticaoselectorcomponent.h +++ b/src/blackgui/components/dbaircrafticaoselectorcomponent.h @@ -51,6 +51,9 @@ namespace BlackGui //! Distributor BlackMisc::Aviation::CAircraftIcaoCode getAircraftIcao() const; + //! Raw designator + QString getRawDesignator() const; + //! Read only void setReadOnly(bool readOnly); diff --git a/src/blackgui/components/dbairlineicaoselectorbase.cpp b/src/blackgui/components/dbairlineicaoselectorbase.cpp index c2d2e57e3..4d7dc5245 100644 --- a/src/blackgui/components/dbairlineicaoselectorbase.cpp +++ b/src/blackgui/components/dbairlineicaoselectorbase.cpp @@ -35,9 +35,7 @@ namespace BlackGui } CDbAirlineIcaoSelectorBase::~CDbAirlineIcaoSelectorBase() - { - // - } + { } void CDbAirlineIcaoSelectorBase::setAirlineIcao(const CAirlineIcaoCode &icao) { diff --git a/src/blackgui/components/dbairlineicaoselectorcomponent.cpp b/src/blackgui/components/dbairlineicaoselectorcomponent.cpp index 86ba46a78..028bd896c 100644 --- a/src/blackgui/components/dbairlineicaoselectorcomponent.cpp +++ b/src/blackgui/components/dbairlineicaoselectorcomponent.cpp @@ -12,6 +12,7 @@ #include "blackgui/guiapplication.h" #include "blackgui/uppercasevalidator.h" #include "blackmisc/datastoreutility.h" +#include "blackmisc/stringutils.h" #include using namespace BlackCore; @@ -62,9 +63,14 @@ namespace BlackGui this->ui->lbl_Description->clear(); } + QString CDbAirlineIcaoSelectorComponent::getRawDesignator() const + { + return stripDesignatorFromCompleterString(ui->le_Airline->text()); + } + QCompleter *CDbAirlineIcaoSelectorComponent::createCompleter() { - QCompleter *c = new QCompleter(sGui->getWebDataServices()->getAirlineIcaoCodes().toIcaoDesignatorCompleterStrings(), this); + QCompleter *c = new QCompleter(sGui->getWebDataServices()->getAirlineIcaoCodes().toIcaoDesignatorCompleterStrings(true, true), this); c->setCaseSensitivity(Qt::CaseInsensitive); c->setCompletionMode(QCompleter::PopupCompletion); c->setMaxVisibleItems(10); diff --git a/src/blackgui/components/dbairlineicaoselectorcomponent.h b/src/blackgui/components/dbairlineicaoselectorcomponent.h index 6c0676a22..bdee15d1f 100644 --- a/src/blackgui/components/dbairlineicaoselectorcomponent.h +++ b/src/blackgui/components/dbairlineicaoselectorcomponent.h @@ -38,18 +38,19 @@ namespace BlackGui //! \note needed for forward declared QScopedPointer and needs to be in .cpp ~CDbAirlineIcaoSelectorComponent(); - //! \copydoc CDbAirlineIcaoSelectorBase::clear + //! \name Base class overrides + //! @{ virtual void setReadOnly(bool readOnly) override; - - //! \copydoc CDbAirlineIcaoSelectorBase::setAirlineIcao virtual void setAirlineIcao(const BlackMisc::Aviation::CAirlineIcaoCode &icao) override; + virtual void clear() override; + //! @} + + //! Raw text designator + QString getRawDesignator() const; //! Display ICAO description void withIcaoDescription(bool description); - //! \copydoc CDbAirlineIcaoSelectorBase::clear - virtual void clear() override; - protected: //! \copydoc CDbAirlineIcaoSelectorBase::createCompleter virtual QCompleter *createCompleter() override; diff --git a/src/blackgui/components/dbairlinenameselectorcomponent.h b/src/blackgui/components/dbairlinenameselectorcomponent.h index dcae7b930..3ac1af53c 100644 --- a/src/blackgui/components/dbairlinenameselectorcomponent.h +++ b/src/blackgui/components/dbairlinenameselectorcomponent.h @@ -37,14 +37,12 @@ namespace BlackGui //! \note needed for forward declared QScopedPointer and needs to be in .cpp virtual ~CDbAirlineNameSelectorComponent(); - //! \copydoc CDbAirlineIcaoSelectorBase::setReadOnly + //! \name Base class overrides + //! @{ virtual void setReadOnly(bool readOnly) override; - - //! \copydoc CDbAirlineIcaoSelectorBase::setAirlineIcao virtual void setAirlineIcao(const BlackMisc::Aviation::CAirlineIcaoCode &icao) override; - - //! \copydoc CDbAirlineIcaoSelectorBase::clear virtual void clear() override; + //! @} protected: //! \copydoc CDbAirlineIcaoSelectorBase::createCompleter diff --git a/src/blackgui/components/dbdistributorselectorcomponent.cpp b/src/blackgui/components/dbdistributorselectorcomponent.cpp index 316b4e25d..cb1c3358e 100644 --- a/src/blackgui/components/dbdistributorselectorcomponent.cpp +++ b/src/blackgui/components/dbdistributorselectorcomponent.cpp @@ -158,8 +158,7 @@ namespace BlackGui { if (count > 0) { - QStringList keysAndAliases(sGui->getWebDataServices()->getDistributors().getDbKeysAndAliases()); - keysAndAliases.sort(Qt::CaseInsensitive); + const QStringList keysAndAliases(sGui->getWebDataServices()->getDistributors().getDbKeysAndAliases(true)); QCompleter *c = new QCompleter(keysAndAliases, this); c->setCaseSensitivity(Qt::CaseInsensitive); c->setCompletionMode(QCompleter::PopupCompletion); diff --git a/src/blackgui/components/simulatorselector.cpp b/src/blackgui/components/simulatorselector.cpp index 8fc148caa..b968a62d8 100644 --- a/src/blackgui/components/simulatorselector.cpp +++ b/src/blackgui/components/simulatorselector.cpp @@ -69,21 +69,24 @@ namespace BlackGui this->ui->cb_XPlane->isChecked(), this->ui->cb_P3D->isChecked()); case RadioButtons: return CSimulatorInfo(this->ui->rb_FSX->isChecked(), this->ui->rb_FS9->isChecked(), - this->ui->rb_XPlane->isChecked(), this->ui->cb_P3D->isChecked()); + this->ui->rb_XPlane->isChecked(), this->ui->rb_P3D->isChecked()); } } - void CSimulatorSelector::setValue(const CSimulatorInfo &info) + void CSimulatorSelector::setValue(const CSimulatorInfo &simulator) { - this->ui->cb_FSX->setChecked(info.fsx()); - this->ui->cb_FS9->setChecked(info.fs9()); - this->ui->cb_XPlane->setChecked(info.xplane()); - this->ui->cb_P3D->setChecked(info.p3d()); + const CSimulatorInfo current(getValue()); + if (simulator == current) { return; } // avoid unnecessary signals - if (info.fsx()) { this->ui->cb_FSX->setChecked(info.fsx()); return; } - if (info.fs9()) { this->ui->cb_FS9->setChecked(info.fs9()); return; } - if (info.xplane()) { this->ui->cb_XPlane->setChecked(info.xplane()); return; } - if (info.p3d()) { this->ui->cb_P3D->setChecked(info.p3d()); return; } + this->ui->cb_FSX->setChecked(simulator.fsx()); + this->ui->cb_FS9->setChecked(simulator.fs9()); + this->ui->cb_XPlane->setChecked(simulator.xplane()); + this->ui->cb_P3D->setChecked(simulator.p3d()); + + if (simulator.fsx()) { this->ui->cb_FSX->setChecked(simulator.fsx()); return; } + if (simulator.fs9()) { this->ui->cb_FS9->setChecked(simulator.fs9()); return; } + if (simulator.xplane()) { this->ui->cb_XPlane->setChecked(simulator.xplane()); return; } + if (simulator.p3d()) { this->ui->cb_P3D->setChecked(simulator.p3d()); return; } } void CSimulatorSelector::setAll() diff --git a/src/blackgui/components/simulatorselector.h b/src/blackgui/components/simulatorselector.h index f7e111ae9..6b4a1070e 100644 --- a/src/blackgui/components/simulatorselector.h +++ b/src/blackgui/components/simulatorselector.h @@ -52,7 +52,7 @@ namespace BlackGui BlackMisc::Simulation::CSimulatorInfo getValue() const; //! Set the value - void setValue(const BlackMisc::Simulation::CSimulatorInfo &info); + void setValue(const BlackMisc::Simulation::CSimulatorInfo &simulator); //! Set all, only making sense with checkboxes void setAll(); @@ -65,7 +65,7 @@ namespace BlackGui signals: //! Value has been changed - void changed(const BlackMisc::Simulation::CSimulatorInfo &info); + void changed(const BlackMisc::Simulation::CSimulatorInfo &simulator); private slots: //! Radio button changed diff --git a/src/blackmisc/stringutils.cpp b/src/blackmisc/stringutils.cpp index 4f5e8651d..0ce78f101 100644 --- a/src/blackmisc/stringutils.cpp +++ b/src/blackmisc/stringutils.cpp @@ -77,3 +77,17 @@ QByteArray BlackMisc::byteArrayFromHexString(const QString &hexString) } return ba; } + +QString BlackMisc::stripDesignatorFromCompleterString(const QString &candidate) +{ + const QString s(candidate.trimmed().toUpper()); + if (s.isEmpty()) { return QString(); } + if (s.contains(' ')) + { + return s.left(s.indexOf(' ')); + } + else + { + return s; + } +} diff --git a/src/blackmisc/stringutils.h b/src/blackmisc/stringutils.h index d9ea95902..944757022 100644 --- a/src/blackmisc/stringutils.h +++ b/src/blackmisc/stringutils.h @@ -58,6 +58,9 @@ namespace BlackMisc //! Byte array from hex value string per byte, 2 digits BLACKMISC_EXPORT QByteArray byteArrayFromHexString(const QString &hexString); + //! Strip a designator from a combined string + BLACKMISC_EXPORT QString stripDesignatorFromCompleterString(const QString &candidate); + namespace Mixin { /*!