swift
filterwidget.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2015 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include <QString>
7 #include <QtGlobal>
8 
9 #include "gui/guiapplication.h"
10 #include "gui/stylesheetutility.h"
11 
12 namespace swift::gui::filters
13 {
14  CFilterWidget::CFilterWidget(QWidget *parent) : QFrame(parent)
15  {
16  Q_ASSERT_X(sGui, Q_FUNC_INFO, "sGui missing");
17  this->setWindowTitle("Filter widget");
18  this->onStyleSheetChanged();
19  connect(sGui, &CGuiApplication::styleSheetsChanged, this, &CFilterWidget::onStyleSheetChanged,
20  Qt::QueuedConnection);
21  }
22 
24 
26  {
27  if (buttons)
28  {
29  bool s = connect(buttons, &CFilterBarButtons::buttonClicked, this, &CFilterWidget::onFilterButtonClicked);
30  Q_ASSERT_X(s, Q_FUNC_INFO, "filter button connect");
31  Q_UNUSED(s);
32  }
33  }
34 
35  int CFilterWidget::convertDbId(const QString &candidate)
36  {
37  const QString s = candidate.trimmed();
38  if (s.isEmpty()) { return -1; }
39  bool ok = false;
40  const int id = s.toInt(&ok);
41  return ok && id >= 0 ? id : -1;
42  }
43 
44  void CFilterWidget::triggerFilter() { this->onFilterButtonClicked(CFilterBarButtons::Filter); }
45 
46  void CFilterWidget::onStyleSheetChanged()
47  {
49  this->setStyleSheet(qss);
50  }
51 
52  void CFilterWidget::onFilterButtonClicked(CFilterBarButtons::FilterButton filterButton)
53  {
54  switch (filterButton)
55  {
56  case CFilterBarButtons::Filter: emit this->changeFilter(true); break;
57  case CFilterBarButtons::RemoveFilter:
58  emit this->changeFilter(false);
59  emit this->rejectDialog();
60  break;
61  case CFilterBarButtons::ClearForm:
62  this->clearForm();
63  emit this->changeFilter(false);
64  break;
65  }
66  }
67 } // namespace swift::gui::filters
const CStyleSheetUtility & getStyleSheetUtility() const
Style sheet handling.
void styleSheetsChanged()
Style sheet changed.
static const QString & fileNameFilterDialog()
File name maininfoarea.qss.
QString style(const QString &fileName) const
Style for given file name.
void buttonClicked(swift::gui::filters::CFilterBarButtons::FilterButton filterButton)
Filter button clicked.
virtual void triggerFilter()
Trigger filtering.
void changeFilter(bool enable)
Change the filter by enabling or disabling it.
void setButtonsAndCount(CFilterBarButtons *buttons)
Set and connect filter bar buttons.
static int convertDbId(const QString &candidate)
Convert DB id.
void rejectDialog()
A filter dialog is supposed to close.
virtual ~CFilterWidget()
Destructor.
virtual void clearForm()=0
Clear the filter form.
CFilterWidget(QWidget *parent=nullptr)
Constructor.
SWIFT_GUI_EXPORT swift::gui::CGuiApplication * sGui
Single instance of GUI application object.
Filter to search data sets.