diff --git a/src/blackgui/editors/aircrafticaoform.cpp b/src/blackgui/editors/aircrafticaoform.cpp index 112ddb26e..37ce1cb2f 100644 --- a/src/blackgui/editors/aircrafticaoform.cpp +++ b/src/blackgui/editors/aircrafticaoform.cpp @@ -47,10 +47,13 @@ namespace BlackGui this->setFocusProxy(ui->le_Id); ui->lai_id->set(CIcons::appAircraftIcao16(), "Id:"); ui->le_Updated->setReadOnly(true); - ui->le_Id->setReadOnly(true); + ui->le_Id->setValidator(new QIntValidator(0, 999999, ui->le_Id)); ui->aircraft_Selector->displayWithIcaoDescription(false); connect(ui->aircraft_Selector, &CDbAircraftIcaoSelectorComponent::changedAircraftIcao, this, &CAircraftIcaoForm::setValue); + // Id + connect(ui->le_Id, &QLineEdit::returnPressed, this, &CAircraftIcaoForm::ps_idEntered); + // drag and drop connect(ui->drop_DropData, &CDropSite::droppedValueObject, this, &CAircraftIcaoForm::ps_droppedCode); ui->drop_DropData->setInfoText(""); @@ -155,6 +158,7 @@ namespace BlackGui ui->le_ModelDescription->setReadOnly(readOnly); ui->le_Family->setReadOnly(readOnly); ui->le_Iata->setReadOnly(readOnly); + ui->le_Id->setReadOnly(readOnly); CGuiUtility::checkBoxReadOnly(ui->cb_Legacy, readOnly); CGuiUtility::checkBoxReadOnly(ui->cb_Military, readOnly); @@ -170,6 +174,7 @@ namespace BlackGui { this->setReadOnly(true); ui->aircraft_Selector->setReadOnly(false); + ui->le_Id->setReadOnly(false); ui->drop_DropData->setVisible(true); } @@ -178,6 +183,11 @@ namespace BlackGui setValue(CAircraftIcaoCode()); } + void CAircraftIcaoForm::resetValue() + { + this->setValue(m_originalCode); + } + void CAircraftIcaoForm::ps_droppedCode(const BlackMisc::CVariant &variantDropped) { CAircraftIcaoCode icao; @@ -198,6 +208,24 @@ namespace BlackGui this->setValue(icao); } + void CAircraftIcaoForm::ps_idEntered() + { + if (!sGui || !sGui->hasWebDataServices()) + { + ui->le_Id->undo(); + return; + } + + const int id = ui->le_Id->text().toInt(); + const CAircraftIcaoCode icao = sGui->getWebDataServices()->getAircraftIcaoCodeForDbKey(id); + if (!icao.isLoadedFromDb()) + { + ui->le_Id->undo(); + return; + } + this->setValue(icao); + } + int CAircraftIcaoForm::getDbKeyFromGui() const { QString key(ui->le_Id->text().trimmed()); diff --git a/src/blackgui/editors/aircrafticaoform.h b/src/blackgui/editors/aircrafticaoform.h index 430c7c1a8..98feebde6 100644 --- a/src/blackgui/editors/aircrafticaoform.h +++ b/src/blackgui/editors/aircrafticaoform.h @@ -24,7 +24,6 @@ class QWidget; namespace Ui { class CAircraftIcaoForm; } - namespace BlackGui { namespace Editors @@ -42,7 +41,7 @@ namespace BlackGui explicit CAircraftIcaoForm(QWidget *parent = nullptr); //! Destructor - ~CAircraftIcaoForm(); + virtual ~CAircraftIcaoForm(); //! Get value BlackMisc::Aviation::CAircraftIcaoCode getValue() const; @@ -63,6 +62,9 @@ namespace BlackGui //! Clear void clear(); + //! Reset value to current value + void resetValue(); + public slots: //! Set value bool setValue(const BlackMisc::Aviation::CAircraftIcaoCode &icao); @@ -71,6 +73,9 @@ namespace BlackGui //! Variant has been dropped void ps_droppedCode(const BlackMisc::CVariant &variantDropped); + //! Id has been entered + void ps_idEntered(); + private: QScopedPointer ui; BlackMisc::Aviation::CAircraftIcaoCode m_originalCode; diff --git a/src/blackgui/editors/airlineicaoform.cpp b/src/blackgui/editors/airlineicaoform.cpp index ce7e43268..93beaa3c9 100644 --- a/src/blackgui/editors/airlineicaoform.cpp +++ b/src/blackgui/editors/airlineicaoform.cpp @@ -15,6 +15,8 @@ #include "blackgui/editors/validationindicator.h" #include "blackgui/guiutility.h" #include "blackgui/labelandicon.h" +#include "blackgui/guiapplication.h" +#include "blackcore/webdataservices.h" #include "blackmisc/aviation/airlineicaocodelist.h" #include "blackmisc/compare.h" #include "blackmisc/icons.h" @@ -39,13 +41,16 @@ namespace BlackGui { ui->setupUi(this); ui->le_Updated->setReadOnly(true); - ui->le_Id->setReadOnly(true); + ui->le_Id->setValidator(new QIntValidator(0, 999999, ui->le_Id)); ui->lai_Id->set(CIcons::appAirlineIcao16(), "Id:"); ui->selector_AirlineDesignator->displayWithIcaoDescription(false); connect(ui->selector_AirlineName, &CDbAirlineIcaoSelectorComponent::changedAirlineIcao, this, &CAirlineIcaoForm::setValue); connect(ui->selector_AirlineDesignator, &CDbAirlineIcaoSelectorComponent::changedAirlineIcao, this, &CAirlineIcaoForm::setValue); + // Id + connect(ui->le_Id, &QLineEdit::returnPressed, this, &CAirlineIcaoForm::ps_idEntered); + // drag and drop connect(ui->drop_DropData, &CDropSite::droppedValueObject, this, &CAirlineIcaoForm::ps_droppedCode); ui->drop_DropData->setInfoText(""); @@ -114,6 +119,7 @@ namespace BlackGui void CAirlineIcaoForm::setReadOnly(bool readOnly) { + ui->le_Id->setReadOnly(readOnly); ui->selector_AirlineDesignator->setReadOnly(readOnly); ui->selector_AirlineName->setReadOnly(readOnly); ui->le_TelephonyDesignator->setReadOnly(readOnly); @@ -127,6 +133,7 @@ namespace BlackGui void CAirlineIcaoForm::setSelectOnly() { this->setReadOnly(true); + ui->le_Id->setReadOnly(false); ui->selector_AirlineDesignator->setReadOnly(false); ui->selector_AirlineName->setReadOnly(false); ui->drop_DropData->setVisible(true); @@ -134,7 +141,12 @@ namespace BlackGui void CAirlineIcaoForm::clear() { - setValue(CAirlineIcaoCode()); + this->setValue(CAirlineIcaoCode()); + } + + void CAirlineIcaoForm::resetValue() + { + this->setValue(m_originalCode); } void CAirlineIcaoForm::ps_droppedCode(const BlackMisc::CVariant &variantDropped) @@ -156,5 +168,23 @@ namespace BlackGui } this->setValue(icao); } + + void CAirlineIcaoForm::ps_idEntered() + { + if (!sGui || !sGui->hasWebDataServices()) + { + ui->le_Id->undo(); + return; + } + + const int id = ui->le_Id->text().toInt(); + const CAirlineIcaoCode icao = sGui->getWebDataServices()->getAirlineIcaoCodeForDbKey(id); + if (!icao.isLoadedFromDb()) + { + ui->le_Id->undo(); + return; + } + this->setValue(icao); + } } // ns } // ns diff --git a/src/blackgui/editors/airlineicaoform.h b/src/blackgui/editors/airlineicaoform.h index 9612b336a..2bad6bbd8 100644 --- a/src/blackgui/editors/airlineicaoform.h +++ b/src/blackgui/editors/airlineicaoform.h @@ -42,7 +42,7 @@ namespace BlackGui explicit CAirlineIcaoForm(QWidget *parent = nullptr); //! Destructor - ~CAirlineIcaoForm(); + virtual ~CAirlineIcaoForm(); //! Set value void setValue(const BlackMisc::Aviation::CAirlineIcaoCode &icao = BlackMisc::Aviation::CAirlineIcaoCode()); @@ -66,6 +66,9 @@ namespace BlackGui //! Clear void clear(); + //! Reset value to current value + void resetValue(); + signals: //! Airline has been changed void airlineChanged(const BlackMisc::Aviation::CAirlineIcaoCode &airlineIcao); @@ -74,11 +77,13 @@ namespace BlackGui //! Variant has been dropped void ps_droppedCode(const BlackMisc::CVariant &variantDropped); + //! Id entered + void ps_idEntered(); + private: QScopedPointer ui; BlackMisc::Aviation::CAirlineIcaoCode m_originalCode; //!< object allowing to override values }; - } // ns } //ns