diff options
author | Samuli Piippo <samuli.piippo@qt.io> | 2020-10-12 14:16:29 +0300 |
---|---|---|
committer | Samuli Piippo <samuli.piippo@qt.io> | 2020-10-15 12:47:16 +0000 |
commit | 1acdb32d00291e5a9b5b4928e0896a162f101bbc (patch) | |
tree | d7b36c08fc134f99020a0f7bd4f2e750427e3f07 /startupscreen/AnalogClock.qml | |
parent | 7388938e086ff214b73d95a9b4df9b74683b5525 (diff) |
Add initial mock up for Boot to Qt Startup Screen
Initial implementation by Antti Aaltonen (QTBUG-86126).
Changes done:
- converted into cmake/qmake project
- need to keep pro file for Design Studio
- updated to work with Qt6
- removed Qt Design Studio (GPL) components
- added BSD license headers
Task-number: QTBUG-87026
Change-Id: I6dea6a2815e5fbd17a5e8ce259f3dc98a58116fe
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'startupscreen/AnalogClock.qml')
-rw-r--r-- | startupscreen/AnalogClock.qml | 183 |
1 files changed, 183 insertions, 0 deletions
diff --git a/startupscreen/AnalogClock.qml b/startupscreen/AnalogClock.qml new file mode 100644 index 0000000..a430227 --- /dev/null +++ b/startupscreen/AnalogClock.qml @@ -0,0 +1,183 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the examples of Qt for Device Creation. +** +** $QT_BEGIN_LICENSE:BSD$ +** 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. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import StartupScreen 1.0 + +Item { + id: clock + + property int hours + property int minutes + property int seconds + + // for clock scaling + property int clockRadius + property int wideDial: 3 + property int narrowDial: 1 + + function timeChanged() { + var date = new Date; + hours = date.getHours() + minutes = date.getMinutes() + seconds = date.getUTCSeconds(); + } + + clockRadius: width/2 + + Timer { + interval: 100 + running: true + repeat: true; + onTriggered: clock.timeChanged() + } + + Item { + id: analogClock + + width: clock.width + height: clock.height + anchors.centerIn: parent + + Image { + id: background + source: "assets/clockFace.png" + width: clock.width + height: clock.height + anchors.centerIn: parent + } + + Rectangle { + id: hourDial + x: clockRadius - (wideDial/2) + y: clockRadius/2 + width: wideDial + height: clockRadius/2 + color: "#53586b" + radius: width/2 + + transform: Rotation { + id: hourRotation + origin.x: 2 + origin.y: clockRadius/2 + angle: (clock.hours * 30) + (clock.minutes * 0.5) + Behavior on angle { + SpringAnimation { + spring: 2 + damping: 0.2 + modulus: 360 + } + } + } + } + Rectangle { + id: minuteDial + x: clockRadius - (wideDial/2) + y: 32 + width: wideDial + height: clockRadius - 32 + color: "#53586b" + radius: width/2 + + transform: Rotation { + id: minuteRotation + origin.x: 2 + origin.y: clockRadius - 32 + angle: clock.minutes * 6 + Behavior on angle { + SpringAnimation { + spring: 2 + damping: 0.2 + modulus: 360 + } + } + } + } + + Rectangle { + id: secondHand + x: clockRadius - (narrowDial/2) + y: 24 + width: narrowDial + height: clockRadius - 24 + color: "red" + radius: width/2 + + transform: Rotation { + id: secondRotation + origin.x: 1 + origin.y: clockRadius - 24 + angle: clock.seconds * 6 + Behavior on angle { + SpringAnimation { + spring: 2 + damping: 0.2 + modulus: 360 + } + } + } + } + + Rectangle { + id: center + width: narrowDial + wideDial + height: width + color: "black" + radius: width / 2 + anchors.centerIn: parent + } + } +} + +/*##^## +Designer { + D{i:0;autoSize:true;height:100;width:100} +} +##^##*/ |