133 lines
4.1 KiB
QML
133 lines
4.1 KiB
QML
/****************************************************************************
|
|
**
|
|
** 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
|
|
}
|