Warning, /graphics/krita/libs/libqml/plugins/components/RangeInput.qml is written in an unsupported language. File is not indexed.

0001 /* This file is part of the KDE project
0002  * SPDX-FileCopyrightText: 2012 Dan Leinir Turthra Jensen <admin@leinir.dk>
0003  *
0004  * SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 
0007 import QtQuick 2.3
0008 import org.krita.sketch 1.0
0009 
0010 Item {
0011     id: base;
0012 
0013     property bool enabled: true;
0014     property alias placeholder: textField.placeholder;
0015     property real value: 0;
0016     property real min: 0;
0017     property real max: 1000;
0018     property int decimals: 2;
0019     property alias useExponentialValue: valueSlider.useExponentialValue;
0020 
0021     height: textField.height + valueSlider.height;
0022 
0023     property alias border: valueSlider.border;
0024     property alias background: valueSlider.background;
0025 
0026     onMinChanged: d.fixHandle();
0027     onMaxChanged: d.fixHandle();
0028     onValueChanged: {
0029         if (decimals === 0) {
0030             if (value !== Math.round(value))
0031             {
0032                 value = Math.round(value);
0033                 return;
0034             }
0035         }
0036         else if (value * Math.pow(10, decimals) !== Math.round(value * Math.pow(10, decimals))) {
0037             value = Math.round(value * Math.pow(10, decimals)) / Math.pow(10, decimals);
0038             return;
0039         }
0040         if (value < min) {
0041             value = min;
0042             return;
0043         }
0044         if (value > max) {
0045             value = max;
0046             return;
0047         }
0048         if (textField.text != value) {
0049             textField.text = value.toFixed(decimals);
0050         }
0051         if (useExponentialValue) {
0052              if (valueSlider.exponentialValue !== value) {
0053                  valueSlider.exponentialValue = ( (value - min) / (max - min) ) * 100;
0054              }
0055         }
0056         else {
0057             if (valueSlider.value !== value) {
0058                 valueSlider.value = ( (value - min) / (max - min) ) * 100;
0059             }
0060         }
0061     }
0062 
0063     PanelTextField {
0064         id: textField
0065         anchors {
0066             top: parent.top;
0067             left: parent.left;
0068             right: parent.right;
0069         }
0070         onFocusLost: value = text;
0071         onAccepted: value = text;
0072         numeric: true;
0073 
0074         border.width: valueSlider.border.width;
0075         border.color: valueSlider.border.color;
0076         background: valueSlider.background;
0077     }
0078     Slider {
0079         id: valueSlider;
0080         anchors {
0081             top: textField.bottom;
0082             left: parent.left;
0083             right: parent.right;
0084             leftMargin: Constants.DefaultMargin;
0085             rightMargin: Constants.DefaultMargin;
0086         }
0087         highPrecision: true;
0088         onExponentialValueChanged: {
0089             if (useExponentialValue) {
0090                 base.value = base.min + ((exponentialValue / 100) * (base.max - base.min))
0091             }
0092         }
0093         onValueChanged: {
0094             if (!useExponentialValue) {
0095                 base.value = base.min + ((value / 100) * (base.max - base.min));
0096             }
0097         }
0098     }
0099     QtObject {
0100         id: d;
0101         function fixHandle() {
0102             var currentVal = base.value;
0103             // Set the value to something it isn't currently
0104             base.value = base.min;
0105             base.value = base.max;
0106             // Set it back to what it was
0107             base.value = currentVal;
0108         }
0109     }
0110 }