mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 23:05:36 +08:00
Ref T75, filter livery by id
This commit is contained in:
@@ -39,15 +39,16 @@ namespace BlackGui
|
||||
connect(ui->le_AirlineIcaoCode, &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_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->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);
|
||||
|
||||
CUpperCaseValidator *ucv = new CUpperCaseValidator(this);
|
||||
ui->le_AirlineIcaoCode->setValidator(ucv);
|
||||
ui->le_LiveryCode->setValidator(ucv);
|
||||
ui->le_AirlineIcaoCode->setValidator(new CUpperCaseValidator(ui->le_AirlineIcaoCode));
|
||||
ui->le_LiveryCode->setValidator(new CUpperCaseValidator(ui->le_LiveryCode));
|
||||
ui->le_Id->setValidator(new QIntValidator(ui->le_Id));
|
||||
|
||||
// reset form
|
||||
this->clearForm();
|
||||
@@ -58,8 +59,9 @@ namespace BlackGui
|
||||
|
||||
std::unique_ptr<BlackGui::Models::IModelFilter<CLiveryList> > CLiveryFilterBar::createModelFilter() const
|
||||
{
|
||||
double maxColorDistance = ui->hs_ColorDistance->value() / 100.0;
|
||||
const double maxColorDistance = ui->hs_ColorDistance->value() / 100.0;
|
||||
return std::make_unique<CLiveryFilter>(
|
||||
convertDbId(ui->le_Id->text()),
|
||||
ui->le_LiveryCode->text(),
|
||||
ui->le_Description->text(),
|
||||
ui->le_AirlineIcaoCode->text(),
|
||||
@@ -103,14 +105,8 @@ namespace BlackGui
|
||||
|
||||
void CLiveryFilterBar::filter(const CAirlineIcaoCode &airlineIcao)
|
||||
{
|
||||
if (airlineIcao.hasValidDesignator())
|
||||
{
|
||||
ui->le_AirlineIcaoCode->setText(airlineIcao.getDesignator());
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (!airlineIcao.hasValidDesignator()) { return; }
|
||||
ui->le_AirlineIcaoCode->setText(airlineIcao.getDesignator());
|
||||
ui->filter_Buttons->clickButton(CFilterBarButtons::Filter);
|
||||
}
|
||||
|
||||
@@ -121,6 +117,7 @@ namespace BlackGui
|
||||
|
||||
void CLiveryFilterBar::clearForm()
|
||||
{
|
||||
ui->le_Id->clear();
|
||||
ui->le_AirlineIcaoCode->clear();
|
||||
ui->le_LiveryCode->clear();
|
||||
ui->le_Description->clear();
|
||||
|
||||
@@ -50,7 +50,7 @@ namespace BlackGui
|
||||
explicit CLiveryFilterBar(QWidget *parent = nullptr);
|
||||
|
||||
//! Destructor
|
||||
~CLiveryFilterBar();
|
||||
virtual ~CLiveryFilterBar();
|
||||
|
||||
//! \copydoc Models::IModelFilterProvider::createModelFilter
|
||||
virtual std::unique_ptr<BlackGui::Models::IModelFilter<BlackMisc::Aviation::CLiveryList>> createModelFilter() const override;
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>597</width>
|
||||
<height>44</height>
|
||||
<width>730</width>
|
||||
<height>48</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
@@ -44,48 +44,48 @@
|
||||
<property name="verticalSpacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="0" column="3">
|
||||
<widget class="QLabel" name="lbl_AirlineIcaoCode">
|
||||
<property name="text">
|
||||
<string>Airline:</string>
|
||||
<item row="0" column="8">
|
||||
<spacer name="hs_Row1">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<item row="0" column="2">
|
||||
<widget class="QLabel" name="lbl_LiveryCode">
|
||||
<property name="text">
|
||||
<string>Code:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="5">
|
||||
<widget class="QLabel" name="lbl_Description">
|
||||
<property name="text">
|
||||
<string>Description:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<item row="0" column="3">
|
||||
<widget class="QLineEdit" name="le_LiveryCode">
|
||||
<property name="placeholderText">
|
||||
<string>Livery code</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="BlackGui::Filters::CFilterBarButtons" name="filter_Buttons">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
<item row="0" column="6">
|
||||
<widget class="QLabel" name="lbl_Description">
|
||||
<property name="text">
|
||||
<string>Description:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="6">
|
||||
<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="5">
|
||||
<widget class="QLineEdit" name="le_AirlineIcaoCode">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
@@ -98,7 +98,68 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="3" colspan="4">
|
||||
<item row="0" column="7">
|
||||
<widget class="QLineEdit" name="le_Description"/>
|
||||
</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="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">
|
||||
<property name="spacing">
|
||||
@@ -171,14 +232,11 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" colspan="3">
|
||||
<widget class="QWidget" name="wi_Flags" native="true">
|
||||
<layout class="QHBoxLayout" name="hl_Flags">
|
||||
<property name="spacing">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<item row="1" column="0">
|
||||
<widget class="QWidget" name="wi_Id" native="true">
|
||||
<layout class="QHBoxLayout" name="hl_Id">
|
||||
<property name="leftMargin">
|
||||
<number>5</number>
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
@@ -190,21 +248,27 @@
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cb_Colors">
|
||||
<widget class="QLabel" name="lbl_Id">
|
||||
<property name="text">
|
||||
<string>Color liveries</string>
|
||||
<string>Id:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="cb_Airlines">
|
||||
<property name="text">
|
||||
<string>Airline liveries</string>
|
||||
<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_Flags">
|
||||
<spacer name="hs_Id">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
@@ -219,34 +283,21 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="7">
|
||||
<spacer name="hs_Row1">
|
||||
<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>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>BlackGui::Components::CColorSelector</class>
|
||||
<extends>QFrame</extends>
|
||||
<header>blackgui/components/colorselector.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>BlackGui::Filters::CFilterBarButtons</class>
|
||||
<extends>QFrame</extends>
|
||||
<header>blackgui/filters/filterbarbuttons.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>BlackGui::Components::CColorSelector</class>
|
||||
<extends>QFrame</extends>
|
||||
<header>blackgui/components/colorselector.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>le_LiveryCode</tabstop>
|
||||
|
||||
@@ -17,9 +17,10 @@ namespace BlackGui
|
||||
{
|
||||
namespace Models
|
||||
{
|
||||
CLiveryFilter::CLiveryFilter(const QString &combinedCode, const QString &descriptiom,
|
||||
CLiveryFilter::CLiveryFilter(int id, const QString &combinedCode, const QString &descriptiom,
|
||||
const QString &airlineDesignator,
|
||||
const BlackMisc::CRgbColor &fuselageColor, const BlackMisc::CRgbColor &tailColor, double maxColorDistance, bool colorLiveries, bool airlineLiveries) :
|
||||
m_id(id),
|
||||
m_combinedCode(combinedCode.trimmed().toUpper()), m_description(descriptiom),
|
||||
m_airlineIcaoDesignator(airlineDesignator.trimmed().toUpper()),
|
||||
m_fuselageColor(fuselageColor), m_tailColor(tailColor), m_maxColorDistance(maxColorDistance),
|
||||
@@ -35,12 +36,21 @@ namespace BlackGui
|
||||
bool checkLiveryType = filterByLiveryType();
|
||||
for (const CLivery &livery : inContainer)
|
||||
{
|
||||
if (m_id >= 0)
|
||||
{
|
||||
// search only for id
|
||||
if (livery.isLoadedFromDb() && livery.getDbKey() == m_id)
|
||||
{
|
||||
outContainer.push_back(livery);
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (checkLiveryType)
|
||||
{
|
||||
if (!m_colorLiveries && livery.isColorLivery()) {continue;}
|
||||
if (!m_airlineLiveries && livery.isAirlineLivery()) { continue; }
|
||||
}
|
||||
|
||||
if (!m_combinedCode.isEmpty())
|
||||
{
|
||||
if (!this->stringMatchesFilterExpression(livery.getCombinedCode(), m_combinedCode)) { continue; }
|
||||
@@ -70,7 +80,7 @@ namespace BlackGui
|
||||
{
|
||||
if (filterByLiveryType()) { return true; }
|
||||
if (m_fuselageColor.isValid() || m_tailColor.isValid()) { return true; }
|
||||
return !(this->m_combinedCode.isEmpty() && this->m_description.isEmpty() &&
|
||||
return !(this->m_id < 0 && this->m_combinedCode.isEmpty() && this->m_description.isEmpty() &&
|
||||
this->m_airlineIcaoDesignator.isEmpty());
|
||||
}
|
||||
|
||||
|
||||
@@ -23,26 +23,28 @@ namespace BlackGui
|
||||
{
|
||||
namespace Models
|
||||
{
|
||||
|
||||
//! Filter for aircraft liveries
|
||||
class BLACKGUI_EXPORT CLiveryFilter : public IModelFilter<BlackMisc::Aviation::CLiveryList>
|
||||
{
|
||||
public:
|
||||
//! Constructor
|
||||
CLiveryFilter(const QString &combinedCode,
|
||||
const QString &descriptiom,
|
||||
const QString &airlineDesignator,
|
||||
const BlackMisc::CRgbColor &fuselageColor,
|
||||
const BlackMisc::CRgbColor &tailColor,
|
||||
double maxColorDistance,
|
||||
bool colorLiveries,
|
||||
bool airlineLiveries
|
||||
);
|
||||
CLiveryFilter(
|
||||
int id,
|
||||
const QString &combinedCode,
|
||||
const QString &descriptiom,
|
||||
const QString &airlineDesignator,
|
||||
const BlackMisc::CRgbColor &fuselageColor,
|
||||
const BlackMisc::CRgbColor &tailColor,
|
||||
double maxColorDistance,
|
||||
bool colorLiveries,
|
||||
bool airlineLiveries
|
||||
);
|
||||
|
||||
//! \copydoc IModelFilter::filter
|
||||
virtual BlackMisc::Aviation::CLiveryList filter(const BlackMisc::Aviation::CLiveryList &inContainer) const override;
|
||||
|
||||
private:
|
||||
int m_id = -1;
|
||||
QString m_combinedCode;
|
||||
QString m_description;
|
||||
QString m_airlineIcaoDesignator;
|
||||
@@ -58,7 +60,6 @@ namespace BlackGui
|
||||
//! Valid filter?
|
||||
bool valid() const;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
} // namespace
|
||||
|
||||
|
||||
Reference in New Issue
Block a user