mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-02 15:15:50 +08:00
Improved livery filter bar and filer, accept virtual airline designators
This commit is contained in:
committed by
Mat Sutcliffe
parent
8bb7eb5d2b
commit
e85680f1b0
@@ -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<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;
|
||||
return std::make_unique<CLiveryFilter>(
|
||||
@@ -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);
|
||||
|
||||
@@ -21,8 +21,7 @@
|
||||
#include <QScopedPointer>
|
||||
#include <memory>
|
||||
|
||||
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<BlackMisc::Aviation::CLiveryList>
|
||||
public Models::IModelFilterProvider<BlackMisc::Aviation::CLiveryList>
|
||||
{
|
||||
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::CLiveryFilterBar> ui;
|
||||
};
|
||||
} // ns
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>730</width>
|
||||
<height>48</height>
|
||||
<width>453</width>
|
||||
<height>49</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
@@ -19,51 +19,100 @@
|
||||
<property name="windowTitle">
|
||||
<string>Livery filter</string>
|
||||
</property>
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gl_CLiveryFilterBar">
|
||||
<layout class="QVBoxLayout" name="vl_LiveryFilterBar">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="rightMargin">
|
||||
<number>0</number>
|
||||
<number>2</number>
|
||||
</property>
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="horizontalSpacing">
|
||||
<number>4</number>
|
||||
</property>
|
||||
<property name="verticalSpacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="0" column="6">
|
||||
<widget class="QLabel" name="lbl_Description">
|
||||
<property name="text">
|
||||
<string>Description:</string>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QWidget" name="wi_Top" native="true">
|
||||
<layout class="QHBoxLayout" name="hl_Top">
|
||||
<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="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>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="BlackGui::Filters::CFilterBarButtons" name="filter_Buttons">
|
||||
<property name="frameShape">
|
||||
<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">
|
||||
<item>
|
||||
<widget class="QWidget" name="wi_Bottom" native="true">
|
||||
<layout class="QHBoxLayout" name="hl_Bottom">
|
||||
<property name="spacing">
|
||||
<number>10</number>
|
||||
</property>
|
||||
@@ -79,6 +128,40 @@
|
||||
<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>
|
||||
<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>
|
||||
<widget class="QLabel" name="lbl_Color">
|
||||
<property name="text">
|
||||
@@ -134,142 +217,6 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</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>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
@@ -290,6 +237,7 @@
|
||||
<tabstop>le_LiveryCode</tabstop>
|
||||
<tabstop>le_AirlineIcaoCode</tabstop>
|
||||
<tabstop>le_Description</tabstop>
|
||||
<tabstop>le_Id</tabstop>
|
||||
<tabstop>cb_Colors</tabstop>
|
||||
<tabstop>cb_Airlines</tabstop>
|
||||
<tabstop>hs_ColorDistance</tabstop>
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user