From 26dda49ccb3572bedc785c85c41cec5db8114579 Mon Sep 17 00:00:00 2001 From: J-P Nurmi <jpnurmi@digia.com> Date: Wed, 29 May 2013 13:06:34 +0200 Subject: [PATCH] Rename PaddedStyle to AbstractStyle Make Style inherit AbstractStyle, so it becomes the base class of all styles. AbstractStyle also now has a default "data" property so it's possible to conveniently declare helper content inside styles. Change-Id: Id84f3762cfae506e65021322619d7fb77b137994 Reviewed-by: Tomasz Olszak <olszak.tomasz@gmail.com> Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com> --- src/controls/ScrollView.qml | 2 +- src/controls/doc/qtquickcontrols.qdocconf | 4 +- src/private/Style.qml | 3 +- src/private/plugin.cpp | 4 +- src/private/private.pro | 4 +- ...addedstyle.cpp => qquickabstractstyle.cpp} | 58 ++++++++++++++----- ...addedstyle_p.h => qquickabstractstyle_p.h} | 25 +++++--- src/styles/Base/ButtonStyle.qml | 2 +- src/styles/Base/CheckBoxStyle.qml | 2 +- src/styles/Base/ComboBoxStyle.qml | 2 +- src/styles/Base/GroupBoxStyle.qml | 2 +- src/styles/Base/ProgressBarStyle.qml | 2 +- src/styles/Base/RadioButtonStyle.qml | 2 +- src/styles/Base/ScrollViewStyle.qml | 2 +- src/styles/Base/SliderStyle.qml | 2 +- src/styles/Base/SpinBoxStyle.qml | 2 +- src/styles/Base/TextFieldStyle.qml | 2 +- src/styles/Desktop/GroupBoxStyle.qml | 2 +- src/styles/Desktop/ScrollViewStyle.qml | 2 +- src/styles/Desktop/SliderStyle.qml | 2 +- src/styles/Desktop/SpinBoxStyle.qml | 2 +- 21 files changed, 85 insertions(+), 43 deletions(-) rename src/private/{qquickpaddedstyle.cpp => qquickabstractstyle.cpp} (58%) rename src/private/{qquickpaddedstyle_p.h => qquickabstractstyle_p.h} (76%) diff --git a/src/controls/ScrollView.qml b/src/controls/ScrollView.qml index efa6e631b..0af69a0de 100644 --- a/src/controls/ScrollView.qml +++ b/src/controls/ScrollView.qml @@ -147,7 +147,7 @@ FocusScope { property Component style: Qt.createComponent(Settings.style + "/ScrollViewStyle.qml", root) /*! \internal */ - property PaddedStyle __style: styleLoader.item + property Style __style: styleLoader.item activeFocusOnTab: true diff --git a/src/controls/doc/qtquickcontrols.qdocconf b/src/controls/doc/qtquickcontrols.qdocconf index c04bced2c..1f6925976 100644 --- a/src/controls/doc/qtquickcontrols.qdocconf +++ b/src/controls/doc/qtquickcontrols.qdocconf @@ -52,7 +52,7 @@ sources += ../../private/qstyleitem.cpp \ ../../private/TabBar.qml \ ../../private/Control.qml \ ../../private/Style.qml \ - ../../private/qquickpaddedstyle.h \ - ../../private/qquickpaddedstyle.cpp + ../../private/qquickabstractstyle.h \ + ../../private/qquickabstractstyle.cpp imagedirs += images diff --git a/src/private/Style.qml b/src/private/Style.qml index 990f61dd7..6b4c08ef7 100644 --- a/src/private/Style.qml +++ b/src/private/Style.qml @@ -39,6 +39,7 @@ ****************************************************************************/ import QtQuick 2.1 import QtQuick.Controls 1.0 +import QtQuick.Controls.Private 1.0 /*! \qmltype Style @@ -46,7 +47,7 @@ import QtQuick.Controls 1.0 \inqmlmodule QtQuick.Controls.Private 1.0 */ -QtObject { +AbstractStyle { /*! The control attached to this style */ readonly property Item control: __control diff --git a/src/private/plugin.cpp b/src/private/plugin.cpp index 17bfed07f..e33c2d375 100644 --- a/src/private/plugin.cpp +++ b/src/private/plugin.cpp @@ -45,7 +45,7 @@ #include "qquicktooltip_p.h" #include "qquickcontrolsettings_p.h" #include "qquickspinboxvalidator_p.h" -#include "qquickpaddedstyle_p.h" +#include "qquickabstractstyle_p.h" #ifndef QT_NO_WIDGETS #include "qquickstyleitem_p.h" @@ -81,7 +81,7 @@ public: void QtQuickControlsPrivatePlugin::registerTypes(const char *uri) { - qmlRegisterType<QQuickPaddedStyle>(uri, 1, 0, "PaddedStyle"); + qmlRegisterType<QQuickAbstractStyle>(uri, 1, 0, "AbstractStyle"); qmlRegisterType<QQuickPadding>(); qmlRegisterType<QQuickRangeModel>(uri, 1, 0, "RangeModel"); qmlRegisterType<QQuickWheelArea>(uri, 1, 0, "WheelArea"); diff --git a/src/private/private.pro b/src/private/private.pro index cbb08a80a..803b703f4 100644 --- a/src/private/private.pro +++ b/src/private/private.pro @@ -10,7 +10,7 @@ HEADERS += \ $$PWD/qquickrangemodel_p_p.h \ $$PWD/qquickcontrolsettings_p.h \ $$PWD/qquickwheelarea_p.h \ - $$PWD/qquickpaddedstyle_p.h \ + $$PWD/qquickabstractstyle_p.h \ $$PWD/qquickpadding_p.h SOURCES += \ @@ -20,7 +20,7 @@ SOURCES += \ $$PWD/qquickrangemodel.cpp \ $$PWD/qquickcontrolsettings.cpp \ $$PWD/qquickwheelarea.cpp \ - $$PWD/qquickpaddedstyle.cpp + $$PWD/qquickabstractstyle.cpp # private qml files QML_FILES += \ diff --git a/src/private/qquickpaddedstyle.cpp b/src/private/qquickabstractstyle.cpp similarity index 58% rename from src/private/qquickpaddedstyle.cpp rename to src/private/qquickabstractstyle.cpp index 320a3f535..eba57b03b 100644 --- a/src/private/qquickpaddedstyle.cpp +++ b/src/private/qquickabstractstyle.cpp @@ -39,30 +39,60 @@ ** ****************************************************************************/ -#include "qquickpaddedstyle_p.h" -#include "qquickpadding_p.h" +#include "qquickabstractstyle_p.h" + +QT_BEGIN_NAMESPACE /*! - \qmltype PaddedStyle - \instantiates QQuickPaddedStyle + \qmltype AbstractStyle + \instantiates QQuickAbstractStyle \qmlabstract \internal */ -QT_BEGIN_NAMESPACE +/*! + \qmlproperty int AbstractStyle::padding.top + \qmlproperty int AbstractStyle::padding.left + \qmlproperty int AbstractStyle::padding.right + \qmlproperty int AbstractStyle::padding.bottom + + This grouped property holds the \c top, \c left, \c right and \c bottom padding. +*/ -QQuickPaddedStyle::QQuickPaddedStyle(QQuickItem *parent) : - QQuickItem(parent) +QQuickAbstractStyle::QQuickAbstractStyle(QObject *parent) : QObject(parent) { } -/*! - \qmlproperty int PaddedStyle::padding.top - \qmlproperty int PaddedStyle::padding.left - \qmlproperty int PaddedStyle::padding.right - \qmlproperty int PaddedStyle::padding.bottom +QQmlListProperty<QObject> QQuickAbstractStyle::data() +{ + return QQmlListProperty<QObject>(this, 0, &QQuickAbstractStyle::data_append, &QQuickAbstractStyle::data_count, + &QQuickAbstractStyle::data_at, &QQuickAbstractStyle::data_clear); +} - This grouped property holds the \c top, \c left, \c right and \c bottom padding. -*/ +void QQuickAbstractStyle::data_append(QQmlListProperty<QObject> *list, QObject *object) +{ + if (QQuickAbstractStyle *style = qobject_cast<QQuickAbstractStyle *>(list->object)) + style->m_data.append(object); +} + +int QQuickAbstractStyle::data_count(QQmlListProperty<QObject> *list) +{ + if (QQuickAbstractStyle *style = qobject_cast<QQuickAbstractStyle *>(list->object)) + return style->m_data.count(); + return 0; +} + +QObject *QQuickAbstractStyle::data_at(QQmlListProperty<QObject> *list, int index) +{ + if (QQuickAbstractStyle *style = qobject_cast<QQuickAbstractStyle *>(list->object)) + return style->m_data.at(index); + return 0; +} + +void QQuickAbstractStyle::data_clear(QQmlListProperty<QObject> *list) +{ + if (QQuickAbstractStyle *style = qobject_cast<QQuickAbstractStyle *>(list->object)) + style->m_data.clear(); +} QT_END_NAMESPACE diff --git a/src/private/qquickpaddedstyle_p.h b/src/private/qquickabstractstyle_p.h similarity index 76% rename from src/private/qquickpaddedstyle_p.h rename to src/private/qquickabstractstyle_p.h index 1a5a3c95d..137640535 100644 --- a/src/private/qquickpaddedstyle_p.h +++ b/src/private/qquickabstractstyle_p.h @@ -39,29 +39,40 @@ ** ****************************************************************************/ -#ifndef QQUICKPADDEDSTYLE_H -#define QQUICKPADDEDSTYLE_H +#ifndef QQUICKABSTRACTSTYLE_H +#define QQUICKABSTRACTSTYLE_H -#include <QtQuick/QQuickItem> -#include <QtQml/QQmlListProperty> +#include <QtCore/qobject.h> +#include <QtQml/qqmllist.h> #include "qquickpadding_p.h" QT_BEGIN_NAMESPACE -class QQuickPaddedStyle : public QQuickItem +class QQuickAbstractStyle : public QObject { Q_OBJECT Q_PROPERTY(QQuickPadding* padding READ padding CONSTANT) + Q_PROPERTY(QQmlListProperty<QObject> data READ data DESIGNABLE false) + Q_CLASSINFO("DefaultProperty", "data") public: - QQuickPaddedStyle(QQuickItem *parent = 0); + QQuickAbstractStyle(QObject *parent = 0); + QQuickPadding* padding() { return &m_padding; } + QQmlListProperty<QObject> data(); + private: + static void data_append(QQmlListProperty<QObject> *list, QObject *object); + static int data_count(QQmlListProperty<QObject> *list); + static QObject *data_at(QQmlListProperty<QObject> *list, int index); + static void data_clear(QQmlListProperty<QObject> *list); + QQuickPadding m_padding; + QList<QObject *> m_data; }; QT_END_NAMESPACE -#endif // QQUICKPADDEDSTYLE_H +#endif // QQUICKABSTRACTSTYLE_H diff --git a/src/styles/Base/ButtonStyle.qml b/src/styles/Base/ButtonStyle.qml index 5674c1188..fe37d1708 100644 --- a/src/styles/Base/ButtonStyle.qml +++ b/src/styles/Base/ButtonStyle.qml @@ -72,7 +72,7 @@ import QtQuick.Controls.Private 1.0 If you need a custom label, you can replace the label item. */ -PaddedStyle { +Style { id: buttonstyle /*! The \l Button attached to this style. */ diff --git a/src/styles/Base/CheckBoxStyle.qml b/src/styles/Base/CheckBoxStyle.qml index b10b28591..4311c6294 100644 --- a/src/styles/Base/CheckBoxStyle.qml +++ b/src/styles/Base/CheckBoxStyle.qml @@ -72,7 +72,7 @@ import QtQuick.Controls.Private 1.0 } \endqml */ -PaddedStyle { +Style { id: checkboxStyle /*! The \l CheckBox attached to this style. */ diff --git a/src/styles/Base/ComboBoxStyle.qml b/src/styles/Base/ComboBoxStyle.qml index 5643d50f0..08382f159 100644 --- a/src/styles/Base/ComboBoxStyle.qml +++ b/src/styles/Base/ComboBoxStyle.qml @@ -49,7 +49,7 @@ import QtQuick.Controls.Private 1.0 \brief Provides custom styling for ComboBox */ -PaddedStyle { +Style { /*! \internal */ property var __syspal: SystemPalette { diff --git a/src/styles/Base/GroupBoxStyle.qml b/src/styles/Base/GroupBoxStyle.qml index 86fc83fe2..db0c3bf6d 100644 --- a/src/styles/Base/GroupBoxStyle.qml +++ b/src/styles/Base/GroupBoxStyle.qml @@ -47,7 +47,7 @@ import QtQuick.Controls.Private 1.0 \inqmlmodule QtQuick.Controls.Styles 1.0 \since QtQuick.Controls.Styles 1.0 */ -PaddedStyle { +Style { /*! \internal */ property var __syspal: SystemPalette { diff --git a/src/styles/Base/ProgressBarStyle.qml b/src/styles/Base/ProgressBarStyle.qml index c93a63565..eab286f09 100644 --- a/src/styles/Base/ProgressBarStyle.qml +++ b/src/styles/Base/ProgressBarStyle.qml @@ -71,7 +71,7 @@ import QtQuick.Controls.Private 1.0 \endqml */ -PaddedStyle { +Style { id: progressBarStyle /*! \internal */ diff --git a/src/styles/Base/RadioButtonStyle.qml b/src/styles/Base/RadioButtonStyle.qml index 614a95370..f8fdb6472 100644 --- a/src/styles/Base/RadioButtonStyle.qml +++ b/src/styles/Base/RadioButtonStyle.qml @@ -72,7 +72,7 @@ import QtQuick.Controls.Private 1.0 \endqml */ -PaddedStyle { +Style { id: radiobuttonStyle /*! \internal */ diff --git a/src/styles/Base/ScrollViewStyle.qml b/src/styles/Base/ScrollViewStyle.qml index b1fe789f1..fb65fe2cc 100644 --- a/src/styles/Base/ScrollViewStyle.qml +++ b/src/styles/Base/ScrollViewStyle.qml @@ -47,7 +47,7 @@ import QtQuick.Controls.Private 1.0 \since QtQuick.Controls.Styles 1.0 \brief Provides custom styling for ScrollView */ -PaddedStyle { +Style { id: root /*! \internal */ diff --git a/src/styles/Base/SliderStyle.qml b/src/styles/Base/SliderStyle.qml index 7870e2f2a..a17de0a1f 100644 --- a/src/styles/Base/SliderStyle.qml +++ b/src/styles/Base/SliderStyle.qml @@ -78,7 +78,7 @@ import QtQuick.Controls.Private 1.0 } \endqml */ -PaddedStyle { +Style { id: styleitem /*! \internal */ diff --git a/src/styles/Base/SpinBoxStyle.qml b/src/styles/Base/SpinBoxStyle.qml index 6280ea93e..c239483e2 100644 --- a/src/styles/Base/SpinBoxStyle.qml +++ b/src/styles/Base/SpinBoxStyle.qml @@ -49,7 +49,7 @@ import QtQuick.Controls.Private 1.0 \brief Provides custom styling for SpinBox */ -PaddedStyle { +Style { id: spinboxStyle /*! The \l SpinBox attached to this style. */ diff --git a/src/styles/Base/TextFieldStyle.qml b/src/styles/Base/TextFieldStyle.qml index 3c1a10a69..7b0ba6b2a 100644 --- a/src/styles/Base/TextFieldStyle.qml +++ b/src/styles/Base/TextFieldStyle.qml @@ -64,7 +64,7 @@ import QtQuick.Controls.Private 1.0 \endqml */ -PaddedStyle { +Style { id: style /*! \internal */ diff --git a/src/styles/Desktop/GroupBoxStyle.qml b/src/styles/Desktop/GroupBoxStyle.qml index 2348e6631..81d6de86f 100644 --- a/src/styles/Desktop/GroupBoxStyle.qml +++ b/src/styles/Desktop/GroupBoxStyle.qml @@ -42,7 +42,7 @@ import QtQuick.Controls 1.0 import QtQuick.Controls.Private 1.0 -PaddedStyle { +Style { readonly property GroupBox control: __control property var __style: StyleItem { id: style } diff --git a/src/styles/Desktop/ScrollViewStyle.qml b/src/styles/Desktop/ScrollViewStyle.qml index d504c59b6..deddc354a 100644 --- a/src/styles/Desktop/ScrollViewStyle.qml +++ b/src/styles/Desktop/ScrollViewStyle.qml @@ -42,7 +42,7 @@ import QtQuick.Controls 1.0 import QtQuick.Controls.Private 1.0 import "." as Desktop -PaddedStyle { +Style { id: root padding { diff --git a/src/styles/Desktop/SliderStyle.qml b/src/styles/Desktop/SliderStyle.qml index 1c89d21c1..fbe2cfb6d 100644 --- a/src/styles/Desktop/SliderStyle.qml +++ b/src/styles/Desktop/SliderStyle.qml @@ -40,7 +40,7 @@ import QtQuick 2.1 import QtQuick.Controls.Private 1.0 -PaddedStyle { +Style { readonly property Item control: __control property Component panel: StyleItem { elementType: "slider" diff --git a/src/styles/Desktop/SpinBoxStyle.qml b/src/styles/Desktop/SpinBoxStyle.qml index 59c20f558..2f05838e9 100644 --- a/src/styles/Desktop/SpinBoxStyle.qml +++ b/src/styles/Desktop/SpinBoxStyle.qml @@ -41,7 +41,7 @@ import QtQuick 2.1 import QtQuick.Controls 1.0 import QtQuick.Controls.Private 1.0 -PaddedStyle { +Style { readonly property SpinBox control: __control property var __syspal: SystemPalette { -- GitLab