diff --git a/src/controls/ScrollView.qml b/src/controls/ScrollView.qml index efa6e631b206cbf81d5879b67c1876314a32d272..0af69a0ded9569f195975f9525d68fdab5e44c1f 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 c04bced2c4807ef2f30acedf4bdee562e24085f1..1f6925976b1e8dedf00194f9610a8090078c7c40 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 990f61dd7b46c71a6b7a86c320ba94d594606558..6b4c08ef7dd471880b4c5de459eb49c4137479bc 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 17bfed07fb8d9577b44dd4bc764e6ca183023bb9..e33c2d375dcf87d1222756986e32d26241c1e93e 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 cbb08a80a87f5f0328ad16d651faa5b02928a36c..803b703f4a9569ed1862c0a506bee52a7c69f586 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 320a3f535426c805e8124fd64003b1fbfbaf79ed..eba57b03b2d6f717af32d34b4bf360ed68ca7a28 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 1a5a3c95d378ee20d0e363da5b067107f770ea70..137640535c5661144c723dfe42b09554079def55 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 5674c1188615bc69c1bcdaf878de94dfcbaef3bc..fe37d17088d51b7743e4462018a667c6112f4c3f 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 b10b285913f5eddae634936c37ce73cc29954869..4311c62944c70ebc64931f19c1bb62590794a32b 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 5643d50f03341026a65769004d1519328426b922..08382f1598d5fd613458cfd2bca66853b80fec74 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 86fc83fe26d2368309ebd71da8af05a58e70bf19..db0c3bf6d3a4cb631833e324fedb4aa85c97d868 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 c93a63565fc86c1234122cf2b7c43e34b2a92b3a..eab286f09d50dd89b824c4cfeb952a051247bdd2 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 614a953701d6fa32b71159c6e65b998ac3aa8e75..f8fdb64721505cf1358f719787ce99f543c189cb 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 b1fe789f16bc3939e14eaf584816aca13ba68dc2..fb65fe2cc04465108d84a7fea5efce498eeab695 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 7870e2f2af67a2755593498a760aebbdfb765ae8..a17de0a1fda88de976a3c3c87bfd44907b63468c 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 6280ea93ed8a632407f3fe9a1708c17c79746150..c239483e2feac9a1c65a1a148839495803d7d6dd 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 3c1a10a6906733d30d99a51e6cada29ba17c73bf..7b0ba6b2ad9930986c27391213e206106fc2881e 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 2348e66316ac10941ad0389d89f0af25b7355e80..81d6de86f44da8a75c956e9ddec45ae7319bf4b8 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 d504c59b6915183751ede9bfcd23ae4df33211ca..deddc354a6ea940322f02e5cfcd1372b98ac6256 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 1c89d21c1502febcfbe94f40c4836804c20ccf77..fbe2cfb6d8a337232697d90fe9843c6f6dfc604c 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 59c20f5581b21bad4541236ac37bb034faea5f3e..2f05838e9675a70932715b7c85454d9492dfbc1c 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 {