swift
distributorfilterbar.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2018 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include <QLineEdit>
7 
8 #include "ui_distributorfilterbar.h"
9 
12 #include "gui/uppercasevalidator.h"
14 
15 using namespace swift::gui::models;
16 using namespace swift::gui::components;
17 using namespace swift::misc;
18 using namespace swift::misc::simulation;
19 
20 namespace swift::gui::filters
21 {
22  CDistributorFilterBar::CDistributorFilterBar(QWidget *parent)
23  : CFilterWidget(parent), ui(new Ui::CDistributorFilterBar)
24  {
25  ui->setupUi(this);
26  ui->comp_Simulator->setMode(CSimulatorSelector::CheckBoxes);
27  ui->comp_Simulator->setNoSelectionMeansAll(true);
28  ui->comp_Simulator->setRememberSelection(false);
29  ui->comp_Simulator->checkAll();
30 
31  this->setButtonsAndCount(ui->filter_Buttons);
32 
33  // reset form
34  this->clearForm();
35 
36  // connect deferred, avoid to filter during the UI "swing in period"
37  QPointer<CDistributorFilterBar> myself(this);
38  QTimer::singleShot(2500, this, [=] {
39  if (!myself) { return; }
40  this->connectTriggerFilterSignals();
41  });
42  }
43 
45 
46  std::unique_ptr<swift::gui::models::IModelFilter<CDistributorList>> CDistributorFilterBar::createModelFilter() const
47  {
48  return std::make_unique<CDistributorFilter>(ui->comp_Simulator->getValue());
49  }
50 
52  {
53  ui->comp_Simulator->setValue(simulator);
54  }
55 
56  void CDistributorFilterBar::onRowCountChanged(int count, bool withFilter)
57  {
58  ui->filter_Buttons->onRowCountChanged(count, withFilter);
59  }
60 
61  void CDistributorFilterBar::clearForm() { ui->comp_Simulator->clear(); }
62 
63  void CDistributorFilterBar::connectTriggerFilterSignals()
64  {
65  connect(ui->comp_Simulator, &CSimulatorSelector::changed, this, &CFilterWidget::triggerFilter,
66  Qt::QueuedConnection);
67  }
68 } // namespace swift::gui::filters
virtual void onRowCountChanged(int count, bool withFilter)
Row count has been changed.
virtual std::unique_ptr< models::IModelFilter< swift::misc::simulation::CDistributorList > > createModelFilter() const
Get the filter, this is the filter itself, not its widget or dialog.
void setSimulator(const swift::misc::simulation::CSimulatorInfo &simulator)
Set simulator.
Base for filter dialog.
Definition: filterwidget.h:21
virtual void triggerFilter()
Trigger filtering.
void setButtonsAndCount(CFilterBarButtons *buttons)
Set and connect filter bar buttons.
Simple hardcoded info about the corresponding simulator.
Definition: simulatorinfo.h:41
High level reusable GUI components.
Definition: aboutdialog.cpp:13
Filter to search data sets.
Models to be used with views, mainly QTableView.
Free functions in swift::misc.
auto singleShot(int msec, QObject *target, F &&task)
Starts a single-shot timer which will call a task in the thread of the given object when it times out...
Definition: threadutils.h:30