1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
/****************************************************************************
**
** Copyright (C) 2020 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Designer Components.
**
** $QT_BEGIN_LICENSE:GPL$
** 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 https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.10
/*!
\qmltype MinMaxMapper
\inqmlmodule QtQuick.Studio.LogicHelper
\since QtQuick.Studio.LogicHelper 1.0
\inherits QtObject
\brief Provides access to values that are out or range.
The MinMaxMapper type has output values even if the input value is out
of range or too small or big. This enables applying actions to values
even if they are out of range, such as changing a color in a state.
To access the values of a control, the \l input property of the
minimum-maximum mapper is bound to that of the \c value property
of the control.
For example, to restrict the maximum value of a slider to 0.60,
regardless of the maximum value set in the slider properties,
we bind the value of the \l input property of the mapper to
the value of the \c value property of the slider and set the value
of the \l maximum property to 0.60.
The \l outOfRange, \l aboveMaximum and \l belowMinimum properties are set to
\c true if the value of the \l input property is out of range.
For example, in the context of speed, \l aboveMaximum being \c true
would mean \e {too fast}, whereas \l belowMinimum being \c true would
mean \e {too slow}, and \l outOfRange being \c true would mean
\e {either too fast or too slow}.
Designers can use the Min Max Mapper type in \QDS instead of writing
JavaScript expressions.
\section1 Example Usage
In the following example, we use the MinMaxMapper type to restrict the
maximum value of a \l Slider type to 0.60, regardless of the maximum
value set in the Slider properties:
\code
Rectangle {
Slider {
id: slider
value: 0.5
}
MinMaxMapper {
id: minMaxMapper
input: slider.value
maximum: 0.6
}
}
\endcode
*/
QtObject {
id: object
/*!
The input value.
*/
property real input: 0
/*!
Whether \l input is less than \l minimum.
*/
property bool belowMinimum: object.input < object.minimum
/*!
Whether \l input is larger than \l maximum.
*/
property bool aboveMaximum: object.input > object.maximum
/*!
Whether \l input is out of range. Returns \c true if \l belowMinimum or
\l aboveMaximum is \c true.
*/
property bool outOfRange: object.aboveMaximum ||object.belowMinimum
/*!
The value of \l input. If \l aboveMaximum is \c true, returns the value of
\l maximum. If \l belowMinimum is \c true, returns the value of \l minimum.
*/
property real output: {
if (object.aboveMaximum)
return object.maximum
if (object.belowMinimum)
return object.minimum
return object.input
}
/*!
The minimum value of \l input.
*/
property real minimum: 0
/*!
The maximum value of \l input.
*/
property real maximum: 100
}
|