Warning, /plasma/latte-dock/plasmoid/package/contents/ui/task/animations/launcher/BounceAnimation.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2020 Michail Vourlakos <mvourlakos@gmail.com>
0003     SPDX-License-Identifier: GPL-2.0-or-later
0004 */
0005 
0006 import QtQuick 2.0
0007 
0008 import org.kde.plasma.plasmoid 2.0
0009 
0010 SequentialAnimation{
0011     readonly property string bouncePropertyName: taskItem.isVertical ? "iconAnimatedOffsetX" : "iconAnimatedOffsetY"
0012 
0013     Component.onDestruction: {
0014         //! make sure to return on initial position even when the animation is destroyed in the middle
0015         if (taskItem.isVertical) {
0016             taskItem.iconAnimatedOffsetX = 0;
0017         } else {
0018             taskItem.iconAnimatedOffsetY = 0;
0019         }
0020     }
0021 
0022     //Ghost animation that acts as a delayer
0023     PropertyAnimation {
0024         target: taskItem.parabolicItem
0025         property: "opacity"
0026         to: 1
0027         duration:  50
0028         easing.type: Easing.InQuad
0029     }
0030     //end of ghost animation
0031 
0032     ParallelAnimation {
0033         PropertyAnimation {
0034             target: taskItem.parabolicItem
0035             property: "zoom"
0036             to: 1
0037             duration: launcherAnimation.speed
0038             easing.type: Easing.OutQuad
0039         }
0040 
0041         PropertyAnimation {
0042             target: taskItem
0043             property: bouncePropertyName
0044             to: taskItem.abilities.metrics.iconSize
0045             duration: launcherAnimation.speed
0046             easing.type: Easing.OutQuad
0047         }
0048     }
0049 
0050     PropertyAnimation {
0051         target: taskItem
0052         property: bouncePropertyName
0053         to: 0
0054         duration: 4*launcherAnimation.speed
0055         easing.type: Easing.OutBounce
0056     }
0057 
0058     onStopped: {
0059         //! make sure to return on initial position even when the animation is destroyed in the middle
0060         if (taskItem.isVertical) {
0061             taskItem.iconAnimatedOffsetX = 0;
0062         } else {
0063             taskItem.iconAnimatedOffsetY = 0;
0064         }
0065     }
0066 }