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