diff options
author | J-P Nurmi <jpnurmi@qt.io> | 2017-10-30 12:38:36 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@qt.io> | 2017-11-02 08:33:17 +0000 |
commit | e02ebcdb0b10b1c9f077d813c08d83e0d17ca6b5 (patch) | |
tree | eacf840bdf6b65f7bed272a86c6684c3503c1550 | |
parent | 61cb7ca7e8d8ebc5103870ae2795dbc65eb2c89f (diff) |
Optimize CheckBox, Switch, and RadioButton
Add an internal CheckLabel helper that simply initializes a few
QQuickText properties with defaults that are suitable for CheckBox,
Switch, and RadioButton. This gives a 10% boost on desktop in debug
mode, and a 5% boost on a TX1 in release mode.
Change-Id: I82fead9ca22b6aa74f24924d240c924b2a42a912
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
-rw-r--r-- | src/imports/controls/CheckBox.qml | 6 | ||||
-rw-r--r-- | src/imports/controls/RadioButton.qml | 6 | ||||
-rw-r--r-- | src/imports/controls/Switch.qml | 6 | ||||
-rw-r--r-- | src/imports/controls/qtquickcontrols2plugin.cpp | 3 | ||||
-rw-r--r-- | src/quickcontrols2/qquickchecklabel.cpp | 49 | ||||
-rw-r--r-- | src/quickcontrols2/qquickchecklabel_p.h | 68 | ||||
-rw-r--r-- | src/quickcontrols2/quickcontrols2.pri | 2 |
7 files changed, 125 insertions, 15 deletions
diff --git a/src/imports/controls/CheckBox.qml b/src/imports/controls/CheckBox.qml index 9ae4f8f6..4348781d 100644 --- a/src/imports/controls/CheckBox.qml +++ b/src/imports/controls/CheckBox.qml @@ -58,16 +58,12 @@ T.CheckBox { control: control } - contentItem: Text { + contentItem: CheckLabel { leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 text: control.text font: control.font color: control.palette.windowText - elide: Text.ElideRight - visible: control.text - horizontalAlignment: Text.AlignLeft - verticalAlignment: Text.AlignVCenter } } diff --git a/src/imports/controls/RadioButton.qml b/src/imports/controls/RadioButton.qml index c00360cf..2ea9dbfa 100644 --- a/src/imports/controls/RadioButton.qml +++ b/src/imports/controls/RadioButton.qml @@ -58,16 +58,12 @@ T.RadioButton { control: control } - contentItem: Text { + contentItem: CheckLabel { leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 text: control.text font: control.font color: control.palette.windowText - elide: Text.ElideRight - visible: control.text - horizontalAlignment: Text.AlignLeft - verticalAlignment: Text.AlignVCenter } } diff --git a/src/imports/controls/Switch.qml b/src/imports/controls/Switch.qml index 2ff9c553..66f624d9 100644 --- a/src/imports/controls/Switch.qml +++ b/src/imports/controls/Switch.qml @@ -58,16 +58,12 @@ T.Switch { control: control } - contentItem: Text { + contentItem: CheckLabel { leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 text: control.text font: control.font color: control.palette.windowText - elide: Text.ElideRight - visible: control.text - horizontalAlignment: Text.AlignLeft - verticalAlignment: Text.AlignVCenter } } diff --git a/src/imports/controls/qtquickcontrols2plugin.cpp b/src/imports/controls/qtquickcontrols2plugin.cpp index dbb1e106..768f4ab8 100644 --- a/src/imports/controls/qtquickcontrols2plugin.cpp +++ b/src/imports/controls/qtquickcontrols2plugin.cpp @@ -36,6 +36,7 @@ #include <QtCore/private/qfileselector_p.h> #include <QtQuickControls2/qquickstyle.h> +#include <QtQuickControls2/private/qquickchecklabel_p.h> #include <QtQuickControls2/private/qquickcolor_p.h> #include <QtQuickControls2/private/qquickcolorimage_p.h> #include <QtQuickControls2/private/qquickiconimage_p.h> @@ -201,6 +202,8 @@ void QtQuickControls2Plugin::initializeEngine(QQmlEngine *engine, const char *ur qmlRegisterType<QQuickIconImage>(import, 2, 3, "IconImage"); qmlRegisterSingletonType<QQuickColor>(import, 2, 3, "Color", colorSingleton); qmlRegisterType<QQuickIconLabel>(import, 2, 3, "IconLabel"); + qmlRegisterType<QQuickCheckLabel>(import, 2, 3, "CheckLabel"); + qmlRegisterRevision<QQuickText, 6>(import, 2, 3); } QString QtQuickControls2Plugin::name() const diff --git a/src/quickcontrols2/qquickchecklabel.cpp b/src/quickcontrols2/qquickchecklabel.cpp new file mode 100644 index 00000000..dccbf77f --- /dev/null +++ b/src/quickcontrols2/qquickchecklabel.cpp @@ -0,0 +1,49 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 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 "qquickchecklabel_p.h" + +QT_BEGIN_NAMESPACE + +QQuickCheckLabel::QQuickCheckLabel(QQuickItem *parent) : + QQuickText(parent) +{ + setHAlign(AlignLeft); + setVAlign(AlignVCenter); + setElideMode(ElideRight); +} + +QT_END_NAMESPACE diff --git a/src/quickcontrols2/qquickchecklabel_p.h b/src/quickcontrols2/qquickchecklabel_p.h new file mode 100644 index 00000000..100ef48f --- /dev/null +++ b/src/quickcontrols2/qquickchecklabel_p.h @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 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 QQUICKCHECKLABEL_P_H +#define QQUICKCHECKLABEL_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 <QtQuick/private/qquicktext_p.h> +#include <QtQuickControls2/private/qtquickcontrols2global_p.h> + +QT_BEGIN_NAMESPACE + +class Q_QUICKCONTROLS2_PRIVATE_EXPORT QQuickCheckLabel : public QQuickText +{ + Q_OBJECT + +public: + explicit QQuickCheckLabel(QQuickItem *parent = nullptr); +}; + +QT_END_NAMESPACE + +QML_DECLARE_TYPE(QQuickCheckLabel) + +#endif // QQUICKCHECKLABEL_P_H diff --git a/src/quickcontrols2/quickcontrols2.pri b/src/quickcontrols2/quickcontrols2.pri index 31b8e66f..66a109f5 100644 --- a/src/quickcontrols2/quickcontrols2.pri +++ b/src/quickcontrols2/quickcontrols2.pri @@ -1,6 +1,7 @@ HEADERS += \ $$PWD/qquickanimatednode_p.h \ $$PWD/qquickattachedobject_p.h \ + $$PWD/qquickchecklabel_p.h \ $$PWD/qquickcolor_p.h \ $$PWD/qquickcolorimage_p.h \ $$PWD/qquickiconimage_p.h \ @@ -20,6 +21,7 @@ HEADERS += \ SOURCES += \ $$PWD/qquickanimatednode.cpp \ $$PWD/qquickattachedobject.cpp \ + $$PWD/qquickchecklabel.cpp \ $$PWD/qquickcolor.cpp \ $$PWD/qquickcolorimage.cpp \ $$PWD/qquickiconimage.cpp \ |