From e85680f1b05555889bfdfb2226e2f3af92ac1fc2 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 2 Jan 2019 06:41:15 +0100 Subject: [PATCH] Improved livery filter bar and filer, accept virtual airline designators --- src/blackgui/filters/liveryfilterbar.cpp | 16 +- src/blackgui/filters/liveryfilterbar.h | 13 +- src/blackgui/filters/liveryfilterbar.ui | 290 ++++++++++------------- src/blackgui/models/liveryfilter.cpp | 8 +- 4 files changed, 136 insertions(+), 191 deletions(-) diff --git a/src/blackgui/filters/liveryfilterbar.cpp b/src/blackgui/filters/liveryfilterbar.cpp index a6db539e7..aba29cfce 100644 --- a/src/blackgui/filters/liveryfilterbar.cpp +++ b/src/blackgui/filters/liveryfilterbar.cpp @@ -40,11 +40,11 @@ namespace BlackGui connect(ui->le_Description, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); connect(ui->le_LiveryCode, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); connect(ui->le_Id, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); - connect(ui->color_Fuselage, &CColorSelector::colorChanged, this, &CLiveryFilterBar::ps_colorChanged); - connect(ui->color_Tail, &CColorSelector::colorChanged, this, &CLiveryFilterBar::ps_colorChanged); + connect(ui->color_Fuselage, &CColorSelector::colorChanged, this, &CLiveryFilterBar::onColorChanged); + connect(ui->color_Tail, &CColorSelector::colorChanged, this, &CLiveryFilterBar::onColorChanged); connect(ui->cb_Airlines, &QCheckBox::released, this, &CFilterWidget::triggerFilter); connect(ui->cb_Colors, &QCheckBox::released, this, &CFilterWidget::triggerFilter); - connect(ui->hs_ColorDistance, &QSlider::valueChanged, this, &CLiveryFilterBar::ps_colorDistanceChanged); + connect(ui->hs_ColorDistance, &QSlider::valueChanged, this, &CLiveryFilterBar::onColorDistanceChanged); ui->le_AirlineIcaoCode->setValidator(new CUpperCaseValidator(ui->le_AirlineIcaoCode)); ui->le_LiveryCode->setValidator(new CUpperCaseValidator(ui->le_LiveryCode)); @@ -57,7 +57,7 @@ namespace BlackGui CLiveryFilterBar::~CLiveryFilterBar() { } - std::unique_ptr > CLiveryFilterBar::createModelFilter() const + std::unique_ptr > CLiveryFilterBar::createModelFilter() const { const double maxColorDistance = ui->hs_ColorDistance->value() / 100.0; return std::make_unique( @@ -106,7 +106,7 @@ namespace BlackGui void CLiveryFilterBar::filter(const CAirlineIcaoCode &airlineIcao) { if (!airlineIcao.hasValidDesignator()) { return; } - ui->le_AirlineIcaoCode->setText(airlineIcao.getDesignator()); + ui->le_AirlineIcaoCode->setText(airlineIcao.getVDesignator()); ui->filter_Buttons->clickButton(CFilterBarButtons::Filter); } @@ -123,18 +123,18 @@ namespace BlackGui ui->le_Description->clear(); ui->color_Fuselage->clear(); ui->color_Tail->clear(); - ui->hs_ColorDistance->setValue(0.25 * 100.0); + ui->hs_ColorDistance->setValue(qRound(0.25 * 100.0)); ui->cb_Airlines->setChecked(true); ui->cb_Colors->setChecked(true); } - void CLiveryFilterBar::ps_colorChanged(const BlackMisc::CRgbColor &color) + void CLiveryFilterBar::onColorChanged(const BlackMisc::CRgbColor &color) { this->triggerFilter(); Q_UNUSED(color); } - void CLiveryFilterBar::ps_colorDistanceChanged(int distance) + void CLiveryFilterBar::onColorDistanceChanged(int distance) { this->triggerFilter(); Q_UNUSED(distance); diff --git a/src/blackgui/filters/liveryfilterbar.h b/src/blackgui/filters/liveryfilterbar.h index 53fce181f..cb3d5e32e 100644 --- a/src/blackgui/filters/liveryfilterbar.h +++ b/src/blackgui/filters/liveryfilterbar.h @@ -21,8 +21,7 @@ #include #include -class QWidget; - +namespace Ui { class CLiveryFilterBar; } namespace BlackMisc { namespace Aviation @@ -31,7 +30,6 @@ namespace BlackMisc class CLiveryList; } } -namespace Ui { class CLiveryFilterBar; } namespace BlackGui { namespace Filters @@ -41,7 +39,7 @@ namespace BlackGui */ class BLACKGUI_EXPORT CLiveryFilterBar : public CFilterWidget, - public BlackGui::Models::IModelFilterProvider + public Models::IModelFilterProvider { Q_OBJECT @@ -69,14 +67,13 @@ namespace BlackGui //! Clear form virtual void clearForm() override; - private slots: + private: //! Color changed - void ps_colorChanged(const BlackMisc::CRgbColor &color); + void onColorChanged(const BlackMisc::CRgbColor &color); //! Color distance changed - void ps_colorDistanceChanged(int distance); + void onColorDistanceChanged(int distance); - private: QScopedPointer ui; }; } // ns diff --git a/src/blackgui/filters/liveryfilterbar.ui b/src/blackgui/filters/liveryfilterbar.ui index 13c90e284..e21071a7b 100644 --- a/src/blackgui/filters/liveryfilterbar.ui +++ b/src/blackgui/filters/liveryfilterbar.ui @@ -6,8 +6,8 @@ 0 0 - 730 - 48 + 453 + 49 @@ -19,51 +19,100 @@ Livery filter - - QFrame::StyledPanel - - - QFrame::Raised - - + - 0 + 2 0 - 0 + 2 0 - - 4 - - - 2 - - - - - Description: - + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 50 + 0 + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + Code: + + + + + + + Livery code + + + + + + + Airline: + + + + + + + + 75 + 16777215 + + + + ICAO + + + + + + + Description: + + + + + + + - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - - - + + + 10 @@ -79,6 +128,40 @@ 0 + + + + Id: + + + + + + + + 50 + 16777215 + + + + id + + + + + + + Color liveries + + + + + + + Airline liveries + + + @@ -134,142 +217,6 @@ - - - - - 10 - - - 5 - - - 0 - - - 0 - - - 0 - - - - - Color liveries - - - - - - - Airline liveries - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - Airline: - - - - - - - Code: - - - - - - - Livery code - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Id: - - - - - - - - 50 - 16777215 - - - - id - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - 75 - 16777215 - - - - ICAO - - - @@ -290,6 +237,7 @@ le_LiveryCode le_AirlineIcaoCode le_Description + le_Id cb_Colors cb_Airlines hs_ColorDistance diff --git a/src/blackgui/models/liveryfilter.cpp b/src/blackgui/models/liveryfilter.cpp index 9ae0b8fcd..438ce7f8b 100644 --- a/src/blackgui/models/liveryfilter.cpp +++ b/src/blackgui/models/liveryfilter.cpp @@ -26,7 +26,7 @@ namespace BlackGui m_fuselageColor(fuselageColor), m_tailColor(tailColor), m_maxColorDistance(maxColorDistance), m_colorLiveries(colorLiveries), m_airlineLiveries(airlineLiveries) { - this->m_valid = valid(); + m_valid = valid(); } CLiveryList CLiveryFilter::filter(const CLiveryList &inContainer) const @@ -61,7 +61,7 @@ namespace BlackGui } if (!m_airlineIcaoDesignator.isEmpty()) { - if (!this->stringMatchesFilterExpression(livery.getAirlineIcaoCode().getDesignator(), m_airlineIcaoDesignator)) { continue; } + if (!this->stringMatchesFilterExpression(livery.getAirlineIcaoCode().getVDesignator(), m_airlineIcaoDesignator)) { continue; } } if (m_fuselageColor.isValid()) { @@ -80,8 +80,8 @@ namespace BlackGui { if (filterByLiveryType()) { return true; } if (m_fuselageColor.isValid() || m_tailColor.isValid()) { return true; } - return !(this->m_id < 0 && this->m_combinedCode.isEmpty() && this->m_description.isEmpty() && - this->m_airlineIcaoDesignator.isEmpty()); + return !(m_id < 0 && m_combinedCode.isEmpty() && m_description.isEmpty() && + m_airlineIcaoDesignator.isEmpty()); } bool CLiveryFilter::filterByLiveryType() const