File indexing completed on 2024-06-16 05:09:56
0001 /* 0002 SPDX-FileCopyrightText: 2015 Eike Hein <hein@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "abstractmodel.h" 0010 0011 #include <QPointer> 0012 0013 class ForwardingModel : public AbstractModel 0014 { 0015 Q_OBJECT 0016 0017 Q_PROPERTY(QAbstractItemModel *sourceModel READ sourceModel WRITE setSourceModel NOTIFY sourceModelChanged) 0018 0019 public: 0020 explicit ForwardingModel(QObject *parent = nullptr); 0021 ~ForwardingModel() override; 0022 0023 QString description() const override; 0024 0025 QAbstractItemModel *sourceModel() const; 0026 virtual void setSourceModel(QAbstractItemModel *sourceModel); 0027 0028 bool canFetchMore(const QModelIndex &parent) const override; 0029 void fetchMore(const QModelIndex &parent) override; 0030 0031 QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; 0032 QModelIndex parent(const QModelIndex &index) const override; 0033 0034 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0035 0036 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0037 0038 Q_INVOKABLE bool trigger(int row, const QString &actionId, const QVariant &argument) override; 0039 0040 Q_INVOKABLE QString labelForRow(int row) override; 0041 0042 Q_INVOKABLE AbstractModel *modelForRow(int row) override; 0043 0044 AbstractModel *favoritesModel() override; 0045 0046 int separatorCount() const override; 0047 0048 public Q_SLOTS: 0049 void reset(); 0050 0051 Q_SIGNALS: 0052 void sourceModelChanged() const; 0053 0054 protected: 0055 QModelIndex indexToSourceIndex(const QModelIndex &index) const; 0056 0057 void connectSignals(); 0058 void disconnectSignals(); 0059 0060 QPointer<QAbstractItemModel> m_sourceModel; 0061 };