| /**************************************************************************** |
| ** |
| ** Copyright (C) 2017 The Qt Company Ltd. |
| ** Contact: https://www.qt.io/licensing/ |
| ** |
| ** This file is part of the documentation of the Qt Toolkit. |
| ** |
| ** $QT_BEGIN_LICENSE:FDL$ |
| ** 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 Free Documentation License Usage |
| ** Alternatively, this file may be used under the terms of the GNU Free |
| ** Documentation License version 1.3 as published by the Free Software |
| ** Foundation and appearing in the file included in the packaging of |
| ** this file. Please review the following information to ensure |
| ** the GNU Free Documentation License version 1.3 requirements |
| ** will be met: https://www.gnu.org/licenses/fdl-1.3.html. |
| ** $QT_END_LICENSE$ |
| ** |
| ****************************************************************************/ |
| |
| //! [tumbler] |
| import QtQuick 2.12 |
| import QtQuick.Window 2.2 |
| import QtQuick.Controls 2.12 |
| |
| Rectangle { |
| width: frame.implicitWidth + 10 |
| height: frame.implicitHeight + 10 |
| |
| function formatText(count, modelData) { |
| var data = count === 12 ? modelData + 1 : modelData; |
| return data.toString().length < 2 ? "0" + data : data; |
| } |
| |
| FontMetrics { |
| id: fontMetrics |
| } |
| |
| Component { |
| id: delegateComponent |
| |
| Label { |
| text: formatText(Tumbler.tumbler.count, modelData) |
| opacity: 1.0 - Math.abs(Tumbler.displacement) / (Tumbler.tumbler.visibleItemCount / 2) |
| horizontalAlignment: Text.AlignHCenter |
| verticalAlignment: Text.AlignVCenter |
| font.pixelSize: fontMetrics.font.pixelSize * 1.25 |
| } |
| } |
| |
| Frame { |
| id: frame |
| padding: 0 |
| anchors.centerIn: parent |
| |
| Row { |
| id: row |
| |
| Tumbler { |
| id: hoursTumbler |
| model: 12 |
| delegate: delegateComponent |
| } |
| |
| Tumbler { |
| id: minutesTumbler |
| model: 60 |
| delegate: delegateComponent |
| } |
| |
| Tumbler { |
| id: amPmTumbler |
| model: ["AM", "PM"] |
| delegate: delegateComponent |
| } |
| } |
| } |
| } |
| //! [tumbler] |