mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 23:05:36 +08:00
Filter, deferred connect of "setFilter" signals to avoid filtering during "swing-in" of UI
This commit is contained in:
committed by
Mat Sutcliffe
parent
314c48d5d1
commit
7f1591c972
@@ -21,6 +21,8 @@
|
||||
#include <QCheckBox>
|
||||
#include <QLineEdit>
|
||||
#include <QtGlobal>
|
||||
#include <QPointer>
|
||||
#include <QTimer>
|
||||
|
||||
using namespace BlackMisc::Simulation;
|
||||
using namespace BlackMisc::Db;
|
||||
@@ -37,28 +39,15 @@ namespace BlackGui
|
||||
ui(new Ui::CAircraftModelFilterBar)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
ui->frp_SimulatorSelector->checkAll();
|
||||
|
||||
ui->comp_SimulatorSelector->setMode(CSimulatorSelector::CheckBoxes);
|
||||
ui->comp_SimulatorSelector->setNoSelectionMeansAll(true);
|
||||
ui->comp_SimulatorSelector->setRememberSelection(false);
|
||||
ui->comp_SimulatorSelector->checkAll();
|
||||
|
||||
ui->comp_DistributorSelector->withDistributorDescription(false);
|
||||
this->setButtonsAndCount(ui->filter_Buttons);
|
||||
|
||||
connect(ui->le_AircraftIcao, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
|
||||
connect(ui->le_AircraftManufacturer, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
|
||||
connect(ui->le_AirlineIcao, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
|
||||
connect(ui->le_AirlineName, &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_ModelDescription, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
|
||||
connect(ui->le_ModelString, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
|
||||
connect(ui->le_FileName, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
|
||||
|
||||
connect(ui->cbt_Db, &QCheckBox::clicked, this, &CAircraftModelFilterBar::ps_checkBoxChanged);
|
||||
connect(ui->cbt_IncludeExclude, &QCheckBox::clicked, this, &CAircraftModelFilterBar::ps_checkBoxChanged);
|
||||
connect(ui->cbt_Military, &QCheckBox::clicked, this, &CAircraftModelFilterBar::ps_checkBoxChanged);
|
||||
connect(ui->cbt_ColorLiveries, &QCheckBox::clicked, this, &CAircraftModelFilterBar::ps_checkBoxChanged);
|
||||
|
||||
connect(ui->frp_SimulatorSelector, &CSimulatorSelector::changed, this, &CAircraftModelFilterBar::ps_simulatorSelectionChanged);
|
||||
connect(ui->comp_DistributorSelector, &CDbDistributorSelectorComponent::changedDistributor, this, &CAircraftModelFilterBar::ps_distributorChanged);
|
||||
|
||||
CUpperCaseValidator *ucv = new CUpperCaseValidator(this);
|
||||
ui->le_AircraftIcao->setValidator(ucv);
|
||||
ui->le_AirlineIcao->setValidator(ucv);
|
||||
@@ -69,6 +58,14 @@ namespace BlackGui
|
||||
|
||||
// reset form
|
||||
this->clearForm();
|
||||
|
||||
// connect deferred, avoid to filter during the UI "swing in period"
|
||||
QPointer<CAircraftModelFilterBar> myself(this);
|
||||
QTimer::singleShot(2500, this, [ = ]
|
||||
{
|
||||
if (!myself) { return; }
|
||||
this->connectTriggerFilterSignals();
|
||||
});
|
||||
}
|
||||
|
||||
CAircraftModelFilterBar::~CAircraftModelFilterBar()
|
||||
@@ -160,5 +157,26 @@ namespace BlackGui
|
||||
Q_UNUSED(state);
|
||||
triggerFilter();
|
||||
}
|
||||
|
||||
void CAircraftModelFilterBar::connectTriggerFilterSignals()
|
||||
{
|
||||
connect(ui->le_AircraftIcao, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
|
||||
connect(ui->le_AircraftManufacturer, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
|
||||
connect(ui->le_AirlineIcao, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
|
||||
connect(ui->le_AirlineName, &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_ModelDescription, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
|
||||
connect(ui->le_ModelString, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
|
||||
connect(ui->le_FileName, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
|
||||
|
||||
connect(ui->cbt_Db, &QCheckBox::clicked, this, &CAircraftModelFilterBar::onCheckBoxChanged);
|
||||
connect(ui->cbt_IncludeExclude, &QCheckBox::clicked, this, &CAircraftModelFilterBar::onCheckBoxChanged);
|
||||
connect(ui->cbt_Military, &QCheckBox::clicked, this, &CAircraftModelFilterBar::onCheckBoxChanged);
|
||||
connect(ui->cbt_ColorLiveries, &QCheckBox::clicked, this, &CAircraftModelFilterBar::onCheckBoxChanged);
|
||||
|
||||
connect(ui->comp_SimulatorSelector, &CSimulatorSelector::changed, this, &CAircraftModelFilterBar::onSimulatorSelectionChanged);
|
||||
connect(ui->comp_DistributorSelector, &CDbDistributorSelectorComponent::changedDistributor, this, &CAircraftModelFilterBar::onDistributorChanged);
|
||||
}
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
@@ -70,7 +70,9 @@ namespace BlackGui
|
||||
//! Checkbox has been changed
|
||||
void onCheckBoxChanged(bool state);
|
||||
|
||||
private:
|
||||
//! Trigger filter by changing a value
|
||||
void connectTriggerFilterSignals();
|
||||
|
||||
QScopedPointer<Ui::CAircraftModelFilterBar> ui;
|
||||
};
|
||||
} // ns
|
||||
|
||||
@@ -32,12 +32,21 @@ namespace BlackGui
|
||||
ui->setupUi(this);
|
||||
ui->comp_Simulator->setMode(CSimulatorSelector::CheckBoxes);
|
||||
ui->comp_Simulator->setNoSelectionMeansAll(true);
|
||||
this->setButtonsAndCount(ui->filter_Buttons);
|
||||
ui->comp_Simulator->setRememberSelection(false);
|
||||
ui->comp_Simulator->checkAll();
|
||||
|
||||
connect(ui->comp_Simulator, &CSimulatorSelector::changed, this, &CFilterWidget::triggerFilter);
|
||||
this->setButtonsAndCount(ui->filter_Buttons);
|
||||
|
||||
// reset form
|
||||
this->clearForm();
|
||||
|
||||
// connect deferred, avoid to filter during the UI "swing in period"
|
||||
QPointer<CDistributorFilterBar> myself(this);
|
||||
QTimer::singleShot(2500, this, [ = ]
|
||||
{
|
||||
if (!myself) { return; }
|
||||
this->connectTriggerFilterSignals();
|
||||
});
|
||||
}
|
||||
|
||||
CDistributorFilterBar::~CDistributorFilterBar()
|
||||
@@ -62,5 +71,10 @@ namespace BlackGui
|
||||
{
|
||||
ui->comp_Simulator->clear();
|
||||
}
|
||||
|
||||
void CDistributorFilterBar::connectTriggerFilterSignals()
|
||||
{
|
||||
connect(ui->comp_Simulator, &CSimulatorSelector::changed, this, &CFilterWidget::triggerFilter);
|
||||
}
|
||||
} // ns
|
||||
} // ns
|
||||
|
||||
@@ -56,6 +56,9 @@ namespace BlackGui
|
||||
virtual void clearForm() override;
|
||||
|
||||
private:
|
||||
//! Trigger filter by changing a value
|
||||
void connectTriggerFilterSignals();
|
||||
|
||||
QScopedPointer<Ui::CDistributorFilterBar> ui;
|
||||
};
|
||||
} // ns
|
||||
|
||||
Reference in New Issue
Block a user