Warning, /plasma/plasma-workspace/applets/analog-clock/contents/ui/Hand.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2012 Viranch Mehta <viranch.mehta@gmail.com>
0003 SPDX-FileCopyrightText: 2012 Marco Martin <mart@kde.org>
0004 SPDX-FileCopyrightText: 2013 David Edmundson <davidedmundson@kde.org>
0005
0006 SPDX-License-Identifier: LGPL-2.0-or-later
0007 */
0008
0009 import QtQuick 2.0
0010
0011 import org.kde.ksvg 1.0 as KSvg
0012 import org.kde.kirigami 2.20 as Kirigami
0013
0014 KSvg.SvgItem {
0015 id: handRoot
0016
0017 property alias rotation: rotation.angle
0018 property double svgScale
0019 property double horizontalRotationOffset: 0
0020 property double verticalRotationOffset: 0
0021 property string rotationCenterHintId
0022 readonly property double horizontalRotationCenter: {
0023 if (svg.hasElement(rotationCenterHintId)) {
0024 var hintedCenterRect = svg.elementRect(rotationCenterHintId),
0025 handRect = svg.elementRect(elementId),
0026 hintedX = hintedCenterRect.x - handRect.x + hintedCenterRect.width/2;
0027 return Math.round(hintedX * svgScale) + Math.round(hintedX * svgScale) % 2;
0028 }
0029 return width/2;
0030 }
0031 readonly property double verticalRotationCenter: {
0032 if (svg.hasElement(rotationCenterHintId)) {
0033 var hintedCenterRect = svg.elementRect(rotationCenterHintId),
0034 handRect = svg.elementRect(elementId),
0035 hintedY = hintedCenterRect.y - handRect.y + hintedCenterRect.height/2;
0036 return Math.round(hintedY * svgScale) + width % 2;
0037 }
0038 return width/2;
0039 }
0040
0041 width: Math.round(naturalSize.width * svgScale) + Math.round(naturalSize.width * svgScale) % 2
0042 height: Math.round(naturalSize.height * svgScale) + width % 2
0043 anchors {
0044 top: clock.verticalCenter
0045 topMargin: -verticalRotationCenter + verticalRotationOffset
0046 left: clock.horizontalCenter
0047 leftMargin: -horizontalRotationCenter + horizontalRotationOffset
0048 }
0049
0050 svg: clockSvg
0051 transform: Rotation {
0052 id: rotation
0053 angle: 0
0054 origin {
0055 x: handRoot.horizontalRotationCenter
0056 y: handRoot.verticalRotationCenter
0057 }
0058 Behavior on angle {
0059 RotationAnimation {
0060 id: anim
0061 duration: Kirigami.Units.longDuration
0062 direction: RotationAnimation.Clockwise
0063 easing.type: Easing.OutElastic
0064 easing.overshoot: 0.5
0065 }
0066 }
0067 }
0068 }