summaryrefslogtreecommitdiff
path: root/plugin/src/Caelestia/Internal/cachingimagemanager.hpp
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-09-13 15:54:01 +1000
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-09-13 15:54:01 +1000
commitc2aa63b99abb6d1388f0e4f5e64a20ee24dd7551 (patch)
treee9b146773dda02d0ec20a299469b2ddd839ae870 /plugin/src/Caelestia/Internal/cachingimagemanager.hpp
parentplugin/managers: add CircularIndicatorManager (diff)
downloadcaelestia-shell-c2aa63b99abb6d1388f0e4f5e64a20ee24dd7551.tar.gz
caelestia-shell-c2aa63b99abb6d1388f0e4f5e64a20ee24dd7551.tar.bz2
caelestia-shell-c2aa63b99abb6d1388f0e4f5e64a20ee24dd7551.zip
plugin: managers -> internal
Diffstat (limited to 'plugin/src/Caelestia/Internal/cachingimagemanager.hpp')
-rw-r--r--plugin/src/Caelestia/Internal/cachingimagemanager.hpp65
1 files changed, 65 insertions, 0 deletions
diff --git a/plugin/src/Caelestia/Internal/cachingimagemanager.hpp b/plugin/src/Caelestia/Internal/cachingimagemanager.hpp
new file mode 100644
index 0000000..f05ea34
--- /dev/null
+++ b/plugin/src/Caelestia/Internal/cachingimagemanager.hpp
@@ -0,0 +1,65 @@
+#pragma once
+
+#include <QtQuick/qquickitem.h>
+#include <qobject.h>
+#include <qqmlintegration.h>
+
+namespace caelestia {
+
+class CachingImageManager : public QObject {
+ Q_OBJECT
+ QML_ELEMENT
+
+ Q_PROPERTY(QQuickItem* item READ item WRITE setItem NOTIFY itemChanged REQUIRED)
+ Q_PROPERTY(QUrl cacheDir READ cacheDir WRITE setCacheDir NOTIFY cacheDirChanged REQUIRED)
+
+ Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged)
+ Q_PROPERTY(QUrl cachePath READ cachePath NOTIFY cachePathChanged)
+
+public:
+ explicit CachingImageManager(QObject* parent = nullptr)
+ : QObject(parent)
+ , m_item(nullptr) {}
+
+ [[nodiscard]] QQuickItem* item() const;
+ void setItem(QQuickItem* item);
+
+ [[nodiscard]] QUrl cacheDir() const;
+ void setCacheDir(const QUrl& cacheDir);
+
+ [[nodiscard]] QString path() const;
+ void setPath(const QString& path);
+
+ [[nodiscard]] QUrl cachePath() const;
+
+ Q_INVOKABLE void updateSource();
+ Q_INVOKABLE void updateSource(const QString& path);
+
+signals:
+ void itemChanged();
+ void cacheDirChanged();
+
+ void pathChanged();
+ void cachePathChanged();
+ void usingCacheChanged();
+
+private:
+ QString m_shaPath;
+
+ QQuickItem* m_item;
+ QUrl m_cacheDir;
+
+ QString m_path;
+ QUrl m_cachePath;
+
+ QMetaObject::Connection m_widthConn;
+ QMetaObject::Connection m_heightConn;
+
+ [[nodiscard]] qreal effectiveScale() const;
+ [[nodiscard]] QSize effectiveSize() const;
+
+ void createCache(const QString& path, const QString& cache, const QString& fillMode, const QSize& size) const;
+ [[nodiscard]] static QString sha256sum(const QString& path);
+};
+
+} // namespace caelestia