blob: d2d7f7473c320d3066aa14958e13cecf4ac6303b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#pragma once
#include <qobject.h>
#include <qqmlintegration.h>
#include <QtQuick/QQuickItem>
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);
Q_PROPERTY(bool usingCache READ usingCache NOTIFY usingCacheChanged);
public:
explicit CachingImageManager(QObject* parent = nullptr): QObject(parent) {};
[[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;
[[nodiscard]] bool usingCache() const;
signals:
void itemChanged();
void cacheDirChanged();
void pathChanged();
void cachePathChanged();
void usingCacheChanged();
private:
QQuickItem* m_item;
QUrl m_cacheDir;
QString m_path;
QUrl m_cachePath;
bool m_usingCache;
[[nodiscard]] qreal effectiveScale() const;
int effectiveWidth() const;
int effectiveHeight() const;
[[nodiscard]] QString sha256sum(const QString& path) const;
};
|