Warning, /plasma/latte-dock/declarativeimports/components/TextField.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2019 Michail Vourlakos <mvourlakos@gmail.com> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 import QtQuick 2.0 0006 import QtQuick.Layouts 1.3 0007 import QtQuick.Controls 1.4 0008 0009 import org.kde.plasma.components 2.0 as PlasmaComponents 0010 0011 PlasmaComponents.TextField { 0012 id: textField 0013 0014 validator: IntValidator { 0015 bottom: minValue 0016 top: maxValue 0017 } 0018 0019 onTextChanged: { 0020 if (text.trim() === minValue.toString()) 0021 text = "" 0022 } 0023 0024 font.italic: true 0025 inputMethodHints: Qt.ImhDigitsOnly 0026 placeholderText: i18n("none") 0027 horizontalAlignment: Text.AlignLeft 0028 0029 readonly property int implicitWidth: internalContent.width + theme.mSize(theme.defaultFont).width * 3.5 0030 0031 readonly property int value: text === "" ? minValue : parseInt(text) 0032 property int step: 100 0033 property int minValue: 0 0034 property int maxValue: 3000 0035 0036 function increment() { 0037 var val = text === "" ? minValue : parseInt(text) 0038 text = Math.min(val + step, maxValue).toString() 0039 } 0040 0041 function decrement() { 0042 var val = text === "" ? minValue : parseInt(text) 0043 val = Math.max(val - step, minValue) 0044 text = val === minValue ? "" : val.toString() 0045 } 0046 0047 RowLayout { 0048 id: internalContent 0049 spacing: 0 0050 anchors.top: parent.top 0051 anchors.bottom: parent.bottom 0052 anchors.right: parent.right 0053 0054 LayoutMirroring.enabled: Qt.application.layoutDirection === Qt.RightToLeft 0055 LayoutMirroring.childrenInherit: true 0056 0057 PlasmaComponents.Label { 0058 Layout.alignment: Qt.AlignVCenter 0059 color: textField.textColor 0060 text: i18n("ms.") 0061 font.italic: true 0062 opacity: value === 0 ? 0 : 0.6 0063 } 0064 PlasmaComponents.Button { 0065 id: downButton 0066 0067 Layout.fillHeight: true 0068 Layout.preferredWidth: height 0069 Layout.maximumWidth: height 0070 Layout.leftMargin: Qt.application.layoutDirection === Qt.RightToLeft ? 0 : 0.7 * theme.mSize(theme.defaultFont).width 0071 Layout.rightMargin: Qt.application.layoutDirection === Qt.RightToLeft ? 0.7 * theme.mSize(theme.defaultFont).width : 0 0072 0073 text: "-" 0074 onClicked: decrement() 0075 } 0076 PlasmaComponents.Button { 0077 id: upButton 0078 0079 Layout.fillHeight: true 0080 Layout.preferredWidth: height 0081 Layout.maximumWidth: height 0082 text: "+" 0083 onClicked: increment() 0084 } 0085 } 0086 0087 Timer { 0088 id: holdPressed 0089 running: upButton.pressed || downButton.pressed 0090 interval: 200 0091 repeat: true 0092 0093 onRunningChanged: { 0094 if (!running) 0095 interval = 200 0096 } 0097 0098 onTriggered: { 0099 if (interval === 200) 0100 interval = 150 0101 else if (upButton.pressed) 0102 increment() 0103 else 0104 decrement() 0105 } 0106 } 0107 0108 MouseArea { 0109 anchors.fill: parent 0110 acceptedButtons: Qt.MiddleButton 0111 0112 onWheel: { 0113 var angle = wheel.angleDelta.y / 8 0114 0115 if (angle > 0) { 0116 increment() 0117 } else if (angle < 0) { 0118 decrement() 0119 } 0120 } 0121 } 0122 }