QtDesignStudio Gradient Picker Dialog Patch

Patch for Qt versions below 5.12

Change-Id: I7be4c6287a671faf4fda7865e752494cf038318f
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Aleksei German
2019-04-04 18:46:45 +02:00
parent 7ef62eb869
commit 4176b17fff
8 changed files with 54 additions and 44 deletions

View File

@@ -507,7 +507,8 @@ void GradientModel::setGradientProperty(const QString &propertyName, qreal value
void GradientModel::setPresetByID(int presetID) void GradientModel::setPresetByID(int presetID)
{ {
const QGradient gradient(static_cast<QGradient::Preset>(presetID)); const QGradient gradient(GradientPresetItem::createGradientFromPreset(
static_cast<GradientPresetItem::Preset>(presetID)));
const QList<QGradientStop> gradientStops = gradient.stops().toList(); const QList<QGradientStop> gradientStops = gradient.stops().toList();
QList<qreal> stopsPositions; QList<qreal> stopsPositions;

View File

@@ -24,8 +24,8 @@
****************************************************************************/ ****************************************************************************/
#include "gradientpresetcustomlistmodel.h" #include "gradientpresetcustomlistmodel.h"
#include "gradientpresetitem.h" #include "gradientpresetitem.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>

View File

@@ -24,15 +24,13 @@
****************************************************************************/ ****************************************************************************/
#include "gradientpresetdefaultlistmodel.h" #include "gradientpresetdefaultlistmodel.h"
#include "gradientpresetitem.h"
#include <QHash> #include <QHash>
#include <QByteArray> #include <QByteArray>
#include <QDebug> #include <QDebug>
#include <QFile> #include <QFile>
#include "gradientpresetitem.h"
GradientPresetDefaultListModel::GradientPresetDefaultListModel(QObject *parent) GradientPresetDefaultListModel::GradientPresetDefaultListModel(QObject *parent)
: GradientPresetListModel(parent) : GradientPresetListModel(parent)
{ {
@@ -54,7 +52,10 @@ void GradientPresetDefaultListModel::addAllPresets()
const QMetaObject &metaObj = QGradient::staticMetaObject; const QMetaObject &metaObj = QGradient::staticMetaObject;
const QMetaEnum metaEnum = metaObj.enumerator(metaObj.indexOfEnumerator("Preset")); const QMetaEnum metaEnum = metaObj.enumerator(metaObj.indexOfEnumerator("Preset"));
if (!metaEnum.isValid())
return;
for (int i = 0; i < metaEnum.keyCount(); i++) { for (int i = 0; i < metaEnum.keyCount(); i++) {
addItem(GradientPresetItem(QGradient::Preset(metaEnum.value(i)))); addItem(GradientPresetItem(GradientPresetItem::Preset(metaEnum.value(i))));
} }
} }

View File

@@ -25,12 +25,11 @@
#pragma once #pragma once
#include "gradientpresetlistmodel.h"
#include <QObject> #include <QObject>
#include <QAbstractListModel> #include <QAbstractListModel>
#include <QtQml/qqml.h> #include <QtQml/qqml.h>
#include <memory>
#include "gradientpresetlistmodel.h"
class GradientPresetDefaultListModel : public GradientPresetListModel class GradientPresetDefaultListModel : public GradientPresetListModel
{ {

View File

@@ -36,19 +36,19 @@
GradientPresetItem::GradientPresetItem() GradientPresetItem::GradientPresetItem()
: m_gradientVal(QGradient::Preset(0)) : m_gradientVal(QGradient())
, m_gradientID(QGradient::Preset(0)) , m_gradientID(Preset(0))
, m_presetName(QString()) , m_presetName(QString())
{} {}
GradientPresetItem::GradientPresetItem(const QGradient &value, const QString &name) GradientPresetItem::GradientPresetItem(const QGradient &value, const QString &name)
: m_gradientVal(value) : m_gradientVal(value)
, m_gradientID(QGradient::Preset(0)) , m_gradientID(Preset(0))
, m_presetName(name) , m_presetName(name)
{} {}
GradientPresetItem::GradientPresetItem(const QGradient::Preset value) GradientPresetItem::GradientPresetItem(const Preset value)
: m_gradientVal(QGradient::Preset(value)) : m_gradientVal(createGradientFromPreset(value))
, m_gradientID(value) , m_gradientID(value)
, m_presetName(getNameByPreset(value)) , m_presetName(getNameByPreset(value))
{} {}
@@ -63,9 +63,6 @@ QVariant GradientPresetItem::getProperty(GradientPresetItem::Property id) const
case objectNameRole: case objectNameRole:
out.setValue(QString()); out.setValue(QString());
break; break;
case presetRole:
out.setValue(preset());
break;
case stopsPosListRole: case stopsPosListRole:
out.setValue(stopsPosList()); out.setValue(stopsPosList());
break; break;
@@ -94,22 +91,17 @@ QGradient GradientPresetItem::gradientVal() const
return m_gradientVal; return m_gradientVal;
} }
QGradient::Preset GradientPresetItem::preset() const
{
return m_gradientID;
}
void GradientPresetItem::setGradient(const QGradient &value) void GradientPresetItem::setGradient(const QGradient &value)
{ {
m_gradientVal = value; m_gradientVal = value;
m_gradientID = QGradient::Preset(0); m_gradientID = Preset(0);
m_presetName = QString(); m_presetName = QString();
} }
void GradientPresetItem::setGradient(const QGradient::Preset value) void GradientPresetItem::setGradient(const Preset value)
{ {
m_gradientID = value; m_gradientID = value;
m_gradientVal = QGradient(value); m_gradientVal = createGradientFromPreset(value);
m_presetName = getNameByPreset(value); m_presetName = getNameByPreset(value);
} }
@@ -153,11 +145,14 @@ int GradientPresetItem::presetID() const
return static_cast<int>(m_gradientID); return static_cast<int>(m_gradientID);
} }
QString GradientPresetItem::getNameByPreset(QGradient::Preset value) QString GradientPresetItem::getNameByPreset(Preset value)
{ {
const QMetaObject &metaObj = QGradient::staticMetaObject; const QMetaObject &metaObj = QGradient::staticMetaObject;
const QMetaEnum metaEnum = metaObj.enumerator(metaObj.indexOfEnumerator("Preset")); const QMetaEnum metaEnum = metaObj.enumerator(metaObj.indexOfEnumerator("Preset"));
if (!metaEnum.isValid())
return QString("Custom");
QString enumName = QString::fromUtf8(metaEnum.valueToKey(static_cast<int>(value))); QString enumName = QString::fromUtf8(metaEnum.valueToKey(static_cast<int>(value)));
const QStringList sl = enumName.split(QRegExp("(?=[A-Z])"), QString::SkipEmptyParts); 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 + " "); }); std::for_each(sl.begin(), sl.end(), [&enumName](const QString &s) { enumName += (s + " "); });
enumName.chop(1); //let's remove the last empty space 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) QDebug &operator<<(QDebug &stream, const GradientPresetItem &gradient)
@@ -194,7 +199,7 @@ QDataStream &operator>>(QDataStream &stream, GradientPresetItem &gradient)
int gradientID; int gradientID;
stream >> gradientID; stream >> gradientID;
gradient.m_gradientID = static_cast<QGradient::Preset>(gradientID); gradient.m_gradientID = static_cast<GradientPresetItem::Preset>(gradientID);
stream >> gradient.m_presetName; stream >> gradient.m_presetName;
return stream; return stream;

