refs #911, allow to enter id for airline and aircraft ICAO

This commit is contained in:
Klaus Basan
2017-03-22 17:19:17 +01:00
committed by Mathew Sutcliffe
parent 317b52a00b
commit cc1fd0e868
4 changed files with 75 additions and 7 deletions

View File

@@ -47,10 +47,13 @@ namespace BlackGui
this->setFocusProxy(ui->le_Id); this->setFocusProxy(ui->le_Id);
ui->lai_id->set(CIcons::appAircraftIcao16(), "Id:"); ui->lai_id->set(CIcons::appAircraftIcao16(), "Id:");
ui->le_Updated->setReadOnly(true); 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); ui->aircraft_Selector->displayWithIcaoDescription(false);
connect(ui->aircraft_Selector, &CDbAircraftIcaoSelectorComponent::changedAircraftIcao, this, &CAircraftIcaoForm::setValue); connect(ui->aircraft_Selector, &CDbAircraftIcaoSelectorComponent::changedAircraftIcao, this, &CAircraftIcaoForm::setValue);
// Id
connect(ui->le_Id, &QLineEdit::returnPressed, this, &CAircraftIcaoForm::ps_idEntered);
// drag and drop // drag and drop
connect(ui->drop_DropData, &CDropSite::droppedValueObject, this, &CAircraftIcaoForm::ps_droppedCode); connect(ui->drop_DropData, &CDropSite::droppedValueObject, this, &CAircraftIcaoForm::ps_droppedCode);
ui->drop_DropData->setInfoText("<drop aircraft ICAO code>"); ui->drop_DropData->setInfoText("<drop aircraft ICAO code>");
@@ -155,6 +158,7 @@ namespace BlackGui
ui->le_ModelDescription->setReadOnly(readOnly); ui->le_ModelDescription->setReadOnly(readOnly);
ui->le_Family->setReadOnly(readOnly); ui->le_Family->setReadOnly(readOnly);
ui->le_Iata->setReadOnly(readOnly); ui->le_Iata->setReadOnly(readOnly);
ui->le_Id->setReadOnly(readOnly);
CGuiUtility::checkBoxReadOnly(ui->cb_Legacy, readOnly); CGuiUtility::checkBoxReadOnly(ui->cb_Legacy, readOnly);
CGuiUtility::checkBoxReadOnly(ui->cb_Military, readOnly); CGuiUtility::checkBoxReadOnly(ui->cb_Military, readOnly);
@@ -170,6 +174,7 @@ namespace BlackGui
{ {
this->setReadOnly(true); this->setReadOnly(true);
ui->aircraft_Selector->setReadOnly(false); ui->aircraft_Selector->setReadOnly(false);
ui->le_Id->setReadOnly(false);
ui->drop_DropData->setVisible(true); ui->drop_DropData->setVisible(true);
} }
@@ -178,6 +183,11 @@ namespace BlackGui
setValue(CAircraftIcaoCode()); setValue(CAircraftIcaoCode());
} }
void CAircraftIcaoForm::resetValue()
{
this->setValue(m_originalCode);
}
void CAircraftIcaoForm::ps_droppedCode(const BlackMisc::CVariant &variantDropped) void CAircraftIcaoForm::ps_droppedCode(const BlackMisc::CVariant &variantDropped)
{ {
CAircraftIcaoCode icao; CAircraftIcaoCode icao;
@@ -198,6 +208,24 @@ namespace BlackGui
this->setValue(icao); 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 int CAircraftIcaoForm::getDbKeyFromGui() const
{ {
QString key(ui->le_Id->text().trimmed()); QString key(ui->le_Id->text().trimmed());

View File

@@ -24,7 +24,6 @@
class QWidget; class QWidget;
namespace Ui { class CAircraftIcaoForm; } namespace Ui { class CAircraftIcaoForm; }
namespace BlackGui namespace BlackGui
{ {
namespace Editors namespace Editors
@@ -42,7 +41,7 @@ namespace BlackGui
explicit CAircraftIcaoForm(QWidget *parent = nullptr); explicit CAircraftIcaoForm(QWidget *parent = nullptr);
//! Destructor //! Destructor
~CAircraftIcaoForm(); virtual ~CAircraftIcaoForm();
//! Get value //! Get value
BlackMisc::Aviation::CAircraftIcaoCode getValue() const; BlackMisc::Aviation::CAircraftIcaoCode getValue() const;
@@ -63,6 +62,9 @@ namespace BlackGui
//! Clear //! Clear
void clear(); void clear();
//! Reset value to current value
void resetValue();
public slots: public slots:
//! Set value //! Set value
bool setValue(const BlackMisc::Aviation::CAircraftIcaoCode &icao); bool setValue(const BlackMisc::Aviation::CAircraftIcaoCode &icao);
@@ -71,6 +73,9 @@ namespace BlackGui
//! Variant has been dropped //! Variant has been dropped
void ps_droppedCode(const BlackMisc::CVariant &variantDropped); void ps_droppedCode(const BlackMisc::CVariant &variantDropped);
//! Id has been entered
void ps_idEntered();
private: private:
QScopedPointer<Ui::CAircraftIcaoForm> ui; QScopedPointer<Ui::CAircraftIcaoForm> ui;
BlackMisc::Aviation::CAircraftIcaoCode m_originalCode; BlackMisc::Aviation::CAircraftIcaoCode m_originalCode;

View File

@@ -15,6 +15,8 @@
#include "blackgui/editors/validationindicator.h" #include "blackgui/editors/validationindicator.h"
#include "blackgui/guiutility.h" #include "blackgui/guiutility.h"
#include "blackgui/labelandicon.h" #include "blackgui/labelandicon.h"
#include "blackgui/guiapplication.h"
#include "blackcore/webdataservices.h"
#include "blackmisc/aviation/airlineicaocodelist.h" #include "blackmisc/aviation/airlineicaocodelist.h"
#include "blackmisc/compare.h" #include "blackmisc/compare.h"
#include "blackmisc/icons.h" #include "blackmisc/icons.h"
@@ -39,13 +41,16 @@ namespace BlackGui
{ {
ui->setupUi(this); ui->setupUi(this);
ui->le_Updated->setReadOnly(true); 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->lai_Id->set(CIcons::appAirlineIcao16(), "Id:");
ui->selector_AirlineDesignator->displayWithIcaoDescription(false); ui->selector_AirlineDesignator->displayWithIcaoDescription(false);
connect(ui->selector_AirlineName, &CDbAirlineIcaoSelectorComponent::changedAirlineIcao, this, &CAirlineIcaoForm::setValue); connect(ui->selector_AirlineName, &CDbAirlineIcaoSelectorComponent::changedAirlineIcao, this, &CAirlineIcaoForm::setValue);
connect(ui->selector_AirlineDesignator, &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 // drag and drop
connect(ui->drop_DropData, &CDropSite::droppedValueObject, this, &CAirlineIcaoForm::ps_droppedCode); connect(ui->drop_DropData, &CDropSite::droppedValueObject, this, &CAirlineIcaoForm::ps_droppedCode);
ui->drop_DropData->setInfoText("<drop airline ICAO code>"); ui->drop_DropData->setInfoText("<drop airline ICAO code>");
@@ -114,6 +119,7 @@ namespace BlackGui
void CAirlineIcaoForm::setReadOnly(bool readOnly) void CAirlineIcaoForm::setReadOnly(bool readOnly)
{ {
ui->le_Id->setReadOnly(readOnly);
ui->selector_AirlineDesignator->setReadOnly(readOnly); ui->selector_AirlineDesignator->setReadOnly(readOnly);
ui->selector_AirlineName->setReadOnly(readOnly); ui->selector_AirlineName->setReadOnly(readOnly);
ui->le_TelephonyDesignator->setReadOnly(readOnly); ui->le_TelephonyDesignator->setReadOnly(readOnly);
@@ -127,6 +133,7 @@ namespace BlackGui
void CAirlineIcaoForm::setSelectOnly() void CAirlineIcaoForm::setSelectOnly()
{ {
this->setReadOnly(true); this->setReadOnly(true);
ui->le_Id->setReadOnly(false);
ui->selector_AirlineDesignator->setReadOnly(false); ui->selector_AirlineDesignator->setReadOnly(false);
ui->selector_AirlineName->setReadOnly(false); ui->selector_AirlineName->setReadOnly(false);
ui->drop_DropData->setVisible(true); ui->drop_DropData->setVisible(true);
@@ -134,7 +141,12 @@ namespace BlackGui
void CAirlineIcaoForm::clear() void CAirlineIcaoForm::clear()
{ {
setValue(CAirlineIcaoCode()); this->setValue(CAirlineIcaoCode());
}
void CAirlineIcaoForm::resetValue()
{
this->setValue(m_originalCode);
} }
void CAirlineIcaoForm::ps_droppedCode(const BlackMisc::CVariant &variantDropped) void CAirlineIcaoForm::ps_droppedCode(const BlackMisc::CVariant &variantDropped)
@@ -156,5 +168,23 @@ namespace BlackGui
} }
this->setValue(icao); 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
} // ns } // ns

View File

@@ -42,7 +42,7 @@ namespace BlackGui
explicit CAirlineIcaoForm(QWidget *parent = nullptr); explicit CAirlineIcaoForm(QWidget *parent = nullptr);
//! Destructor //! Destructor
~CAirlineIcaoForm(); virtual ~CAirlineIcaoForm();
//! Set value //! Set value
void setValue(const BlackMisc::Aviation::CAirlineIcaoCode &icao = BlackMisc::Aviation::CAirlineIcaoCode()); void setValue(const BlackMisc::Aviation::CAirlineIcaoCode &icao = BlackMisc::Aviation::CAirlineIcaoCode());
@@ -66,6 +66,9 @@ namespace BlackGui
//! Clear //! Clear
void clear(); void clear();
//! Reset value to current value
void resetValue();
signals: signals:
//! Airline has been changed //! Airline has been changed
void airlineChanged(const BlackMisc::Aviation::CAirlineIcaoCode &airlineIcao); void airlineChanged(const BlackMisc::Aviation::CAirlineIcaoCode &airlineIcao);
@@ -74,11 +77,13 @@ namespace BlackGui
//! Variant has been dropped //! Variant has been dropped
void ps_droppedCode(const BlackMisc::CVariant &variantDropped); void ps_droppedCode(const BlackMisc::CVariant &variantDropped);
//! Id entered
void ps_idEntered();
private: private:
QScopedPointer<Ui::CAirlineIcaoForm> ui; QScopedPointer<Ui::CAirlineIcaoForm> ui;
BlackMisc::Aviation::CAirlineIcaoCode m_originalCode; //!< object allowing to override values BlackMisc::Aviation::CAirlineIcaoCode m_originalCode; //!< object allowing to override values
}; };
} // ns } // ns
} //ns } //ns