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)
{
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();
QList<qreal> stopsPositions;

View File

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

View File

@@ -24,15 +24,13 @@
****************************************************************************/
#include "gradientpresetdefaultlistmodel.h"
#include "gradientpresetitem.h"
#include <QHash>
#include <QByteArray>
#include <QDebug>
#include <QFile>
#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))));
}
}

View File

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

View File

@@ -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<int>(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<int>(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<QGradient::Preset>(gradientID);
gradient.m_gradientID = static_cast<GradientPresetItem::Preset>(gradientID);
stream >> gradient.m_presetName;
return stream;

View File

@@ -23,6 +23,8 @@
**
****************************************************************************/
#pragma once
#include <QObject>
#include <QGradient>
@@ -30,7 +32,6 @@ class GradientPresetItem
{
Q_GADGET
Q_PROPERTY(QGradient::Preset preset READ preset FINAL)
Q_PROPERTY(QList<qreal> stopsPosList READ stopsPosList FINAL)
Q_PROPERTY(QList<QString> 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<qreal> stopsPosList() const;
QList<QString> 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;
};

View File

@@ -24,7 +24,6 @@
****************************************************************************/
#include "gradientpresetlistmodel.h"
#include "gradientpresetitem.h"
#include <QHash>
@@ -37,7 +36,6 @@ GradientPresetListModel::GradientPresetListModel(QObject *parent)
{
m_roleNames
= {{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::stopsColorListRole), "stopsColorList"},
{static_cast<int>(GradientPresetItem::Property::stopListSizeRole), "stopListSize"},
@@ -103,7 +101,7 @@ const QList<GradientPresetItem> &GradientPresetListModel::items() const
void GradientPresetListModel::sortItems()
{
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);

View File

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