From 501dfdfe77213a32d29cd14612f30834f83dceed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Arve=20S=C3=A6ther?= Date: Thu, 11 Jun 2020 13:20:35 +0200 Subject: Add CheckBox, RadioButton and other missing components for Windows Some components still do not work (ComboBox), but they will eventually have to be added at some point anyway. Change-Id: I0af8062460c5d2b4d6528bc029b037aff4e4ba5b Reviewed-by: Richard Moe Gustavsen --- src/imports/controls/windows/CheckBox.qml | 43 +++++++++ src/imports/controls/windows/ComboBox.qml | 43 +++++++++ src/imports/controls/windows/Frame.qml | 43 +++++++++ src/imports/controls/windows/RadioButton.qml | 43 +++++++++ src/imports/controls/windows/SpinBox.qml | 129 +++++++++++++++++++++++++++ src/imports/controls/windows/TextArea.qml | 43 +++++++++ src/imports/controls/windows/TextField.qml | 43 +++++++++ src/imports/controls/windows/windows.pri | 9 +- 8 files changed, 395 insertions(+), 1 deletion(-) create mode 100644 src/imports/controls/windows/CheckBox.qml create mode 100644 src/imports/controls/windows/ComboBox.qml create mode 100644 src/imports/controls/windows/Frame.qml create mode 100644 src/imports/controls/windows/RadioButton.qml create mode 100644 src/imports/controls/windows/SpinBox.qml create mode 100644 src/imports/controls/windows/TextArea.qml create mode 100644 src/imports/controls/windows/TextField.qml diff --git a/src/imports/controls/windows/CheckBox.qml b/src/imports/controls/windows/CheckBox.qml new file mode 100644 index 00000000..00ab05d6 --- /dev/null +++ b/src/imports/controls/windows/CheckBox.qml @@ -0,0 +1,43 @@ +/**************************************************************************** +** +** Copyright (C) 2020 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$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.NativeStyle 6.0 as NativeStyle + +NativeStyle.DefaultCheckBox { +} diff --git a/src/imports/controls/windows/ComboBox.qml b/src/imports/controls/windows/ComboBox.qml new file mode 100644 index 00000000..e331c401 --- /dev/null +++ b/src/imports/controls/windows/ComboBox.qml @@ -0,0 +1,43 @@ +/**************************************************************************** +** +** Copyright (C) 2020 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$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.NativeStyle 6.0 as NativeStyle + +NativeStyle.DefaultComboBox { +} diff --git a/src/imports/controls/windows/Frame.qml b/src/imports/controls/windows/Frame.qml new file mode 100644 index 00000000..024e31a2 --- /dev/null +++ b/src/imports/controls/windows/Frame.qml @@ -0,0 +1,43 @@ +/**************************************************************************** +** +** Copyright (C) 2020 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$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.NativeStyle 6.0 as NativeStyle + +NativeStyle.DefaultFrame { +} diff --git a/src/imports/controls/windows/RadioButton.qml b/src/imports/controls/windows/RadioButton.qml new file mode 100644 index 00000000..6f1bdb04 --- /dev/null +++ b/src/imports/controls/windows/RadioButton.qml @@ -0,0 +1,43 @@ +/**************************************************************************** +** +** Copyright (C) 2020 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$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.NativeStyle 6.0 as NativeStyle + +NativeStyle.DefaultRadioButton { +} diff --git a/src/imports/controls/windows/SpinBox.qml b/src/imports/controls/windows/SpinBox.qml new file mode 100644 index 00000000..57b7669d --- /dev/null +++ b/src/imports/controls/windows/SpinBox.qml @@ -0,0 +1,129 @@ +/**************************************************************************** +** +** Copyright (C) 2020 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$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.NativeStyle 6.0 as NativeStyle + +T.SpinBox { + id: control + + property bool nativeBackground: background instanceof NativeStyle.StyleItem + property bool nativeIndicators: true + + Component.onCompleted: { + // Work-around: up.indicator will not emit changed, so we + // need to evaluate nativeIndicators after completed instead. + nativeIndicators = up.indicator.hasOwnProperty("_qt_default") + && down.indicator.hasOwnProperty("_qt_default") + } + + font.pixelSize: nativeBackground ? background.styleFont(control).pixelSize : undefined + + implicitWidth: implicitBackgroundWidth + leftInset + rightInset + implicitHeight: Math.max(implicitBackgroundHeight, up.implicitIndicatorHeight + down.implicitIndicatorHeight) + + topInset + bottomInset + + spacing: 2 + + // Push the background right to make room for the indicators + rightInset: nativeIndicators ? up.implicitIndicatorWidth + spacing : 0 + + leftPadding: nativeBackground ? background.contentPadding.left: 0 + topPadding: nativeBackground ? background.contentPadding.top: 0 + rightPadding: (nativeBackground ? background.contentPadding.right : 0) + rightInset + bottomPadding: nativeBackground ? background.contentPadding.bottom: 0 + + validator: IntValidator { + locale: control.locale.name + bottom: Math.min(control.from, control.to) + top: Math.max(control.from, control.to) + } + + contentItem: TextInput { + text: control.displayText + font: control.font + color: control.palette.text + selectionColor: control.palette.highlight + selectedTextColor: control.palette.highlightedText + horizontalAlignment: Qt.AlignLeft + verticalAlignment: Qt.AlignVCenter + + topPadding: 2 + bottomPadding: 2 + leftPadding: 10 + rightPadding: 10 + + readOnly: !control.editable + validator: control.validator + inputMethodHints: control.inputMethodHints + } + + NativeStyle.SpinBox { + id: upAndDown + control: control + subControl: NativeStyle.SpinBox.Up + visible: nativeIndicators + x: up.indicator.x + y: up.indicator.y + useNinePatchImage: false + } + + up.indicator: Item { + x: parent.width - width + y: (parent.height / 2) - height + implicitWidth: upAndDown.width + implicitHeight: upAndDown.height / 2 + property bool _qt_default + } + + down.indicator: Item { + x: parent.width - width + y: up.indicator.y + upAndDown.height / 2 + implicitWidth: upAndDown.width + implicitHeight: upAndDown.height / 2 + property bool _qt_default + } + + background: NativeStyle.SpinBox { + control: control + subControl: NativeStyle.SpinBox.Frame + contentWidth: contentItem.implicitWidth + contentHeight: contentItem.implicitHeight + } +} diff --git a/src/imports/controls/windows/TextArea.qml b/src/imports/controls/windows/TextArea.qml new file mode 100644 index 00000000..6845c13e --- /dev/null +++ b/src/imports/controls/windows/TextArea.qml @@ -0,0 +1,43 @@ +/**************************************************************************** +** +** Copyright (C) 2020 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$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.NativeStyle 6.0 as NativeStyle + +NativeStyle.DefaultTextArea { +} diff --git a/src/imports/controls/windows/TextField.qml b/src/imports/controls/windows/TextField.qml new file mode 100644 index 00000000..5728689b --- /dev/null +++ b/src/imports/controls/windows/TextField.qml @@ -0,0 +1,43 @@ +/**************************************************************************** +** +** Copyright (C) 2020 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$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.NativeStyle 6.0 as NativeStyle + +NativeStyle.DefaultTextField { +} diff --git a/src/imports/controls/windows/windows.pri b/src/imports/controls/windows/windows.pri index 17db019a..f60f9e03 100644 --- a/src/imports/controls/windows/windows.pri +++ b/src/imports/controls/windows/windows.pri @@ -1,4 +1,11 @@ QML_FILES += \ $$PWD/Button.qml \ - $$PWD/Slider.qml \ + $$PWD/CheckBox.qml \ + $$PWD/ComboBox.qml \ + $$PWD/Frame.qml \ $$PWD/GroupBox.qml \ + $$PWD/RadioButton.qml \ + $$PWD/Slider.qml \ + $$PWD/SpinBox.qml \ + $$PWD/TextArea.qml \ + $$PWD/TextField.qml \ -- cgit v1.2.3