File indexing completed on 2024-05-12 05:35:50

0001 /*
0002     SPDX-FileCopyrightText: 2009 Ben Cooksley <ben@eclipse.endoftheinternet.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QAbstractItemModel>
0010 
0011 #include <Solid/Predicate>
0012 
0013 class PredicateItem;
0014 
0015 class PredicateModel : public QAbstractItemModel
0016 {
0017     Q_OBJECT
0018 
0019 public:
0020     explicit PredicateModel(PredicateItem *menuRoot, QObject *parent = nullptr);
0021     ~PredicateModel() override;
0022 
0023     QVariant data(const QModelIndex &index, int role) const override;
0024     Qt::ItemFlags flags(const QModelIndex &index) const override;
0025     QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override;
0026     QModelIndex parent(const QModelIndex &index) const override;
0027     int rowCount(const QModelIndex &parent = QModelIndex()) const override;
0028     int columnCount(const QModelIndex &parent = QModelIndex()) const override;
0029 
0030     void setRootPredicate(PredicateItem *item);
0031     void itemUpdated(const QModelIndex &item);
0032     void childrenChanging(const QModelIndex &item, Solid::Predicate::Type oldType);
0033 
0034 protected:
0035     PredicateItem *rootItem() const;
0036 
0037 private:
0038     class Private;
0039     Private *const d;
0040 };