diff options
| author | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-08-31 23:31:33 +1000 |
|---|---|---|
| committer | 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> | 2025-08-31 23:31:33 +1000 |
| commit | 018a4a90b235b899b6174df53d394a6726fe39b1 (patch) | |
| tree | 1e36272906cbf4151b9a4c94085b6f2acd420f56 /plugin/src/Caelestia/filesystemmodel.hpp | |
| parent | plugin: add FileSystemModel (diff) | |
| download | caelestia-shell-018a4a90b235b899b6174df53d394a6726fe39b1.tar.gz caelestia-shell-018a4a90b235b899b6174df53d394a6726fe39b1.tar.bz2 caelestia-shell-018a4a90b235b899b6174df53d394a6726fe39b1.zip | |
plugin/fsm: rename files -> entries
Also rename filter & add props
Diffstat (limited to 'plugin/src/Caelestia/filesystemmodel.hpp')
| -rw-r--r-- | plugin/src/Caelestia/filesystemmodel.hpp | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/plugin/src/Caelestia/filesystemmodel.hpp b/plugin/src/Caelestia/filesystemmodel.hpp index 8584e87..10fce1d 100644 --- a/plugin/src/Caelestia/filesystemmodel.hpp +++ b/plugin/src/Caelestia/filesystemmodel.hpp @@ -6,6 +6,7 @@ #include <QFileSystemWatcher> #include <QFileInfo> #include <QDir> +#include <QImageReader> class FileSystemEntry : public QObject { Q_OBJECT @@ -17,6 +18,8 @@ class FileSystemEntry : public QObject { Q_PROPERTY(QString name READ name CONSTANT); Q_PROPERTY(QString parentDir READ parentDir CONSTANT); Q_PROPERTY(qint64 size READ size CONSTANT); + Q_PROPERTY(bool isDir READ isDir CONSTANT); + Q_PROPERTY(bool isImage READ isImage CONSTANT); public: explicit FileSystemEntry(const QString& path, const QString& relativePath, QObject* parent = nullptr) @@ -28,12 +31,25 @@ public: QString name() const { return m_fileInfo.fileName(); }; QString parentDir() const { return m_fileInfo.absolutePath(); }; qint64 size() const { return m_fileInfo.size(); }; + bool isDir() const { return m_fileInfo.isDir(); }; + + bool isImage() { + if (!m_isImageInitialised) { + QImageReader reader(m_path); + m_isImage = reader.canRead(); + m_isImageInitialised = true; + } + return m_isImage; + } private: const QFileInfo m_fileInfo; const QString m_path; const QString m_relativePath; + + bool m_isImage; + bool m_isImageInitialised; }; class FileSystemModel : public QAbstractListModel { @@ -44,7 +60,7 @@ class FileSystemModel : public QAbstractListModel { Q_PROPERTY(bool recursive READ recursive WRITE setRecursive NOTIFY recursiveChanged); Q_PROPERTY(Filter filter READ filter WRITE setFilter NOTIFY filterChanged); - Q_PROPERTY(QList<FileSystemEntry*> files READ files NOTIFY filesChanged); + Q_PROPERTY(QList<FileSystemEntry*> entries READ entries NOTIFY entriesChanged); public: enum Roles { @@ -57,14 +73,15 @@ public: enum Filter { NoFilter, - ImagesOnly + Images, + Files }; Q_ENUM(Filter) explicit FileSystemModel(QObject* parent = nullptr) : QAbstractListModel(parent), m_recursive(true), m_filter(NoFilter) { connect(&m_watcher, &QFileSystemWatcher::directoryChanged, this, &FileSystemModel::watchDirIfRecursive); - connect(&m_watcher, &QFileSystemWatcher::directoryChanged, this, &FileSystemModel::updateFiles); + connect(&m_watcher, &QFileSystemWatcher::directoryChanged, this, &FileSystemModel::updateEntries); } int rowCount(const QModelIndex& parent = QModelIndex()) const override; @@ -80,18 +97,18 @@ public: Filter filter() const; void setFilter(Filter filter); - QList<FileSystemEntry*> files() const; + QList<FileSystemEntry*> entries() const; signals: void pathChanged(); void recursiveChanged(); void filterChanged(); - void filesChanged(); + void entriesChanged(); private: QDir m_dir; QFileSystemWatcher m_watcher; - QList<FileSystemEntry*> m_files; + QList<FileSystemEntry*> m_entries; QString m_path; bool m_recursive; @@ -100,5 +117,5 @@ private: void watchDirIfRecursive(const QString& path); void update(); void updateWatcher(); - void updateFiles(); + void updateEntries(); }; |