DtkDeclarative
DTK Declarative module
载入中...
搜索中...
未找到
dquickiconimage_p_p.h
1// SPDX-FileCopyrightText: 2020 - 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DQUICKICONIMAGE_P_P_H
6#define DQUICKICONIMAGE_P_P_H
7
8#include <private/dquickiconimage_p.h>
9#ifndef emit
10#define emit Q_EMIT
11#include <private/qquickimage_p_p.h>
12#undef emit
13#else
14#include <private/qquickimage_p_p.h>
15#endif
16
17DQUICK_BEGIN_NAMESPACE
18
19class DQuickIconImagePrivate : public QQuickImagePrivate
20{
21 Q_DECLARE_PUBLIC(DQuickIconImage)
22
23public:
24 void init();
25 virtual void maybeUpdateUrl();
26 virtual void play(int mode);
27 QUrlQuery getUrlQuery();
28 DQuickIconImage::Mode getIconMode() const;
29
30 qreal calculateDevicePixelRatio() const;
31 bool updateDevicePixelRatio(qreal targetDevicePixelRatio) override;
32
33 void updateBase64Image();
34
35 static QImage requestImageFromBase64(const QString &name, const QSize &requestedSize, qreal devicePixelRatio);
36
37private:
38 QString name;
39 DQuickIconImage::State state = DQuickIconImage::State::Off;
40 DQuickIconImage::Mode mode = DQuickIconImage::Mode::Invalid;
41 QColor color;
42 QUrl fallbackSource;
43
44protected:
45 enum IconType : qint8 {
46 ThemeIconName, // 图标名称
47 Base64Data, // base64编码的图标图片数据
48 FileUrl // 图标文件的url地址
49 };
50
51 // 记录此图标是否应该从图标主题中获取。
52 // 在freedesktop的规范中,图标可为
53 // 一个本地文件,或以base64编码的图片数据。
54 // 此处的兼容处理主要是为了让DQuickIconFinder
55 // 能直接用于加载desktop文件的图标
56 IconType iconType = ThemeIconName;
57};
58
59DQUICK_END_NAMESPACE
60
61#endif // DQUICKICONIMAGE_P_P_H
Definition dquickiconimage_p_p.h:20
Definition dquickiconimage_p.h:23