Warning, /maui/nomad-style/SpinBox.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  * Copyright 2017 Marco Martin <mart@kde.org>
0003  * Copyright 2017 The Qt Company Ltd.
0004  *
0005  * GNU Lesser General Public License Usage
0006  * Alternatively, this file may be used under the terms of the GNU Lesser
0007  * General Public License version 3 as published by the Free Software
0008  * Foundation and appearing in the file LICENSE.LGPLv3 included in the
0009  * packaging of this file. Please review the following information to
0010  * ensure the GNU Lesser General Public License version 3 requirements
0011  * will be met: https://www.gnu.org/licenses/lgpl.html.
0012  *
0013  * GNU General Public License Usage
0014  * Alternatively, this file may be used under the terms of the GNU
0015  * General Public License version 2.0 or later as published by the Free
0016  * Software Foundation and appearing in the file LICENSE.GPL included in
0017  * the packaging of this file. Please review the following information to
0018  * ensure the GNU General Public License version 2.0 requirements will be
0019  * met: http://www.gnu.org/licenses/gpl-2.0.html.
0020  */
0021 
0022 
0023 import QtQuick 2.6
0024 import QtQuick.Templates 2.3 as T
0025 import org.kde.kirigami 2.2 as Kirigami
0026 import org.kde.qqc2desktopstyle.private 1.0 as StylePrivate
0027 
0028 T.SpinBox {
0029     id: controlRoot
0030     Kirigami.Theme.colorSet: Kirigami.Theme.View
0031     Kirigami.Theme.inherit: false
0032 
0033     implicitWidth: Math.max(48, contentItem.implicitWidth + 2 * padding +  up.indicator.implicitWidth)
0034     implicitHeight: contentItem.implicitHeight + topPadding + bottomPadding
0035 
0036     padding: 6
0037     leftPadding: padding + (controlRoot.mirrored ? (up.indicator ? up.indicator.width : 0) : 0)
0038     rightPadding: padding + (controlRoot.mirrored ? 0 : (up.indicator ? up.indicator.width : 0))
0039 
0040 
0041     hoverEnabled: true
0042 
0043     validator: IntValidator {
0044         locale: controlRoot.locale.name
0045         bottom: Math.min(controlRoot.from, controlRoot.to)
0046         top: Math.max(controlRoot.from, controlRoot.to)
0047     }
0048 
0049     contentItem: TextInput {
0050         z: 2
0051         text: controlRoot.textFromValue(controlRoot.value, controlRoot.locale)
0052         opacity: controlRoot.enabled ? 1 : 0.3
0053 
0054         font: controlRoot.font
0055         color: Kirigami.Theme.textColor
0056         selectionColor: Kirigami.Theme.highlightColor
0057         selectedTextColor: Kirigami.Theme.highlightedTextColor
0058         horizontalAlignment: Qt.AlignHCenter
0059         verticalAlignment: Qt.AlignVCenter
0060 
0061         readOnly: !controlRoot.editable
0062         validator: controlRoot.validator
0063         inputMethodHints: Qt.ImhFormattedNumbersOnly
0064 
0065         MouseArea {
0066             anchors.fill: parent
0067             onPressed: mouse.accepted = false;
0068             onWheel: {
0069                 if (wheel.pixelDelta.y < 0 || wheel.angleDelta.y < 0) {
0070                     controlRoot.decrease();
0071                 } else {
0072                     controlRoot.increase();
0073                 }
0074             }
0075         }
0076     }
0077 
0078     up.indicator: Item {
0079         implicitWidth: parent.height/2
0080         implicitHeight: implicitWidth
0081         x: controlRoot.mirrored ? 0 : parent.width - width
0082     }
0083     down.indicator: Item {
0084         implicitWidth: parent.height/2
0085         implicitHeight: implicitWidth
0086  
0087         x: controlRoot.mirrored ? 0 : parent.width - width
0088         y: parent.height - height
0089     }
0090 
0091 
0092     background: StylePrivate.StyleItem {
0093         id: styleitem
0094         control: controlRoot
0095         elementType: "spinbox"
0096         anchors.fill: parent
0097         hover: controlRoot.hovered
0098         hasFocus: controlRoot.activeFocus
0099         enabled: controlRoot.enabled
0100 
0101         value: (controlRoot.up.pressed ? 1 : 0) |
0102                    (controlRoot.down.pressed ? 1<<1 : 0) |
0103                    ( controlRoot.value != controlRoot.to ? (1<<2) : 0) |
0104                    (controlRoot.value != controlRoot.from ? (1<<3) : 0) |
0105                    (controlRoot.up.hovered ? 0x1 : 0) |
0106                    (controlRoot.down.hovered ? (1<<1) : 0)
0107     }
0108 }