View File

@@ -23,6 +23,8 @@
** **
****************************************************************************/ ****************************************************************************/
#pragma once
#include <QObject> #include <QObject>
#include <QGradient> #include <QGradient>
@@ -30,7 +32,6 @@ class GradientPresetItem
{ {
Q_GADGET Q_GADGET
Q_PROPERTY(QGradient::Preset preset READ preset FINAL)
Q_PROPERTY(QList<qreal> stopsPosList READ stopsPosList FINAL) Q_PROPERTY(QList<qreal> stopsPosList READ stopsPosList FINAL)
Q_PROPERTY(QList<QString> stopsColorList READ stopsColorList FINAL) Q_PROPERTY(QList<QString> stopsColorList READ stopsColorList FINAL)
Q_PROPERTY(int stopListSize READ stopListSize FINAL) Q_PROPERTY(int stopListSize READ stopListSize FINAL)
@@ -38,28 +39,32 @@ class GradientPresetItem
Q_PROPERTY(int presetID READ presetID FINAL) Q_PROPERTY(int presetID READ presetID FINAL)
public: public:
#if QT_VERSION >= QT_VERSION_CHECK(5, 12, 0)
using Preset = QGradient::Preset;
#else
enum Preset {};
#endif
explicit GradientPresetItem(); explicit GradientPresetItem();
explicit GradientPresetItem(const QGradient &value, const QString &name = QString()); explicit GradientPresetItem(const QGradient &value, const QString &name = QString());
explicit GradientPresetItem(const QGradient::Preset number); explicit GradientPresetItem(const Preset number);
~GradientPresetItem(); ~GradientPresetItem();
enum Property { enum Property {
objectNameRole = 0, objectNameRole = 0,
presetRole = 1, stopsPosListRole = 1,
stopsPosListRole = 2, stopsColorListRole = 2,
stopsColorListRole = 3, stopListSizeRole = 3,
stopListSizeRole = 4, presetNameRole = 4,
presetNameRole = 5, presetIDRole = 5
presetIDRole = 6
}; };
QVariant getProperty(Property id) const; QVariant getProperty(Property id) const;
QGradient gradientVal() const; QGradient gradientVal() const;
QGradient::Preset preset() const;
void setGradient(const QGradient &value); void setGradient(const QGradient &value);
void setGradient(const QGradient::Preset value); void setGradient(const Preset value);
QList<qreal> stopsPosList() const; QList<qreal> stopsPosList() const;
QList<QString> stopsColorList() const; QList<QString> stopsColorList() const;
@@ -69,16 +74,18 @@ public:
QString presetName() const; QString presetName() const;
int presetID() const; int presetID() const;
static QString getNameByPreset(QGradient::Preset value); static QString getNameByPreset(Preset value);
friend QDebug &operator<<(QDebug &stream, const GradientPresetItem &gradient); friend QDebug &operator<<(QDebug &stream, const GradientPresetItem &gradient);
friend QDataStream &operator<<(QDataStream &stream, const GradientPresetItem &gradient); friend QDataStream &operator<<(QDataStream &stream, const GradientPresetItem &gradient);
friend QDataStream &operator>>(QDataStream &stream, GradientPresetItem &gradient); friend QDataStream &operator>>(QDataStream &stream, GradientPresetItem &gradient);
static QGradient createGradientFromPreset(Preset value);
private: private:
QGradient m_gradientVal; QGradient m_gradientVal;
QGradient::Preset m_gradientID; Preset m_gradientID;
QString m_presetName; QString m_presetName;
}; };

