File indexing completed on 2024-05-12 05:36:50
0001 /* 0002 * SPDX-FileCopyrightText: 2019 Arjen Hiemstra <ahiemstra@heimr.nl> 0003 * SPDX-FileCopyrightText: 2020 David Redondo <kde@david-redondo.de> 0004 * 0005 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0006 */ 0007 0008 #pragma once 0009 0010 #include <QAbstractProxyModel> 0011 #include <qqmlregistration.h> 0012 0013 #include "PagesModel.h" 0014 0015 class PageSortModel : public QAbstractProxyModel 0016 { 0017 Q_OBJECT 0018 QML_ELEMENT 0019 0020 public: 0021 enum Roles { 0022 ShouldRemoveFilesRole = PagesModel::FilesWriteableRole + 1, 0023 }; 0024 Q_ENUM(Roles) 0025 0026 explicit PageSortModel(QObject *parent = nullptr); 0027 0028 QHash<int, QByteArray> roleNames() const override; 0029 QVariant data(const QModelIndex &index, int role) const override; 0030 bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override; 0031 0032 void setSourceModel(QAbstractItemModel *newSourceModel) override; 0033 0034 QModelIndex index(int row, int column, const QModelIndex &parent) const override; 0035 QModelIndex parent(const QModelIndex &child) const override; 0036 QModelIndex mapFromSource(const QModelIndex &sourceIndex) const override; 0037 QModelIndex mapToSource(const QModelIndex &proxyIndex) const override; 0038 int rowCount(const QModelIndex &parent) const override; 0039 int columnCount(const QModelIndex &parent) const override; 0040 0041 Q_INVOKABLE void move(int fromRow, int toRow); 0042 0043 Q_INVOKABLE void applyChangesToSourceModel() const; 0044 0045 private: 0046 QList<int> m_rowMapping; 0047 QList<bool> m_hiddenProxy; 0048 QList<bool> m_removeFiles; 0049 };