refs #768, some improvements of the filter

* allow to filter by airline only (livery filter)
* allow to hide description field
* set colors in livery filter
This commit is contained in:
Klaus Basan
2016-10-17 02:53:49 +02:00
parent 630fecf8e8
commit 7d8f5f689f
4 changed files with 45 additions and 5 deletions

View File

@@ -61,6 +61,7 @@ namespace BlackGui
void CAircraftIcaoFilterBar::filter(const CAircraftIcaoCode &icao)
{
this->clearForm();
bool filter = false;
if (icao.hasDesignator())
{
@@ -74,13 +75,22 @@ namespace BlackGui
}
if (icao.hasModelDescription())
{
ui->le_Manufacturer->setText("*" + icao.getModelDescription() + "*");
ui->le_Description->setText("*" + icao.getModelDescription() + "*");
filter = true;
}
if (filter)
{
ui->filter_Buttons->clickButton(CFilterBarButtons::Filter);
}
else
{
ui->filter_Buttons->clickButton(CFilterBarButtons::RemoveFilter);
}
}
void CAircraftIcaoFilterBar::hideDescriptionField(bool hide)
{
ui->le_Description->setVisible(!hide);
}
void CAircraftIcaoFilterBar::onRowCountChanged(int count, bool withFilter)

View File

@@ -58,6 +58,9 @@ namespace BlackGui
//! Filter by ICAO object as default values
void filter(const BlackMisc::Aviation::CAircraftIcaoCode &icao);
//! Hide the description
void hideDescriptionField(bool hide);
public slots:
//! \copydoc CFilterWidget::onRowCountChanged
virtual void onRowCountChanged(int count, bool withFilter) override;

View File

@@ -74,13 +74,39 @@ namespace BlackGui
void CLiveryFilterBar::filter(const CLivery &livery)
{
this->clearForm();
bool filter = false;
if (livery.hasCombinedCode())
{
ui->le_LiveryCode->setText(livery.getCombinedCode());
filter = true;
}
else if (livery.hasValidAirlineDesignator())
if (livery.hasValidAirlineDesignator())
{
ui->le_AirlineIcaoCode->setText(livery.getAirlineIcaoCodeDesignator());
filter = true;
}
if (livery.isColorLivery())
{
ui->color_Fuselage->setColor(livery.getColorFuselage());
ui->color_Tail->setColor(livery.getColorTail());
filter = true;
}
if (filter)
{
ui->filter_Buttons->clickButton(CFilterBarButtons::Filter);
}
else
{
ui->filter_Buttons->clickButton(CFilterBarButtons::RemoveFilter);
}
}
void CLiveryFilterBar::filter(const CAirlineIcaoCode &airlineIcao)
{
if (airlineIcao.hasValidDesignator())
{
ui->le_AirlineIcaoCode->setText(airlineIcao.getDesignator());
}
else
{

View File

@@ -32,7 +32,6 @@ namespace BlackMisc
}
}
namespace Ui { class CLiveryFilterBar; }
namespace BlackGui
{
namespace Filters
@@ -56,9 +55,12 @@ namespace BlackGui
//! \copydoc Models::IModelFilterProvider::createModelFilter
virtual std::unique_ptr<BlackGui::Models::IModelFilter<BlackMisc::Aviation::CLiveryList>> createModelFilter() const override;
//! Filter by livery as default values
//! Filter by livery values
void filter(const BlackMisc::Aviation::CLivery &livery);
//! Filter by airline values
void filter(const BlackMisc::Aviation::CAirlineIcaoCode &airlineIcao);
public slots:
//! \copydoc CFilterWidget::onRowCountChanged
virtual void onRowCountChanged(int count, bool withFilter) override;
@@ -77,7 +79,6 @@ namespace BlackGui
private:
QScopedPointer<Ui::CLiveryFilterBar> ui;
};
} // ns
} // ns