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 QUrlQuery getUrlQuery();
27 DQuickIconImage::Mode getIconMode() const;
28
29 qreal calculateDevicePixelRatio() const;
30 bool updateDevicePixelRatio(qreal targetDevicePixelRatio) override;
31
32 void updateBase64Image();
33
34 static QImage requestImageFromBase64(const QString &name, const QSize &requestedSize, qreal devicePixelRatio);
35
36private:
37 QString name;
38 DQuickIconImage::State state = DQuickIconImage::State::Off;
39 DQuickIconImage::Mode mode = DQuickIconImage::Mode::Invalid;
40 QColor color;
41 QUrl fallbackSource;
42
43protected:
44 enum IconType : qint8 {
45 ThemeIconName, // 图标名称
46 Base64Data, // base64编码的图标图片数据
47 FileUrl // 图标文件的url地址
48 };
49
50 // 记录此图标是否应该从图标主题中获取。
51 // 在freedesktop的规范中,图标可为
52 // 一个本地文件,或以base64编码的图片数据。
53 // 此处的兼容处理主要是为了让DQuickIconFinder
54 // 能直接用于加载desktop文件的图标
55 IconType iconType = ThemeIconName;
56};
57
58DQUICK_END_NAMESPACE
59
60#endif // DQUICKICONIMAGE_P_P_H
Definition dquickiconimage_p_p.h:20
Definition dquickiconimage_p.h:23