From 018a4a90b235b899b6174df53d394a6726fe39b1 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Sun, 31 Aug 2025 23:31:33 +1000 Subject: plugin/fsm: rename files -> entries Also rename filter & add props --- plugin/src/Caelestia/filesystemmodel.hpp | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) (limited to 'plugin/src/Caelestia/filesystemmodel.hpp') 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 #include #include +#include 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 files READ files NOTIFY filesChanged); + Q_PROPERTY(QList 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 files() const; + QList entries() const; signals: void pathChanged(); void recursiveChanged(); void filterChanged(); - void filesChanged(); + void entriesChanged(); private: QDir m_dir; QFileSystemWatcher m_watcher; - QList m_files; + QList 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(); }; -- cgit v1.2.3-freya