From e1e514332e1cbc3484bcdebc05884c18c5cf7256 Mon Sep 17 00:00:00 2001 From: deepin-ci-robot Date: Wed, 4 Sep 2024 09:12:46 +0000 Subject: [PATCH] sync: from linuxdeepin/dtkgui Synchronize source files from linuxdeepin/dtkgui. Source-pull-request: https://github.com/linuxdeepin/dtkgui/pull/255 --- src/util/private/dbuiltiniconengine.cpp | 20 ++++++++++++++++++++ src/util/private/dbuiltiniconengine_p.h | 1 + src/util/private/dciiconengine.cpp | 16 ++++++++++++++++ src/util/private/dciiconengine_p.h | 1 + 4 files changed, 38 insertions(+) diff --git a/src/util/private/dbuiltiniconengine.cpp b/src/util/private/dbuiltiniconengine.cpp index a71d7b2..bf971b0 100644 --- a/src/util/private/dbuiltiniconengine.cpp +++ b/src/util/private/dbuiltiniconengine.cpp @@ -271,6 +271,26 @@ QString DBuiltinIconEngine::iconName() return m_iconName; } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +QList DBuiltinIconEngine::availableSizes(QIcon::Mode mode, QIcon::State state) +{ + ensureLoaded(); + + QList sizes; + int N = m_info.entries.size(); + sizes.reserve(N); + + // Gets all sizes from the DirectoryInfo entries + for (int i = 0; i < N; ++i) { + const auto& entry = m_info.entries.at(i); + int size = entry->dir.size; + sizes.append(QSize(size, size)); + } + + return sizes; +} +#endif + QThemeIconInfo DBuiltinIconEngine::loadIcon(const QString &iconName, uint key) { QThemeIconInfo info; diff --git a/src/util/private/dbuiltiniconengine_p.h b/src/util/private/dbuiltiniconengine_p.h index c4aafff..229f26f 100644 --- a/src/util/private/dbuiltiniconengine_p.h +++ b/src/util/private/dbuiltiniconengine_p.h @@ -33,6 +33,7 @@ class Q_DECL_HIDDEN DBuiltinIconEngine : public QIconEngine #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) QString iconName() override; + QList availableSizes(QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off); #else QString iconName() const override; #endif diff --git a/src/util/private/dciiconengine.cpp b/src/util/private/dciiconengine.cpp index 06cb00d..b223091 100644 --- a/src/util/private/dciiconengine.cpp +++ b/src/util/private/dciiconengine.cpp @@ -158,6 +158,22 @@ const return m_iconName; } +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +QList DDciIconEngine::availableSizes(QIcon::Mode mode, QIcon::State state) +{ + ensureIconTheme(); + + auto availableSizes = m_dciIcon.availableSizes(dciTheme(), DDciIcon::Normal); + QList sizes; + sizes.reserve(availableSizes.size()); + + for (int size : availableSizes) + sizes.append(QSize(size, size)); + + return sizes; +} +#endif + void DDciIconEngine::virtual_hook(int id, void *data) { ensureIconTheme(); diff --git a/src/util/private/dciiconengine_p.h b/src/util/private/dciiconengine_p.h index e4cb176..4eef479 100644 --- a/src/util/private/dciiconengine_p.h +++ b/src/util/private/dciiconengine_p.h @@ -30,6 +30,7 @@ class Q_DECL_HIDDEN DDciIconEngine : public QIconEngine #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) QString iconName() override; + QList availableSizes(QIcon::Mode mode = QIcon::Normal, QIcon::State state = QIcon::Off); #else QString iconName() const override; #endif