DtkGui 5.5.23
DTK Gui module
xdgiconproxyengine_p.h
1// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef XDGICONPROXYENGINE_H
6#define XDGICONPROXYENGINE_H
7
8#include <dtkgui_global.h>
9
10#include <QIconEngine>
11#if XDG_ICON_VERSION_MAR >= 3
12#define private public
13#include <private/xdgiconloader/xdgiconloader_p.h>
14#undef private
15#elif XDG_ICON_VERSION_MAR == 2
16//这个版本中的xdgiconloader_p.h定义和qiconloader_p.h有冲突
17//只能通过此方式提供创建XdgIconLoaderEngine对象的接口
18#include "xdgiconenginecreator.h"
19#endif
20
21class ScalableEntry;
22class QIconLoaderEngineEntry;
23
24DGUI_BEGIN_NAMESPACE
25
26#if XDG_ICON_VERSION_MAR >= 3
27class Q_DECL_HIDDEN XdgIconProxyEngine : public QIconEngine
28{
29public:
30 XdgIconProxyEngine(XdgIconLoaderEngine *proxy);
31 virtual ~XdgIconProxyEngine() override;
32
33 static quint64 entryCacheKey(const ScalableEntry *color_entry, const QIcon::Mode mode, const QIcon::State state);
34
35 QPixmap followColorPixmap(ScalableEntry *color_entry, const QSize &size, QIcon::Mode mode, QIcon::State state);
36
37 QPixmap pixmapByEntry(QIconLoaderEngineEntry *entry, const QSize &size, QIcon::Mode mode, QIcon::State state);
38 void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) override;
39 QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) override;
40 void addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon::State state) override;
41 void addFile(const QString &fileName, const QSize &size, QIcon::Mode mode, QIcon::State state) override;
42 QString key() const override;
43 QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state) override;
44 QIconEngine *clone() const override;
45 bool read(QDataStream &in) override;
46 bool write(QDataStream &out) const override;
47 void virtual_hook(int id, void *data) override;
48
49private:
50 XdgIconLoaderEngine *engine;
51 QHash<quint64, QString> entryToColorScheme;
52 QIcon::Mode lastMode;
53};
54#endif
55
56DGUI_END_NAMESPACE
57
58#endif // XDGICONPROXYENGINE_H