diff options
Diffstat (limited to 'src/plugins/qmldesigner/components/componentcore/designericons.cpp')
-rw-r--r-- | src/plugins/qmldesigner/components/componentcore/designericons.cpp | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/src/plugins/qmldesigner/components/componentcore/designericons.cpp b/src/plugins/qmldesigner/components/componentcore/designericons.cpp index 2af0709c3a..053a188328 100644 --- a/src/plugins/qmldesigner/components/componentcore/designericons.cpp +++ b/src/plugins/qmldesigner/components/componentcore/designericons.cpp @@ -222,8 +222,17 @@ struct JsonMap<QMap<Key, Value>> static QJsonObject json(const QMap<Key, Value> &map) { QJsonObject output; - for (auto it = map.cbegin(), end = map.cend(); it != end; ++it) - output[DesignerIconEnums<Key>::toString(it.key())] = JsonMap<Value>::json(it.value()); + + #if (QT_VERSION >= QT_VERSION_CHECK(6, 4, 0)) + for (const auto &[key, val] : map.asKeyValueRange()) + output[DesignerIconEnums<Key>::toString(key)] = JsonMap<Value>::json(val); + #else + const auto mapKeys = map.keys(); + for (const Key &key : mapKeys) { + const Value &val = map.value(key); + output[DesignerIconEnums<Key>::toString(key)] = JsonMap<Value>::json(val); + } + #endif return output; } @@ -390,6 +399,33 @@ void DesignerIcons::addIcon(IconId iconId, Area area, Theme::Icon themeIcon, The addIcon(iconId, area, {themeIcon, color, size}); } +QIcon DesignerIcons::rotateIcon(const QIcon &icon, const double °rees) +{ + QIcon result; + const QMetaEnum &modeMetaEnum = DesignerIconEnums<QIcon::Mode>().metaEnum; + const QMetaEnum &stateMetaEnum = DesignerIconEnums<QIcon::State>().metaEnum; + + const int maxModeIdx = modeMetaEnum.keyCount(); + const int maxStateIdx = stateMetaEnum.keyCount(); + for (int modeI = 0; modeI < maxModeIdx; ++modeI) { + const QIcon::Mode mode = static_cast<QIcon::Mode>(modeMetaEnum.value(modeI)); + for (int stateI = 0; stateI < maxStateIdx; ++stateI) { + const QIcon::State state = static_cast<QIcon::State>(stateMetaEnum.value(stateI)); + const QList<QSize> iconSizes = icon.availableSizes(); + for (const QSize &size : iconSizes) { + QTransform tr; + tr.translate(size.width()/2, size.height()/2); + tr.rotate(degrees); + + QPixmap pix = icon.pixmap(size, mode, state).transformed(tr); + result.addPixmap(pix, mode, state); + } + } + } + + return result; +} + QList<Utils::StyleHelper::IconFontHelper> DesignerIcons::helperList(const IconId &iconId, const Area &area) const { |