File indexing completed on 2024-05-26 05:40:37
0001 // SPDX-FileCopyrightText: 2019 Linus Jahn <lnj@kaidan.im> 0002 // SPDX-FileCopyrightText: 2019-2020 Jonah BrĂ¼chert <jbb@kaidan.im> 0003 // 0004 // SPDX-License-Identifier: LGPL-2.0-or-later 0005 0006 #pragma once 0007 0008 #include <QAbstractListModel> 0009 #include <QUrl> 0010 #include <QVariant> 0011 0012 #include <KDirModel> 0013 #include <KDirSortFilterProxyModel> 0014 class KDirLister; 0015 0016 class DirModel : public KDirSortFilterProxyModel 0017 { 0018 Q_OBJECT 0019 Q_PROPERTY(const QUrl &folder READ folder WRITE setFolder NOTIFY folderChanged) 0020 Q_PROPERTY(bool showDotFiles READ showDotFiles WRITE setShowDotFiles NOTIFY showDotFilesChanged) 0021 Q_PROPERTY(bool isLoading READ isLoading NOTIFY isLoadingChanged) 0022 Q_PROPERTY(QString nameFilter READ nameFilter WRITE setNameFilter NOTIFY nameFilterChanged) 0023 Q_PROPERTY(QStringList mimeFilters READ mimeFilters WRITE setMimeFilters RESET resetMimeFilters NOTIFY mimeFiltersChanged) 0024 0025 Q_PROPERTY(QString lastError READ lastError NOTIFY lastErrorChanged) 0026 0027 public: 0028 enum Roles { 0029 Name = Qt::UserRole + 1, 0030 Url, 0031 IconName, 0032 IsDir, 0033 IsLink, 0034 FileSize, 0035 MimeType, 0036 IsHidden, 0037 IsReadable, 0038 IsWritable, 0039 ModificationTime, 0040 }; 0041 0042 Q_ENUM(Roles) 0043 0044 explicit DirModel(QObject *parent = nullptr); 0045 0046 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0047 QHash<int, QByteArray> roleNames() const override; 0048 0049 QUrl folder() const; 0050 void setFolder(const QUrl &folder); 0051 0052 bool showDotFiles() const; 0053 void setShowDotFiles(bool showDotFiles); 0054 0055 bool isLoading() const; 0056 0057 QString nameFilter() const; 0058 void setNameFilter(const QString &nameFilter); 0059 0060 QStringList mimeFilters() const; 0061 void setMimeFilters(const QStringList &mimeFilters); 0062 void resetMimeFilters(); 0063 0064 QString lastError() const; 0065 0066 Q_SIGNALS: 0067 void folderChanged(); 0068 void showDotFilesChanged(); 0069 void isLoadingChanged(); 0070 void nameFilterChanged(); 0071 void mimeFiltersChanged(); 0072 0073 void lastErrorChanged(); 0074 0075 private: 0076 KDirModel m_dirModel; 0077 KDirLister *m_lister; 0078 0079 QString m_lastError; 0080 };