swift
statusmessagefilterbar.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2016 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include <QCompleter>
7 
8 #include "ui_statusmessagefilterbar.h"
9 
11 #include "misc/logpattern.h"
12 
13 using namespace swift::misc;
14 using namespace swift::gui::models;
15 
16 namespace swift::gui::filters
17 {
18  CStatusMessageFilterBar::CStatusMessageFilterBar(QWidget *parent)
19  : CFilterWidget(parent), ui(new Ui::CStatusMessageFilterBar)
20  {
21  ui->setupUi(this);
22  this->setButtonsAndCount(ui->filter_Buttons);
23  connect(ui->le_Category, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
24  connect(ui->le_MessageText, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
25 
26  connect(ui->rb_Error, &QRadioButton::released, this, &CStatusMessageFilterBar::radioButtonChanged);
27  connect(ui->rb_Info, &QRadioButton::released, this, &CStatusMessageFilterBar::radioButtonChanged);
28  connect(ui->rb_Warning, &QRadioButton::released, this, &CStatusMessageFilterBar::radioButtonChanged);
29 
30  ui->le_Category->setCompleter(new QCompleter(CLogPattern::allHumanReadableNames(), this));
31 
32  // reset form
33  this->clearForm();
34  }
35 
36  void CStatusMessageFilterBar::displayCount(bool show) { ui->filter_Buttons->displayCount(show); }
37 
39 
41  {
42  CStatusMessage msg;
43  msg.setSeverity(CStatusMessage::SeverityError);
44  ui->rb_Error->setIcon(CIcon(msg.toIcon()).toQIcon());
45  ui->rb_Error->setToolTip(msg.getSeverityAsString());
46  ui->rb_Error->setText(oneCharacterText ? msg.getSeverityAsString().left(1) : "");
47 
48  msg.setSeverity(CStatusMessage::SeverityWarning);
49  ui->rb_Warning->setIcon(CIcon(msg.toIcon()).toQIcon());
50  ui->rb_Warning->setToolTip(msg.getSeverityAsString());
51  ui->rb_Warning->setText(oneCharacterText ? msg.getSeverityAsString().left(1) : "");
52 
53  msg.setSeverity(CStatusMessage::SeverityInfo);
54  ui->rb_Info->setIcon(CIcon(msg.toIcon()).toQIcon());
55  ui->rb_Info->setToolTip(msg.getSeverityAsString());
56  ui->rb_Info->setText(oneCharacterText ? msg.getSeverityAsString().left(1) : "");
57  }
58 
59  std::unique_ptr<swift::gui::models::IModelFilter<swift::misc::CStatusMessageList>>
61  {
62  return std::make_unique<CStatusMessageFilter>(this->getSelectedSeverity(), ui->le_MessageText->text(),
63  ui->le_Category->text());
64  }
65 
66  void CStatusMessageFilterBar::onRowCountChanged(int count, bool withFilter)
67  {
68  ui->filter_Buttons->onRowCountChanged(count, withFilter);
69  }
70 
72  {
73  ui->le_MessageText->clear();
74  ui->le_Category->clear();
75  ui->rb_Info->setChecked(true);
76  }
77 
78  void CStatusMessageFilterBar::radioButtonChanged() { this->triggerFilter(); }
79 
80  CStatusMessage::StatusSeverity CStatusMessageFilterBar::getSelectedSeverity() const
81  {
82  if (ui->rb_Error->isChecked()) { return CStatusMessage::SeverityError; }
83  if (ui->rb_Warning->isChecked()) { return CStatusMessage::SeverityWarning; }
84  return CStatusMessage::SeverityInfo;
85  }
86 } // namespace swift::gui::filters
Base for filter dialog.
Definition: filterwidget.h:21
virtual void triggerFilter()
Trigger filtering.
void setButtonsAndCount(CFilterBarButtons *buttons)
Set and connect filter bar buttons.
virtual void clearForm()
Clear the filter form.
virtual std::unique_ptr< swift::gui::models::IModelFilter< swift::misc::CStatusMessageList > > createModelFilter() const
Get the filter, this is the filter itself, not its widget or dialog.
virtual void onRowCountChanged(int count, bool withFilter)
Row count has been changed.
void useRadioButtonDescriptiveIcons(bool oneCharacterText)
Use icons with radio buttons.
Value object for icons. An icon is stored in the global icon repository and identified by its index....
Definition: icon.h:39
QIcon toQIcon() const
A QIcon.
Definition: icon.cpp:45
Streamable status message, e.g.
const QString & getSeverityAsString() const
Severity as string.
void setSeverity(StatusSeverity severity)
Severity.
CIcons::IconIndex toIcon() const
Representing icon.
Filter to search data sets.
Models to be used with views, mainly QTableView.
Free functions in swift::misc.
StatusSeverity
Status severities.
Definition: statusmessage.h:35