summaryrefslogtreecommitdiff
path: root/plugin/src/Caelestia/filesystemmodel.cpp
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-09-11 22:08:25 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-09-11 22:08:25 +1000
commitb87d5bf20eeea7f6a865066f9a39f7fd084df8ee (patch)
treed3e491231cefd793ccd9f44304e7395ea013d3ad /plugin/src/Caelestia/filesystemmodel.cpp
parentplugin/appdb: fix persistence (diff)
downloadcaelestia-shell-b87d5bf20eeea7f6a865066f9a39f7fd084df8ee.tar.gz
caelestia-shell-b87d5bf20eeea7f6a865066f9a39f7fd084df8ee.tar.bz2
caelestia-shell-b87d5bf20eeea7f6a865066f9a39f7fd084df8ee.zip
plugin: format + refactor
Diffstat (limited to 'plugin/src/Caelestia/filesystemmodel.cpp')
-rw-r--r--plugin/src/Caelestia/filesystemmodel.cpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/plugin/src/Caelestia/filesystemmodel.cpp b/plugin/src/Caelestia/filesystemmodel.cpp
index 9a435a8..54807b5 100644
--- a/plugin/src/Caelestia/filesystemmodel.cpp
+++ b/plugin/src/Caelestia/filesystemmodel.cpp
@@ -6,6 +6,70 @@
namespace caelestia {
+FileSystemEntry::FileSystemEntry(const QString& path, const QString& relativePath, QObject* parent)
+ : QObject(parent)
+ , m_fileInfo(QFileInfo(path))
+ , m_path(path)
+ , m_relativePath(relativePath)
+ , m_isImageInitialised(false)
+ , m_mimeTypeInitialised(false) {}
+
+QString FileSystemEntry::path() const {
+ return m_path;
+};
+
+QString FileSystemEntry::relativePath() const {
+ return m_relativePath;
+};
+
+QString FileSystemEntry::name() const {
+ return m_fileInfo.fileName();
+};
+
+QString FileSystemEntry::parentDir() const {
+ return m_fileInfo.absolutePath();
+};
+
+QString FileSystemEntry::suffix() const {
+ return m_fileInfo.completeSuffix();
+};
+
+qint64 FileSystemEntry::size() const {
+ return m_fileInfo.size();
+};
+
+bool FileSystemEntry::isDir() const {
+ return m_fileInfo.isDir();
+};
+
+bool FileSystemEntry::isImage() const {
+ if (!m_isImageInitialised) {
+ QImageReader reader(m_path);
+ m_isImage = reader.canRead();
+ m_isImageInitialised = true;
+ }
+ return m_isImage;
+}
+
+QString FileSystemEntry::mimeType() const {
+ if (!m_mimeTypeInitialised) {
+ const QMimeDatabase db;
+ m_mimeType = db.mimeTypeForFile(m_path).name();
+ m_mimeTypeInitialised = true;
+ }
+ return m_mimeType;
+}
+
+FileSystemModel::FileSystemModel(QObject* parent)
+ : QAbstractListModel(parent)
+ , m_recursive(false)
+ , m_watchChanges(true)
+ , m_showHidden(false)
+ , m_filter(NoFilter) {
+ connect(&m_watcher, &QFileSystemWatcher::directoryChanged, this, &FileSystemModel::watchDirIfRecursive);
+ connect(&m_watcher, &QFileSystemWatcher::directoryChanged, this, &FileSystemModel::updateEntriesForDir);
+}
+
int FileSystemModel::rowCount(const QModelIndex& parent) const {
if (parent != QModelIndex()) {
return 0;