File indexing completed on 2024-05-12 17:08:29
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 0012 #include "PagesModel.h" 0013 0014 class PageSortModel : public QAbstractProxyModel 0015 { 0016 Q_OBJECT 0017 0018 public: 0019 enum Roles { 0020 ShouldRemoveFilesRole = PagesModel::FilesWriteableRole + 1, 0021 }; 0022 Q_ENUM(Roles) 0023 0024 explicit PageSortModel(QObject *parent = nullptr); 0025 0026 QHash<int, QByteArray> roleNames() const override; 0027 QVariant data(const QModelIndex &index, int role) const override; 0028 bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override; 0029 0030 void setSourceModel(QAbstractItemModel *newSourceModel) override; 0031 0032 QModelIndex index(int row, int column, const QModelIndex &parent) const override; 0033 QModelIndex parent(const QModelIndex &child) const override; 0034 QModelIndex mapFromSource(const QModelIndex &sourceIndex) const override; 0035 QModelIndex mapToSource(const QModelIndex &proxyIndex) const override; 0036 int rowCount(const QModelIndex &parent) const override; 0037 int columnCount(const QModelIndex &parent) const override; 0038 0039 Q_INVOKABLE void move(int fromRow, int toRow); 0040 0041 Q_INVOKABLE void applyChangesToSourceModel() const; 0042 0043 private: 0044 QVector<int> m_rowMapping; 0045 QVector<bool> m_hiddenProxy; 0046 QVector<bool> m_removeFiles; 0047 };