summaryrefslogtreecommitdiff
path: root/plugin/src/Caelestia/filesystemmodel.hpp
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-08-31 23:31:33 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-08-31 23:31:33 +1000
commit018a4a90b235b899b6174df53d394a6726fe39b1 (patch)
tree1e36272906cbf4151b9a4c94085b6f2acd420f56 /plugin/src/Caelestia/filesystemmodel.hpp
parentplugin: add FileSystemModel (diff)
downloadcaelestia-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.hpp31
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();
};