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

@@ -40,16 +40,20 @@ namespace BlackGui
this->ui->frp_SimulatorSelector->setAll();
this->ui->comp_DistributorSelector->withDistributorDescription(false);
this->setButtonsAndCount(this->ui->filter_Buttons);
connect(ui->le_AircraftIcao, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
connect(ui->le_AircraftManufacturer, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
connect(ui->le_AirlineIcao, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
connect(ui->le_AirlineName, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
connect(ui->le_LiveryCode, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
connect(ui->le_ModelDescription, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
connect(ui->le_ModelKey, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
connect(ui->le_ModelString, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
connect(ui->le_FileName, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
connect(ui->cbt_Db, &QCheckBox::toggled, this, &CAircraftModelFilterBar::ps_checkBoxChanged);
connect(ui->cbt_IncludeExclude, &QCheckBox::toggled, this, &CAircraftModelFilterBar::ps_checkBoxChanged);
connect(ui->cbt_Military, &QCheckBox::toggled, this, &CAircraftModelFilterBar::ps_checkBoxChanged);
connect(ui->cbt_ColorLiveries, &QCheckBox::toggled, this, &CAircraftModelFilterBar::ps_checkBoxChanged);
connect(ui->frp_SimulatorSelector, &CSimulatorSelector::changed, this, &CAircraftModelFilterBar::ps_simulatorSelectionChanged);
connect(ui->comp_DistributorSelector, &CDbDistributorSelectorComponent::changedDistributor, this, &CAircraftModelFilterBar::ps_distributorChanged);
@@ -57,7 +61,7 @@ namespace BlackGui
CUpperCaseValidator *ucv = new CUpperCaseValidator(this);
this->ui->le_AircraftIcao->setValidator(ucv);
this->ui->le_AirlineIcao->setValidator(ucv);
this->ui->le_ModelKey->setValidator(ucv);
this->ui->le_ModelString->setValidator(ucv);
this->ui->le_AircraftManufacturer->setValidator(ucv);
this->ui->le_LiveryCode->setValidator(ucv);
@@ -97,15 +101,18 @@ namespace BlackGui
return std::unique_ptr<CAircraftModelFilter>(
new CAircraftModelFilter(
this->ui->le_ModelKey->text(),
this->ui->le_ModelString->text(),
this->ui->le_ModelDescription->text(),
mf,
dbf,
ui->cbt_Military->checkState(),
ui->cbt_ColorLiveries->checkState(),
this->ui->le_AircraftIcao->text(),
this->ui->le_AircraftManufacturer->text(),
this->ui->le_AirlineIcao->text(),
this->ui->le_AirlineName->text(),
this->ui->le_LiveryCode->text(),
this->ui->le_FileName->text(),
this->ui->frp_SimulatorSelector->getValue(),
this->ui->comp_DistributorSelector->getDistributor()
));
@@ -118,17 +125,20 @@ namespace BlackGui
void CAircraftModelFilterBar::clearForm()
{
this->ui->le_ModelKey->clear();
this->ui->le_ModelString->clear();
this->ui->le_ModelDescription->clear();
this->ui->le_AircraftIcao->clear();
this->ui->le_AircraftManufacturer->clear();
this->ui->le_AirlineIcao->clear();
this->ui->le_AirlineName->clear();
this->ui->le_LiveryCode->clear();
this->ui->le_FileName->clear();
this->ui->frp_SimulatorSelector->setAll();
this->ui->comp_DistributorSelector->clear();
this->ui->cbt_IncludeExclude->setCheckState(Qt::PartiallyChecked);
this->ui->cbt_Db->setCheckState(Qt::PartiallyChecked);
this->ui->cbt_Military->setCheckState(Qt::PartiallyChecked);
this->ui->cbt_ColorLiveries->setCheckState(Qt::PartiallyChecked);
}
void CAircraftModelFilterBar::ps_simulatorSelectionChanged(const BlackMisc::Simulation::CSimulatorInfo &info)

View File

@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>658</width>
<height>48</height>
<width>571</width>
<height>72</height>
</rect>
</property>
<property name="windowTitle">
@@ -38,48 +38,129 @@
<property name="verticalSpacing">
<number>2</number>
</property>
<item row="2" column="7">
<widget class="QLabel" name="lbl_FileName">
<property name="text">
<string>File:</string>
</property>
</widget>
</item>
<item row="2" column="8" colspan="2">
<widget class="QLineEdit" name="le_FileName">
<property name="placeholderText">
<string>filename e.g. FSX/SimObjects/MyAircraft</string>
</property>
</widget>
</item>
<item row="0" column="8">
<widget class="QLineEdit" name="le_ModelString">
<property name="placeholderText">
<string>Identifier</string>
</property>
</widget>
</item>
<item row="0" column="11">
<widget class="QLineEdit" name="le_AircraftIcao">
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="placeholderText">
<string>ICAO</string>
</property>
</widget>
</item>
<item row="1" column="11">
<widget class="QLineEdit" name="le_AirlineIcao">
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="maxLength">
<number>4</number>
</property>
<property name="placeholderText">
<string>ICAO</string>
</property>
</widget>
</item>
<item row="1" column="10">
<widget class="QLabel" name="lbl_Airline">
<property name="text">
<string>Airline:</string>
</property>
</widget>
</item>
<item row="1" column="12">
<widget class="QLineEdit" name="le_AirlineName">
<property name="placeholderText">
<string>Airline name</string>
</property>
</widget>
</item>
<item row="0" column="7">
<widget class="QLabel" name="lbl_Model">
<property name="text">
<string>Model:</string>
</property>
</widget>
</item>
<item row="0" column="12">
<widget class="QLineEdit" name="le_AircraftManufacturer">
<property name="placeholderText">
<string>Manufacturer</string>
</property>
</widget>
</item>
<item row="0" column="10">
<widget class="QLabel" name="lbl_Aircraft">
<property name="text">
<string>Aircraft:</string>
</property>
</widget>
</item>
<item row="0" column="9">
<widget class="QLineEdit" name="le_ModelDescription">
<property name="text">
<string/>
</property>
<property name="placeholderText">
<string>Description</string>
</property>
</widget>
</item>
<item row="1" column="7">
<widget class="QLabel" name="lbl_Livery">
<property name="toolTip">
<string/>
</property>
<property name="text">
<string>Livery:</string>
</property>
</widget>
</item>
<item row="1" column="8">
<widget class="QLineEdit" name="le_LiveryCode">
<property name="placeholderText">
<string>Code</string>
</property>
</widget>
</item>
<item row="0" column="5">
<widget class="QWidget" name="wi_States" native="true">
<layout class="QHBoxLayout" name="hl_IncludeExclude">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QCheckBox" name="cbt_IncludeExclude">
<property name="toolTip">
<string>Included/excluded models?</string>
</property>
<property name="text">
<string>Incl.</string>
</property>
<property name="tristate">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbt_Db">
<property name="toolTip">
<string>DB data?</string>
</property>
<property name="text">
<string>DB</string>
</property>
<property name="tristate">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
<widget class="QCheckBox" name="cbt_Db">
<property name="toolTip">
<string>DB data?</string>
</property>
<property name="text">
<string>DB</string>
</property>
<property name="tristate">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="1" colspan="4" alignment="Qt::AlignLeft">
@@ -98,7 +179,20 @@
</property>
</widget>
</item>
<item row="1" column="8">
<item row="0" column="6">
<widget class="QCheckBox" name="cbt_IncludeExclude">
<property name="toolTip">
<string>Included/excluded models?</string>
</property>
<property name="text">
<string>Incl.</string>
</property>
<property name="tristate">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="11" colspan="2">
<widget class="BlackGui::Components::CDbDistributorSelectorComponent" name="comp_DistributorSelector">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
@@ -108,104 +202,39 @@
</property>
</widget>
</item>
<item row="1" column="0" colspan="6">
<widget class="BlackGui::Components::CSimulatorSelector" name="frp_SimulatorSelector"/>
</item>
<item row="1" column="10">
<widget class="QLineEdit" name="le_AirlineIcao">
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="maxLength">
<number>4</number>
</property>
<property name="placeholderText">
<string>ICAO</string>
</property>
</widget>
</item>
<item row="0" column="10">
<widget class="QLineEdit" name="le_AircraftIcao">
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="placeholderText">
<string>ICAO</string>
</property>
</widget>
</item>
<item row="0" column="6">
<widget class="QLabel" name="lbl_Model">
<item row="2" column="10">
<widget class="QLabel" name="label">
<property name="text">
<string>Model:</string>
</property>
</widget>
</item>
<item row="0" column="11">
<widget class="QLineEdit" name="le_AircraftManufacturer">
<property name="placeholderText">
<string>Manufacturer</string>
<string>Distributor:</string>
</property>
</widget>
</item>
<item row="1" column="9">
<widget class="QLabel" name="lbl_Airline">
<property name="text">
<string>Airline:</string>
</property>
</widget>
</item>
<item row="1" column="11">
<widget class="QLineEdit" name="le_AirlineName">
<property name="placeholderText">
<string>Airline name</string>
</property>
</widget>
</item>
<item row="1" column="7">
<widget class="QLineEdit" name="le_LiveryCode">
<property name="placeholderText">
<string>Code</string>
</property>
</widget>
</item>
<item row="1" column="6">
<widget class="QLabel" name="lbl_Livery">
<widget class="QCheckBox" name="cbt_ColorLiveries">
<property name="toolTip">
<string/>
<string>Color liveries</string>
</property>
<property name="text">
<string>Livery:</string>
<string>Color liv.</string>
</property>
<property name="tristate">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="8">
<widget class="QLineEdit" name="le_ModelDescription">
<property name="text">
<string/>
</property>
<property name="placeholderText">
<string>Description</string>
</property>
</widget>
<item row="2" column="1" colspan="6">
<widget class="BlackGui::Components::CSimulatorSelector" name="frp_SimulatorSelector"/>
</item>
<item row="0" column="9">
<widget class="QLabel" name="lbl_Aircraft">
<property name="text">
<string>Aircraft:</string>
<item row="1" column="5">
<widget class="QCheckBox" name="cbt_Military">
<property name="toolTip">
<string>Military</string>
</property>
</widget>
</item>
<item row="0" column="7">
<widget class="QLineEdit" name="le_ModelKey">
<property name="placeholderText">
<string>Key</string>
<property name="text">
<string>Mil.</string>
</property>
<property name="tristate">
<bool>true</bool>
</property>
</widget>
</item>
@@ -232,15 +261,18 @@
</customwidget>
</customwidgets>
<tabstops>
<tabstop>cbt_IncludeExclude</tabstop>
<tabstop>cbt_Db</tabstop>
<tabstop>le_ModelKey</tabstop>
<tabstop>cbt_IncludeExclude</tabstop>
<tabstop>le_ModelString</tabstop>
<tabstop>le_ModelDescription</tabstop>
<tabstop>le_AircraftIcao</tabstop>
<tabstop>le_AircraftManufacturer</tabstop>
<tabstop>cbt_Military</tabstop>
<tabstop>le_LiveryCode</tabstop>
<tabstop>cbt_ColorLiveries</tabstop>
<tabstop>le_AirlineIcao</tabstop>
<tabstop>le_AirlineName</tabstop>
<tabstop>le_FileName</tabstop>
</tabstops>
<resources/>
<connections/>

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;