diff --git a/src/plugins/qmldesigner/components/propertyeditor/gradientmodel.cpp b/src/plugins/qmldesigner/components/propertyeditor/gradientmodel.cpp index d462bfdacc9..5aadf8dad5f 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/gradientmodel.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/gradientmodel.cpp @@ -507,7 +507,8 @@ void GradientModel::setGradientProperty(const QString &propertyName, qreal value void GradientModel::setPresetByID(int presetID) { - const QGradient gradient(static_cast(presetID)); + const QGradient gradient(GradientPresetItem::createGradientFromPreset( + static_cast(presetID))); const QList gradientStops = gradient.stops().toList(); QList stopsPositions; diff --git a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetcustomlistmodel.cpp b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetcustomlistmodel.cpp index 3888706cfeb..a1599a70996 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetcustomlistmodel.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetcustomlistmodel.cpp @@ -24,8 +24,8 @@ ****************************************************************************/ #include "gradientpresetcustomlistmodel.h" - #include "gradientpresetitem.h" + #include #include #include diff --git a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetdefaultlistmodel.cpp b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetdefaultlistmodel.cpp index e7d8a28e7b6..8237390de90 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetdefaultlistmodel.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetdefaultlistmodel.cpp @@ -24,15 +24,13 @@ ****************************************************************************/ #include "gradientpresetdefaultlistmodel.h" +#include "gradientpresetitem.h" #include #include #include - #include -#include "gradientpresetitem.h" - GradientPresetDefaultListModel::GradientPresetDefaultListModel(QObject *parent) : GradientPresetListModel(parent) { @@ -54,7 +52,10 @@ void GradientPresetDefaultListModel::addAllPresets() const QMetaObject &metaObj = QGradient::staticMetaObject; const QMetaEnum metaEnum = metaObj.enumerator(metaObj.indexOfEnumerator("Preset")); + if (!metaEnum.isValid()) + return; + for (int i = 0; i < metaEnum.keyCount(); i++) { - addItem(GradientPresetItem(QGradient::Preset(metaEnum.value(i)))); + addItem(GradientPresetItem(GradientPresetItem::Preset(metaEnum.value(i)))); } } diff --git a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetdefaultlistmodel.h b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetdefaultlistmodel.h index 9d2dbdac536..831135e0523 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetdefaultlistmodel.h +++ b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetdefaultlistmodel.h @@ -25,12 +25,11 @@ #pragma once +#include "gradientpresetlistmodel.h" + #include #include #include -#include - -#include "gradientpresetlistmodel.h" class GradientPresetDefaultListModel : public GradientPresetListModel { diff --git a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetitem.cpp b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetitem.cpp index d557b6c3d44..9d2454c4e9e 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetitem.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetitem.cpp @@ -36,19 +36,19 @@ GradientPresetItem::GradientPresetItem() - : m_gradientVal(QGradient::Preset(0)) - , m_gradientID(QGradient::Preset(0)) + : m_gradientVal(QGradient()) + , m_gradientID(Preset(0)) , m_presetName(QString()) {} GradientPresetItem::GradientPresetItem(const QGradient &value, const QString &name) : m_gradientVal(value) - , m_gradientID(QGradient::Preset(0)) + , m_gradientID(Preset(0)) , m_presetName(name) {} -GradientPresetItem::GradientPresetItem(const QGradient::Preset value) - : m_gradientVal(QGradient::Preset(value)) +GradientPresetItem::GradientPresetItem(const Preset value) + : m_gradientVal(createGradientFromPreset(value)) , m_gradientID(value) , m_presetName(getNameByPreset(value)) {} @@ -63,9 +63,6 @@ QVariant GradientPresetItem::getProperty(GradientPresetItem::Property id) const case objectNameRole: out.setValue(QString()); break; - case presetRole: - out.setValue(preset()); - break; case stopsPosListRole: out.setValue(stopsPosList()); break; @@ -94,22 +91,17 @@ QGradient GradientPresetItem::gradientVal() const return m_gradientVal; } -QGradient::Preset GradientPresetItem::preset() const -{ - return m_gradientID; -} - void GradientPresetItem::setGradient(const QGradient &value) { m_gradientVal = value; - m_gradientID = QGradient::Preset(0); + m_gradientID = Preset(0); m_presetName = QString(); } -void GradientPresetItem::setGradient(const QGradient::Preset value) +void GradientPresetItem::setGradient(const Preset value) { m_gradientID = value; - m_gradientVal = QGradient(value); + m_gradientVal = createGradientFromPreset(value); m_presetName = getNameByPreset(value); } @@ -153,11 +145,14 @@ int GradientPresetItem::presetID() const return static_cast(m_gradientID); } -QString GradientPresetItem::getNameByPreset(QGradient::Preset value) +QString GradientPresetItem::getNameByPreset(Preset value) { const QMetaObject &metaObj = QGradient::staticMetaObject; const QMetaEnum metaEnum = metaObj.enumerator(metaObj.indexOfEnumerator("Preset")); + if (!metaEnum.isValid()) + return QString("Custom"); + QString enumName = QString::fromUtf8(metaEnum.valueToKey(static_cast(value))); const QStringList sl = enumName.split(QRegExp("(?=[A-Z])"), QString::SkipEmptyParts); @@ -166,7 +161,17 @@ QString GradientPresetItem::getNameByPreset(QGradient::Preset value) std::for_each(sl.begin(), sl.end(), [&enumName](const QString &s) { enumName += (s + " "); }); enumName.chop(1); //let's remove the last empty space - return (enumName.isEmpty() ? "Custom" : enumName); + return (enumName.isEmpty() ? QString("Custom") : enumName); +} + +QGradient GradientPresetItem::createGradientFromPreset(Preset value) +{ +#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0) + return QGradient(value); +#else + Q_UNUSED(value); + return {}; +#endif } QDebug &operator<<(QDebug &stream, const GradientPresetItem &gradient) @@ -194,7 +199,7 @@ QDataStream &operator>>(QDataStream &stream, GradientPresetItem &gradient) int gradientID; stream >> gradientID; - gradient.m_gradientID = static_cast(gradientID); + gradient.m_gradientID = static_cast(gradientID); stream >> gradient.m_presetName; return stream; diff --git a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetitem.h b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetitem.h index b3d3ad14a00..cd0f0017e0e 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetitem.h +++ b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetitem.h @@ -23,6 +23,8 @@ ** ****************************************************************************/ +#pragma once + #include #include @@ -30,7 +32,6 @@ class GradientPresetItem { Q_GADGET - Q_PROPERTY(QGradient::Preset preset READ preset FINAL) Q_PROPERTY(QList stopsPosList READ stopsPosList FINAL) Q_PROPERTY(QList stopsColorList READ stopsColorList FINAL) Q_PROPERTY(int stopListSize READ stopListSize FINAL) @@ -38,28 +39,32 @@ class GradientPresetItem Q_PROPERTY(int presetID READ presetID FINAL) public: +#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0) + using Preset = QGradient::Preset; +#else + enum Preset {}; +#endif + explicit GradientPresetItem(); explicit GradientPresetItem(const QGradient &value, const QString &name = QString()); - explicit GradientPresetItem(const QGradient::Preset number); + explicit GradientPresetItem(const Preset number); ~GradientPresetItem(); enum Property { objectNameRole = 0, - presetRole = 1, - stopsPosListRole = 2, - stopsColorListRole = 3, - stopListSizeRole = 4, - presetNameRole = 5, - presetIDRole = 6 + stopsPosListRole = 1, + stopsColorListRole = 2, + stopListSizeRole = 3, + presetNameRole = 4, + presetIDRole = 5 }; QVariant getProperty(Property id) const; QGradient gradientVal() const; - QGradient::Preset preset() const; void setGradient(const QGradient &value); - void setGradient(const QGradient::Preset value); + void setGradient(const Preset value); QList stopsPosList() const; QList stopsColorList() const; @@ -69,16 +74,18 @@ public: QString presetName() const; int presetID() const; - static QString getNameByPreset(QGradient::Preset value); + static QString getNameByPreset(Preset value); friend QDebug &operator<<(QDebug &stream, const GradientPresetItem &gradient); friend QDataStream &operator<<(QDataStream &stream, const GradientPresetItem &gradient); friend QDataStream &operator>>(QDataStream &stream, GradientPresetItem &gradient); + static QGradient createGradientFromPreset(Preset value); + private: QGradient m_gradientVal; - QGradient::Preset m_gradientID; + Preset m_gradientID; QString m_presetName; }; diff --git a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetlistmodel.cpp b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetlistmodel.cpp index c0e8393550d..1ed95f8719d 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetlistmodel.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetlistmodel.cpp @@ -24,7 +24,6 @@ ****************************************************************************/ #include "gradientpresetlistmodel.h" - #include "gradientpresetitem.h" #include @@ -37,7 +36,6 @@ GradientPresetListModel::GradientPresetListModel(QObject *parent) { m_roleNames = {{static_cast(GradientPresetItem::Property::objectNameRole), "objectName"}, - {static_cast(GradientPresetItem::Property::presetRole), "preset"}, {static_cast(GradientPresetItem::Property::stopsPosListRole), "stopsPosList"}, {static_cast(GradientPresetItem::Property::stopsColorListRole), "stopsColorList"}, {static_cast(GradientPresetItem::Property::stopListSizeRole), "stopListSize"}, @@ -103,7 +101,7 @@ const QList &GradientPresetListModel::items() const void GradientPresetListModel::sortItems() { auto itemSort = [](const GradientPresetItem &first, const GradientPresetItem &second) { - return (static_cast(first.preset()) < static_cast(second.preset())); + return (static_cast(first.presetID()) < static_cast(second.presetID())); }; std::sort(m_items.begin(), m_items.end(), itemSort); diff --git a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetlistmodel.h b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetlistmodel.h index fdf7080c7b7..7fce2243dda 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/gradientpresetlistmodel.h +++ b/src/plugins/qmldesigner/components/propertyeditor/gradientpresetlistmodel.h @@ -28,7 +28,6 @@ #include #include #include -#include class GradientPresetItem;