Ref T75, filter livery by id

This commit is contained in:
Klaus Basan
2017-05-07 22:02:46 +02:00
parent 997d17c459
commit 7df685bbda
5 changed files with 145 additions and 86 deletions

View File

@@ -17,9 +17,10 @@ namespace BlackGui
{
namespace Models
{
CLiveryFilter::CLiveryFilter(const QString &combinedCode, const QString &descriptiom,
CLiveryFilter::CLiveryFilter(int id, const QString &combinedCode, const QString &descriptiom,
const QString &airlineDesignator,
const BlackMisc::CRgbColor &fuselageColor, const BlackMisc::CRgbColor &tailColor, double maxColorDistance, bool colorLiveries, bool airlineLiveries) :
m_id(id),
m_combinedCode(combinedCode.trimmed().toUpper()), m_description(descriptiom),
m_airlineIcaoDesignator(airlineDesignator.trimmed().toUpper()),
m_fuselageColor(fuselageColor), m_tailColor(tailColor), m_maxColorDistance(maxColorDistance),
@@ -35,12 +36,21 @@ namespace BlackGui
bool checkLiveryType = filterByLiveryType();
for (const CLivery &livery : inContainer)
{
if (m_id >= 0)
{
// search only for id
if (livery.isLoadedFromDb() && livery.getDbKey() == m_id)
{
outContainer.push_back(livery);
break;
}
continue;
}
if (checkLiveryType)
{
if (!m_colorLiveries && livery.isColorLivery()) {continue;}
if (!m_airlineLiveries && livery.isAirlineLivery()) { continue; }
}
if (!m_combinedCode.isEmpty())
{
if (!this->stringMatchesFilterExpression(livery.getCombinedCode(), m_combinedCode)) { continue; }
@@ -70,7 +80,7 @@ namespace BlackGui
{
if (filterByLiveryType()) { return true; }
if (m_fuselageColor.isValid() || m_tailColor.isValid()) { return true; }
return !(this->m_combinedCode.isEmpty() && this->m_description.isEmpty() &&
return !(this->m_id < 0 && this->m_combinedCode.isEmpty() && this->m_description.isEmpty() &&
this->m_airlineIcaoDesignator.isEmpty());
}

View File

@@ -23,26 +23,28 @@ namespace BlackGui
{
namespace Models
{
//! Filter for aircraft liveries
class BLACKGUI_EXPORT CLiveryFilter : public IModelFilter<BlackMisc::Aviation::CLiveryList>
{
public:
//! Constructor
CLiveryFilter(const QString &combinedCode,
const QString &descriptiom,
const QString &airlineDesignator,
const BlackMisc::CRgbColor &fuselageColor,
const BlackMisc::CRgbColor &tailColor,
double maxColorDistance,
bool colorLiveries,
bool airlineLiveries
);
CLiveryFilter(
int id,
const QString &combinedCode,
const QString &descriptiom,
const QString &airlineDesignator,
const BlackMisc::CRgbColor &fuselageColor,
const BlackMisc::CRgbColor &tailColor,
double maxColorDistance,
bool colorLiveries,
bool airlineLiveries
);
//! \copydoc IModelFilter::filter
virtual BlackMisc::Aviation::CLiveryList filter(const BlackMisc::Aviation::CLiveryList &inContainer) const override;
private:
int m_id = -1;
QString m_combinedCode;
QString m_description;
QString m_airlineIcaoDesignator;
@@ -58,7 +60,6 @@ namespace BlackGui
//! Valid filter?
bool valid() const;
};
} // namespace
} // namespace