Filter, deferred connect of "setFilter" signals to avoid filtering during "swing-in" of UI

This commit is contained in:
Klaus Basan
2018-12-23 06:08:21 +01:00
committed by Mat Sutcliffe
parent 314c48d5d1
commit 7f1591c972
4 changed files with 59 additions and 22 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -56,6 +56,9 @@ namespace BlackGui
virtual void clearForm() override;
private:
//! Trigger filter by changing a value
void connectTriggerFilterSignals();
QScopedPointer<Ui::CDistributorFilterBar> ui;
};
} // ns