diff options
167 files changed, 1361 insertions, 411 deletions
@@ -26,6 +26,7 @@ /tests/manual/testbench/testbench /tests/auto/snippets/screenshots/*.png +/tests/manual/gifs/gifs/*.gif /src/templates/QtLabsTemplates.version *.so diff --git a/src/controls/qquickstyle.cpp b/src/controls/qquickstyle.cpp index 6de4c7a2..7fd6a2f0 100644 --- a/src/controls/qquickstyle.cpp +++ b/src/controls/qquickstyle.cpp @@ -44,8 +44,6 @@ QT_BEGIN_NAMESPACE -static const char *SettingsFilePath = ":/qtlabscontrols.conf"; - static QQuickStyle *attachedStyle(const QMetaObject *type, QObject *object, bool create = false) { if (!object) @@ -63,33 +61,40 @@ static QQuickStyle *findParentStyle(const QMetaObject *type, QObject *parent) if (style) return style; + // lookup object parent (window/popup) + QObject *grandParent = parent->parent(); + if (grandParent) { + QQuickStyle *style = findParentStyle(type, grandParent); + if (style) + return style; + } + QQuickItem *item = qobject_cast<QQuickItem *>(parent); if (item) { // lookup parent items QQuickItem *parent = item->parentItem(); - if (parent) - return findParentStyle(type, parent); + if (parent) { + QQuickStyle *style = findParentStyle(type, parent); + if (style) + return style; + } // fallback to item's window - return findParentStyle(type, item->window()); + QQuickStyle *style = findParentStyle(type, item->window()); + if (style) + return style; } - // lookup object parent (window/popup) - if (parent->parent()) - return findParentStyle(type, parent->parent()); - // fallback to engine (global) - if (parent) { - QQmlEngine *engine = qmlEngine(parent); - if (engine) { - QByteArray name = QByteArray("_q_") + type->className(); - QQuickStyle *style = engine->property(name).value<QQuickStyle*>(); - if (!style) { - style = attachedStyle(type, engine, true); - engine->setProperty(name, QVariant::fromValue(style)); - } - return style; + QQmlEngine *engine = qmlEngine(parent); + if (engine) { + QByteArray name = QByteArray("_q_") + type->className(); + QQuickStyle *style = engine->property(name).value<QQuickStyle*>(); + if (!style) { + style = attachedStyle(type, engine, true); + engine->setProperty(name, QVariant::fromValue(style)); } + return style; } return Q_NULLPTR; @@ -166,7 +171,7 @@ QQuickStyle::~QQuickStyle() QSharedPointer<QSettings> QQuickStyle::settings(const QString &group) { #ifndef QT_NO_SETTINGS - const QString filePath = QLatin1String(SettingsFilePath); + const QString filePath = QStringLiteral(":/qtlabscontrols.conf"); if (QFile::exists(filePath)) { QFileSelector selector; QSettings *settings = new QSettings(selector.select(filePath), QSettings::IniFormat); @@ -203,14 +208,16 @@ void QQuickStyle::setParentStyle(QQuickStyle *style) void QQuickStyle::init() { - if (!parent()) + QObject *parent = QObject::parent(); + if (!parent) return; - QQuickStyle *parentStyle = findParentStyle(metaObject(), parent()->parent()); + QQuickItem *parentItem = qobject_cast<QQuickItem *>(parent); + QQuickStyle *parentStyle = findParentStyle(metaObject(), parentItem ? parentItem->parentItem() : parent->parent()); if (parentStyle) setParentStyle(parentStyle); - const QList<QQuickStyle *> children = findChildStyles(metaObject(), parent()); + const QList<QQuickStyle *> children = findChildStyles(metaObject(), parent); for (QQuickStyle *child : children) child->setParentStyle(this); } diff --git a/src/controls/qquickstyleselector.cpp b/src/controls/qquickstyleselector.cpp index 3be5eb3d..b169ade2 100644 --- a/src/controls/qquickstyleselector.cpp +++ b/src/controls/qquickstyleselector.cpp @@ -82,9 +82,9 @@ QString QQuickStyleSelector::select(const QString &filePath) const static bool isLocalScheme(const QString &file) { - bool local = file == QStringLiteral("qrc"); + bool local = file == QLatin1String("qrc"); #ifdef Q_OS_ANDROID - local |= file == QStringLiteral("assets"); + local |= file == QLatin1String("assets"); #endif return local; } diff --git a/src/imports/controls/Page.qml b/src/imports/controls/Page.qml new file mode 100644 index 00000000..37eb57d0 --- /dev/null +++ b/src/imports/controls/Page.qml @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Labs Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.6 +import Qt.labs.templates 1.0 as T + +T.Page { + id: control + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: "#ffffff" + } + //! [background] +} diff --git a/src/imports/controls/ProgressBar.qml b/src/imports/controls/ProgressBar.qml index 112f3afb..795fd231 100644 --- a/src/imports/controls/ProgressBar.qml +++ b/src/imports/controls/ProgressBar.qml @@ -50,9 +50,9 @@ T.ProgressBar { indicator: ProgressStrip { id: strip x: control.leftPadding - y: control.topPadding + y: control.topPadding + (control.availableHeight - height) / 2 width: control.availableWidth - height: control.availableHeight + height: 6 scale: control.mirrored ? -1 : 1 progress: control.position indeterminate: control.indeterminate diff --git a/src/imports/controls/ToolBar.qml b/src/imports/controls/ToolBar.qml index 3d3fc74c..fe5dbf3f 100644 --- a/src/imports/controls/ToolBar.qml +++ b/src/imports/controls/ToolBar.qml @@ -52,7 +52,7 @@ T.ToolBar { //! [background] background: Rectangle { - implicitHeight: 26 + implicitHeight: 40 color: "#eeeeee" } //! [background] diff --git a/src/imports/controls/ToolButton.qml b/src/imports/controls/ToolButton.qml index d2b948da..314ce966 100644 --- a/src/imports/controls/ToolButton.qml +++ b/src/imports/controls/ToolButton.qml @@ -66,8 +66,8 @@ T.ToolButton { //! [background] background: Rectangle { - implicitWidth: 26 - implicitHeight: 26 + implicitWidth: 40 + implicitHeight: 40 color: Qt.darker("#33333333", control.enabled && (control.checked || control.highlighted) ? 1.5 : 1.0) opacity: control.pressed ? 1.0 : control.enabled && (control.checked || control.highlighted) ? 0.5 : 0 diff --git a/src/imports/controls/controls.pri b/src/imports/controls/controls.pri index 16ad7f24..32e86f3a 100644 --- a/src/imports/controls/controls.pri +++ b/src/imports/controls/controls.pri @@ -12,8 +12,9 @@ QML_CONTROLS = \ Label.qml \ Menu.qml \ MenuItem.qml \ - Pane.qml \ + Page.qml \ PageIndicator.qml \ + Pane.qml \ Popup.qml \ ProgressBar.qml \ RadioButton.qml \ diff --git a/src/imports/controls/doc/images/qtlabscalendar-calendarmodel.png b/src/imports/controls/doc/images/qtlabscalendar-calendarmodel.png Binary files differnew file mode 100644 index 00000000..2bdff335 --- /dev/null +++ b/src/imports/controls/doc/images/qtlabscalendar-calendarmodel.png diff --git a/src/imports/controls/doc/images/qtlabscalendar-dayofweekrow-layout.png b/src/imports/controls/doc/images/qtlabscalendar-dayofweekrow-layout.png Binary files differindex fd4dc065..e0d7ca33 100644 --- a/src/imports/controls/doc/images/qtlabscalendar-dayofweekrow-layout.png +++ b/src/imports/controls/doc/images/qtlabscalendar-dayofweekrow-layout.png diff --git a/src/imports/controls/doc/images/qtlabscalendar-dayofweekrow.png b/src/imports/controls/doc/images/qtlabscalendar-dayofweekrow.png Binary files differindex 2d650a88..7b955c88 100644 --- a/src/imports/controls/doc/images/qtlabscalendar-dayofweekrow.png +++ b/src/imports/controls/doc/images/qtlabscalendar-dayofweekrow.png diff --git a/src/imports/controls/doc/images/qtlabscalendar-monthgrid-layout.png b/src/imports/controls/doc/images/qtlabscalendar-monthgrid-layout.png Binary files differindex c5182644..ae5db0c1 100644 --- a/src/imports/controls/doc/images/qtlabscalendar-monthgrid-layout.png +++ b/src/imports/controls/doc/images/qtlabscalendar-monthgrid-layout.png diff --git a/src/imports/controls/doc/images/qtlabscalendar-monthgrid.png b/src/imports/controls/doc/images/qtlabscalendar-monthgrid.png Binary files differindex 79d0ebc0..13495d05 100644 --- a/src/imports/controls/doc/images/qtlabscalendar-monthgrid.png +++ b/src/imports/controls/doc/images/qtlabscalendar-monthgrid.png diff --git a/src/imports/controls/doc/images/qtlabscalendar-weeknumbercolumn-layout.png b/src/imports/controls/doc/images/qtlabscalendar-weeknumbercolumn-layout.png Binary files differindex f11be89d..09deb30e 100644 --- a/src/imports/controls/doc/images/qtlabscalendar-weeknumbercolumn-layout.png +++ b/src/imports/controls/doc/images/qtlabscalendar-weeknumbercolumn-layout.png diff --git a/src/imports/controls/doc/images/qtlabscalendar-weeknumbercolumn.png b/src/imports/controls/doc/images/qtlabscalendar-weeknumbercolumn.png Binary files differindex 07ecc9f4..db0b94f3 100644 --- a/src/imports/controls/doc/images/qtlabscalendar-weeknumbercolumn.png +++ b/src/imports/controls/doc/images/qtlabscalendar-weeknumbercolumn.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-busyindicator-background.png b/src/imports/controls/doc/images/qtlabscontrols-busyindicator-background.png Binary files differindex 3d5d3666..03cf98d0 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-busyindicator-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-busyindicator-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-busyindicator-contentItem.png b/src/imports/controls/doc/images/qtlabscontrols-busyindicator-contentItem.png Binary files differindex 4c89e096..fb14cb86 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-busyindicator-contentItem.png +++ b/src/imports/controls/doc/images/qtlabscontrols-busyindicator-contentItem.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-busyindicator.gif b/src/imports/controls/doc/images/qtlabscontrols-busyindicator.gif Binary files differindex 46633c34..31ab2d1c 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-busyindicator.gif +++ b/src/imports/controls/doc/images/qtlabscontrols-busyindicator.gif diff --git a/src/imports/controls/doc/images/qtlabscontrols-busyindicator.png b/src/imports/controls/doc/images/qtlabscontrols-busyindicator.png Binary files differindex 12a8a4f8..e631df32 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-busyindicator.png +++ b/src/imports/controls/doc/images/qtlabscontrols-busyindicator.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-button-background.png b/src/imports/controls/doc/images/qtlabscontrols-button-background.png Binary files differindex f8e9342c..c2703157 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-button-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-button-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-button-disabled.png b/src/imports/controls/doc/images/qtlabscontrols-button-disabled.png Binary files differindex 9b9d1eb3..33638d1e 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-button-disabled.png +++ b/src/imports/controls/doc/images/qtlabscontrols-button-disabled.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-button-focused.png b/src/imports/controls/doc/images/qtlabscontrols-button-focused.png Binary files differindex 172bf9fe..24d2cd06 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-button-focused.png +++ b/src/imports/controls/doc/images/qtlabscontrols-button-focused.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-button-label.png b/src/imports/controls/doc/images/qtlabscontrols-button-label.png Binary files differindex 6875fc06..73d8f2fb 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-button-label.png +++ b/src/imports/controls/doc/images/qtlabscontrols-button-label.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-button-normal.png b/src/imports/controls/doc/images/qtlabscontrols-button-normal.png Binary files differindex f59669a2..9a5ea80e 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-button-normal.png +++ b/src/imports/controls/doc/images/qtlabscontrols-button-normal.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-button-pressed.png b/src/imports/controls/doc/images/qtlabscontrols-button-pressed.png Binary files differindex c9b14992..c88d57b0 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-button-pressed.png +++ b/src/imports/controls/doc/images/qtlabscontrols-button-pressed.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-button.gif b/src/imports/controls/doc/images/qtlabscontrols-button.gif Binary files differindex 9f08f458..89dcba31 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-button.gif +++ b/src/imports/controls/doc/images/qtlabscontrols-button.gif diff --git a/src/imports/controls/doc/images/qtlabscontrols-button.png b/src/imports/controls/doc/images/qtlabscontrols-button.png Binary files differindex f0a13b8c..d8a39e55 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-button.png +++ b/src/imports/controls/doc/images/qtlabscontrols-button.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-checkbox-background.png b/src/imports/controls/doc/images/qtlabscontrols-checkbox-background.png Binary files differindex 81198821..4d24fa2f 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-checkbox-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-checkbox-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-checkbox-checked.png b/src/imports/controls/doc/images/qtlabscontrols-checkbox-checked.png Binary files differindex f44428e0..8620b0c2 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-checkbox-checked.png +++ b/src/imports/controls/doc/images/qtlabscontrols-checkbox-checked.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-checkbox-disabled.png b/src/imports/controls/doc/images/qtlabscontrols-checkbox-disabled.png Binary files differindex ca31061a..63669b29 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-checkbox-disabled.png +++ b/src/imports/controls/doc/images/qtlabscontrols-checkbox-disabled.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-checkbox-focused.png b/src/imports/controls/doc/images/qtlabscontrols-checkbox-focused.png Binary files differindex 7847fb9b..ea49c721 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-checkbox-focused.png +++ b/src/imports/controls/doc/images/qtlabscontrols-checkbox-focused.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-checkbox-indicator.png b/src/imports/controls/doc/images/qtlabscontrols-checkbox-indicator.png Binary files differindex 7c6148b6..fe6cd7a2 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-checkbox-indicator.png +++ b/src/imports/controls/doc/images/qtlabscontrols-checkbox-indicator.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-checkbox-label.png b/src/imports/controls/doc/images/qtlabscontrols-checkbox-label.png Binary files differindex 5bef6df5..d5a1ef2e 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-checkbox-label.png +++ b/src/imports/controls/doc/images/qtlabscontrols-checkbox-label.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-checkbox-normal.png b/src/imports/controls/doc/images/qtlabscontrols-checkbox-normal.png Binary files differindex 790ebc93..b185fc99 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-checkbox-normal.png +++ b/src/imports/controls/doc/images/qtlabscontrols-checkbox-normal.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-checkbox.png b/src/imports/controls/doc/images/qtlabscontrols-checkbox.png Binary files differindex af9c9e20..a824949c 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-checkbox.png +++ b/src/imports/controls/doc/images/qtlabscontrols-checkbox.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-combobox-background.png b/src/imports/controls/doc/images/qtlabscontrols-combobox-background.png Binary files differindex fa296270..1930034b 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-combobox-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-combobox-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-combobox-contentItem.png b/src/imports/controls/doc/images/qtlabscontrols-combobox-contentItem.png Binary files differindex 9b8e8175..08c7bfc8 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-combobox-contentItem.png +++ b/src/imports/controls/doc/images/qtlabscontrols-combobox-contentItem.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-combobox-delegate.png b/src/imports/controls/doc/images/qtlabscontrols-combobox-delegate.png Binary files differindex 88462185..d76776cf 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-combobox-delegate.png +++ b/src/imports/controls/doc/images/qtlabscontrols-combobox-delegate.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-combobox-popup.png b/src/imports/controls/doc/images/qtlabscontrols-combobox-popup.png Binary files differindex 0e9eacbf..5cb32247 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-combobox-popup.png +++ b/src/imports/controls/doc/images/qtlabscontrols-combobox-popup.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-combobox.png b/src/imports/controls/doc/images/qtlabscontrols-combobox.png Binary files differindex 69fc9c95..e687fb0e 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-combobox.png +++ b/src/imports/controls/doc/images/qtlabscontrols-combobox.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-dial-background.png b/src/imports/controls/doc/images/qtlabscontrols-dial-background.png Binary files differindex 38fad583..ca6c9283 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-dial-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-dial-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-dial-handle.png b/src/imports/controls/doc/images/qtlabscontrols-dial-handle.png Binary files differindex e6fd8cdc..b9a8e0d8 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-dial-handle.png +++ b/src/imports/controls/doc/images/qtlabscontrols-dial-handle.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-dial.png b/src/imports/controls/doc/images/qtlabscontrols-dial.png Binary files differindex 4d53c817..dfe37f87 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-dial.png +++ b/src/imports/controls/doc/images/qtlabscontrols-dial.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-frame-background.png b/src/imports/controls/doc/images/qtlabscontrols-frame-background.png Binary files differindex e09960fc..75ad77bd 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-frame-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-frame-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-frame-frame.png b/src/imports/controls/doc/images/qtlabscontrols-frame-frame.png Binary files differindex bfdf9c1b..a379d915 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-frame-frame.png +++ b/src/imports/controls/doc/images/qtlabscontrols-frame-frame.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-frame.png b/src/imports/controls/doc/images/qtlabscontrols-frame.png Binary files differindex b844781c..dc14acaf 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-frame.png +++ b/src/imports/controls/doc/images/qtlabscontrols-frame.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-groupbox-background.png b/src/imports/controls/doc/images/qtlabscontrols-groupbox-background.png Binary files differindex 36e9aa0f..baec44d5 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-groupbox-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-groupbox-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-groupbox-checkable.png b/src/imports/controls/doc/images/qtlabscontrols-groupbox-checkable.png Binary files differindex 8b619b5b..9b3f32b1 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-groupbox-checkable.png +++ b/src/imports/controls/doc/images/qtlabscontrols-groupbox-checkable.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-groupbox-frame.png b/src/imports/controls/doc/images/qtlabscontrols-groupbox-frame.png Binary files differindex 11b075d7..2ed75011 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-groupbox-frame.png +++ b/src/imports/controls/doc/images/qtlabscontrols-groupbox-frame.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-groupbox-label.png b/src/imports/controls/doc/images/qtlabscontrols-groupbox-label.png Binary files differindex 67ccb4c1..ea4dfb32 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-groupbox-label.png +++ b/src/imports/controls/doc/images/qtlabscontrols-groupbox-label.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-groupbox.png b/src/imports/controls/doc/images/qtlabscontrols-groupbox.png Binary files differindex 511f2ffd..c0fc92c7 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-groupbox.png +++ b/src/imports/controls/doc/images/qtlabscontrols-groupbox.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-background.png b/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-background.png Binary files differindex a311c109..8a97d8ee 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-indicator.png b/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-indicator.png Binary files differindex b458b1a0..029abb00 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-indicator.png +++ b/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-indicator.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-label.png b/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-label.png Binary files differindex 6b43db0f..89f094c6 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-label.png +++ b/src/imports/controls/doc/images/qtlabscontrols-itemdelegate-label.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-itemdelegate.png b/src/imports/controls/doc/images/qtlabscontrols-itemdelegate.png Binary files differnew file mode 100644 index 00000000..456a0d55 --- /dev/null +++ b/src/imports/controls/doc/images/qtlabscontrols-itemdelegate.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-label-background.png b/src/imports/controls/doc/images/qtlabscontrols-label-background.png Binary files differindex ecd081df..34a638d6 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-label-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-label-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-label.png b/src/imports/controls/doc/images/qtlabscontrols-label.png Binary files differindex c4c53871..961ce3e3 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-label.png +++ b/src/imports/controls/doc/images/qtlabscontrols-label.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-menu-contentItem.png b/src/imports/controls/doc/images/qtlabscontrols-menu-contentItem.png Binary files differindex e16e196e..4dcf1fac 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-menu-contentItem.png +++ b/src/imports/controls/doc/images/qtlabscontrols-menu-contentItem.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-menu.gif b/src/imports/controls/doc/images/qtlabscontrols-menu.gif Binary files differnew file mode 100644 index 00000000..93a873a3 --- /dev/null +++ b/src/imports/controls/doc/images/qtlabscontrols-menu.gif diff --git a/src/imports/controls/doc/images/qtlabscontrols-menu.png b/src/imports/controls/doc/images/qtlabscontrols-menu.png Binary files differindex b782b9fe..b6446d39 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-menu.png +++ b/src/imports/controls/doc/images/qtlabscontrols-menu.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-page-wireframe.png b/src/imports/controls/doc/images/qtlabscontrols-page-wireframe.png Binary files differnew file mode 100644 index 00000000..d45ae400 --- /dev/null +++ b/src/imports/controls/doc/images/qtlabscontrols-page-wireframe.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-pane.png b/src/imports/controls/doc/images/qtlabscontrols-pane.png Binary files differindex ba0c0479..fe534424 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-pane.png +++ b/src/imports/controls/doc/images/qtlabscontrols-pane.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-progressbar-background.png b/src/imports/controls/doc/images/qtlabscontrols-progressbar-background.png Binary files differindex 0fd77835..59e81b2b 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-progressbar-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-progressbar-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-progressbar-disabled.png b/src/imports/controls/doc/images/qtlabscontrols-progressbar-disabled.png Binary files differindex 4baf5c83..9ce19e92 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-progressbar-disabled.png +++ b/src/imports/controls/doc/images/qtlabscontrols-progressbar-disabled.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-progressbar-indicator.png b/src/imports/controls/doc/images/qtlabscontrols-progressbar-indicator.png Binary files differindex 02e888ed..9ce19e92 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-progressbar-indicator.png +++ b/src/imports/controls/doc/images/qtlabscontrols-progressbar-indicator.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-progressbar-normal.png b/src/imports/controls/doc/images/qtlabscontrols-progressbar-normal.png Binary files differindex 783d721d..9ce19e92 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-progressbar-normal.png +++ b/src/imports/controls/doc/images/qtlabscontrols-progressbar-normal.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-background.png b/src/imports/controls/doc/images/qtlabscontrols-radiobutton-background.png Binary files differindex 3ee9590e..30295394 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-radiobutton-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-checked.png b/src/imports/controls/doc/images/qtlabscontrols-radiobutton-checked.png Binary files differindex 9f71b6b6..8f5af513 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-checked.png +++ b/src/imports/controls/doc/images/qtlabscontrols-radiobutton-checked.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-disabled.png b/src/imports/controls/doc/images/qtlabscontrols-radiobutton-disabled.png Binary files differindex f7fbcb7c..626cd616 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-disabled.png +++ b/src/imports/controls/doc/images/qtlabscontrols-radiobutton-disabled.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-focused.png b/src/imports/controls/doc/images/qtlabscontrols-radiobutton-focused.png Binary files differindex dfb8d51e..797e50a9 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-focused.png +++ b/src/imports/controls/doc/images/qtlabscontrols-radiobutton-focused.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-indicator.png b/src/imports/controls/doc/images/qtlabscontrols-radiobutton-indicator.png Binary files differindex f9e91709..0d78a0d5 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-indicator.png +++ b/src/imports/controls/doc/images/qtlabscontrols-radiobutton-indicator.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-label.png b/src/imports/controls/doc/images/qtlabscontrols-radiobutton-label.png Binary files differindex 16c0ee08..457555b7 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-label.png +++ b/src/imports/controls/doc/images/qtlabscontrols-radiobutton-label.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-normal.png b/src/imports/controls/doc/images/qtlabscontrols-radiobutton-normal.png Binary files differindex 5a2d4bca..f8d0828b 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-radiobutton-normal.png +++ b/src/imports/controls/doc/images/qtlabscontrols-radiobutton-normal.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-radiobutton.png b/src/imports/controls/doc/images/qtlabscontrols-radiobutton.png Binary files differindex 74f7cc73..6c217968 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-radiobutton.png +++ b/src/imports/controls/doc/images/qtlabscontrols-radiobutton.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-background.png b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-background.png Binary files differindex 5b3c603b..c045fdbb 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-disabled.png b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-disabled.png Binary files differindex 0194a240..abb033c2 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-disabled.png +++ b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-disabled.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-first-handle-focused.png b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-first-handle-focused.png Binary files differindex 390a6399..abb033c2 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-first-handle-focused.png +++ b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-first-handle-focused.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-first-handle.png b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-first-handle.png Binary files differindex e04ed6df..fb246db3 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-first-handle.png +++ b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-first-handle.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-normal.png b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-normal.png Binary files differindex 7032728a..abb033c2 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-normal.png +++ b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-normal.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-second-handle-focused.png b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-second-handle-focused.png Binary files differindex 803f8141..abb033c2 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-second-handle-focused.png +++ b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-second-handle-focused.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-second-handle.png b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-second-handle.png Binary files differindex 0fe3d630..a33a6de2 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-second-handle.png +++ b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-second-handle.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-track.png b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-track.png Binary files differindex 685a9d44..63da8673 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider-track.png +++ b/src/imports/controls/doc/images/qtlabscontrols-rangeslider-track.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider.gif b/src/imports/controls/doc/images/qtlabscontrols-rangeslider.gif Binary files differindex a885d529..394e8085 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider.gif +++ b/src/imports/controls/doc/images/qtlabscontrols-rangeslider.gif diff --git a/src/imports/controls/doc/images/qtlabscontrols-rangeslider.png b/src/imports/controls/doc/images/qtlabscontrols-rangeslider.png Binary files differindex c7772a40..abb033c2 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-rangeslider.png +++ b/src/imports/controls/doc/images/qtlabscontrols-rangeslider.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-scrollbar-background.png b/src/imports/controls/doc/images/qtlabscontrols-scrollbar-background.png Binary files differindex 770f546c..0b1aa171 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-scrollbar-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-scrollbar-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-scrollbar-handle.png b/src/imports/controls/doc/images/qtlabscontrols-scrollbar-handle.png Binary files differindex aafa90a7..5d916e66 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-scrollbar-handle.png +++ b/src/imports/controls/doc/images/qtlabscontrols-scrollbar-handle.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-scrollbar.png b/src/imports/controls/doc/images/qtlabscontrols-scrollbar.png Binary files differindex 65db9ad8..b1abafb5 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-scrollbar.png +++ b/src/imports/controls/doc/images/qtlabscontrols-scrollbar.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-scrollindicator-background.png b/src/imports/controls/doc/images/qtlabscontrols-scrollindicator-background.png Binary files differindex e8947aa0..e9fa04c7 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-scrollindicator-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-scrollindicator-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-scrollindicator-indicator.png b/src/imports/controls/doc/images/qtlabscontrols-scrollindicator-indicator.png Binary files differindex 9d969f16..99266362 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-scrollindicator-indicator.png +++ b/src/imports/controls/doc/images/qtlabscontrols-scrollindicator-indicator.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-slider-background.png b/src/imports/controls/doc/images/qtlabscontrols-slider-background.png Binary files differindex 35fb12ca..23a754c3 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-slider-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-slider-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-slider-disabled.png b/src/imports/controls/doc/images/qtlabscontrols-slider-disabled.png Binary files differindex 7d4584f8..2e27a604 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-slider-disabled.png +++ b/src/imports/controls/doc/images/qtlabscontrols-slider-disabled.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-slider-focused.png b/src/imports/controls/doc/images/qtlabscontrols-slider-focused.png Binary files differindex 7f9ad18b..2e27a604 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-slider-focused.png +++ b/src/imports/controls/doc/images/qtlabscontrols-slider-focused.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-slider-handle.png b/src/imports/controls/doc/images/qtlabscontrols-slider-handle.png Binary files differindex 7878e0f8..7729ef07 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-slider-handle.png +++ b/src/imports/controls/doc/images/qtlabscontrols-slider-handle.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-slider-normal.png b/src/imports/controls/doc/images/qtlabscontrols-slider-normal.png Binary files differindex dac102de..2e27a604 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-slider-normal.png +++ b/src/imports/controls/doc/images/qtlabscontrols-slider-normal.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-slider-track.png b/src/imports/controls/doc/images/qtlabscontrols-slider-track.png Binary files differindex 868fa420..09869bf1 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-slider-track.png +++ b/src/imports/controls/doc/images/qtlabscontrols-slider-track.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-slider.gif b/src/imports/controls/doc/images/qtlabscontrols-slider.gif Binary files differindex 59c94796..7cb84b56 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-slider.gif +++ b/src/imports/controls/doc/images/qtlabscontrols-slider.gif diff --git a/src/imports/controls/doc/images/qtlabscontrols-slider.png b/src/imports/controls/doc/images/qtlabscontrols-slider.png Binary files differindex 9cbb194b..2e27a604 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-slider.png +++ b/src/imports/controls/doc/images/qtlabscontrols-slider.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-spinbox-background.png b/src/imports/controls/doc/images/qtlabscontrols-spinbox-background.png Binary files differindex 0224e6f1..74fbab6e 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-spinbox-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-spinbox-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-spinbox-contentItem.png b/src/imports/controls/doc/images/qtlabscontrols-spinbox-contentItem.png Binary files differindex 0e39d92f..81d549c0 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-spinbox-contentItem.png +++ b/src/imports/controls/doc/images/qtlabscontrols-spinbox-contentItem.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-spinbox-down.png b/src/imports/controls/doc/images/qtlabscontrols-spinbox-down.png Binary files differindex a6bbecdf..e7c43101 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-spinbox-down.png +++ b/src/imports/controls/doc/images/qtlabscontrols-spinbox-down.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-spinbox-textual.png b/src/imports/controls/doc/images/qtlabscontrols-spinbox-textual.png Binary files differindex abf4c7f2..4361c492 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-spinbox-textual.png +++ b/src/imports/controls/doc/images/qtlabscontrols-spinbox-textual.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-spinbox-up.png b/src/imports/controls/doc/images/qtlabscontrols-spinbox-up.png Binary files differindex 3c6c870b..b9992471 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-spinbox-up.png +++ b/src/imports/controls/doc/images/qtlabscontrols-spinbox-up.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-spinbox.png b/src/imports/controls/doc/images/qtlabscontrols-spinbox.png Binary files differindex 39fa813a..909fbda6 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-spinbox.png +++ b/src/imports/controls/doc/images/qtlabscontrols-spinbox.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-swipeview-indicator.png b/src/imports/controls/doc/images/qtlabscontrols-swipeview-indicator.png Binary files differnew file mode 100644 index 00000000..91786964 --- /dev/null +++ b/src/imports/controls/doc/images/qtlabscontrols-swipeview-indicator.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch-background.png b/src/imports/controls/doc/images/qtlabscontrols-switch-background.png Binary files differindex 5b10cffd..c3cf20f3 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-switch-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-switch-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch-checked.png b/src/imports/controls/doc/images/qtlabscontrols-switch-checked.png Binary files differindex 88036efb..7c678417 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-switch-checked.png +++ b/src/imports/controls/doc/images/qtlabscontrols-switch-checked.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch-disabled.png b/src/imports/controls/doc/images/qtlabscontrols-switch-disabled.png Binary files differindex bf266c52..15ff76e6 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-switch-disabled.png +++ b/src/imports/controls/doc/images/qtlabscontrols-switch-disabled.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch-focused.png b/src/imports/controls/doc/images/qtlabscontrols-switch-focused.png Binary files differindex 84108e3f..9e973d0e 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-switch-focused.png +++ b/src/imports/controls/doc/images/qtlabscontrols-switch-focused.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch-indicator.png b/src/imports/controls/doc/images/qtlabscontrols-switch-indicator.png Binary files differindex 97e236a2..02b88dde 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-switch-indicator.png +++ b/src/imports/controls/doc/images/qtlabscontrols-switch-indicator.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch-label.png b/src/imports/controls/doc/images/qtlabscontrols-switch-label.png Binary files differindex 9fc5ad3b..50f608ab 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-switch-label.png +++ b/src/imports/controls/doc/images/qtlabscontrols-switch-label.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch-normal.png b/src/imports/controls/doc/images/qtlabscontrols-switch-normal.png Binary files differindex 0297e98e..aac440a0 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-switch-normal.png +++ b/src/imports/controls/doc/images/qtlabscontrols-switch-normal.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch.gif b/src/imports/controls/doc/images/qtlabscontrols-switch.gif Binary files differindex b2e1b548..5f956304 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-switch.gif +++ b/src/imports/controls/doc/images/qtlabscontrols-switch.gif diff --git a/src/imports/controls/doc/images/qtlabscontrols-switch.png b/src/imports/controls/doc/images/qtlabscontrols-switch.png Binary files differindex 5c8901c4..b9d0812e 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-switch.png +++ b/src/imports/controls/doc/images/qtlabscontrols-switch.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-tabbar.gif b/src/imports/controls/doc/images/qtlabscontrols-tabbar.gif Binary files differnew file mode 100644 index 00000000..0dccecb3 --- /dev/null +++ b/src/imports/controls/doc/images/qtlabscontrols-tabbar.gif diff --git a/src/imports/controls/doc/images/qtlabscontrols-tabbar.png b/src/imports/controls/doc/images/qtlabscontrols-tabbar.png Binary files differindex e3f9d3cd..100092f8 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-tabbar.png +++ b/src/imports/controls/doc/images/qtlabscontrols-tabbar.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-tabbutton.png b/src/imports/controls/doc/images/qtlabscontrols-tabbutton.png Binary files differindex 1e2948f1..ab05c1db 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-tabbutton.png +++ b/src/imports/controls/doc/images/qtlabscontrols-tabbutton.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-textarea.png b/src/imports/controls/doc/images/qtlabscontrols-textarea.png Binary files differindex b4183df9..f468bfd4 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-textarea.png +++ b/src/imports/controls/doc/images/qtlabscontrols-textarea.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-textfield-background.png b/src/imports/controls/doc/images/qtlabscontrols-textfield-background.png Binary files differindex a2908200..e345124d 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-textfield-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-textfield-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-textfield-disabled.png b/src/imports/controls/doc/images/qtlabscontrols-textfield-disabled.png Binary files differindex bb5b779e..55034be2 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-textfield-disabled.png +++ b/src/imports/controls/doc/images/qtlabscontrols-textfield-disabled.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-textfield-focused.png b/src/imports/controls/doc/images/qtlabscontrols-textfield-focused.png Binary files differindex 5d8592c1..bf5ee32a 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-textfield-focused.png +++ b/src/imports/controls/doc/images/qtlabscontrols-textfield-focused.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-textfield-normal.png b/src/imports/controls/doc/images/qtlabscontrols-textfield-normal.png Binary files differindex 26ad9c11..02bb465a 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-textfield-normal.png +++ b/src/imports/controls/doc/images/qtlabscontrols-textfield-normal.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-textfield.png b/src/imports/controls/doc/images/qtlabscontrols-textfield.png Binary files differindex 14092c69..9ea62acb 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-textfield.png +++ b/src/imports/controls/doc/images/qtlabscontrols-textfield.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-toolbar-background.png b/src/imports/controls/doc/images/qtlabscontrols-toolbar-background.png Binary files differindex 28d4fd98..12b4c348 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-toolbar-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-toolbar-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-toolbar-frame.png b/src/imports/controls/doc/images/qtlabscontrols-toolbar-frame.png Binary files differindex 28d4fd98..12b4c348 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-toolbar-frame.png +++ b/src/imports/controls/doc/images/qtlabscontrols-toolbar-frame.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-toolbar.png b/src/imports/controls/doc/images/qtlabscontrols-toolbar.png Binary files differindex ee535b1a..3e64b4e4 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-toolbar.png +++ b/src/imports/controls/doc/images/qtlabscontrols-toolbar.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-toolbutton-background.png b/src/imports/controls/doc/images/qtlabscontrols-toolbutton-background.png Binary files differindex fd105fee..8dd64031 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-toolbutton-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-toolbutton-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-toolbutton-label.png b/src/imports/controls/doc/images/qtlabscontrols-toolbutton-label.png Binary files differindex 7aae8dc8..f4797098 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-toolbutton-label.png +++ b/src/imports/controls/doc/images/qtlabscontrols-toolbutton-label.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-toolbutton.png b/src/imports/controls/doc/images/qtlabscontrols-toolbutton.png Binary files differindex d608e4de..b350cdba 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-toolbutton.png +++ b/src/imports/controls/doc/images/qtlabscontrols-toolbutton.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-tumbler-background.png b/src/imports/controls/doc/images/qtlabscontrols-tumbler-background.png Binary files differindex aa736615..24c200de 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-tumbler-background.png +++ b/src/imports/controls/doc/images/qtlabscontrols-tumbler-background.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-tumbler-contentItem.png b/src/imports/controls/doc/images/qtlabscontrols-tumbler-contentItem.png Binary files differindex aa736615..24c200de 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-tumbler-contentItem.png +++ b/src/imports/controls/doc/images/qtlabscontrols-tumbler-contentItem.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-tumbler-delegate.png b/src/imports/controls/doc/images/qtlabscontrols-tumbler-delegate.png Binary files differindex 77c51efd..d274d444 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-tumbler-delegate.png +++ b/src/imports/controls/doc/images/qtlabscontrols-tumbler-delegate.png diff --git a/src/imports/controls/doc/images/qtlabscontrols-tumbler-wrap.gif b/src/imports/controls/doc/images/qtlabscontrols-tumbler-wrap.gif Binary files differindex 2a7e435d..4821a4e8 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-tumbler-wrap.gif +++ b/src/imports/controls/doc/images/qtlabscontrols-tumbler-wrap.gif diff --git a/src/imports/controls/doc/images/qtlabscontrols-tumbler.png b/src/imports/controls/doc/images/qtlabscontrols-tumbler.png Binary files differindex 01d4f2d3..e22330a6 100644 --- a/src/imports/controls/doc/images/qtlabscontrols-tumbler.png +++ b/src/imports/controls/doc/images/qtlabscontrols-tumbler.png diff --git a/src/imports/controls/doc/src/qtlabscontrols-containers.qdoc b/src/imports/controls/doc/src/qtlabscontrols-containers.qdoc index a627a26a..803695c9 100644 --- a/src/imports/controls/doc/src/qtlabscontrols-containers.qdoc +++ b/src/imports/controls/doc/src/qtlabscontrols-containers.qdoc @@ -57,6 +57,12 @@ \l GroupBox is used to layout a logical group of controls together, within a titled visual frame. + \section1 Page Control + + \image qtlabscontrols-page-wireframe.png + + \l Page provides page-specific header and footer items. + \section1 Pane Control \image qtlabscontrols-pane.png diff --git a/src/imports/controls/doc/src/qtlabscontrols-material.qdoc b/src/imports/controls/doc/src/qtlabscontrols-material.qdoc index c963cb28..f9b6a008 100644 --- a/src/imports/controls/doc/src/qtlabscontrols-material.qdoc +++ b/src/imports/controls/doc/src/qtlabscontrols-material.qdoc @@ -37,7 +37,7 @@ \section1 Attached Properties \list - \li \l {accent-attached-prop}{\b accent} : enumeration + \li \l {accent-attached-prop}{\b accent} : color \li \l {theme-attached-prop}{\b theme} : enumeration \endlist @@ -125,11 +125,15 @@ \section1 Attached Property Documentation - \styleproperty {Material.accent} {enumeration} {accent-attached-prop} + \styleproperty {Material.accent} {color} {accent-attached-prop} \target accent-attached-prop This attached property holds the accent color of the theme. The property can be attached to any window or item. The value is propagated to children. + Even though the accent can be any \l {colorbasictypedocs}{color}, it is + recommended to use one of the pre-defined accents that have been designed + to work well with the rest of the Material style palette: + Available accents: \value Material.Red Red (#F44336) \value Material.Pink Pink (#E91E63) diff --git a/src/imports/controls/material/Button.qml b/src/imports/controls/material/Button.qml index 2644a0aa..1256e3e1 100644 --- a/src/imports/controls/material/Button.qml +++ b/src/imports/controls/material/Button.qml @@ -48,7 +48,8 @@ T.Button { label ? label.implicitHeight + topPadding + bottomPadding : 0) baselineOffset: label ? label.y + label.baselineOffset : 0 - padding: 6 + // external vertical padding is 6 (to increase touch area) + padding: 12 leftPadding: 8 rightPadding: 8 @@ -71,13 +72,15 @@ T.Button { //! [background] background: Item { - implicitWidth: 36 - implicitHeight: 36 + implicitWidth: 64 + implicitHeight: 48 Rectangle { id: rect + // external vertical padding is 6 (to increase touch area) + y: 6 width: parent.width - height: parent.height + height: parent.height - 12 radius: 2 color: !control.enabled ? (control.highlighted ? control.Material.raisedHighlightedButtonDisabledColor : control.Material.raisedButtonDisabledColor) : (control.pressed ? (control.highlighted ? control.Material.raisedHighlightedButtonPressColor : control.Material.raisedButtonPressColor) : @@ -94,8 +97,10 @@ T.Button { DropShadow { source: rect visible: control.enabled - width: parent.width - height: parent.height + x: rect.x + y: rect.y + width: rect.width + height: rect.height verticalOffset: 1 color: control.Material.dropShadowColor samples: control.pressed ? 15 : 9 diff --git a/src/imports/controls/material/Page.qml b/src/imports/controls/material/Page.qml new file mode 100644 index 00000000..4ff3541f --- /dev/null +++ b/src/imports/controls/material/Page.qml @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Labs Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.6 +import Qt.labs.templates 1.0 as T +import Qt.labs.controls.material 1.0 + +T.Page { + id: control + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Material.backgroundColor + } + //! [background] +} diff --git a/src/imports/controls/material/SpinBox.qml b/src/imports/controls/material/SpinBox.qml index be51d06c..5d2044e6 100644 --- a/src/imports/controls/material/SpinBox.qml +++ b/src/imports/controls/material/SpinBox.qml @@ -135,7 +135,7 @@ T.SpinBox { Rectangle { x: parent.width / 2 - width / 2 y: parent.y + parent.height - height - width: Math.max(26, control.contentItem.implicitWidth) + width: control.availableWidth height: control.activeFocus ? 2 : 1 color: control.activeFocus ? control.Material.accentColor : control.Material.hintTextColor } diff --git a/src/imports/controls/material/ToolBar.qml b/src/imports/controls/material/ToolBar.qml index 50a4ac67..83f07be1 100644 --- a/src/imports/controls/material/ToolBar.qml +++ b/src/imports/controls/material/ToolBar.qml @@ -53,7 +53,7 @@ T.ToolBar { //! [background] background: Rectangle { - implicitHeight: 40 + implicitHeight: 48 color: control.Material.accentColor } //! [background] diff --git a/src/imports/controls/material/ToolButton.qml b/src/imports/controls/material/ToolButton.qml index e097f8e0..ebdc36f2 100644 --- a/src/imports/controls/material/ToolButton.qml +++ b/src/imports/controls/material/ToolButton.qml @@ -67,8 +67,8 @@ T.ToolButton { //! [background] background: Rectangle { - implicitWidth: 40 - implicitHeight: 40 + implicitWidth: 48 + implicitHeight: 48 color: control.pressed ? control.Material.flatButtonPressColor : control.Material.flatButtonFocusColor visible: control.enabled && (control.pressed || control.activeFocus || control.checked || control.highlighted) diff --git a/src/imports/controls/material/material.pri b/src/imports/controls/material/material.pri index bc5f85d1..bcdc0de9 100644 --- a/src/imports/controls/material/material.pri +++ b/src/imports/controls/material/material.pri @@ -22,8 +22,9 @@ QML_FILES += \ $$PWD/Label.qml \ $$PWD/Menu.qml \ $$PWD/MenuItem.qml \ - $$PWD/Pane.qml \ + $$PWD/Page.qml \ $$PWD/PageIndicator.qml \ + $$PWD/Pane.qml \ $$PWD/Popup.qml \ $$PWD/ProgressBar.qml \ $$PWD/RadioButton.qml \ diff --git a/src/imports/controls/material/qquickmaterialstyle.cpp b/src/imports/controls/material/qquickmaterialstyle.cpp index 92e4e15d..04e96480 100644 --- a/src/imports/controls/material/qquickmaterialstyle.cpp +++ b/src/imports/controls/material/qquickmaterialstyle.cpp @@ -36,7 +36,9 @@ #include "qquickmaterialstyle_p.h" +#include <QtCore/qdebug.h> #include <QtCore/qsettings.h> +#include <QtQml/qqmlinfo.h> #include <QtLabsControls/private/qquickstyle_p.h> QT_BEGIN_NAMESPACE @@ -59,331 +61,332 @@ QT_BEGIN_NAMESPACE static const QRgb colors[][14] = { // Red { - 0xFFEBEE, // Shade50 - 0xFFCDD2, // Shade100 - 0xEF9A9A, // Shade200 - 0xE57373, // Shade300 - 0xEF5350, // Shade400 - 0xF44336, // Shade500 - 0xE53935, // Shade600 - 0xD32F2F, // Shade700 - 0xC62828, // Shade800 - 0xB71C1C, // Shade900 - 0xFF8A80, // ShadeA100 - 0xFF5252, // ShadeA200 - 0xFF1744, // ShadeA400 - 0xD50000 // ShadeA700 + 0xFFFFEBEE, // Shade50 + 0xFFFFCDD2, // Shade100 + 0xFFEF9A9A, // Shade200 + 0xFFE57373, // Shade300 + 0xFFEF5350, // Shade400 + 0xFFF44336, // Shade500 + 0xFFE53935, // Shade600 + 0xFFD32F2F, // Shade700 + 0xFFC62828, // Shade800 + 0xFFB71C1C, // Shade900 + 0xFFFF8A80, // ShadeA100 + 0xFFFF5252, // ShadeA200 + 0xFFFF1744, // ShadeA400 + 0xFFD50000 // ShadeA700 }, // Pink { - 0xFCE4EC, // Shade50 - 0xF8BBD0, // Shade100 - 0xF48FB1, // Shade200 - 0xF06292, // Shade300 - 0xEC407A, // Shade400 - 0xE91E63, // Shade500 - 0xD81B60, // Shade600 - 0xC2185B, // Shade700 - 0xAD1457, // Shade800 - 0x880E4F, // Shade900 - 0xFF80AB, // ShadeA100 - 0xFF4081, // ShadeA200 - 0xF50057, // ShadeA400 - 0xC51162 // ShadeA700 + 0xFFFCE4EC, // Shade50 + 0xFFF8BBD0, // Shade100 + 0xFFF48FB1, // Shade200 + 0xFFF06292, // Shade300 + 0xFFEC407A, // Shade400 + 0xFFE91E63, // Shade500 + 0xFFD81B60, // Shade600 + 0xFFC2185B, // Shade700 + 0xFFAD1457, // Shade800 + 0xFF880E4F, // Shade900 + 0xFFFF80AB, // ShadeA100 + 0xFFFF4081, // ShadeA200 + 0xFFF50057, // ShadeA400 + 0xFFC51162 // ShadeA700 }, // Purple { - 0xF3E5F5, // Shade50 - 0xE1BEE7, // Shade100 - 0xCE93D8, // Shade200 - 0xBA68C8, // Shade300 - 0xAB47BC, // Shade400 - 0x9C27B0, // Shade500 - 0x8E24AA, // Shade600 - 0x7B1FA2, // Shade700 - 0x6A1B9A, // Shade800 - 0x4A148C, // Shade900 - 0xEA80FC, // ShadeA100 - 0xE040FB, // ShadeA200 - 0xD500F9, // ShadeA400 - 0xAA00FF // ShadeA700 + 0xFFF3E5F5, // Shade50 + 0xFFE1BEE7, // Shade100 + 0xFFCE93D8, // Shade200 + 0xFFBA68C8, // Shade300 + 0xFFAB47BC, // Shade400 + 0xFF9C27B0, // Shade500 + 0xFF8E24AA, // Shade600 + 0xFF7B1FA2, // Shade700 + 0xFF6A1B9A, // Shade800 + 0xFF4A148C, // Shade900 + 0xFFEA80FC, // ShadeA100 + 0xFFE040FB, // ShadeA200 + 0xFFD500F9, // ShadeA400 + 0xFFAA00FF // ShadeA700 }, // DeepPurple { - 0xEDE7F6, // Shade50 - 0xD1C4E9, // Shade100 - 0xB39DDB, // Shade200 - 0x9575CD, // Shade300 - 0x7E57C2, // Shade400 - 0x673AB7, // Shade500 - 0x5E35B1, // Shade600 - 0x512DA8, // Shade700 - 0x4527A0, // Shade800 - 0x311B92, // Shade900 - 0xB388FF, // ShadeA100 - 0x7C4DFF, // ShadeA200 - 0x651FFF, // ShadeA400 - 0x6200EA // ShadeA700 + 0xFFEDE7F6, // Shade50 + 0xFFD1C4E9, // Shade100 + 0xFFB39DDB, // Shade200 + 0xFF9575CD, // Shade300 + 0xFF7E57C2, // Shade400 + 0xFF673AB7, // Shade500 + 0xFF5E35B1, // Shade600 + 0xFF512DA8, // Shade700 + 0xFF4527A0, // Shade800 + 0xFF311B92, // Shade900 + 0xFFB388FF, // ShadeA100 + 0xFF7C4DFF, // ShadeA200 + 0xFF651FFF, // ShadeA400 + 0xFF6200EA // ShadeA700 }, // Indigo { - 0xE8EAF6, // Shade50 - 0xC5CAE9, // Shade100 - 0x9FA8DA, // Shade200 - 0x7986CB, // Shade300 - 0x5C6BC0, // Shade400 - 0x3F51B5, // Shade500 - 0x3949AB, // Shade600 - 0x303F9F, // Shade700 - 0x283593, // Shade800 - 0x1A237E, // Shade900 - 0x8C9EFF, // ShadeA100 - 0x536DFE, // ShadeA200 - 0x3D5AFE, // ShadeA400 - 0x304FFE // ShadeA700 + 0xFFE8EAF6, // Shade50 + 0xFFC5CAE9, // Shade100 + 0xFF9FA8DA, // Shade200 + 0xFF7986CB, // Shade300 + 0xFF5C6BC0, // Shade400 + 0xFF3F51B5, // Shade500 + 0xFF3949AB, // Shade600 + 0xFF303F9F, // Shade700 + 0xFF283593, // Shade800 + 0xFF1A237E, // Shade900 + 0xFF8C9EFF, // ShadeA100 + 0xFF536DFE, // ShadeA200 + 0xFF3D5AFE, // ShadeA400 + 0xFF304FFE // ShadeA700 }, // Blue { - 0xE3F2FD, // Shade50 - 0xBBDEFB, // Shade100 - 0x90CAF9, // Shade200 - 0x64B5F6, // Shade300 - 0x42A5F5, // Shade400 - 0x2196F3, // Shade500 - 0x1E88E5, // Shade600 - 0x1976D2, // Shade700 - 0x1565C0, // Shade800 - 0x0D47A1, // Shade900 - 0x82B1FF, // ShadeA100 - 0x448AFF, // ShadeA200 - 0x2979FF, // ShadeA400 - 0x2962FF // ShadeA700 + 0xFFE3F2FD, // Shade50 + 0xFFBBDEFB, // Shade100 + 0xFF90CAF9, // Shade200 + 0xFF64B5F6, // Shade300 + 0xFF42A5F5, // Shade400 + 0xFF2196F3, // Shade500 + 0xFF1E88E5, // Shade600 + 0xFF1976D2, // Shade700 + 0xFF1565C0, // Shade800 + 0xFF0D47A1, // Shade900 + 0xFF82B1FF, // ShadeA100 + 0xFF448AFF, // ShadeA200 + 0xFF2979FF, // ShadeA400 + 0xFF2962FF // ShadeA700 }, // LightBlue { - 0xE1F5FE, // Shade50 - 0xB3E5FC, // Shade100 - 0x81D4FA, // Shade200 - 0x4FC3F7, // Shade300 - 0x29B6F6, // Shade400 - 0x03A9F4, // Shade500 - 0x039BE5, // Shade600 - 0x0288D1, // Shade700 - 0x0277BD, // Shade800 - 0x01579B, // Shade900 - 0x80D8FF, // ShadeA100 - 0x40C4FF, // ShadeA200 - 0x00B0FF, // ShadeA400 - 0x0091EA // ShadeA700 + 0xFFE1F5FE, // Shade50 + 0xFFB3E5FC, // Shade100 + 0xFF81D4FA, // Shade200 + 0xFF4FC3F7, // Shade300 + 0xFF29B6F6, // Shade400 + 0xFF03A9F4, // Shade500 + 0xFF039BE5, // Shade600 + 0xFF0288D1, // Shade700 + 0xFF0277BD, // Shade800 + 0xFF01579B, // Shade900 + 0xFF80D8FF, // ShadeA100 + 0xFF40C4FF, // ShadeA200 + 0xFF00B0FF, // ShadeA400 + 0xFF0091EA // ShadeA700 }, // Cyan { - 0xE0F7FA, // Shade50 - 0xB2EBF2, // Shade100 - 0x80DEEA, // Shade200 - 0x4DD0E1, // Shade300 - 0x26C6DA, // Shade400 - 0x00BCD4, // Shade500 - 0x00ACC1, // Shade600 - 0x0097A7, // Shade700 - 0x00838F, // Shade800 - 0x006064, // Shade900 - 0x84FFFF, // ShadeA100 - 0x18FFFF, // ShadeA200 - 0x00E5FF, // ShadeA400 - 0x00B8D4 // ShadeA700 + 0xFFE0F7FA, // Shade50 + 0xFFB2EBF2, // Shade100 + 0xFF80DEEA, // Shade200 + 0xFF4DD0E1, // Shade300 + 0xFF26C6DA, // Shade400 + 0xFF00BCD4, // Shade500 + 0xFF00ACC1, // Shade600 + 0xFF0097A7, // Shade700 + 0xFF00838F, // Shade800 + 0xFF006064, // Shade900 + 0xFF84FFFF, // ShadeA100 + 0xFF18FFFF, // ShadeA200 + 0xFF00E5FF, // ShadeA400 + 0xFF00B8D4 // ShadeA700 }, // Teal { - 0xE0F2F1, // Shade50 - 0xB2DFDB, // Shade100 - 0x80CBC4, // Shade200 - 0x4DB6AC, // Shade300 - 0x26A69A, // Shade400 - 0x009688, // Shade500 - 0x00897B, // Shade600 - 0x00796B, // Shade700 - 0x00695C, // Shade800 - 0x004D40, // Shade900 - 0xA7FFEB, // ShadeA100 - 0x64FFDA, // ShadeA200 - 0x1DE9B6, // ShadeA400 - 0x00BFA5 // ShadeA700 + 0xFFE0F2F1, // Shade50 + 0xFFB2DFDB, // Shade100 + 0xFF80CBC4, // Shade200 + 0xFF4DB6AC, // Shade300 + 0xFF26A69A, // Shade400 + 0xFF009688, // Shade500 + 0xFF00897B, // Shade600 + 0xFF00796B, // Shade700 + 0xFF00695C, // Shade800 + 0xFF004D40, // Shade900 + 0xFFA7FFEB, // ShadeA100 + 0xFF64FFDA, // ShadeA200 + 0xFF1DE9B6, // ShadeA400 + 0xFF00BFA5 // ShadeA700 }, // Green { - 0xE8F5E9, // Shade50 - 0xC8E6C9, // Shade100 - 0xA5D6A7, // Shade200 - 0x81C784, // Shade300 - 0x66BB6A, // Shade400 - 0x4CAF50, // Shade500 - 0x43A047, // Shade600 - 0x388E3C, // Shade700 - 0x2E7D32, // Shade800 - 0x1B5E20, // Shade900 - 0xB9F6CA, // ShadeA100 - 0x69F0AE, // ShadeA200 - 0x00E676, // ShadeA400 - 0x00C853 // ShadeA700 + 0xFFE8F5E9, // Shade50 + 0xFFC8E6C9, // Shade100 + 0xFFA5D6A7, // Shade200 + 0xFF81C784, // Shade300 + 0xFF66BB6A, // Shade400 + 0xFF4CAF50, // Shade500 + 0xFF43A047, // Shade600 + 0xFF388E3C, // Shade700 + 0xFF2E7D32, // Shade800 + 0xFF1B5E20, // Shade900 + 0xFFB9F6CA, // ShadeA100 + 0xFF69F0AE, // ShadeA200 + 0xFF00E676, // ShadeA400 + 0xFF00C853 // ShadeA700 }, // LightGreen { - 0xF1F8E9, // Shade50 - 0xDCEDC8, // Shade100 - 0xC5E1A5, // Shade200 - 0xAED581, // Shade300 - 0x9CCC65, // Shade400 - 0x8BC34A, // Shade500 - 0x7CB342, // Shade600 - 0x689F38, // Shade700 - 0x558B2F, // Shade800 - 0x33691E, // Shade900 - 0xCCFF90, // ShadeA100 - 0xB2FF59, // ShadeA200 - 0x76FF03, // ShadeA400 - 0x64DD17 // ShadeA700 + 0xFFF1F8E9, // Shade50 + 0xFFDCEDC8, // Shade100 + 0xFFC5E1A5, // Shade200 + 0xFFAED581, // Shade300 + 0xFF9CCC65, // Shade400 + 0xFF8BC34A, // Shade500 + 0xFF7CB342, // Shade600 + 0xFF689F38, // Shade700 + 0xFF558B2F, // Shade800 + 0xFF33691E, // Shade900 + 0xFFCCFF90, // ShadeA100 + 0xFFB2FF59, // ShadeA200 + 0xFF76FF03, // ShadeA400 + 0xFF64DD17 // ShadeA700 }, // Lime { - 0xF9FBE7, // Shade50 - 0xF0F4C3, // Shade100 - 0xE6EE9C, // Shade200 - 0xDCE775, // Shade300 - 0xD4E157, // Shade400 - 0xCDDC39, // Shade500 - 0xC0CA33, // Shade600 - 0xAFB42B, // Shade700 - 0x9E9D24, // Shade800 - 0x827717, // Shade900 - 0xF4FF81, // ShadeA100 - 0xEEFF41, // ShadeA200 - 0xC6FF00, // ShadeA400 - 0xAEEA00 // ShadeA700 + 0xFFF9FBE7, // Shade50 + 0xFFF0F4C3, // Shade100 + 0xFFE6EE9C, // Shade200 + 0xFFDCE775, // Shade300 + 0xFFD4E157, // Shade400 + 0xFFCDDC39, // Shade500 + 0xFFC0CA33, // Shade600 + 0xFFAFB42B, // Shade700 + 0xFF9E9D24, // Shade800 + 0xFF827717, // Shade900 + 0xFFF4FF81, // ShadeA100 + 0xFFEEFF41, // ShadeA200 + 0xFFC6FF00, // ShadeA400 + 0xFFAEEA00 // ShadeA700 }, // Yellow { - 0xFFFDE7, // Shade50 - 0xFFF9C4, // Shade100 - 0xFFF59D, // Shade200 - 0xFFF176, // Shade300 - 0xFFEE58, // Shade400 - 0xFFEB3B, // Shade500 - 0xFDD835, // Shade600 - 0xFBC02D, // Shade700 - 0xF9A825, // Shade800 - 0xF57F17, // Shade900 - 0xFFFF8D, // ShadeA100 - 0xFFFF00, // ShadeA200 - 0xFFEA00, // ShadeA400 - 0xFFD600 // ShadeA700 + 0xFFFFFDE7, // Shade50 + 0xFFFFF9C4, // Shade100 + 0xFFFFF59D, // Shade200 + 0xFFFFF176, // Shade300 + 0xFFFFEE58, // Shade400 + 0xFFFFEB3B, // Shade500 + 0xFFFDD835, // Shade600 + 0xFFFBC02D, // Shade700 + 0xFFF9A825, // Shade800 + 0xFFF57F17, // Shade900 + 0xFFFFFF8D, // ShadeA100 + 0xFFFFFF00, // ShadeA200 + 0xFFFFEA00, // ShadeA400 + 0xFFFFD600 // ShadeA700 }, // Amber { - 0xFFF8E1, // Shade50 - 0xFFECB3, // Shade100 - 0xFFE082, // Shade200 - 0xFFD54F, // Shade300 - 0xFFCA28, // Shade400 - 0xFFC107, // Shade500 - 0xFFB300, // Shade600 - 0xFFA000, // Shade700 - 0xFF8F00, // Shade800 - 0xFF6F00, // Shade900 - 0xFFE57F, // ShadeA100 - 0xFFD740, // ShadeA200 - 0xFFC400, // ShadeA400 - 0xFFAB00 // ShadeA700 + 0xFFFFF8E1, // Shade50 + 0xFFFFECB3, // Shade100 + 0xFFFFE082, // Shade200 + 0xFFFFD54F, // Shade300 + 0xFFFFCA28, // Shade400 + 0xFFFFC107, // Shade500 + 0xFFFFB300, // Shade600 + 0xFFFFA000, // Shade700 + 0xFFFF8F00, // Shade800 + 0xFFFF6F00, // Shade900 + 0xFFFFE57F, // ShadeA100 + 0xFFFFD740, // ShadeA200 + 0xFFFFC400, // ShadeA400 + 0xFFFFAB00 // ShadeA700 }, // Orange { - 0xFFF3E0, // Shade50 - 0xFFE0B2, // Shade100 - 0xFFCC80, // Shade200 - 0xFFB74D, // Shade300 - 0xFFA726, // Shade400 - 0xFF9800, // Shade500 - 0xFB8C00, // Shade600 - 0xF57C00, // Shade700 - 0xEF6C00, // Shade800 - 0xE65100, // Shade900 - 0xFFD180, // ShadeA100 - 0xFFAB40, // ShadeA200 - 0xFF9100, // ShadeA400 - 0xFF6D00 // ShadeA700 + 0xFFFFF3E0, // Shade50 + 0xFFFFE0B2, // Shade100 + 0xFFFFCC80, // Shade200 + 0xFFFFB74D, // Shade300 + 0xFFFFA726, // Shade400 + 0xFFFF9800, // Shade500 + 0xFFFB8C00, // Shade600 + 0xFFF57C00, // Shade700 + 0xFFEF6C00, // Shade800 + 0xFFE65100, // Shade900 + 0xFFFFD180, // ShadeA100 + 0xFFFFAB40, // ShadeA200 + 0xFFFF9100, // ShadeA400 + 0xFFFF6D00 // ShadeA700 }, // DeepOrange { - 0xFBE9E7, // Shade50 - 0xFFCCBC, // Shade100 - 0xFFAB91, // Shade200 - 0xFF8A65, // Shade300 - 0xFF7043, // Shade400 - 0xFF5722, // Shade500 - 0xF4511E, // Shade600 - 0xE64A19, // Shade700 - 0xD84315, // Shade800 - 0xBF360C, // Shade900 - 0xFF9E80, // ShadeA100 - 0xFF6E40, // ShadeA200 - 0xFF3D00, // ShadeA400 - 0xDD2C00 // ShadeA700 + 0xFFFBE9E7, // Shade50 + 0xFFFFCCBC, // Shade100 + 0xFFFFAB91, // Shade200 + 0xFFFF8A65, // Shade300 + 0xFFFF7043, // Shade400 + 0xFFFF5722, // Shade500 + 0xFFF4511E, // Shade600 + 0xFFE64A19, // Shade700 + 0xFFD84315, // Shade800 + 0xFFBF360C, // Shade900 + 0xFFFF9E80, // ShadeA100 + 0xFFFF6E40, // ShadeA200 + 0xFFFF3D00, // ShadeA400 + 0xFFDD2C00 // ShadeA700 }, // Brown { - 0xEFEBE9, // Shade50 - 0xD7CCC8, // Shade100 - 0xBCAAA4, // Shade200 - 0xA1887F, // Shade300 - 0x8D6E63, // Shade400 - 0x795548, // Shade500 - 0x6D4C41, // Shade600 - 0x5D4037, // Shade700 - 0x4E342E, // Shade800 - 0x3E2723, // Shade900 - 0x000000, // ShadeA100 - 0x000000, // ShadeA200 - 0x000000, // ShadeA400 - 0x000000 // ShadeA700 + 0xFFEFEBE9, // Shade50 + 0xFFD7CCC8, // Shade100 + 0xFFBCAAA4, // Shade200 + 0xFFA1887F, // Shade300 + 0xFF8D6E63, // Shade400 + 0xFF795548, // Shade500 + 0xFF6D4C41, // Shade600 + 0xFF5D4037, // Shade700 + 0xFF4E342E, // Shade800 + 0xFF3E2723, // Shade900 + 0xFF000000, // ShadeA100 + 0xFF000000, // ShadeA200 + 0xFF000000, // ShadeA400 + 0xFF000000 // ShadeA700 }, // Grey { - 0xFAFAFA, // Shade50 - 0xF5F5F5, // Shade100 - 0xEEEEEE, // Shade200 - 0xE0E0E0, // Shade300 - 0xBDBDBD, // Shade400 - 0x9E9E9E, // Shade500 - 0x757575, // Shade600 - 0x616161, // Shade700 - 0x424242, // Shade800 - 0x212121, // Shade900 - 0x000000, // ShadeA100 - 0x000000, // ShadeA200 - 0x000000, // ShadeA400 - 0x000000 // ShadeA700 + 0xFFFAFAFA, // Shade50 + 0xFFF5F5F5, // Shade100 + 0xFFEEEEEE, // Shade200 + 0xFFE0E0E0, // Shade300 + 0xFFBDBDBD, // Shade400 + 0xFF9E9E9E, // Shade500 + 0xFF757575, // Shade600 + 0xFF616161, // Shade700 + 0xFF424242, // Shade800 + 0xFF212121, // Shade900 + 0xFF000000, // ShadeA100 + 0xFF000000, // ShadeA200 + 0xFF000000, // ShadeA400 + 0xFF000000 // ShadeA700 }, // BlueGrey { - 0xECEFF1, // Shade50 - 0xCFD8DC, // Shade100 - 0xB0BEC5, // Shade200 - 0x90A4AE, // Shade300 - 0x78909C, // Shade400 - 0x607D8B, // Shade500 - 0x546E7A, // Shade600 - 0x455A64, // Shade700 - 0x37474F, // Shade800 - 0x263238, // Shade900 - 0x000000, // ShadeA100 - 0x000000, // ShadeA200 - 0x000000, // ShadeA400 - 0x000000 // ShadeA700 + 0xFFECEFF1, // Shade50 + 0xFFCFD8DC, // Shade100 + 0xFFB0BEC5, // Shade200 + 0xFF90A4AE, // Shade300 + 0xFF78909C, // Shade400 + 0xFF607D8B, // Shade500 + 0xFF546E7A, // Shade600 + 0xFF455A64, // Shade700 + 0xFF37474F, // Shade800 + 0xFF263238, // Shade900 + 0xFF000000, // ShadeA100 + 0xFF000000, // ShadeA200 + 0xFF000000, // ShadeA400 + 0xFF000000 // ShadeA700 } }; static QQuickMaterialStyle::Theme defaultTheme = QQuickMaterialStyle::Light; -static QQuickMaterialStyle::Color defaultAccent = QQuickMaterialStyle::Teal; +static uint defaultAccent = QQuickMaterialStyle::Teal; +static bool defaultCustom = false; static const QRgb backgroundColorLight = 0xFFFAFAFA; static const QRgb backgroundColorDark = 0xFF303030; static const QRgb dialogColorLight = 0xFFFFFFFF; @@ -418,6 +421,7 @@ static const QRgb checkBoxUncheckedRippleColorDark = 0x20FFFFFF; QQuickMaterialStyle::QQuickMaterialStyle(QObject *parent) : QQuickStyle(parent), m_explicitTheme(false), m_explicitAccent(false), + m_customAccent(defaultCustom), m_theme(defaultTheme), m_accent(defaultAccent) { @@ -474,26 +478,52 @@ void QQuickMaterialStyle::resetTheme() } } -QQuickMaterialStyle::Color QQuickMaterialStyle::accent() const +QVariant QQuickMaterialStyle::accent() const { - return m_accent; + return accentColor(); } -void QQuickMaterialStyle::setAccent(QQuickMaterialStyle::Color color) +void QQuickMaterialStyle::setAccent(const QVariant &var) { + QRgb accent = 0; + bool custom = false; + if (var.type() == QVariant::Int) { + int val = var.toInt(); + if (val > BlueGrey) { + qmlInfo(parent()) << "unknown Material.accent value: " << val; + return; + } + accent = val; + } else { + int val = QMetaEnum::fromType<Color>().keyToValue(var.toByteArray()); + if (val != -1) { + accent = val; + } else { + QColor color(var.toString()); + if (!color.isValid()) { + qmlInfo(parent()) << "unknown Material.accent value: " << var.toString(); + return; + } + custom = true; + accent = color.rgba(); + } + } + m_explicitAccent = true; - if (m_accent != color) { - m_accent = color; + if (m_accent != accent) { + m_customAccent = custom; + m_accent = accent; propagateAccent(); emit accentChanged(); emit paletteChanged(); } } -void QQuickMaterialStyle::inheritAccent(QQuickMaterialStyle::Color color) +void QQuickMaterialStyle::inheritAccent(uint accent, bool custom) { - if (!m_explicitAccent && m_accent != color) { - m_accent = color; + if (!m_explicitAccent && m_accent != accent) { + m_customAccent = custom; + m_accent = accent; propagateAccent(); emit accentChanged(); } @@ -505,22 +535,27 @@ void QQuickMaterialStyle::propagateAccent() for (QQuickStyle *child : styles) { QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(child); if (material) - material->inheritAccent(m_accent); + material->inheritAccent(m_accent, m_customAccent); } } void QQuickMaterialStyle::resetAccent() { if (m_explicitAccent) { + m_customAccent = false; m_explicitAccent = false; QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(parentStyle()); - inheritAccent(material ? material->accent() : defaultAccent); + inheritAccent(material ? material->m_accent : defaultAccent, true); } } QColor QQuickMaterialStyle::accentColor() const { - return color(m_accent, Shade500); + if (m_customAccent) + return QColor::fromRgba(m_accent); + if (m_accent > BlueGrey) + return QColor(); + return colors[m_accent][Shade500]; } QColor QQuickMaterialStyle::backgroundColor() const @@ -593,12 +628,12 @@ QColor QQuickMaterialStyle::raisedHighlightedButtonColor() const QColor QQuickMaterialStyle::raisedHighlightedButtonHoverColor() const { - return color(m_accent, Shade600); + return shade(accentColor(), Shade600); } QColor QQuickMaterialStyle::raisedHighlightedButtonPressColor() const { - return color(m_accent, Shade700); + return shade(accentColor(), Shade700); } QColor QQuickMaterialStyle::raisedHighlightedButtonDisabledColor() const @@ -628,7 +663,7 @@ QColor QQuickMaterialStyle::checkBoxUncheckedRippleColor() const QColor QQuickMaterialStyle::checkBoxCheckedRippleColor() const { - QColor pressColor = color(m_accent, Shade500); + QColor pressColor = accentColor(); // TODO: find out actual value pressColor.setAlpha(30); return pressColor; @@ -641,7 +676,7 @@ QColor QQuickMaterialStyle::switchUncheckedTrackColor() const QColor QQuickMaterialStyle::switchCheckedTrackColor() const { - QColor trackColor = m_theme == Light ? accentColor() : color(m_accent, Shade200); + QColor trackColor = m_theme == Light ? accentColor() : shade(accentColor(), Shade200); trackColor.setAlphaF(0.5); return trackColor; } @@ -653,7 +688,7 @@ QColor QQuickMaterialStyle::switchUncheckedHandleColor() const QColor QQuickMaterialStyle::switchCheckedHandleColor() const { - return m_theme == Light ? accentColor() : color(m_accent, Shade200); + return m_theme == Light ? accentColor() : shade(accentColor(), Shade200); } QColor QQuickMaterialStyle::switchDisabledTrackColor() const @@ -704,28 +739,97 @@ QColor QQuickMaterialStyle::color(QQuickMaterialStyle::Color color, QQuickMateri return colors[color][shade]; } +static QColor lighterShade(const QColor &color, qreal amount) +{ + QColor hsl = color.toHsl(); + hsl.setHslF(hsl.hueF(), hsl.saturationF(), qBound<qreal>(0.0, hsl.lightnessF() + amount, 1.0), color.alphaF()); + return hsl.convertTo(color.spec()); +} + +QColor darkerShade(const QColor &color, qreal amount) +{ + QColor hsl = color.toHsl(); + hsl.setHslF(hsl.hueF(), hsl.saturationF(), qBound<qreal>(0.0, hsl.lightnessF() - amount, 1.0), color.alphaF()); + return hsl.convertTo(color.spec()); +} + +/* + * The following lightness values originate from the Material Design Color Generator project. + * + * The MIT License (MIT) + * + * Copyright (c) 2015 mbitson + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +QColor QQuickMaterialStyle::shade(const QColor &color, Shade shade) const +{ + switch (shade) { + case Shade50: + return lighterShade(color, 0.52); + case Shade100: + return lighterShade(color, 0.37); + case Shade200: + return lighterShade(color, 0.26); + case Shade300: + return lighterShade(color, 0.12); + case Shade400: + return lighterShade(color, 0.06); + case Shade500: + return color; + case Shade600: + return darkerShade(color, 0.06); + case Shade700: + return darkerShade(color, 0.12); + case Shade800: + return darkerShade(color, 0.18); + case Shade900: + return darkerShade(color, 0.24); + case ShadeA100: + return lighterShade(color, 0.54); + case ShadeA200: + return lighterShade(color, 0.37); + case ShadeA400: + return lighterShade(color, 0.06); + case ShadeA700: + return darkerShade(color, 0.12); + default: + Q_UNREACHABLE(); + return QColor(); + } +} + void QQuickMaterialStyle::parentStyleChange(QQuickStyle *newParent, QQuickStyle *oldParent) { Q_UNUSED(oldParent); QQuickMaterialStyle *material = qobject_cast<QQuickMaterialStyle *>(newParent); if (material) { - inheritAccent(material->accent()); + inheritAccent(material->m_accent, material->m_customAccent); inheritTheme(material->theme()); } } template <typename Enum> -static Enum readEnumValue(QSettings *settings, const QString &name, Enum fallback) -{ - Enum result = fallback; - if (settings->contains(name)) { - QMetaEnum enumeration = QMetaEnum::fromType<Enum>(); - bool ok = false; - int value = enumeration.keyToValue(settings->value(name).toByteArray(), &ok); - if (ok) - result = static_cast<Enum>(value); - } - return result; +static Enum toEnumValue(const QByteArray &value, bool *ok) +{ + QMetaEnum enumeration = QMetaEnum::fromType<Enum>(); + return static_cast<Enum>(enumeration.keyToValue(value, ok)); } void QQuickMaterialStyle::init() @@ -734,8 +838,28 @@ void QQuickMaterialStyle::init() if (!defaultsInitialized) { QSharedPointer<QSettings> settings = QQuickStyle::settings(QStringLiteral("Material")); if (!settings.isNull()) { - defaultTheme = m_theme = readEnumValue<Theme>(settings.data(), QStringLiteral("Theme"), m_theme); - defaultAccent = m_accent = readEnumValue<Color>(settings.data(), QStringLiteral("Accent"), m_accent); + bool ok = false; + QByteArray value = settings->value(QStringLiteral("Theme")).toByteArray(); + Theme theme = toEnumValue<Theme>(value, &ok); + if (ok) + defaultTheme = m_theme = theme; + else if (!value.isEmpty()) + qWarning().nospace().noquote() << settings->fileName() << ": unknown Material theme value: " << value; + + value = settings->value(QStringLiteral("Accent")).toByteArray(); + Color accent = toEnumValue<Color>(value, &ok); + if (ok) { + defaultCustom = m_customAccent = false; + defaultAccent = m_accent = accent; + } else { + QColor color(value.constData()); + if (color.isValid()) { + defaultCustom = m_customAccent = true; + defaultAccent = m_accent = color.rgba(); + } else if (!value.isEmpty()) { + qWarning().nospace().noquote() << settings->fileName() << ": unknown Material accent value: " << value; + } + } } defaultsInitialized = true; } diff --git a/src/imports/controls/material/qquickmaterialstyle_p.h b/src/imports/controls/material/qquickmaterialstyle_p.h index 87255383..48e7ca37 100644 --- a/src/imports/controls/material/qquickmaterialstyle_p.h +++ b/src/imports/controls/material/qquickmaterialstyle_p.h @@ -59,8 +59,8 @@ class QQuickMaterialStyle : public QQuickStyle { Q_OBJECT Q_PROPERTY(Theme theme READ theme WRITE setTheme RESET resetTheme NOTIFY themeChanged FINAL) - Q_PROPERTY(Color accent READ accent WRITE setAccent RESET resetAccent NOTIFY accentChanged FINAL) - Q_PROPERTY(QColor accentColor READ accentColor NOTIFY accentChanged FINAL) + Q_PROPERTY(QVariant accent READ accent WRITE setAccent RESET resetAccent NOTIFY accentChanged FINAL) + Q_PROPERTY(QColor accentColor READ accentColor NOTIFY accentChanged FINAL) // TODO: remove? Q_PROPERTY(QColor backgroundColor READ backgroundColor NOTIFY paletteChanged FINAL) Q_PROPERTY(QColor primaryTextColor READ primaryTextColor NOTIFY paletteChanged FINAL) Q_PROPERTY(QColor primaryHighlightedTextColor READ primaryHighlightedTextColor NOTIFY paletteChanged FINAL) @@ -153,9 +153,9 @@ public: void propagateTheme(); void resetTheme(); - Color accent() const; - void setAccent(Color color); - void inheritAccent(Color color); + QVariant accent() const; + void setAccent(const QVariant &accent); + void inheritAccent(uint accent, bool custom); void propagateAccent(); void resetAccent(); @@ -193,7 +193,8 @@ public: QColor dialogColor() const; QColor backgroundDimColor() const; - Q_INVOKABLE QColor color(Color color, Shade shade) const; + Q_INVOKABLE QColor color(Color color, Shade shade = Shade500) const; + Q_INVOKABLE QColor shade(const QColor &color, Shade shade) const; Q_SIGNALS: void themeChanged(); @@ -208,8 +209,9 @@ private: bool m_explicitTheme; bool m_explicitAccent; + bool m_customAccent; Theme m_theme; - Color m_accent; + uint m_accent; }; QT_END_NAMESPACE diff --git a/src/imports/controls/material/qtlabsmaterialstyleplugin.cpp b/src/imports/controls/material/qtlabsmaterialstyleplugin.cpp index 06c84aa1..8d7f67c7 100644 --- a/src/imports/controls/material/qtlabsmaterialstyleplugin.cpp +++ b/src/imports/controls/material/qtlabsmaterialstyleplugin.cpp @@ -92,8 +92,8 @@ void QtLabsMaterialStylePlugin::initializeEngine(QQmlEngine *engine, const char Q_UNUSED(engine); QQuickStyleSelector selector; - if (selector.style() == QStringLiteral("material")) { - if (QFont(QStringLiteral("Roboto")).family() == QStringLiteral("Roboto")) { + if (selector.style() == QLatin1String("material")) { + if (QFont(QStringLiteral("Roboto")).family() == QLatin1String("Roboto")) { QPlatformTheme *old = QGuiApplicationPrivate::platform_theme; if (old) { QQuickProxyTheme *theme = new QQuickMaterialTheme(old); diff --git a/src/imports/controls/qquickbusyindicatorring.cpp b/src/imports/controls/qquickbusyindicatorring.cpp index 18413b73..96213fa4 100644 --- a/src/imports/controls/qquickbusyindicatorring.cpp +++ b/src/imports/controls/qquickbusyindicatorring.cpp @@ -101,6 +101,7 @@ QSGNode *QQuickBusyIndicatorRing::updatePaintNode(QSGNode *oldNode, QQuickItem:: const qreal dx = (w - sz) / 2; const qreal dy = (h - sz) / 2; const int circleRadius = sz / 12; + const QColor color(0x35, 0x36, 0x37); QSGTransformNode *transformNode = static_cast<QSGTransformNode *>(rootTransformNode->firstChild()); for (int i = 0; i < circles; ++i) { @@ -113,8 +114,8 @@ QSGNode *QQuickBusyIndicatorRing::updatePaintNode(QSGNode *oldNode, QQuickItem:: QSGRectangleNode *rectNode = d->sceneGraphContext()->createRectangleNode(); rectNode->setAntialiasing(true); - rectNode->setColor(QColor("#353637")); - rectNode->setPenColor(QColor("#353637")); + rectNode->setColor(color); + rectNode->setPenColor(color); opacityNode->appendChildNode(rectNode); } @@ -191,6 +192,8 @@ void QQuickBusyIndicatorAnimatorJob::updateCurrentTime(int time) const qreal secondPhaseProgress = percentageComplete > 0.5 ? (percentageComplete - 0.5) * 2 : 0; QSGTransformNode *transformNode = static_cast<QSGTransformNode*>(rootTransformNode->firstChild()); + const QColor color(0x35, 0x36, 0x37); + const QColor transparent(Qt::transparent); Q_ASSERT(transformNode->type() == QSGNode::TransformNodeType); for (int i = 0; i < circles; ++i) { QSGOpacityNode *opacityNode = static_cast<QSGOpacityNode*>(transformNode->firstChild()); @@ -201,7 +204,7 @@ void QQuickBusyIndicatorAnimatorJob::updateCurrentTime(int time) const bool fill = (firstPhaseProgress > qreal(i) / circles) || (secondPhaseProgress > 0 && secondPhaseProgress < qreal(i) / circles); rectNode->setPenWidth(fill ? 0 : 1); - rectNode->setColor(fill ? QColor("#353637") : QColor("transparent")); + rectNode->setColor(fill ? color : transparent); rectNode->update(); transformNode = static_cast<QSGTransformNode*>(transformNode->nextSibling()); diff --git a/src/imports/controls/qquickprogressstrip.cpp b/src/imports/controls/qquickprogressstrip.cpp index 046fd77c..e9480ff1 100644 --- a/src/imports/controls/qquickprogressstrip.cpp +++ b/src/imports/controls/qquickprogressstrip.cpp @@ -142,6 +142,7 @@ QSGNode *QQuickProgressStrip::updatePaintNode(QSGNode *oldNode, QQuickItem::Upda } Q_ASSERT(rootTransformNode->type() == QSGNode::TransformNodeType); + const QColor color(0x35, 0x36, 0x37); if (m_indeterminate) { if (rootTransformNode->childCount() != blocks) { // This was previously a regular progress bar; remove the old nodes. @@ -158,7 +159,7 @@ QSGNode *QQuickProgressStrip::updatePaintNode(QSGNode *oldNode, QQuickItem::Upda QSGRectangleNode *rectNode = static_cast<QSGRectangleNode*>(transformNode->firstChild()); if (!rectNode) { rectNode = d->sceneGraphContext()->createRectangleNode(); - rectNode->setColor(QColor(0x35, 0x36, 0x37)); + rectNode->setColor(color); transformNode->appendChildNode(rectNode); } @@ -180,7 +181,7 @@ QSGNode *QQuickProgressStrip::updatePaintNode(QSGNode *oldNode, QQuickItem::Upda QSGRectangleNode *rectNode = static_cast<QSGRectangleNode *>(rootTransformNode->firstChild()); if (!rectNode) { rectNode = d->sceneGraphContext()->createRectangleNode(); - rectNode->setColor(QColor(0x35, 0x36, 0x37)); + rectNode->setColor(color); rootTransformNode->appendChildNode(rectNode); } diff --git a/src/imports/controls/qtlabscontrolsplugin.cpp b/src/imports/controls/qtlabscontrolsplugin.cpp index 666e230f..0c312b06 100644 --- a/src/imports/controls/qtlabscontrolsplugin.cpp +++ b/src/imports/controls/qtlabscontrolsplugin.cpp @@ -102,8 +102,9 @@ void QtLabsControlsPlugin::registerTypes(const char *uri) qmlRegisterType(selector.select(QStringLiteral("/Label.qml")), uri, 1, 0, "Label"); qmlRegisterType(selector.select(QStringLiteral("/Menu.qml")), uri, 1, 0, "Menu"); qmlRegisterType(selector.select(QStringLiteral("/MenuItem.qml")), uri, 1, 0, "MenuItem"); - qmlRegisterType(selector.select(QStringLiteral("/Pane.qml")), uri, 1, 0, "Pane"); + qmlRegisterType(selector.select(QStringLiteral("/Page.qml")), uri, 1, 0, "Page"); qmlRegisterType(selector.select(QStringLiteral("/PageIndicator.qml")), uri, 1, 0, "PageIndicator"); + qmlRegisterType(selector.select(QStringLiteral("/Pane.qml")), uri, 1, 0, "Pane"); qmlRegisterType(selector.select(QStringLiteral("/Popup.qml")), uri, 1, 0, "Popup"); qmlRegisterType(selector.select(QStringLiteral("/ProgressBar.qml")), uri, 1, 0, "ProgressBar"); qmlRegisterType(selector.select(QStringLiteral("/RadioButton.qml")), uri, 1, 0, "RadioButton"); diff --git a/src/imports/controls/universal/ComboBox.qml b/src/imports/controls/universal/ComboBox.qml index 56d7a983..38c8e6e2 100644 --- a/src/imports/controls/universal/ComboBox.qml +++ b/src/imports/controls/universal/ComboBox.qml @@ -55,9 +55,6 @@ T.ComboBox { rightPadding: 10 bottomPadding: 7 - font.pixelSize: Universal.fontSize - font.family: Universal.fontFamily - //! [delegate] delegate: ItemDelegate { width: control.width diff --git a/src/imports/controls/universal/Page.qml b/src/imports/controls/universal/Page.qml new file mode 100644 index 00000000..975ddfe0 --- /dev/null +++ b/src/imports/controls/universal/Page.qml @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Labs Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.6 +import Qt.labs.templates 1.0 as T +import Qt.labs.controls.universal 1.0 + +T.Page { + id: control + + //! [contentItem] + contentItem: Item { } + //! [contentItem] + + //! [background] + background: Rectangle { + color: control.Universal.altHighColor + } + //! [background] +} diff --git a/src/imports/controls/universal/ProgressBar.qml b/src/imports/controls/universal/ProgressBar.qml index df837fef..3d88fc67 100644 --- a/src/imports/controls/universal/ProgressBar.qml +++ b/src/imports/controls/universal/ProgressBar.qml @@ -50,9 +50,9 @@ T.ProgressBar { //! [indicator] indicator: Rectangle { x: control.leftPadding - y: control.topPadding + y: control.topPadding + (control.availableHeight - height) / 2 width: control.indeterminate ? 0 : control.position * control.availableWidth - height: control.availableHeight + height: 10 scale: control.mirrored ? -1 : 1 color: control.Universal.accent @@ -81,9 +81,9 @@ T.ProgressBar { implicitHeight: 10 x: control.leftPadding - y: control.topPadding + y: control.topPadding + (control.availableHeight - height) / 2 width: control.availableWidth - height: control.availableHeight + height: 10 visible: !control.indeterminate color: control.Universal.baseLowColor diff --git a/src/imports/controls/universal/SpinBox.qml b/src/imports/controls/universal/SpinBox.qml index ac027d75..77eb241e 100644 --- a/src/imports/controls/universal/SpinBox.qml +++ b/src/imports/controls/universal/SpinBox.qml @@ -104,8 +104,9 @@ T.SpinBox { Image { x: (parent.width - width) / 2 y: (parent.height - height) / 2 - source: "image://universal/rightarrow/" + (!control.enabled ? control.Universal.chromeDisabledLowColor : - control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.baseHighColor) + source: "image://universal/" + (control.mirrored ? "left" : "right") + "arrow/" + + (!control.enabled ? control.Universal.chromeDisabledLowColor : + control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.baseHighColor) } } //! [up.indicator] @@ -129,8 +130,9 @@ T.SpinBox { Image { x: (parent.width - width) / 2 y: (parent.height - height) / 2 - source: "image://universal/leftarrow/" + (!control.enabled ? control.Universal.chromeDisabledLowColor : - control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.baseHighColor) + source: "image://universal/" + (control.mirrored ? "right" : "left") + "arrow/" + + (!control.enabled ? control.Universal.chromeDisabledLowColor : + control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.baseHighColor) } } //! [down.indicator] diff --git a/src/imports/controls/universal/qquickuniversalfocusrectangle.cpp b/src/imports/controls/universal/qquickuniversalfocusrectangle.cpp index 5153f96b..a894390e 100644 --- a/src/imports/controls/universal/qquickuniversalfocusrectangle.cpp +++ b/src/imports/controls/universal/qquickuniversalfocusrectangle.cpp @@ -37,12 +37,14 @@ #include "qquickuniversalfocusrectangle_p.h" #include <QtGui/qpainter.h> +#include <QtQuick/private/qquickitem_p.h> QT_BEGIN_NAMESPACE QQuickUniversalFocusRectangle::QQuickUniversalFocusRectangle(QQuickItem *parent) : QQuickPaintedItem(parent) { + QQuickItemPrivate::get(this)->setTransparentForPositioner(true); } void QQuickUniversalFocusRectangle::paint(QPainter *painter) diff --git a/src/imports/controls/universal/qquickuniversalstyle.cpp b/src/imports/controls/universal/qquickuniversalstyle.cpp index 6eaaa4c3..49b2d9f7 100644 --- a/src/imports/controls/universal/qquickuniversalstyle.cpp +++ b/src/imports/controls/universal/qquickuniversalstyle.cpp @@ -38,6 +38,7 @@ #include <QtCore/qdebug.h> #include <QtCore/qsettings.h> +#include <QtQml/qqmlinfo.h> #include <QtLabsControls/private/qquickstyle_p.h> QT_BEGIN_NAMESPACE @@ -201,7 +202,7 @@ void QQuickUniversalStyle::setAccent(const QVariant &var) if (var.type() == QVariant::Int) { int val = var.toInt(); if (val < Lime || val > Taupe) { - qWarning() << "QQuickUniversalStyle: unknown accent" << val; + qmlInfo(parent()) << "unknown Universal.accent value: " << val; return; } accent = qquickuniversal_accent_color(static_cast<Accent>(val)); @@ -212,7 +213,7 @@ void QQuickUniversalStyle::setAccent(const QVariant &var) } else { QColor color(var.toString()); if (!color.isValid()) { - qWarning() << "QQuickUniversalStyle: unknown accent" << var.toString(); + qmlInfo(parent()) << "unknown Universal.accent value: " << var.toString(); return; } accent = color.rgba(); @@ -391,15 +392,10 @@ void QQuickUniversalStyle::parentStyleChange(QQuickStyle *newParent, QQuickStyle } template <typename Enum> -static Enum readEnumValue(QSettings *settings, const QString &name, bool *ok) +static Enum toEnumValue(const QByteArray &value, bool *ok) { - int value = -1; - *ok = settings->contains(name); - if (*ok) { - QMetaEnum enumeration = QMetaEnum::fromType<Enum>(); - value = enumeration.keyToValue(settings->value(name).toByteArray(), ok); - } - return static_cast<Enum>(value); + QMetaEnum enumeration = QMetaEnum::fromType<Enum>(); + return static_cast<Enum>(enumeration.keyToValue(value, ok)); } void QQuickUniversalStyle::init() @@ -409,17 +405,23 @@ void QQuickUniversalStyle::init() QSharedPointer<QSettings> settings = QQuickStyle::settings(QStringLiteral("Universal")); if (!settings.isNull()) { bool ok = false; - Theme theme = readEnumValue<Theme>(settings.data(), QStringLiteral("Theme"), &ok); + QByteArray value = settings->value(QStringLiteral("Theme")).toByteArray(); + Theme theme = toEnumValue<Theme>(value, &ok); if (ok) DefaultTheme = m_theme = theme; + else if (!value.isEmpty()) + qWarning().nospace().noquote() << settings->fileName() << ": unknown Universal theme value: " << value; - Accent accent = readEnumValue<Accent>(settings.data(), QStringLiteral("Accent"), &ok); + value = settings->value(QStringLiteral("Accent")).toByteArray(); + Accent accent = toEnumValue<Accent>(value, &ok); if (ok) { DefaultAccent = m_accent = qquickuniversal_accent_color(accent); } else { - QColor color(settings->value(QStringLiteral("Accent")).toString()); + QColor color(value.constData()); if (color.isValid()) DefaultAccent = m_accent = color.rgba(); + else if (!value.isEmpty()) + qWarning().nospace().noquote() << settings->fileName() << ": unknown Universal accent value: " << value; } } defaultsInitialized = true; diff --git a/src/imports/controls/universal/qtlabsuniversalstyleplugin.cpp b/src/imports/controls/universal/qtlabsuniversalstyleplugin.cpp index 6e202ce6..305c96a1 100644 --- a/src/imports/controls/universal/qtlabsuniversalstyleplugin.cpp +++ b/src/imports/controls/universal/qtlabsuniversalstyleplugin.cpp @@ -92,8 +92,8 @@ void QtLabsUniversalStylePlugin::registerTypes(const char *uri) void QtLabsUniversalStylePlugin::initializeEngine(QQmlEngine *engine, const char *uri) { QQuickStyleSelector selector; - if (selector.style() == QStringLiteral("universal")) { - if (QFont(QStringLiteral("Segoe UI")).family() == QStringLiteral("Segoe UI")) { + if (selector.style() == QLatin1String("universal")) { + if (QFont(QStringLiteral("Segoe UI")).family() == QLatin1String("Segoe UI")) { QPlatformTheme *old = QGuiApplicationPrivate::platform_theme; if (old) { QQuickProxyTheme *theme = new QQuickUniversalTheme(old); diff --git a/src/imports/controls/universal/universal.pri b/src/imports/controls/universal/universal.pri index e576367a..73547f4d 100644 --- a/src/imports/controls/universal/universal.pri +++ b/src/imports/controls/universal/universal.pri @@ -11,8 +11,9 @@ QML_FILES += \ $$PWD/Label.qml \ $$PWD/Menu.qml \ $$PWD/MenuItem.qml \ - $$PWD/Pane.qml \ + $$PWD/Page.qml \ $$PWD/PageIndicator.qml \ + $$PWD/Pane.qml \ $$PWD/ProgressBar.qml \ $$PWD/RadioButton.qml \ $$PWD/RangeSlider.qml \ diff --git a/src/imports/templates/qtlabstemplatesplugin.cpp b/src/imports/templates/qtlabstemplatesplugin.cpp index 4e38d1a6..522f693e 100644 --- a/src/imports/templates/qtlabstemplatesplugin.cpp +++ b/src/imports/templates/qtlabstemplatesplugin.cpp @@ -53,6 +53,7 @@ #include <QtLabsTemplates/private/qquickmenu_p.h> #include <QtLabsTemplates/private/qquickmenuitem_p.h> #include <QtLabsTemplates/private/qquickoverlay_p.h> +#include <QtLabsTemplates/private/qquickpage_p.h> #include <QtLabsTemplates/private/qquickpageindicator_p.h> #include <QtLabsTemplates/private/qquickpane_p.h> #include <QtLabsTemplates/private/qquickpopup_p.h> @@ -118,6 +119,7 @@ void QtLabsTemplatesPlugin::registerTypes(const char *uri) qmlRegisterType<QQuickMenu>(uri, 1, 0, "Menu"); qmlRegisterType<QQuickMenuItem>(uri, 1, 0, "MenuItem"); qmlRegisterType<QQuickOverlay>(); + qmlRegisterType<QQuickPage>(uri, 1, 0, "Page"); qmlRegisterType<QQuickPageIndicator>(uri, 1, 0, "PageIndicator"); qmlRegisterType<QQuickPane>(uri, 1, 0, "Pane"); qmlRegisterType<QQuickPopup>(uri, 1, 0, "Popup"); diff --git a/src/templates/qquickapplicationwindow.cpp b/src/templates/qquickapplicationwindow.cpp index 3e6734d7..71adf87e 100644 --- a/src/templates/qquickapplicationwindow.cpp +++ b/src/templates/qquickapplicationwindow.cpp @@ -81,7 +81,7 @@ QT_BEGIN_NAMESPACE \note By default, an ApplicationWindow is not visible. - \sa {Container Controls} + \sa Page, {Container Controls} */ class QQuickApplicationWindowPrivate : public QQuickItemChangeListener @@ -228,7 +228,7 @@ QQuickApplicationWindow::~QQuickApplicationWindow() This property holds the window header item. The header item is positioned to the top, and resized to the width of the window. The default value is \c null. - \sa footer + \sa footer, Page::header */ QQuickItem *QQuickApplicationWindow::header() const { @@ -262,7 +262,7 @@ void QQuickApplicationWindow::setHeader(QQuickItem *header) This property holds the window footer item. The footer item is positioned to the bottom, and resized to the width of the window. The default value is \c null. - \sa header + \sa header, Page::footer */ QQuickItem *QQuickApplicationWindow::footer() const { diff --git a/src/templates/qquickcombobox.cpp b/src/templates/qquickcombobox.cpp index a2c0bf89..c079b1e3 100644 --- a/src/templates/qquickcombobox.cpp +++ b/src/templates/qquickcombobox.cpp @@ -40,6 +40,7 @@ #include "qquickpopup_p.h" #include <QtCore/qregexp.h> +#include <QtGui/qpa/qplatformtheme.h> #include <QtQml/qjsvalue.h> #include <QtQml/qqmlcontext.h> #include <QtQml/private/qqmldelegatemodel_p.h> @@ -287,14 +288,12 @@ void QQuickComboBoxPrivate::setHighlightedIndex(int index) void QQuickComboBoxPrivate::createDelegateModel() { Q_Q(QQuickComboBox); - if (delegateModel) { - if (ownModel) { - delete delegateModel; - } else { - disconnect(delegateModel, &QQmlInstanceModel::countChanged, this, &QQuickComboBoxPrivate::countChanged); - disconnect(delegateModel, &QQmlInstanceModel::modelUpdated, this, &QQuickComboBoxPrivate::updateCurrentText); - disconnect(delegateModel, &QQmlInstanceModel::initItem, this, &QQuickComboBoxPrivate::initItem); - } + bool ownedOldModel = ownModel; + QQmlInstanceModel* oldModel = delegateModel; + if (oldModel) { + disconnect(delegateModel, &QQmlInstanceModel::countChanged, this, &QQuickComboBoxPrivate::countChanged); + disconnect(delegateModel, &QQmlInstanceModel::modelUpdated, this, &QQuickComboBoxPrivate::updateCurrentText); + disconnect(delegateModel, &QQmlInstanceModel::initItem, this, &QQuickComboBoxPrivate::initItem); } ownModel = false; @@ -318,6 +317,9 @@ void QQuickComboBoxPrivate::createDelegateModel() } emit q->delegateModelChanged(); + + if (ownedOldModel) + delete oldModel; } QQuickComboBox::QQuickComboBox(QQuickItem *parent) : @@ -792,4 +794,9 @@ void QQuickComboBox::componentComplete() } } +QFont QQuickComboBox::defaultFont() const +{ + return QQuickControlPrivate::themeFont(QPlatformTheme::ComboMenuItemFont); +} + QT_END_NAMESPACE diff --git a/src/templates/qquickcombobox_p.h b/src/templates/qquickcombobox_p.h index da237c8e..050e8c7c 100644 --- a/src/templates/qquickcombobox_p.h +++ b/src/templates/qquickcombobox_p.h @@ -134,6 +134,8 @@ protected: void componentComplete() Q_DECL_OVERRIDE; + QFont defaultFont() const Q_DECL_OVERRIDE; + private: Q_DISABLE_COPY(QQuickComboBox) Q_DECLARE_PRIVATE(QQuickComboBox) diff --git a/src/templates/qquickpage.cpp b/src/templates/qquickpage.cpp new file mode 100644 index 00000000..8302dca0 --- /dev/null +++ b/src/templates/qquickpage.cpp @@ -0,0 +1,279 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Labs Templates module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qquickpage_p.h" +#include "qquickcontrol_p_p.h" + +#include <QtQuick/private/qquickitemchangelistener_p.h> + +QT_BEGIN_NAMESPACE + +/*! + \qmltype Page + \inherits Control + \instantiates QQuickPage + \inqmlmodule Qt.labs.controls + \ingroup qtlabscontrols-containers + \brief A page control. + + Page is a container control which makes it convenient to add + a \l header and \l footer item to a page. + + \image qtlabscontrols-page-wireframe.png + + The following example snippet illustrates how to use a page-specific + toolbar header and an application-wide tabbar footer. + + \qml + import Qt.labs.controls 1.0 + + ApplicationWindow { + visible: true + + StackView { + anchors.fill: parent + + initialItem: Page { + header: ToolBar { + // ... + } + } + } + + footer: TabBar { + // ... + } + } + \endqml + + \sa ApplicationWindow, {Container Controls} +*/ + +class QQuickPagePrivate : public QQuickControlPrivate, public QQuickItemChangeListener +{ + Q_DECLARE_PUBLIC(QQuickPage) + +public: + QQuickPagePrivate(); + + void relayout(); + + void itemImplicitWidthChanged(QQuickItem *item) Q_DECL_OVERRIDE; + void itemImplicitHeightChanged(QQuickItem *item) Q_DECL_OVERRIDE; + + QQuickItem *header; + QQuickItem *footer; +}; + +QQuickPagePrivate::QQuickPagePrivate() : header(Q_NULLPTR), footer(Q_NULLPTR) +{ +} + +void QQuickPagePrivate::relayout() +{ + Q_Q(QQuickPage); + QQuickItem *content = q->contentItem(); + const qreal hh = header ? header->height() : 0; + const qreal fh = footer ? footer->height() : 0; + + content->setY(hh + q->topPadding()); + content->setX(q->leftPadding()); + content->setWidth(q->availableWidth()); + content->setHeight(q->availableHeight() - hh - fh); + + if (header) + header->setWidth(q->width()); + + if (footer) { + footer->setY(q->height() - fh); + footer->setWidth(q->width()); + } +} + +void QQuickPagePrivate::itemImplicitWidthChanged(QQuickItem *item) +{ + Q_UNUSED(item); + relayout(); +} + +void QQuickPagePrivate::itemImplicitHeightChanged(QQuickItem *item) +{ + Q_UNUSED(item); + relayout(); +} + +QQuickPage::QQuickPage(QQuickItem *parent) : + QQuickControl(*(new QQuickPagePrivate), parent) +{ + setFlag(ItemIsFocusScope); + setAcceptedMouseButtons(Qt::AllButtons); +} + +/*! + \qmlproperty Item Qt.labs.controls::Page::header + + This property holds the page header item. The header item is positioned to + the top, and resized to the width of the page. The default value is \c null. + + \sa footer, ApplicationWindow::header +*/ +QQuickItem *QQuickPage::header() const +{ + Q_D(const QQuickPage); + return d->header; +} + +void QQuickPage::setHeader(QQuickItem *header) +{ + Q_D(QQuickPage); + if (d->header != header) { + if (d->header) + QQuickItemPrivate::get(d->header)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + d->header = header; + if (header) { + header->setParentItem(this); + QQuickItemPrivate *p = QQuickItemPrivate::get(header); + p->addItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + if (qFuzzyIsNull(header->z())) + header->setZ(1); + if (isComponentComplete()) + d->relayout(); + } + emit headerChanged(); + } +} + +/*! + \qmlproperty Item Qt.labs.controls::Page::footer + + This property holds the page footer item. The footer item is positioned to + the bottom, and resized to the width of the page. The default value is \c null. + + \sa header, ApplicationWindow::footer +*/ +QQuickItem *QQuickPage::footer() const +{ + Q_D(const QQuickPage); + return d->footer; +} + +void QQuickPage::setFooter(QQuickItem *footer) +{ + Q_D(QQuickPage); + if (d->footer != footer) { + if (d->footer) + QQuickItemPrivate::get(d->footer)->removeItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + d->footer = footer; + if (footer) { + footer->setParentItem(this); + QQuickItemPrivate *p = QQuickItemPrivate::get(footer); + p->addItemChangeListener(d, QQuickItemPrivate::ImplicitWidth | QQuickItemPrivate::ImplicitHeight); + if (qFuzzyIsNull(footer->z())) + footer->setZ(1); + if (isComponentComplete()) + d->relayout(); + } + emit footerChanged(); + } +} + +/*! + \qmlproperty list<Object> Qt.labs.controls::Page::contentData + \default + + This property holds the list of content data. + + \sa Item::data +*/ +QQmlListProperty<QObject> QQuickPage::contentData() +{ + Q_D(QQuickPage); + return QQmlListProperty<QObject>(d->contentItem, Q_NULLPTR, + QQuickItemPrivate::data_append, + QQuickItemPrivate::data_count, + QQuickItemPrivate::data_at, + QQuickItemPrivate::data_clear); +} + +/*! + \qmlproperty list<Item> Qt.labs.controls::Page::contentChildren + + This property holds the list of content children. + + \sa Item::children +*/ +QQmlListProperty<QQuickItem> QQuickPage::contentChildren() +{ + Q_D(QQuickPage); + return QQmlListProperty<QQuickItem>(d->contentItem, Q_NULLPTR, + QQuickItemPrivate::children_append, + QQuickItemPrivate::children_count, + QQuickItemPrivate::children_at, + QQuickItemPrivate::children_clear); +} + +void QQuickPage::contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) +{ + QQuickControl::contentItemChange(newItem, oldItem); + if (oldItem) + disconnect(oldItem, &QQuickItem::childrenChanged, this, &QQuickPage::contentChildrenChanged); + if (newItem) + connect(newItem, &QQuickItem::childrenChanged, this, &QQuickPage::contentChildrenChanged); + emit contentChildrenChanged(); +} + +void QQuickPage::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) +{ + Q_D(QQuickPage); + QQuickControl::geometryChanged(newGeometry, oldGeometry); + d->relayout(); +} + +void QQuickPage::paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) +{ + Q_D(QQuickPage); + QQuickControl::paddingChange(newPadding, oldPadding); + d->relayout(); +} + +#ifndef QT_NO_ACCESSIBILITY +QAccessible::Role QQuickPage::accessibleRole() const +{ + return QAccessible::PageTab; +} +#endif + +QT_END_NAMESPACE diff --git a/src/templates/qquickpage_p.h b/src/templates/qquickpage_p.h new file mode 100644 index 00000000..157f0507 --- /dev/null +++ b/src/templates/qquickpage_p.h @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Labs Templates module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QQUICKPAGE_P_H +#define QQUICKPAGE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtLabsTemplates/private/qquickcontrol_p.h> +#include <QtQml/qqmllist.h> + +QT_BEGIN_NAMESPACE + +class QQuickPagePrivate; + +class Q_LABSTEMPLATES_EXPORT QQuickPage : public QQuickControl +{ + Q_OBJECT + Q_PROPERTY(QQuickItem *header READ header WRITE setHeader NOTIFY headerChanged FINAL) + Q_PROPERTY(QQuickItem *footer READ footer WRITE setFooter NOTIFY footerChanged FINAL) + Q_PROPERTY(QQmlListProperty<QObject> contentData READ contentData FINAL) + Q_PROPERTY(QQmlListProperty<QQuickItem> contentChildren READ contentChildren NOTIFY contentChildrenChanged FINAL) + Q_CLASSINFO("DefaultProperty", "contentData") + +public: + explicit QQuickPage(QQuickItem *parent = Q_NULLPTR); + + QQuickItem *header() const; + void setHeader(QQuickItem *header); + + QQuickItem *footer() const; + void setFooter(QQuickItem *footer); + + QQmlListProperty<QObject> contentData(); + QQmlListProperty<QQuickItem> contentChildren(); + +Q_SIGNALS: + void headerChanged(); + void footerChanged(); + void contentChildrenChanged(); + +protected: + void contentItemChange(QQuickItem *newItem, QQuickItem *oldItem) Q_DECL_OVERRIDE; + void geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry) Q_DECL_OVERRIDE; + void paddingChange(const QMarginsF &newPadding, const QMarginsF &oldPadding) Q_DECL_OVERRIDE; + +#ifndef QT_NO_ACCESSIBILITY + QAccessible::Role accessibleRole() const Q_DECL_OVERRIDE; +#endif + +private: + Q_DISABLE_COPY(QQuickPage) + Q_DECLARE_PRIVATE(QQuickPage) +}; + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QQuickPage) + +#endif // QQUICKPAGE_P_H diff --git a/src/templates/templates.pri b/src/templates/templates.pri index 1ae46e85..c4651d82 100644 --- a/src/templates/templates.pri +++ b/src/templates/templates.pri @@ -25,6 +25,7 @@ HEADERS += \ $$PWD/qquickmenu_p_p.h \ $$PWD/qquickmenuitem_p.h \ $$PWD/qquickoverlay_p.h \ + $$PWD/qquickpage_p.h \ $$PWD/qquickpageindicator_p.h \ $$PWD/qquickpane_p.h \ $$PWD/qquickpane_p_p.h \ @@ -71,6 +72,7 @@ SOURCES += \ $$PWD/qquickmenu.cpp \ $$PWD/qquickmenuitem.cpp \ $$PWD/qquickoverlay.cpp \ + $$PWD/qquickpage.cpp \ $$PWD/qquickpageindicator.cpp \ $$PWD/qquickpane.cpp \ $$PWD/qquickpopup.cpp \ diff --git a/tests/auto/controls/data/tst_page.qml b/tests/auto/controls/data/tst_page.qml new file mode 100644 index 00000000..60a1b2ef --- /dev/null +++ b/tests/auto/controls/data/tst_page.qml @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2015 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtTest 1.0 +import Qt.labs.controls 1.0 +import Qt.labs.templates 1.0 as T + +TestCase { + id: testCase + width: 400 + height: 400 + visible: true + when: windowShown + name: "Page" + + Component { + id: page + Page { } + } + + Component { + id: toolBar + ToolBar { } + } + + function test_defaults() { + var control = page.createObject(testCase) + verify(control) + + verify(control.contentItem) + compare(control.header, null) + compare(control.footer, null) + + control.destroy() + } + + function test_layout() { + var control = page.createObject(testCase, {width: 100, height: 100}) + verify(control) + + compare(control.width, 100) + compare(control.height, 100) + compare(control.contentItem.width, control.width) + compare(control.contentItem.height, control.height) + + control.header = toolBar.createObject(control) + compare(control.header.width, control.width) + verify(control.header.height > 0) + compare(control.contentItem.width, control.width) + compare(control.contentItem.height, control.height - control.header.height) + + control.footer = toolBar.createObject(control) + compare(control.footer.width, control.width) + verify(control.footer.height > 0) + compare(control.contentItem.width, control.width) + compare(control.contentItem.height, control.height - control.header.height - control.footer.height) + + control.topPadding = 9 + control.leftPadding = 2 + control.rightPadding = 6 + control.bottomPadding = 7 + + compare(control.header.x, 0) + compare(control.header.y, 0) + compare(control.header.width, control.width) + verify(control.header.height > 0) + + compare(control.footer.x, 0) + compare(control.footer.y, control.height - control.footer.height) + compare(control.footer.width, control.width) + verify(control.footer.height > 0) + + compare(control.contentItem.x, control.leftPadding) + compare(control.contentItem.y, control.topPadding + control.header.height) + compare(control.contentItem.width, control.availableWidth) + compare(control.contentItem.height, control.availableHeight - control.header.height - control.footer.height) + + control.destroy() + } +} diff --git a/tests/auto/material/data/tst_material.qml b/tests/auto/material/data/tst_material.qml index 5fc52f10..e29fea3b 100644 --- a/tests/auto/material/data/tst_material.qml +++ b/tests/auto/material/data/tst_material.qml @@ -107,11 +107,27 @@ TestCase { } } + Component { + id: comboBox + ApplicationWindow { + width: 200 + height: 200 + visible: true + Material.accent: Material.Red + property alias combo: box + ComboBox { + id: box + Material.theme: Material.Dark + model: 1 + } + } + } + function test_defaults() { var control = button.createObject(testCase) verify(control) verify(control.Material) - compare(control.Material.accent, Material.Teal) + compare(control.Material.accent, Material.color(Material.Teal)) compare(control.Material.theme, Material.Light) control.destroy() } @@ -121,7 +137,7 @@ TestCase { verify(control) control.Material.accent = Material.Brown control.Material.theme = Material.Dark - compare(control.Material.accent, Material.Brown) + compare(control.Material.accent, Material.color(Material.Brown)) compare(control.Material.theme, Material.Dark) control.destroy() } @@ -129,7 +145,7 @@ TestCase { function test_reset() { var control = styledButton.createObject(testCase) verify(control) - compare(control.Material.accent, Material.DeepPurple) + compare(control.Material.accent, Material.color(Material.DeepPurple)) compare(control.Material.theme, Material.Dark) control.Material.accent = undefined control.Material.theme = undefined @@ -140,7 +156,7 @@ TestCase { function test_inheritance_data() { return [ - { tag: "accent", value1: Material.Amber, value2: Material.Indigo }, + { tag: "accent", value1: Material.color(Material.Amber), value2: Material.color(Material.Indigo) }, { tag: "theme", value1: Material.Dark, value2: Material.Light }, ] } @@ -205,9 +221,9 @@ TestCase { compare(unstyledChild.Material.theme, parent.Material.theme) parent.Material.accent = Material.Cyan - compare(control.Material.accent, Material.Cyan) - verify(styledChild.Material.accent !== Material.Cyan) - // ### TODO: compare(unstyledChild.Material.accent, Material.Cyan) + compare(control.Material.accent, Material.color(Material.Cyan)) + verify(styledChild.Material.accent !== Material.color(Material.Cyan)) + // ### TODO: compare(unstyledChild.Material.accent, Material.color(Material.Cyan)) parent.destroy() } @@ -216,13 +232,13 @@ TestCase { var control = loader.createObject(testCase) control.Material.accent = Material.Lime control.active = true - compare(control.item.Material.accent, Material.Lime) + compare(control.item.Material.accent, Material.color(Material.Lime)) control.Material.accent = Material.Pink - compare(control.item.Material.accent, Material.Pink) + compare(control.item.Material.accent, Material.color(Material.Pink)) control.active = false control.Material.accent = Material.Brown control.active = true - compare(control.item.Material.accent, Material.Brown) + compare(control.item.Material.accent, Material.color(Material.Brown)) control.destroy() } @@ -245,9 +261,74 @@ TestCase { compare(container.Material.theme, Material.Light) compare(container.menu.Material.theme, Material.Dark) compare(child.Material.theme, Material.Dark) - compare(container.Material.accent, Material.Red) - compare(container.menu.Material.accent, Material.Red) - compare(child.Material.accent, Material.Red) + compare(container.Material.accent, Material.color(Material.Red)) + compare(container.menu.Material.accent, Material.color(Material.Red)) + compare(child.Material.accent, Material.color(Material.Red)) container.destroy() } + + function test_comboBox() { + var window = comboBox.createObject(testCase) + verify(window) + verify(window.combo) + waitForRendering(window.combo) + window.combo.forceActiveFocus() + verify(window.combo.activeFocus) + keyClick(Qt.Key_Space) + verify(window.combo.popup.visible) + var listView = window.combo.popup.contentItem.children[0] + verify(listView) + var child = listView.contentItem.children[0] + verify(child) + compare(window.Material.theme, Material.Light) + compare(window.combo.Material.theme, Material.Dark) + compare(child.Material.theme, Material.Dark) + compare(window.Material.accent, Material.color(Material.Red)) + compare(window.combo.Material.accent, Material.color(Material.Red)) + compare(child.Material.accent, Material.color(Material.Red)) + window.destroy() + } + + function test_colors() { + var control = button.createObject(testCase) + verify(control) + + // Material.Accent - enum + control.Material.accent = Material.Red + compare(control.Material.accent, "#f44336") + + // Material.Accent - string + control.Material.accent = "BlueGrey" + compare(control.Material.accent, "#607d8b") + + // SVG named color + control.Material.accent = "tomato" + compare(control.Material.accent, "#ff6347") + + // #rrggbb + control.Material.accent = "#123456" + compare(control.Material.accent, "#123456") + + // #aarrggbb + control.Material.accent = "#12345678" + compare(control.Material.accent, "#12345678") + + // Qt.rgba() - no alpha + control.Material.accent = Qt.rgba(0.5, 0.5, 0.5) + compare(control.Material.accent, "#808080") + + // Qt.rgba() - with alpha + control.Material.accent = Qt.rgba(0.5, 0.5, 0.5, 0.5) + compare(control.Material.accent, "#80808080") + + // unknown + ignoreWarning(Qt.resolvedUrl("tst_material.qml") + ":57:9: QML Button: unknown Material.accent value: 123") + control.Material.accent = 123 + ignoreWarning(Qt.resolvedUrl("tst_material.qml") + ":57:9: QML Button: unknown Material.accent value: foo") + control.Material.accent = "foo" + ignoreWarning(Qt.resolvedUrl("tst_material.qml") + ":57:9: QML Button: unknown Material.accent value: #1") + control.Material.accent = "#1" + + control.destroy() + } } diff --git a/tests/auto/universal/data/tst_universal.qml b/tests/auto/universal/data/tst_universal.qml index 6e70f011..af70ad0e 100644 --- a/tests/auto/universal/data/tst_universal.qml +++ b/tests/auto/universal/data/tst_universal.qml @@ -107,6 +107,22 @@ TestCase { } } + Component { + id: comboBox + ApplicationWindow { + width: 200 + height: 200 + visible: true + Universal.accent: Universal.Red + property alias combo: box + ComboBox { + id: box + Universal.theme: Universal.Dark + model: 1 + } + } + } + function test_defaults() { var control = button.createObject(testCase) verify(control) @@ -251,6 +267,28 @@ TestCase { container.destroy() } + function test_comboBox() { + var window = comboBox.createObject(testCase) + verify(window) + verify(window.combo) + waitForRendering(window.combo) + window.combo.forceActiveFocus() + verify(window.combo.activeFocus) + keyClick(Qt.Key_Space) + verify(window.combo.popup.visible) + var listView = window.combo.popup.contentItem.children[0] + verify(listView) + var child = listView.contentItem.children[0] + verify(child) + compare(window.Universal.theme, Universal.Light) + compare(window.combo.Universal.theme, Universal.Dark) + compare(child.Universal.theme, Universal.Dark) + compare(window.Universal.accent, "#e51400") // Red + compare(window.combo.Universal.accent, "#e51400") // Red + compare(child.Universal.accent, "#e51400") // Red + window.destroy() + } + function test_colors() { var control = button.createObject(testCase) verify(control) @@ -284,11 +322,11 @@ TestCase { compare(control.Universal.accent, "#80808080") // unknown - ignoreWarning("QQuickUniversalStyle: unknown accent 123") + ignoreWarning(Qt.resolvedUrl("tst_universal.qml") + ":57:9: QML Button: unknown Universal.accent value: 123") control.Universal.accent = 123 - ignoreWarning("QQuickUniversalStyle: unknown accent \"foo\"") + ignoreWarning(Qt.resolvedUrl("tst_universal.qml") + ":57:9: QML Button: unknown Universal.accent value: foo") control.Universal.accent = "foo" - ignoreWarning("QQuickUniversalStyle: unknown accent \"#1\"") + ignoreWarning(Qt.resolvedUrl("tst_universal.qml") + ":57:9: QML Button: unknown Universal.accent value: #1") control.Universal.accent = "#1" control.destroy() diff --git a/tests/manual/gifs/data/qtlabscontrols-menu.qml b/tests/manual/gifs/data/qtlabscontrols-menu.qml index 65cd3563..81ea3137 100644 --- a/tests/manual/gifs/data/qtlabscontrols-menu.qml +++ b/tests/manual/gifs/data/qtlabscontrols-menu.qml @@ -52,7 +52,7 @@ ApplicationWindow { Button { id: fileButton text: "File" - onClicked: menu.show() + onClicked: menu.open() x: 10 y: 10 } diff --git a/tests/manual/testbench/main.qml b/tests/manual/testbench/main.qml index edf0aa49..76008497 100644 --- a/tests/manual/testbench/main.qml +++ b/tests/manual/testbench/main.qml @@ -53,6 +53,7 @@ ApplicationWindow { Material.theme: themeSwitch.checked ? Material.Dark : Material.Light Universal.theme: themeSwitch.checked ? Universal.Dark : Universal.Light + Material.accent: Material.LightGreen property int controlSpacing: 10 |