Fixed style of airline ICAO form and better scaling of images

This commit is contained in:
Klaus Basan
2018-07-24 16:54:23 +02:00
parent 9dd9faa2d6
commit a24d35f841
3 changed files with 36 additions and 29 deletions

View File

@@ -23,6 +23,7 @@
#include <QMetaType> #include <QMetaType>
#include <QPalette> #include <QPalette>
#include <QtGlobal> #include <QtGlobal>
#include <QPointer>
using namespace BlackGui; using namespace BlackGui;
using namespace BlackCore; using namespace BlackCore;
@@ -49,8 +50,11 @@ namespace BlackGui
const int c = sGui->getWebDataServices()->getAirlineIcaoCodesCount(); const int c = sGui->getWebDataServices()->getAirlineIcaoCodesCount();
if (c > 0) if (c > 0)
{ {
QTimer::singleShot(500, [this, c]() QPointer<CDbAirlineIcaoSelectorBase> myself(this);
QTimer::singleShot(500, [ = ]()
{ {
if (!sGui || sGui->isShuttingDown()) { return; }
if (!myself) { return; }
this->onCodesRead(CEntityFlags::AirlineIcaoEntity, CEntityFlags::ReadFinished, c); this->onCodesRead(CEntityFlags::AirlineIcaoEntity, CEntityFlags::ReadFinished, c);
}); });
} }
@@ -77,16 +81,10 @@ namespace BlackGui
bool CDbAirlineIcaoSelectorBase::setAirlineIcao(int key) bool CDbAirlineIcaoSelectorBase::setAirlineIcao(int key)
{ {
CAirlineIcaoCode icao(sGui->getWebDataServices()->getAirlineIcaoCodeForDbKey(key)); CAirlineIcaoCode icao(sGui->getWebDataServices()->getAirlineIcaoCodeForDbKey(key));
if (icao.hasCompleteData()) if (!icao.hasCompleteData()) { return false; }
{
this->setAirlineIcao(icao); this->setAirlineIcao(icao);
return true; return true;
} }
else
{
return false;
}
}
bool CDbAirlineIcaoSelectorBase::isSet() const bool CDbAirlineIcaoSelectorBase::isSet() const
{ {
@@ -97,7 +95,7 @@ namespace BlackGui
void CDbAirlineIcaoSelectorBase::dragEnterEvent(QDragEnterEvent *event) void CDbAirlineIcaoSelectorBase::dragEnterEvent(QDragEnterEvent *event)
{ {
if (!event || !acceptDrop(event->mimeData())) { return; } if (!event || !acceptDrop(event->mimeData())) { return; }
setBackgroundRole(QPalette::Highlight); this->setBackgroundRole(QPalette::Highlight);
event->acceptProposedAction(); event->acceptProposedAction();
} }
@@ -116,12 +114,12 @@ namespace BlackGui
void CDbAirlineIcaoSelectorBase::dropEvent(QDropEvent *event) void CDbAirlineIcaoSelectorBase::dropEvent(QDropEvent *event)
{ {
if (!event || !acceptDrop(event->mimeData())) { return; } if (!event || !acceptDrop(event->mimeData())) { return; }
CVariant valueVariant(toCVariant(event->mimeData())); const CVariant valueVariant(toCVariant(event->mimeData()));
if (valueVariant.isValid()) if (valueVariant.isValid())
{ {
if (valueVariant.canConvert<CAirlineIcaoCode>()) if (valueVariant.canConvert<CAirlineIcaoCode>())
{ {
CAirlineIcaoCode icao(valueVariant.value<CAirlineIcaoCode>()); const CAirlineIcaoCode icao(valueVariant.value<CAirlineIcaoCode>());
if (!icao.hasValidDbKey()) { return; } if (!icao.hasValidDbKey()) { return; }
this->setAirlineIcao(icao); this->setAirlineIcao(icao);
} }

View File

@@ -45,15 +45,15 @@ namespace BlackGui
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, Qt::QueuedConnection);
connect(ui->selector_AirlineDesignator, &CDbAirlineIcaoSelectorComponent::changedAirlineIcao, this, &CAirlineIcaoForm::setValue); connect(ui->selector_AirlineDesignator, &CDbAirlineIcaoSelectorComponent::changedAirlineIcao, this, &CAirlineIcaoForm::setValue, Qt::QueuedConnection);
// Id // Id
connect(ui->le_Id, &QLineEdit::returnPressed, this, &CAirlineIcaoForm::ps_idEntered); connect(ui->le_Id, &QLineEdit::returnPressed, this, &CAirlineIcaoForm::onIdEntered);
// drag and drop, paste // drag and drop, paste
connect(ui->tb_Paste, &QToolButton::clicked, this, &CAirlineIcaoForm::pasted); 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("<drop airline ICAO code>"); ui->drop_DropData->setInfoText("<drop airline ICAO code>");
ui->drop_DropData->setAcceptedMetaTypeIds({ qMetaTypeId<CAirlineIcaoCode>(), qMetaTypeId<CAirlineIcaoCodeList>()}); ui->drop_DropData->setAcceptedMetaTypeIds({ qMetaTypeId<CAirlineIcaoCode>(), qMetaTypeId<CAirlineIcaoCodeList>()});
} }
@@ -61,10 +61,10 @@ namespace BlackGui
CAirlineIcaoForm::~CAirlineIcaoForm() CAirlineIcaoForm::~CAirlineIcaoForm()
{ } { }
void CAirlineIcaoForm::setValue(const BlackMisc::Aviation::CAirlineIcaoCode &icao) void CAirlineIcaoForm::setValue(const CAirlineIcaoCode &icao)
{ {
if (this->m_originalCode == icao) { return; } if (m_originalCode == icao) { return; }
this->m_originalCode = icao; m_originalCode = icao;
ui->selector_AirlineDesignator->setAirlineIcao(icao); ui->selector_AirlineDesignator->setAirlineIcao(icao);
ui->selector_AirlineName->setAirlineIcao(icao); ui->selector_AirlineName->setAirlineIcao(icao);
@@ -74,14 +74,24 @@ namespace BlackGui
ui->cb_Va->setChecked(icao.isVirtualAirline()); ui->cb_Va->setChecked(icao.isVirtualAirline());
ui->cb_Military->setChecked(icao.isMilitary()); ui->cb_Military->setChecked(icao.isMilitary());
ui->country_Selector->setCountry(icao.getCountry()); 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 // sometimes artefacts when icon is displayed
this->repaint(); 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; CAirlineIcaoCode icao;
if (variantDropped.canConvert<CAirlineIcaoCode>()) if (variantDropped.canConvert<CAirlineIcaoCode>())
@@ -197,7 +207,7 @@ namespace BlackGui
this->setValue(icao); this->setValue(icao);
} }
void CAirlineIcaoForm::ps_idEntered() void CAirlineIcaoForm::onIdEntered()
{ {
if (!sGui || !sGui->hasWebDataServices()) if (!sGui || !sGui->hasWebDataServices())
{ {

View File

@@ -75,12 +75,11 @@ namespace BlackGui
//! \copydoc CForm::jsonPasted //! \copydoc CForm::jsonPasted
virtual void jsonPasted(const QString &json) override; virtual void jsonPasted(const QString &json) override;
private slots:
//! Variant has been dropped //! Variant has been dropped
void ps_droppedCode(const BlackMisc::CVariant &variantDropped); void onDroppedCode(const BlackMisc::CVariant &variantDropped);
//! Id entered //! Id entered
void ps_idEntered(); void onIdEntered();
private: private:
QScopedPointer<Ui::CAirlineIcaoForm> ui; QScopedPointer<Ui::CAirlineIcaoForm> ui;