File indexing completed on 2024-05-12 16:01:34

0001 /*
0002  *  SPDX-FileCopyrightText: 2015 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 #ifndef __KIS_NODE_FILTER_PROXY_MODEL_H
0008 #define __KIS_NODE_FILTER_PROXY_MODEL_H
0009 
0010 #include <QScopedPointer>
0011 #include <QSortFilterProxyModel>
0012 #include "kis_types.h"
0013 #include "kritaui_export.h"
0014 
0015 class KisNodeModel;
0016 class KisNodeDummy;
0017 class KisNodeManager;
0018 
0019 
0020 class KRITAUI_EXPORT KisNodeFilterProxyModel : public QSortFilterProxyModel
0021 {
0022     Q_OBJECT
0023 public:
0024     KisNodeFilterProxyModel(QObject *parent);
0025     ~KisNodeFilterProxyModel() override;
0026 
0027     void setNodeModel(KisNodeModel *model);
0028 
0029     bool setData(const QModelIndex &index, const QVariant &value, int role) override;
0030 
0031     bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
0032     void setAcceptedLabels(const QSet<int> &value);
0033     void setTextFilter(const QString &text);
0034 
0035     KisNodeSP nodeFromIndex(const QModelIndex &index) const;
0036     QModelIndex indexFromNode(KisNodeSP node) const;
0037 
0038     void unsetDummiesFacade();
0039 
0040 Q_SIGNALS:
0041     void sigBeforeBeginRemoveRows(const QModelIndex &parent, int start, int end);
0042 
0043 public Q_SLOTS:
0044     void setActiveNode(KisNodeSP node);
0045 
0046 private Q_SLOTS:
0047     void slotUpdateCurrentNodeFilter();
0048     void slotBeforeBeginRemoveRows(const QModelIndex &parent, int start, int end);
0049 
0050 private:
0051     struct Private;
0052     const QScopedPointer<Private> m_d;
0053 };
0054 
0055 #endif /* __KIS_NODE_FILTER_PROXY_MODEL_H */