File indexing completed on 2024-05-05 04:39:18

0001 /*
0002     SPDX-FileCopyrightText: 2018 Anton Anikin <anton@anikin.xyz>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef KDEVCLAZY_CHECKS_WIDGET_H
0008 #define KDEVCLAZY_CHECKS_WIDGET_H
0009 
0010 #include <QWidget>
0011 #include <QHash>
0012 
0013 class QTreeWidget;
0014 class QTreeWidgetItem;
0015 
0016 namespace Clazy
0017 {
0018 
0019 namespace Ui { class ChecksWidget; }
0020 
0021 class ChecksDB;
0022 
0023 class ChecksWidget : public QWidget
0024 {
0025     Q_OBJECT
0026 
0027     Q_PROPERTY(
0028         QString checks
0029         READ checks
0030         WRITE setChecks
0031         NOTIFY checksChanged
0032         USER true)
0033 
0034 public:
0035     explicit ChecksWidget(QWidget* parent = nullptr);
0036     ~ChecksWidget() override;
0037 
0038 public:
0039     void setChecksDb(const QSharedPointer<const ChecksDB>& db);
0040     QString checks() const;
0041 
0042     void setChecks(const QString& checks);
0043 
0044     void setEditable(bool editable);
0045 
0046 Q_SIGNALS:
0047     void checksChanged(const QString& checks);
0048 
0049 private:
0050     void updateChecks();
0051     void setState(QTreeWidgetItem* item, Qt::CheckState state, bool force = true);
0052     void searchUpdated(const QString& searchString);
0053 
0054 private:
0055     QScopedPointer<Ui::ChecksWidget> m_ui;
0056 
0057     QString m_checks;
0058     QHash<QString, QTreeWidgetItem*> m_items;
0059     bool m_isEditable = true;
0060 };
0061 
0062 }
0063 
0064 #endif