mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 23:05:36 +08:00
refs #634, improved completers
* mostly to avoid roundtrips (set->changed signal->set again...) * better sort for ICAO completer
This commit is contained in:
@@ -37,13 +37,12 @@ namespace BlackGui
|
||||
CDbAirlineIcaoSelectorBase::~CDbAirlineIcaoSelectorBase()
|
||||
{ }
|
||||
|
||||
void CDbAirlineIcaoSelectorBase::setAirlineIcao(const CAirlineIcaoCode &icao)
|
||||
bool CDbAirlineIcaoSelectorBase::setAirlineIcao(const CAirlineIcaoCode &icao)
|
||||
{
|
||||
if (icao != m_currentIcao)
|
||||
{
|
||||
m_currentIcao = icao;
|
||||
emit changedAirlineIcao(icao);
|
||||
}
|
||||
if (icao == m_currentIcao) { return false; }
|
||||
m_currentIcao = icao;
|
||||
emit changedAirlineIcao(icao);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CDbAirlineIcaoSelectorBase::setAirlineIcao(int key)
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace BlackGui
|
||||
virtual ~CDbAirlineIcaoSelectorBase();
|
||||
|
||||
//! Current airline ICAO
|
||||
virtual void setAirlineIcao(const BlackMisc::Aviation::CAirlineIcaoCode &icao);
|
||||
virtual bool setAirlineIcao(const BlackMisc::Aviation::CAirlineIcaoCode &icao);
|
||||
|
||||
//! Current airline ICAO by key
|
||||
bool setAirlineIcao(int key);
|
||||
|
||||
@@ -44,12 +44,13 @@ namespace BlackGui
|
||||
this->ui->le_Airline->setReadOnly(readOnly);
|
||||
}
|
||||
|
||||
void CDbAirlineIcaoSelectorComponent::setAirlineIcao(const CAirlineIcaoCode &icao)
|
||||
bool CDbAirlineIcaoSelectorComponent::setAirlineIcao(const CAirlineIcaoCode &icao)
|
||||
{
|
||||
CDbAirlineIcaoSelectorBase::setAirlineIcao(icao);
|
||||
if (!CDbAirlineIcaoSelectorBase::setAirlineIcao(icao)) { return false; }
|
||||
const QString icaoStr(icao.getVDesignator());
|
||||
this->ui->le_Airline->setText(icaoStr);
|
||||
ui->lbl_Description->setText(icao.getName());
|
||||
return true;
|
||||
}
|
||||
|
||||
void CDbAirlineIcaoSelectorComponent::withIcaoDescription(bool description)
|
||||
|
||||
@@ -41,7 +41,7 @@ namespace BlackGui
|
||||
//! \name Base class overrides
|
||||
//! @{
|
||||
virtual void setReadOnly(bool readOnly) override;
|
||||
virtual void setAirlineIcao(const BlackMisc::Aviation::CAirlineIcaoCode &icao) override;
|
||||
virtual bool setAirlineIcao(const BlackMisc::Aviation::CAirlineIcaoCode &icao) override;
|
||||
virtual void clear() override;
|
||||
//! @}
|
||||
|
||||
|
||||
@@ -35,11 +35,12 @@ namespace BlackGui
|
||||
// no inline destructor, read QScopedPointer Forward Declared Pointers
|
||||
}
|
||||
|
||||
void CDbAirlineNameSelectorComponent::setAirlineIcao(const CAirlineIcaoCode &icao)
|
||||
bool CDbAirlineNameSelectorComponent::setAirlineIcao(const CAirlineIcaoCode &icao)
|
||||
{
|
||||
CDbAirlineIcaoSelectorBase::setAirlineIcao(icao);
|
||||
if (!CDbAirlineIcaoSelectorBase::setAirlineIcao(icao)) { return false; }
|
||||
QString name(icao.getName());
|
||||
this->ui->le_AirlineName->setText(name);
|
||||
return true;
|
||||
}
|
||||
|
||||
void CDbAirlineNameSelectorComponent::clear()
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace BlackGui
|
||||
//! \name Base class overrides
|
||||
//! @{
|
||||
virtual void setReadOnly(bool readOnly) override;
|
||||
virtual void setAirlineIcao(const BlackMisc::Aviation::CAirlineIcaoCode &icao) override;
|
||||
virtual bool setAirlineIcao(const BlackMisc::Aviation::CAirlineIcaoCode &icao) override;
|
||||
virtual void clear() override;
|
||||
//! @}
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@ namespace BlackMisc
|
||||
{
|
||||
namespace Aviation
|
||||
{
|
||||
|
||||
CAircraftIcaoCodeList::CAircraftIcaoCodeList(const CSequence<CAircraftIcaoCode> &other) :
|
||||
CSequence<CAircraftIcaoCode>(other)
|
||||
{ }
|
||||
@@ -81,6 +80,24 @@ namespace BlackMisc
|
||||
});
|
||||
}
|
||||
|
||||
CAircraftIcaoCodeList CAircraftIcaoCodeList::findWithIataCode(bool removeWhenSameAsDesignator) const
|
||||
{
|
||||
return this->findBy([&](const CAircraftIcaoCode & code)
|
||||
{
|
||||
if (!code.hasIataCode()) { return false; }
|
||||
return !removeWhenSameAsDesignator || !code.isIataSameAsDesignator();
|
||||
});
|
||||
}
|
||||
|
||||
CAircraftIcaoCodeList CAircraftIcaoCodeList::findWithFamily(bool removeWhenSameAsDesignator) const
|
||||
{
|
||||
return this->findBy([&](const CAircraftIcaoCode & code)
|
||||
{
|
||||
if (!code.hasFamily()) { return false; }
|
||||
return !removeWhenSameAsDesignator || !code.isFamilySameAsDesignator();
|
||||
});
|
||||
}
|
||||
|
||||
CAircraftIcaoCode CAircraftIcaoCodeList::findFirstByDesignatorAndRank(const QString &designator) const
|
||||
{
|
||||
if (!CAircraftIcaoCode::isValidDesignator(designator)) { return CAircraftIcaoCode(); }
|
||||
|
||||
@@ -59,6 +59,12 @@ namespace BlackMisc
|
||||
//! Find by model description
|
||||
CAircraftIcaoCodeList findByDescription(const QString &description) const;
|
||||
|
||||
//! Those with IATA code
|
||||
CAircraftIcaoCodeList findWithIataCode(bool removeWhenSameAsDesignator) const;
|
||||
|
||||
//! Those with family
|
||||
CAircraftIcaoCodeList findWithFamily(bool removeWhenSameAsDesignator) const;
|
||||
|
||||
//! Find by designator, then best match by rank
|
||||
CAircraftIcaoCode findFirstByDesignatorAndRank(const QString &designator) const;
|
||||
|
||||
@@ -68,6 +74,9 @@ namespace BlackMisc
|
||||
//! Sort by rank
|
||||
void sortByRank();
|
||||
|
||||
//! Sort by designator first, then by rank
|
||||
void sortByDesignatorAndRank();
|
||||
|
||||
//! For selection completion
|
||||
QStringList toCompleterStrings(bool withIataCodes = false, bool withFamily = false, bool sort = true) const;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user