diff --git a/src/blackgui/components/dbairlineicaoselectorbase.cpp b/src/blackgui/components/dbairlineicaoselectorbase.cpp index 5c9436768..31bda1952 100644 --- a/src/blackgui/components/dbairlineicaoselectorbase.cpp +++ b/src/blackgui/components/dbairlineicaoselectorbase.cpp @@ -23,6 +23,7 @@ #include #include #include +#include using namespace BlackGui; using namespace BlackCore; @@ -46,11 +47,14 @@ namespace BlackGui // when we already have data, init completers. This can not be done directly in the // constructor due to virtual functions - const int c = sGui->getWebDataServices()->getAirlineIcaoCodesCount(); + const int c = sGui->getWebDataServices()->getAirlineIcaoCodesCount(); if (c > 0) { - QTimer::singleShot(500, [this, c]() + QPointer myself(this); + QTimer::singleShot(500, [ = ]() { + if (!sGui || sGui->isShuttingDown()) { return; } + if (!myself) { return; } this->onCodesRead(CEntityFlags::AirlineIcaoEntity, CEntityFlags::ReadFinished, c); }); } @@ -77,15 +81,9 @@ namespace BlackGui bool CDbAirlineIcaoSelectorBase::setAirlineIcao(int key) { CAirlineIcaoCode icao(sGui->getWebDataServices()->getAirlineIcaoCodeForDbKey(key)); - if (icao.hasCompleteData()) - { - this->setAirlineIcao(icao); - return true; - } - else - { - return false; - } + if (!icao.hasCompleteData()) { return false; } + this->setAirlineIcao(icao); + return true; } bool CDbAirlineIcaoSelectorBase::isSet() const @@ -97,7 +95,7 @@ namespace BlackGui void CDbAirlineIcaoSelectorBase::dragEnterEvent(QDragEnterEvent *event) { if (!event || !acceptDrop(event->mimeData())) { return; } - setBackgroundRole(QPalette::Highlight); + this->setBackgroundRole(QPalette::Highlight); event->acceptProposedAction(); } @@ -116,12 +114,12 @@ namespace BlackGui void CDbAirlineIcaoSelectorBase::dropEvent(QDropEvent *event) { if (!event || !acceptDrop(event->mimeData())) { return; } - CVariant valueVariant(toCVariant(event->mimeData())); + const CVariant valueVariant(toCVariant(event->mimeData())); if (valueVariant.isValid()) { if (valueVariant.canConvert()) { - CAirlineIcaoCode icao(valueVariant.value()); + const CAirlineIcaoCode icao(valueVariant.value()); if (!icao.hasValidDbKey()) { return; } this->setAirlineIcao(icao); } diff --git a/src/blackgui/editors/airlineicaoform.cpp b/src/blackgui/editors/airlineicaoform.cpp index c3acad4c0..7f8c9a798 100644 --- a/src/blackgui/editors/airlineicaoform.cpp +++ b/src/blackgui/editors/airlineicaoform.cpp @@ -45,15 +45,15 @@ namespace BlackGui 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); + connect(ui->selector_AirlineName, &CDbAirlineIcaoSelectorComponent::changedAirlineIcao, this, &CAirlineIcaoForm::setValue, Qt::QueuedConnection); + connect(ui->selector_AirlineDesignator, &CDbAirlineIcaoSelectorComponent::changedAirlineIcao, this, &CAirlineIcaoForm::setValue, Qt::QueuedConnection); // Id - connect(ui->le_Id, &QLineEdit::returnPressed, this, &CAirlineIcaoForm::ps_idEntered); + connect(ui->le_Id, &QLineEdit::returnPressed, this, &CAirlineIcaoForm::onIdEntered); // drag and drop, paste connect(ui->tb_Paste, &QToolButton::clicked, this, &CAirlineIcaoForm::pasted); - connect(ui->drop_DropData, &CDropSite::droppedValueObject, this, &CAirlineIcaoForm::ps_droppedCode); + connect(ui->drop_DropData, &CDropSite::droppedValueObject, this, &CAirlineIcaoForm::onDroppedCode); ui->drop_DropData->setInfoText(""); ui->drop_DropData->setAcceptedMetaTypeIds({ qMetaTypeId(), qMetaTypeId()}); } @@ -61,10 +61,10 @@ namespace BlackGui CAirlineIcaoForm::~CAirlineIcaoForm() { } - void CAirlineIcaoForm::setValue(const BlackMisc::Aviation::CAirlineIcaoCode &icao) + void CAirlineIcaoForm::setValue(const CAirlineIcaoCode &icao) { - if (this->m_originalCode == icao) { return; } - this->m_originalCode = icao; + if (m_originalCode == icao) { return; } + m_originalCode = icao; ui->selector_AirlineDesignator->setAirlineIcao(icao); ui->selector_AirlineName->setAirlineIcao(icao); @@ -74,14 +74,24 @@ namespace BlackGui ui->cb_Va->setChecked(icao.isVirtualAirline()); ui->cb_Military->setChecked(icao.isMilitary()); ui->country_Selector->setCountry(icao.getCountry()); - ui->lbl_AirlineIcon->setPixmap(icao.toPixmap()); + + const QPixmap pm = icao.toPixmap(); + if (pm.width() < 125) + { + ui->lbl_AirlineIcon->setPixmap(pm); + } + else + { + ui->lbl_AirlineIcon->setTextFormat(Qt::RichText); + ui->lbl_AirlineIcon->setText(CGuiUtility::asSimpleHtmlImageHeight(icao.toIcon(), 25)); + } // sometimes artefacts when icon is displayed this->repaint(); - if (this->m_originalCode.hasCompleteData()) + if (m_originalCode.hasCompleteData()) { - emit airlineChanged(this->m_originalCode); + emit airlineChanged(m_originalCode); } } @@ -177,7 +187,7 @@ namespace BlackGui } } - void CAirlineIcaoForm::ps_droppedCode(const BlackMisc::CVariant &variantDropped) + void CAirlineIcaoForm::onDroppedCode(const BlackMisc::CVariant &variantDropped) { CAirlineIcaoCode icao; if (variantDropped.canConvert()) @@ -197,7 +207,7 @@ namespace BlackGui this->setValue(icao); } - void CAirlineIcaoForm::ps_idEntered() + void CAirlineIcaoForm::onIdEntered() { if (!sGui || !sGui->hasWebDataServices()) { diff --git a/src/blackgui/editors/airlineicaoform.h b/src/blackgui/editors/airlineicaoform.h index ab392c8ef..9531fae04 100644 --- a/src/blackgui/editors/airlineicaoform.h +++ b/src/blackgui/editors/airlineicaoform.h @@ -75,12 +75,11 @@ namespace BlackGui //! \copydoc CForm::jsonPasted virtual void jsonPasted(const QString &json) override; - private slots: //! Variant has been dropped - void ps_droppedCode(const BlackMisc::CVariant &variantDropped); + void onDroppedCode(const BlackMisc::CVariant &variantDropped); //! Id entered - void ps_idEntered(); + void onIdEntered(); private: QScopedPointer ui;