1 /*
2     SPDX-FileCopyrightText: 2018 Anton Anikin <anton@anikin.xyz>
3 
4     SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #ifndef KDEVCLAZY_CHECKS_WIDGET_H
8 #define KDEVCLAZY_CHECKS_WIDGET_H
9 
10 #include <QWidget>
11 #include <QHash>
12 
13 class QTreeWidget;
14 class QTreeWidgetItem;
15 
16 namespace Clazy
17 {
18 
19 namespace Ui { class ChecksWidget; }
20 
21 class ChecksDB;
22 
23 class ChecksWidget : public QWidget
24 {
25     Q_OBJECT
26 
27     Q_PROPERTY(
28         QString checks
29         READ checks
30         WRITE setChecks
31         NOTIFY checksChanged
32         USER true)
33 
34 public:
35     explicit ChecksWidget(QWidget* parent = nullptr);
36     ~ChecksWidget() override;
37 
38 public:
39     void setChecksDb(const QSharedPointer<const ChecksDB>& db);
40     QString checks() const;
41 
42     void setChecks(const QString& checks);
43 
44     void setEditable(bool editable);
45 
46 Q_SIGNALS:
47     void checksChanged(const QString& checks);
48 
49 private:
50     void updateChecks();
51     void setState(QTreeWidgetItem* item, Qt::CheckState state, bool force = true);
52     void searchUpdated(const QString& searchString);
53 
54 private:
55     QScopedPointer<Ui::ChecksWidget> m_ui;
56 
57     QString m_checks;
58     QHash<QString, QTreeWidgetItem*> m_items;
59     bool m_isEditable = true;
60 };
61 
62 }
63 
64 #endif
65