refs #720, allow to filter by DB data

* tristate checkboxes
* can hide count element
* tab order
This commit is contained in:
Klaus Basan
2016-08-09 01:37:01 +02:00
committed by Mathew Sutcliffe
parent 019b623f43
commit d9a35563e3
8 changed files with 76 additions and 25 deletions

View File

@@ -19,13 +19,15 @@ namespace BlackGui
{
namespace Models
{
CAircraftModelFilter::CAircraftModelFilter(const QString &modelKey, const QString &description, CAircraftModel::ModelModeFilter modelMode,
CAircraftModelFilter::CAircraftModelFilter(const QString &modelKey, const QString &description,
CAircraftModel::ModelModeFilter modelMode, BlackMisc::Db::DbKeyStateFilter dbKeyFilter,
const QString &aircraftIcao, const QString &aircraftManufacturer,
const QString &airlineIcao, const QString &airlineName,
const QString &liveryCode,
const CSimulatorInfo &simInfo,
const CDistributor &distributor) :
m_modelKey(modelKey.trimmed().toUpper()), m_description(description.trimmed()), m_modelMode(modelMode),
m_modelKey(modelKey.trimmed().toUpper()), m_description(description.trimmed()),
m_modelMode(modelMode), m_dbKeyFilter(dbKeyFilter),
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()),
@@ -56,11 +58,16 @@ namespace BlackGui
if (!this->stringMatchesFilterExpression(model.getDescription(), this->m_description)) { continue; }
}
if (this->m_modelMode != CAircraftModel::Undefined)
if (this->m_modelMode != CAircraftModel::All && this->m_modelMode != CAircraftModel::Undefined)
{
if (!model.matchesMode(this->m_modelMode)) { continue; }
}
if (this->m_dbKeyFilter != BlackMisc::Db::All && this->m_dbKeyFilter != BlackMisc::Db::Undefined)
{
if (!model.matchesDbKeyState(this->m_dbKeyFilter)) { continue; }
}
if (!this->m_aircraftIcao.isEmpty())
{
if (!this->stringMatchesFilterExpression(model.getAircraftIcaoCodeDesignator(), this->m_aircraftIcao)) { continue; }
@@ -96,8 +103,6 @@ namespace BlackGui
return outContainer;
}
bool CAircraftModelFilter::valid() const
{
const bool allEmpty = this->m_modelKey.isEmpty() && this->m_description.isEmpty() &&
@@ -106,10 +111,10 @@ namespace BlackGui
this->m_liveryCode.isEmpty();
if (!allEmpty) { return true; }
const bool noSim = this->m_simulatorInfo.isNoSimulator() || this->m_simulatorInfo.isAllSimulators();
const bool noMode = this->m_modelMode == CAircraftModel::Undefined || this->m_modelMode == CAircraftModel::All;
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 && noMode && noKey);
return !(noSim && noModelMode && noDbState && noKey);
}
} // namespace
} // namespace

View File

@@ -18,6 +18,7 @@
#include "blackmisc/simulation/aircraftmodellist.h"
#include "blackmisc/simulation/distributor.h"
#include "blackmisc/simulation/simulatorinfo.h"
#include "blackmisc/db/datastore.h"
#include <QString>
@@ -30,7 +31,9 @@ namespace BlackGui
{
public:
//! Constructor
CAircraftModelFilter(const QString &modelKey, const QString &description, BlackMisc::Simulation::CAircraftModel::ModelModeFilter modelMode,
CAircraftModelFilter(const QString &modelKey, const QString &description,
BlackMisc::Simulation::CAircraftModel::ModelModeFilter modelMode,
BlackMisc::Db::DbKeyStateFilter dbKeyFilter,
const QString &aircraftIcao, const QString &aircraftManufacturer,
const QString &airlineIcao, const QString &airlineName,
const QString &liveryCode,
@@ -45,6 +48,7 @@ namespace BlackGui
QString m_modelKey;
QString m_description;
BlackMisc::Simulation::CAircraftModel::ModelModeFilter m_modelMode;
BlackMisc::Db::DbKeyStateFilter m_dbKeyFilter;
QString m_aircraftIcao;
QString m_aircraftManufacturer;
QString m_airlineIcao;