Warning, /plasma/kdeplasma-addons/applets/timer/package/contents/ui/TimerView.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  *   SPDX-FileCopyrightText: 2008, 2014 Davide Bettio <davide.bettio@kdemail.net>
0003  *   SPDX-FileCopyrightText: 2015 Bernhard Friedreich <friesoft@gmail.com>
0004  *
0005  *   SPDX-License-Identifier: GPL-2.0-or-later
0006  */
0007 
0008 import QtQuick 2.15
0009 import QtQuick.Layouts 1.15
0010 
0011 import org.kde.plasma.plasmoid 2.0
0012 import org.kde.kirigami 2.20 as Kirigami
0013 import org.kde.plasma.components 3.0 as PlasmaComponents3
0014 import org.kde.plasma.extras 2.0 as PlasmaExtras
0015 import org.kde.kquickcontrolsaddons 2.0 as QtExtra
0016 
0017 MouseArea {
0018     Layout.preferredWidth: Math.max(Plasmoid.compactRepresentationItem.width, Kirigami.Units.gridUnit * 10)
0019     Layout.preferredHeight: main.implicitHeight
0020 
0021     onClicked: root.toggleTimer()
0022 
0023     Component {
0024         id: popupHeadingComponent
0025 
0026         PlasmaExtras.PlasmoidHeading {
0027             leftPadding: Kirigami.Units.smallSpacing * 2
0028             rightPadding: Kirigami.Units.smallSpacing * 2
0029 
0030             contentItem: Kirigami.Heading {
0031                 level: 3
0032                 elide: Text.ElideRight
0033                 horizontalAlignment: Text.AlignHCenter
0034                 text: root.title
0035                 textFormat: Text.PlainText
0036             }
0037         }
0038     }
0039 
0040     Component {
0041         id: desktopHeadingComponent
0042 
0043         PlasmaComponents3.Label {
0044             elide: Text.ElideRight
0045             font.pixelSize: 0.3 * timerDigits.height
0046             text: root.title
0047             textFormat: Text.PlainText
0048         }
0049     }
0050 
0051     ColumnLayout {
0052         id: main
0053 
0054         width: parent.width
0055 
0056         Loader {
0057             Layout.fillWidth: true
0058 
0059             active: root.showTitle
0060 
0061             sourceComponent: root.inPanel ? popupHeadingComponent : desktopHeadingComponent
0062         }
0063 
0064         TimerEdit {
0065             id: timerDigits
0066 
0067             Layout.fillWidth: true
0068             visible: root.showRemainingTime
0069 
0070             value: root.seconds
0071             editable: !root.running
0072             alertMode: root.alertMode
0073             onDigitModified: valueDelta => root.seconds += valueDelta
0074             SequentialAnimation on opacity {
0075                 running: root.suspended;
0076                 loops: Animation.Infinite;
0077                 NumberAnimation {
0078                     duration: Kirigami.Units.veryLongDuration * 2;
0079                     from: 1.0;
0080                     to: 0.2;
0081                     easing.type: Easing.InOutQuad;
0082                 }
0083                 PauseAnimation {
0084                     duration: Kirigami.Units.veryLongDuration;
0085                 }
0086                 NumberAnimation {
0087                     duration: Kirigami.Units.veryLongDuration * 2;
0088                     from: 0.2;
0089                     to: 1.0;
0090                     easing.type: Easing.InOutQuad;
0091                 }
0092                 PauseAnimation {
0093                     duration: Kirigami.Units.veryLongDuration;
0094                 }
0095             }
0096         }
0097 
0098         PlasmaComponents3.ProgressBar {
0099             id: remainingTimeProgressBar
0100 
0101             Layout.fillWidth: true
0102             Layout.fillHeight: true
0103             visible: root.showProgressBar
0104 
0105             from: plasmoid.configuration.seconds
0106             to: 0
0107             value: root.seconds
0108         }
0109 
0110         function resetOpacity() {
0111             timerDigits.opacity = 1.0;
0112         }
0113 
0114         Component.onCompleted: {
0115             root.opacityNeedsReset.connect(resetOpacity);
0116         }
0117     }
0118 }
0119