View File

@@ -24,7 +24,6 @@
****************************************************************************/ ****************************************************************************/
#include "gradientpresetlistmodel.h" #include "gradientpresetlistmodel.h"
#include "gradientpresetitem.h" #include "gradientpresetitem.h"
#include <QHash> #include <QHash>
@@ -37,7 +36,6 @@ GradientPresetListModel::GradientPresetListModel(QObject *parent)
{ {
m_roleNames m_roleNames
= {{static_cast<int>(GradientPresetItem::Property::objectNameRole), "objectName"}, = {{static_cast<int>(GradientPresetItem::Property::objectNameRole), "objectName"},
{static_cast<int>(GradientPresetItem::Property::presetRole), "preset"},
{static_cast<int>(GradientPresetItem::Property::stopsPosListRole), "stopsPosList"}, {static_cast<int>(GradientPresetItem::Property::stopsPosListRole), "stopsPosList"},
{static_cast<int>(GradientPresetItem::Property::stopsColorListRole), "stopsColorList"}, {static_cast<int>(GradientPresetItem::Property::stopsColorListRole), "stopsColorList"},
{static_cast<int>(GradientPresetItem::Property::stopListSizeRole), "stopListSize"}, {static_cast<int>(GradientPresetItem::Property::stopListSizeRole), "stopListSize"},
@@ -103,7 +101,7 @@ const QList<GradientPresetItem> &GradientPresetListModel::items() const
void GradientPresetListModel::sortItems() void GradientPresetListModel::sortItems()
{ {
auto itemSort = [](const GradientPresetItem &first, const GradientPresetItem &second) { auto itemSort = [](const GradientPresetItem &first, const GradientPresetItem &second) {
return (static_cast<int>(first.preset()) < static_cast<int>(second.preset())); return (static_cast<int>(first.presetID()) < static_cast<int>(second.presetID()));
}; };
std::sort(m_items.begin(), m_items.end(), itemSort); std::sort(m_items.begin(), m_items.end(), itemSort);

View File

@@ -28,7 +28,6 @@
#include <QObject> #include <QObject>
#include <QAbstractListModel> #include <QAbstractListModel>
#include <QtQml/qqml.h> #include <QtQml/qqml.h>
#include <memory>
class GradientPresetItem; class GradientPresetItem;