From dc004ed2d91bedb0c947be5ec00eb59897b7eee3 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Mon, 11 Apr 2016 19:39:50 +0200 Subject: [PATCH] refs #638, support for military flag in forms * avoid rountrips with completers * new checkboxes for military --- src/blackgui/editors/aircrafticaoform.cpp | 3 + src/blackgui/editors/aircrafticaoform.h | 3 +- src/blackgui/editors/airlineicaoform.cpp | 37 ++-- src/blackgui/editors/airlineicaoform.ui | 11 +- src/blackgui/editors/liveryform.cpp | 22 +- src/blackgui/editors/liveryform.h | 2 + src/blackgui/editors/liveryform.ui | 249 ++++++++++++---------- 7 files changed, 182 insertions(+), 145 deletions(-) diff --git a/src/blackgui/editors/aircrafticaoform.cpp b/src/blackgui/editors/aircrafticaoform.cpp index 7b812929a..f95033792 100644 --- a/src/blackgui/editors/aircrafticaoform.cpp +++ b/src/blackgui/editors/aircrafticaoform.cpp @@ -44,6 +44,9 @@ namespace BlackGui void CAircraftIcaoForm::setValue(const BlackMisc::Aviation::CAircraftIcaoCode &icao) { + if (icao == this->m_originalCode) { return; } + this->m_originalCode = icao; + this->ui->le_Id->setText(icao.getDbKeyAsString()); this->ui->aircraft_Selector->setAircraftIcao(icao); this->ui->le_Manufacturer->setText(icao.getManufacturer()); diff --git a/src/blackgui/editors/aircrafticaoform.h b/src/blackgui/editors/aircrafticaoform.h index 7a3d28b53..58cdce1b2 100644 --- a/src/blackgui/editors/aircrafticaoform.h +++ b/src/blackgui/editors/aircrafticaoform.h @@ -69,7 +69,8 @@ namespace BlackGui void ps_droppedCode(const BlackMisc::CVariant &variantDropped); private: - QScopedPointer ui; + QScopedPointer ui; + BlackMisc::Aviation::CAircraftIcaoCode m_originalCode; //! Key from GUI int getDbKeyFromGui() const; diff --git a/src/blackgui/editors/airlineicaoform.cpp b/src/blackgui/editors/airlineicaoform.cpp index 04adb5338..212ec05cd 100644 --- a/src/blackgui/editors/airlineicaoform.cpp +++ b/src/blackgui/editors/airlineicaoform.cpp @@ -7,6 +7,7 @@ * contained in the LICENSE file. */ +#include "blackgui/guiutility.h" #include "blackmisc/aviation/airlineicaocodelist.h" #include "blackmisc/country.h" #include "airlineicaoform.h" @@ -44,22 +45,22 @@ namespace BlackGui void CAirlineIcaoForm::setValue(const BlackMisc::Aviation::CAirlineIcaoCode &icao) { - if (this->m_originalCode != icao) - { - this->m_originalCode = icao; - this->ui->selector_AirlineDesignator->setAirlineIcao(icao); - this->ui->selector_AirlineName->setAirlineIcao(icao); - this->ui->le_Id->setText(icao.getDbKeyAsString()); - this->ui->le_TelephonyDesignator->setText(icao.getTelephonyDesignator()); - this->ui->le_Updated->setText(icao.getFormattedUtcTimestampYmdhms()); - this->ui->cb_Va->setChecked(icao.isVirtualAirline()); - this->ui->country_Selector->setCountry(icao.getCountry()); - this->ui->lbl_AirlineIcon->setPixmap(icao.toPixmap()); + if (this->m_originalCode == icao) { return; } + this->m_originalCode = icao; - if (this->m_originalCode.hasCompleteData()) - { - emit airlineChanged(this->m_originalCode); - } + this->ui->selector_AirlineDesignator->setAirlineIcao(icao); + this->ui->selector_AirlineName->setAirlineIcao(icao); + this->ui->le_Id->setText(icao.getDbKeyAsString()); + this->ui->le_TelephonyDesignator->setText(icao.getTelephonyDesignator()); + this->ui->le_Updated->setText(icao.getFormattedUtcTimestampYmdhms()); + this->ui->cb_Va->setChecked(icao.isVirtualAirline()); + this->ui->cb_Military->setChecked(icao.isMilitary()); + this->ui->country_Selector->setCountry(icao.getCountry()); + this->ui->lbl_AirlineIcon->setPixmap(icao.toPixmap()); + + if (this->m_originalCode.hasCompleteData()) + { + emit airlineChanged(this->m_originalCode); } } @@ -67,6 +68,7 @@ namespace BlackGui { CAirlineIcaoCode code(m_originalCode); code.setVirtualAirline(this->ui->cb_Va->isChecked()); + code.setMilitary(this->ui->cb_Military->isChecked()); code.setCountry(this->ui->country_Selector->getCountry()); code.setName(this->ui->selector_AirlineName->getAirlineIcao().getName()); code.setTelephonyDesignator(this->ui->le_TelephonyDesignator->text()); @@ -103,7 +105,9 @@ namespace BlackGui this->ui->selector_AirlineName->setReadOnly(readOnly); this->ui->le_TelephonyDesignator->setReadOnly(readOnly); this->ui->country_Selector->setReadOnly(readOnly); - this->ui->cb_Va->setEnabled(!readOnly); + + CGuiUtility::checkBoxReadOnly(this->ui->cb_Va, readOnly); + CGuiUtility::checkBoxReadOnly(this->ui->cb_Military, readOnly); } void CAirlineIcaoForm::setSelectOnly() @@ -137,6 +141,5 @@ namespace BlackGui } this->setValue(icao); } - } // ns } // ns diff --git a/src/blackgui/editors/airlineicaoform.ui b/src/blackgui/editors/airlineicaoform.ui index 55f589e47..d00610285 100644 --- a/src/blackgui/editors/airlineicaoform.ui +++ b/src/blackgui/editors/airlineicaoform.ui @@ -6,8 +6,8 @@ 0 0 - 232 - 210 + 233 + 205 @@ -168,6 +168,13 @@ + + + + Mil. + + + diff --git a/src/blackgui/editors/liveryform.cpp b/src/blackgui/editors/liveryform.cpp index 423db3e3d..7c636e3c0 100644 --- a/src/blackgui/editors/liveryform.cpp +++ b/src/blackgui/editors/liveryform.cpp @@ -7,6 +7,7 @@ * contained in the LICENSE file. */ +#include "blackgui/guiutility.h" #include "blackgui/guiapplication.h" #include "blackmisc/aviation/liverylist.h" #include "liveryform.h" @@ -29,10 +30,10 @@ namespace BlackGui this->ui->le_Id->setReadOnly(true); this->ui->le_Updated->setReadOnly(true); this->ui->lai_Id->set(CIcons::appLiveries16(), "Id:"); - this->ui->livery_Selector->withLiveryDescription(false); + this->ui->comp_LiverySelector->withLiveryDescription(false); // selector - connect(this->ui->livery_Selector, &CDbLiverySelectorComponent::changedLivery, this, &CLiveryForm::setValue); + connect(this->ui->comp_LiverySelector, &CDbLiverySelectorComponent::changedLivery, this, &CLiveryForm::setValue); // drag and drop connect(this->ui->drop_DropData, &CDropSite::droppedValueObject, this, &CLiveryForm::ps_droppedLivery); @@ -47,7 +48,7 @@ namespace BlackGui CLivery CLiveryForm::getValue() const { - CLivery livery(this->ui->livery_Selector->getLivery()); + CLivery livery(this->ui->comp_LiverySelector->getLivery()); if (livery.hasCompleteData() && livery.hasValidDbKey()) { // already complete data from selector @@ -57,6 +58,7 @@ namespace BlackGui CAirlineIcaoCode airline(this->ui->editor_AirlineIcao->getValue()); livery.setAirlineIcaoCode(airline); livery.setDescription(this->ui->le_Description->text()); + livery.setMilitary(this->ui->cb_Military->isChecked()); return livery; } @@ -67,12 +69,16 @@ namespace BlackGui void CLiveryForm::setValue(const CLivery &livery) { - this->ui->livery_Selector->setLivery(livery); + if (this->m_originalLivery == livery) { return; } + + this->m_originalLivery = livery; + this->ui->comp_LiverySelector->setLivery(livery); this->ui->le_Id->setText(livery.getDbKeyAsString()); this->ui->le_Description->setText(livery.getDescription()); this->ui->le_Updated->setText(livery.getFormattedUtcTimestampYmdhms()); this->ui->color_Fuselage->setColor(livery.getColorFuselage()); this->ui->color_Tail->setColor(livery.getColorTail()); + this->ui->cb_Military->setChecked(livery.isMilitary()); if (livery.isColorLivery()) { @@ -122,17 +128,18 @@ namespace BlackGui void CLiveryForm::setReadOnly(bool readOnly) { this->m_readOnly = readOnly; - this->ui->livery_Selector->setReadOnly(readOnly); + this->ui->comp_LiverySelector->setReadOnly(readOnly); this->ui->le_Description->setReadOnly(readOnly); this->ui->color_Fuselage->setReadOnly(readOnly); this->ui->color_Tail->setReadOnly(readOnly); this->ui->editor_AirlineIcao->setReadOnly(readOnly); + CGuiUtility::checkBoxReadOnly(this->ui->cb_Military, readOnly); } void CLiveryForm::setSelectOnly() { this->setReadOnly(true); - this->ui->livery_Selector->setReadOnly(false); + this->ui->comp_LiverySelector->setReadOnly(false); this->ui->editor_AirlineIcao->setSelectOnly(); } @@ -162,8 +169,9 @@ namespace BlackGui { if (!code.hasCompleteData()) { return; } if (!code.hasValidDbKey()) { return; } +// if (this->m_originalLivery.getAirlineIcaoCode() == code) { return; } // avoid redundant updates - CLivery stdLivery(sGui->getWebDataServices()->getLiveries().findStdLiveryByAirlineIcaoDesignator(code)); + const CLivery stdLivery(sGui->getWebDataServices()->getLiveries().findStdLiveryByAirlineIcaoDesignator(code)); if (stdLivery.hasValidDbKey()) { this->setValue(stdLivery); diff --git a/src/blackgui/editors/liveryform.h b/src/blackgui/editors/liveryform.h index b7c290da7..d6166f540 100644 --- a/src/blackgui/editors/liveryform.h +++ b/src/blackgui/editors/liveryform.h @@ -78,6 +78,8 @@ namespace BlackGui private: QScopedPointer ui; + BlackMisc::Aviation::CLivery m_originalLivery; //!< object allowing to override values + }; } // ns } // ns diff --git a/src/blackgui/editors/liveryform.ui b/src/blackgui/editors/liveryform.ui index 207a1e6a3..6ab0bccc2 100644 --- a/src/blackgui/editors/liveryform.ui +++ b/src/blackgui/editors/liveryform.ui @@ -45,35 +45,104 @@ - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - + + + + + 10 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + - + + + + Description: + + + le_Description + + + + + + + Last updated: + + + le_Updated + + + + + + + + 75 + 16777215 + + + + true + + + Id + + + + + + + Code: + + + + + + + Fuselage/Tail: + + + + + + + + 0 + 225 + + + + + + + + Drop data here + + + + + + + true + + + + + + + Livery description + + + + @@ -111,103 +180,47 @@ + + + + Qt::Horizontal + + + + 40 + 20 + + + + - - - - - 0 - 225 - - + + + + + 0 + + + 0 + + + 0 + + + 0 + + - - + + + + Military livery + - Code: - - - - - - - Description: - - - le_Description - - - - - - - Last updated: - - - le_Updated - - - - - - - true - - - - - - - - 75 - 16777215 - - - - true - - - Id - - - - - - - Fuselage/Tail: - - - - - - - Livery description - - - - - - - Drop data here - - - - - - - - 10 - 0 - - - - QFrame::StyledPanel - - - QFrame::Raised + Mil.