Improved livery filter bar and filer, accept virtual airline designators

This commit is contained in:
Klaus Basan
2019-01-02 06:41:15 +01:00
committed by Mat Sutcliffe
parent 8bb7eb5d2b
commit e85680f1b0
4 changed files with 136 additions and 191 deletions

View File

@@ -40,11 +40,11 @@ namespace BlackGui
connect(ui->le_Description, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); connect(ui->le_Description, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
connect(ui->le_LiveryCode, &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->le_Id, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
connect(ui->color_Fuselage, &CColorSelector::colorChanged, this, &CLiveryFilterBar::ps_colorChanged); connect(ui->color_Fuselage, &CColorSelector::colorChanged, this, &CLiveryFilterBar::onColorChanged);
connect(ui->color_Tail, &CColorSelector::colorChanged, this, &CLiveryFilterBar::ps_colorChanged); connect(ui->color_Tail, &CColorSelector::colorChanged, this, &CLiveryFilterBar::onColorChanged);
connect(ui->cb_Airlines, &QCheckBox::released, this, &CFilterWidget::triggerFilter); connect(ui->cb_Airlines, &QCheckBox::released, this, &CFilterWidget::triggerFilter);
connect(ui->cb_Colors, &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_AirlineIcaoCode->setValidator(new CUpperCaseValidator(ui->le_AirlineIcaoCode));
ui->le_LiveryCode->setValidator(new CUpperCaseValidator(ui->le_LiveryCode)); ui->le_LiveryCode->setValidator(new CUpperCaseValidator(ui->le_LiveryCode));
@@ -57,7 +57,7 @@ namespace BlackGui
CLiveryFilterBar::~CLiveryFilterBar() CLiveryFilterBar::~CLiveryFilterBar()
{ } { }
std::unique_ptr<BlackGui::Models::IModelFilter<CLiveryList> > CLiveryFilterBar::createModelFilter() const std::unique_ptr<Models::IModelFilter<CLiveryList> > CLiveryFilterBar::createModelFilter() const
{ {
const double maxColorDistance = ui->hs_ColorDistance->value() / 100.0; const double maxColorDistance = ui->hs_ColorDistance->value() / 100.0;
return std::make_unique<CLiveryFilter>( return std::make_unique<CLiveryFilter>(
@@ -106,7 +106,7 @@ namespace BlackGui
void CLiveryFilterBar::filter(const CAirlineIcaoCode &airlineIcao) void CLiveryFilterBar::filter(const CAirlineIcaoCode &airlineIcao)
{ {
if (!airlineIcao.hasValidDesignator()) { return; } if (!airlineIcao.hasValidDesignator()) { return; }
ui->le_AirlineIcaoCode->setText(airlineIcao.getDesignator()); ui->le_AirlineIcaoCode->setText(airlineIcao.getVDesignator());
ui->filter_Buttons->clickButton(CFilterBarButtons::Filter); ui->filter_Buttons->clickButton(CFilterBarButtons::Filter);
} }
@@ -123,18 +123,18 @@ namespace BlackGui
ui->le_Description->clear(); ui->le_Description->clear();
ui->color_Fuselage->clear(); ui->color_Fuselage->clear();
ui->color_Tail->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_Airlines->setChecked(true);
ui->cb_Colors->setChecked(true); ui->cb_Colors->setChecked(true);
} }
void CLiveryFilterBar::ps_colorChanged(const BlackMisc::CRgbColor &color) void CLiveryFilterBar::onColorChanged(const BlackMisc::CRgbColor &color)
{ {
this->triggerFilter(); this->triggerFilter();
Q_UNUSED(color); Q_UNUSED(color);
} }
void CLiveryFilterBar::ps_colorDistanceChanged(int distance) void CLiveryFilterBar::onColorDistanceChanged(int distance)
{ {
this->triggerFilter(); this->triggerFilter();
Q_UNUSED(distance); Q_UNUSED(distance);

View File

@@ -21,8 +21,7 @@
#include <QScopedPointer> #include <QScopedPointer>
#include <memory> #include <memory>
class QWidget; namespace Ui { class CLiveryFilterBar; }
namespace BlackMisc namespace BlackMisc
{ {
namespace Aviation namespace Aviation
@@ -31,7 +30,6 @@ namespace BlackMisc
class CLiveryList; class CLiveryList;
} }
} }
namespace Ui { class CLiveryFilterBar; }
namespace BlackGui namespace BlackGui
{ {
namespace Filters namespace Filters
@@ -41,7 +39,7 @@ namespace BlackGui
*/ */
class BLACKGUI_EXPORT CLiveryFilterBar : class BLACKGUI_EXPORT CLiveryFilterBar :
public CFilterWidget, public CFilterWidget,
public BlackGui::Models::IModelFilterProvider<BlackMisc::Aviation::CLiveryList> public Models::IModelFilterProvider<BlackMisc::Aviation::CLiveryList>
{ {
Q_OBJECT Q_OBJECT
@@ -69,14 +67,13 @@ namespace BlackGui
//! Clear form //! Clear form
virtual void clearForm() override; virtual void clearForm() override;
private slots: private:
//! Color changed //! Color changed
void ps_colorChanged(const BlackMisc::CRgbColor &color); void onColorChanged(const BlackMisc::CRgbColor &color);
//! Color distance changed //! Color distance changed
void ps_colorDistanceChanged(int distance); void onColorDistanceChanged(int distance);
private:
QScopedPointer<Ui::CLiveryFilterBar> ui; QScopedPointer<Ui::CLiveryFilterBar> ui;
}; };
} // ns } // ns

View File

@@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>730</width> <width>453</width>
<height>48</height> <height>49</height>
</rect> </rect>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
@@ -19,51 +19,100 @@
<property name="windowTitle"> <property name="windowTitle">
<string>Livery filter</string> <string>Livery filter</string>
</property> </property>
<property name="frameShape"> <layout class="QVBoxLayout" name="vl_LiveryFilterBar">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QGridLayout" name="gl_CLiveryFilterBar">
<property name="leftMargin"> <property name="leftMargin">
<number>0</number> <number>2</number>
</property> </property>
<property name="topMargin"> <property name="topMargin">
<number>0</number> <number>0</number>
</property> </property>
<property name="rightMargin"> <property name="rightMargin">
<number>0</number> <number>2</number>
</property> </property>
<property name="bottomMargin"> <property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<property name="horizontalSpacing"> <item>
<number>4</number> <widget class="QWidget" name="wi_Top" native="true">
</property> <layout class="QHBoxLayout" name="hl_Top">
<property name="verticalSpacing"> <property name="leftMargin">
<number>2</number> <number>0</number>
</property> </property>
<item row="0" column="6"> <property name="topMargin">
<widget class="QLabel" name="lbl_Description"> <number>0</number>
<property name="text"> </property>
<string>Description:</string> <property name="rightMargin">
</property> <number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="BlackGui::Filters::CFilterBarButtons" name="filter_Buttons">
<property name="minimumSize">
<size>
<width>50</width>
<height>0</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_LiveryCode">
<property name="text">
<string>Code:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="le_LiveryCode">
<property name="placeholderText">
<string>Livery code</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_AirlineIcaoCode">
<property name="text">
<string>Airline:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="le_AirlineIcaoCode">
<property name="maximumSize">
<size>
<width>75</width>
<height>16777215</height>
</size>
</property>
<property name="placeholderText">
<string>ICAO</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="lbl_Description">
<property name="text">
<string>Description:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="le_Description"/>
</item>
</layout>
</widget> </widget>
</item> </item>
<item row="0" column="0" colspan="2"> <item>
<widget class="BlackGui::Filters::CFilterBarButtons" name="filter_Buttons"> <widget class="QWidget" name="wi_Bottom" native="true">
<property name="frameShape"> <layout class="QHBoxLayout" name="hl_Bottom">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item row="1" column="4" colspan="4">
<widget class="QWidget" name="wi_Colors" native="true">
<layout class="QHBoxLayout" name="hl_Colors">
<property name="spacing"> <property name="spacing">
<number>10</number> <number>10</number>
</property> </property>
@@ -79,6 +128,40 @@
<property name="bottomMargin"> <property name="bottomMargin">
<number>0</number> <number>0</number>
</property> </property>
<item>
<widget class="QLabel" name="lbl_Id">
<property name="text">
<string>Id:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="le_Id">
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="placeholderText">
<string>id</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cb_Colors">
<property name="text">
<string>Color liveries</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cb_Airlines">
<property name="text">
<string>Airline liveries</string>
</property>
</widget>
</item>
<item> <item>
<widget class="QLabel" name="lbl_Color"> <widget class="QLabel" name="lbl_Color">
<property name="text"> <property name="text">
@@ -134,142 +217,6 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="1" column="2" colspan="2">
<widget class="QWidget" name="wi_Flags" native="true">
<layout class="QHBoxLayout" name="hl_Flags">
<property name="spacing">
<number>10</number>
</property>
<property name="leftMargin">
<number>5</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="cb_Colors">
<property name="text">
<string>Color liveries</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cb_Airlines">
<property name="text">
<string>Airline liveries</string>
</property>
</widget>
</item>
<item>
<spacer name="hs_Flags">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="0" column="7">
<widget class="QLineEdit" name="le_Description"/>
</item>
<item row="0" column="4">
<widget class="QLabel" name="lbl_AirlineIcaoCode">
<property name="text">
<string>Airline:</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="lbl_LiveryCode">
<property name="text">
<string>Code:</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLineEdit" name="le_LiveryCode">
<property name="placeholderText">
<string>Livery code</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QWidget" name="wi_Id" native="true">
<layout class="QHBoxLayout" name="hl_Id">
<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="QLabel" name="lbl_Id">
<property name="text">
<string>Id:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="le_Id">
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="placeholderText">
<string>id</string>
</property>
</widget>
</item>
<item>
<spacer name="hs_Id">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="0" column="5">
<widget class="QLineEdit" name="le_AirlineIcaoCode">
<property name="maximumSize">
<size>
<width>75</width>
<height>16777215</height>
</size>
</property>
<property name="placeholderText">
<string>ICAO</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<customwidgets> <customwidgets>
@@ -290,6 +237,7 @@
<tabstop>le_LiveryCode</tabstop> <tabstop>le_LiveryCode</tabstop>
<tabstop>le_AirlineIcaoCode</tabstop> <tabstop>le_AirlineIcaoCode</tabstop>
<tabstop>le_Description</tabstop> <tabstop>le_Description</tabstop>
<tabstop>le_Id</tabstop>
<tabstop>cb_Colors</tabstop> <tabstop>cb_Colors</tabstop>
<tabstop>cb_Airlines</tabstop> <tabstop>cb_Airlines</tabstop>
<tabstop>hs_ColorDistance</tabstop> <tabstop>hs_ColorDistance</tabstop>

View File

@@ -26,7 +26,7 @@ namespace BlackGui
m_fuselageColor(fuselageColor), m_tailColor(tailColor), m_maxColorDistance(maxColorDistance), m_fuselageColor(fuselageColor), m_tailColor(tailColor), m_maxColorDistance(maxColorDistance),
m_colorLiveries(colorLiveries), m_airlineLiveries(airlineLiveries) m_colorLiveries(colorLiveries), m_airlineLiveries(airlineLiveries)
{ {
this->m_valid = valid(); m_valid = valid();
} }
CLiveryList CLiveryFilter::filter(const CLiveryList &inContainer) const CLiveryList CLiveryFilter::filter(const CLiveryList &inContainer) const
@@ -61,7 +61,7 @@ namespace BlackGui
} }
if (!m_airlineIcaoDesignator.isEmpty()) 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()) if (m_fuselageColor.isValid())
{ {
@@ -80,8 +80,8 @@ namespace BlackGui
{ {
if (filterByLiveryType()) { return true; } if (filterByLiveryType()) { return true; }
if (m_fuselageColor.isValid() || m_tailColor.isValid()) { return true; } if (m_fuselageColor.isValid() || m_tailColor.isValid()) { return true; }
return !(this->m_id < 0 && this->m_combinedCode.isEmpty() && this->m_description.isEmpty() && return !(m_id < 0 && m_combinedCode.isEmpty() && m_description.isEmpty() &&
this->m_airlineIcaoDesignator.isEmpty()); m_airlineIcaoDesignator.isEmpty());
} }
bool CLiveryFilter::filterByLiveryType() const bool CLiveryFilter::filterByLiveryType() const