refs #555, allow to filter by file name

* also allow to filter by color
* and military
This commit is contained in:
Klaus Basan
2016-08-14 00:31:40 +02:00
committed by Mathew Sutcliffe
parent 4e6c4a076a
commit c0a898c6c9
4 changed files with 223 additions and 139 deletions

View File

@@ -21,16 +21,18 @@ namespace BlackGui
{
CAircraftModelFilter::CAircraftModelFilter(const QString &modelKey, const QString &description,
CAircraftModel::ModelModeFilter modelMode, BlackMisc::Db::DbKeyStateFilter dbKeyFilter,
Qt::CheckState military, Qt::CheckState colorLiveries,
const QString &aircraftIcao, const QString &aircraftManufacturer,
const QString &airlineIcao, const QString &airlineName,
const QString &liveryCode,
const QString &liveryCode, const QString &fileName,
const CSimulatorInfo &simInfo,
const CDistributor &distributor) :
m_modelKey(modelKey.trimmed().toUpper()), m_description(description.trimmed()),
m_modelMode(modelMode), m_dbKeyFilter(dbKeyFilter),
m_modelMode(modelMode), m_dbKeyFilter(dbKeyFilter), m_military(military), m_colorLiveries(colorLiveries),
m_aircraftIcao(aircraftIcao.trimmed().toUpper()), m_aircraftManufacturer(aircraftManufacturer.trimmed().toUpper()),
m_airlineIcao(airlineIcao.trimmed().toUpper()), m_airlineName(airlineName.trimmed().toUpper()),
m_liveryCode(liveryCode.trimmed().toUpper()),
m_fileName(fileName),
m_simulatorInfo(simInfo),
m_distributor(distributor)
{
@@ -53,6 +55,34 @@ namespace BlackGui
if (!this->stringMatchesFilterExpression(model.getModelString(), this->m_modelKey)) { continue; }
}
if (this->m_military != Qt::PartiallyChecked)
{
if (this->m_military == Qt::Checked)
{
// military only
if (!model.isMilitary()) { continue; }
}
else if (this->m_military == Qt::Unchecked)
{
// civilian only
if (model.isMilitary()) { continue; }
}
}
if (this->m_colorLiveries != Qt::PartiallyChecked)
{
if (this->m_colorLiveries == Qt::Checked)
{
// only color liveries
if (!model.getLivery().isColorLivery()) { continue; }
}
else if (this->m_colorLiveries == Qt::Unchecked)
{
// Only airline liveries
if (model.getLivery().isColorLivery()) { continue; }
}
}
if (!this->m_description.isEmpty())
{
if (!this->stringMatchesFilterExpression(model.getDescription(), this->m_description)) { continue; }
@@ -68,6 +98,11 @@ namespace BlackGui
if (!model.matchesDbKeyState(this->m_dbKeyFilter)) { continue; }
}
if (!this->m_fileName.isEmpty())
{
if (!this->stringMatchesFilterExpression(model.getFileName(), this->m_fileName)) { continue; }
}
if (!this->m_aircraftIcao.isEmpty())
{
if (!this->stringMatchesFilterExpression(model.getAircraftIcaoCodeDesignator(), this->m_aircraftIcao)) { continue; }
@@ -108,13 +143,15 @@ namespace BlackGui
const bool allEmpty = this->m_modelKey.isEmpty() && this->m_description.isEmpty() &&
this->m_aircraftManufacturer.isEmpty() && this->m_aircraftIcao.isEmpty() &&
this->m_airlineIcao.isEmpty() && this->m_airlineName.isEmpty() &&
this->m_liveryCode.isEmpty();
this->m_liveryCode.isEmpty() && this->m_fileName.isEmpty();
if (!allEmpty) { return true; }
const bool noSim = this->m_simulatorInfo.isNoSimulator() || this->m_simulatorInfo.isAllSimulators();
const bool noModelMode = this->m_modelMode == CAircraftModel::Undefined || this->m_modelMode == CAircraftModel::All;
const bool noDbState = this->m_dbKeyFilter == BlackMisc::Db::Undefined || this->m_dbKeyFilter == BlackMisc::Db::All;
const bool noKey = !this->m_distributor.hasValidDbKey();
return !(noSim && noModelMode && noDbState && noKey);
const bool noColorRestriction = this->m_colorLiveries == Qt::PartiallyChecked;
const bool noMilitary = this->m_military == Qt::PartiallyChecked;
return !(noSim && noModelMode && noDbState && noKey && noMilitary && noColorRestriction);
}
} // namespace
} // namespace

View File

@@ -34,9 +34,11 @@ namespace BlackGui
CAircraftModelFilter(const QString &modelKey, const QString &description,
BlackMisc::Simulation::CAircraftModel::ModelModeFilter modelMode,
BlackMisc::Db::DbKeyStateFilter dbKeyFilter,
Qt::CheckState military, Qt::CheckState colorLiveries,
const QString &aircraftIcao, const QString &aircraftManufacturer,
const QString &airlineIcao, const QString &airlineName,
const QString &liveryCode,
const QString &fileName,
const BlackMisc::Simulation::CSimulatorInfo &simInfo = BlackMisc::Simulation::CSimulatorInfo::allSimulators(),
const BlackMisc::Simulation::CDistributor &distributor = BlackMisc::Simulation::CDistributor()
);
@@ -49,11 +51,14 @@ namespace BlackGui
QString m_description;
BlackMisc::Simulation::CAircraftModel::ModelModeFilter m_modelMode;
BlackMisc::Db::DbKeyStateFilter m_dbKeyFilter;
Qt::CheckState m_military;
Qt::CheckState m_colorLiveries;
QString m_aircraftIcao;
QString m_aircraftManufacturer;
QString m_airlineIcao;
QString m_airlineName;
QString m_liveryCode;
QString m_fileName;
BlackMisc::Simulation::CSimulatorInfo m_simulatorInfo;
BlackMisc::Simulation::CDistributor m_distributor;
bool valid() const;