Warning, /maui/mauikit/src/style.5/SpinBox.qml is written in an unsupported language. File is not indexed.

0001 /****************************************************************************
0002  * *
0003  ** Copyright (C) 2017 The Qt Company Ltd.
0004  ** Contact: http://www.qt.io/licensing/
0005  **
0006  ** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit.
0007  **
0008  ** $QT_BEGIN_LICENSE:LGPL3$
0009  ** Commercial License Usage
0010  ** Licensees holding valid commercial Qt licenses may use this file in
0011  ** accordance with the commercial license agreement provided with the
0012  ** Software or, alternatively, in accordance with the terms contained in
0013  ** a written agreement between you and The Qt Company. For licensing terms
0014  ** and conditions see http://www.qt.io/terms-conditions. For further
0015  ** information use the contact form at http://www.qt.io/contact-us.
0016  **
0017  ** GNU Lesser General Public License Usage
0018  ** Alternatively, this file may be used under the terms of the GNU Lesser
0019  ** General Public License version 3 as published by the Free Software
0020  ** Foundation and appearing in the file LICENSE.LGPLv3 included in the
0021  ** packaging of this file. Please review the following information to
0022  ** ensure the GNU Lesser General Public License version 3 requirements
0023  ** will be met: https://www.gnu.org/licenses/lgpl.html.
0024  **
0025  ** GNU General Public License Usage
0026  ** Alternatively, this file may be used under the terms of the GNU
0027  ** General Public License version 2.0 or later as published by the Free
0028  ** Software Foundation and appearing in the file LICENSE.GPL included in
0029  ** the packaging of this file. Please review the following information to
0030  ** ensure the GNU General Public License version 2.0 requirements will be
0031  ** met: http://www.gnu.org/licenses/gpl-2.0.html.
0032  **
0033  ** $QT_END_LICENSE$
0034  **
0035  ****************************************************************************/
0036 
0037 import QtQuick 2.12
0038 import QtQuick.Templates 2.12 as T
0039 
0040 import org.mauikit.controls 1.2 as Maui
0041 import QtQuick.Window 2.1
0042 
0043 
0044 T.SpinBox
0045 {
0046     id: control
0047     opacity: control.enabled ? 1 : 0.5
0048     
0049     Maui.Theme.colorSet: Maui.Theme.Button
0050     Maui.Theme.inherit: false
0051         hoverEnabled: !Maui.Handy.isMobile
0052 
0053     property int preferredWidth : 100
0054 
0055     implicitWidth: Math.max(preferredWidth, contentItem.implicitWidth +
0056                             up.implicitIndicatorWidth +
0057                             down.implicitIndicatorWidth + leftPadding + rightPadding)
0058     implicitHeight: Math.max(implicitContentHeight + topPadding + bottomPadding,
0059                              up.implicitIndicatorHeight,
0060                              down.implicitIndicatorHeight)
0061     
0062 
0063     editable: true
0064 
0065     padding: Maui.Style.defaultPadding
0066     spacing: Maui.Style.space.small  
0067     
0068     leftPadding: (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0))
0069     rightPadding: (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0))
0070     
0071     validator: IntValidator
0072     {
0073         locale: control.locale.name
0074         bottom: Math.min(control.from, control.to)
0075         top: Math.max(control.from, control.to)
0076     }
0077     
0078     contentItem: TextInput
0079     {
0080         text: control.textFromValue(control.value, control.locale)
0081         opacity: control.enabled ? 1 : 0.3
0082         
0083         font: control.font
0084         color: Maui.Theme.textColor
0085         selectionColor: Maui.Theme.highlightColor
0086         selectedTextColor: Maui.Theme.highlightedTextColor
0087         horizontalAlignment: Qt.AlignHCenter
0088         verticalAlignment: Qt.AlignVCenter
0089         
0090         readOnly: !control.editable
0091         validator: control.validator
0092         inputMethodHints: Qt.ImhFormattedNumbersOnly
0093         renderType: Screen.devicePixelRatio % 1 !== 0 ? Text.QtRendering : Text.NativeRendering
0094         Behavior on color
0095         {
0096             Maui.ColorTransition{}
0097             
0098         }
0099         MouseArea
0100         {
0101             anchors.fill: parent
0102             onPressed: mouse.accepted = false;
0103             onExited: wheelDelta = 0
0104             onWheel:
0105             {
0106                 wheelDelta += wheel.angleDelta.y;
0107                 // magic number 120 for common "one click"
0108                 // See: http://qt-project.org/doc/qt-5/qml-qtquick-wheelevent.html#angleDelta-prop
0109                 while (wheelDelta >= 120) {
0110                     wheelDelta -= 120;
0111                     controlRoot.increase();
0112                     controlRoot.valueModified();
0113                 }
0114                 while (wheelDelta <= -120) {
0115                     wheelDelta += 120;
0116                     controlRoot.decrease();
0117                     controlRoot.valueModified();
0118                 }
0119             }
0120             cursorShape: Qt.IBeamCursor
0121         }
0122     }
0123     
0124     up.indicator: Item
0125     {
0126         x: control.mirrored ? 0 : parent.width - width
0127         height: control.height
0128         width: height
0129         
0130         Maui.Icon
0131         {
0132             source: "list-add"
0133             anchors.centerIn: parent
0134             width: Maui.Style.iconSizes.small
0135             height: width
0136             color: Maui.Theme.textColor            
0137         }
0138     }
0139     
0140     down.indicator: Item
0141     {
0142         x: control.mirrored ? parent.width - width : 0
0143         height: control.height
0144         width: height
0145         
0146         Maui.Icon
0147         {
0148             source: "list-remove"
0149             anchors.centerIn: parent
0150             width: Maui.Style.iconSizes.small
0151             height: width
0152             color: Maui.Theme.textColor
0153             Behavior on color
0154             {
0155                 Maui.ColorTransition{}
0156             }
0157             
0158         }
0159     }
0160     
0161     background: Rectangle
0162     {        
0163         radius: Maui.Style.radiusV
0164         
0165         color: control.hovered ? Maui.Theme.hoverColor : Maui.Theme.backgroundColor
0166         
0167         Behavior on color
0168         {
0169             Maui.ColorTransition{}
0170             
0171         }
0172     }
0173 }