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

0001 /*
0002     SPDX-FileCopyrightText: 2016 Smith AR <audoban@openmailbox.org>
0003     SPDX-FileCopyrightText: 2016 Michail Vourlakos <mvourlakos@gmail.com>
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 import QtQuick 2.0
0008 
0009 import org.kde.plasma.plasmoid 2.0
0010 
0011 ////bouncing task, e.g. on launcher activating and when a new window is
0012 ////added in a group task
0013 Item{
0014     id:launcherAnimation
0015     property bool launchedAlready: false
0016     property int speed: 0.9 * taskItem.abilities.animations.speedFactor.current * taskItem.abilities.animations.duration.large
0017 
0018     readonly property bool running: launcherAnimationLoader.item ? launcherAnimationLoader.item.running : false
0019     readonly property bool paused: launcherAnimationLoader.active ? launcherAnimationLoader.item.paused : false
0020 
0021     readonly property string needThicknessEvent: launcherAnimation + "_launcher"
0022 
0023     Loader {
0024         id: launcherAnimationLoader
0025         source: "launcher/BounceAnimation.qml"
0026     }
0027 
0028     Connections {
0029         target: launcherAnimationLoader.item
0030 
0031         onStopped: {
0032             if (!taskItem.inRemoveStage) {
0033                 taskItem.inBouncingAnimation = false;
0034                 tasksExtendedManager.removeWaitingLauncher(taskItem.launcherUrl);
0035             }
0036 
0037             taskItem.abilities.parabolic.setDirectRenderingEnabled(false);
0038             clearAnimationsSignals();
0039 
0040             taskItem.setBlockingAnimation(false);
0041             taskItem.animationEnded();
0042         }
0043     }
0044 
0045     Binding {
0046         target: taskItem
0047         property: "isLauncherBuiltinAnimationRunning"
0048         value: running
0049     }
0050 
0051     function clearAnimationsSignals() {
0052         if ( launchedAlready && root.noTasksInAnimation>0 ) {
0053             root.noTasksInAnimation--;
0054         }
0055 
0056         if ( launchedAlready ) {
0057             taskItem.abilities.animations.needThickness.removeEvent(needThicknessEvent);
0058         }
0059 
0060         launchedAlready = false;
0061     }
0062 
0063     function init(){
0064         //console.log ("Nooo 1 : "+root.noTasksInAnimation);
0065         if(!launchedAlready) {
0066             taskItem.abilities.parabolic.invkClearZoom();
0067             launchedAlready = true;
0068             taskItem.abilities.animations.needThickness.addEvent(needThicknessEvent);
0069 
0070             taskItem.abilities.parabolic.setDirectRenderingEnabled(false);
0071 
0072             root.noTasksInAnimation++;
0073             taskItem.inBouncingAnimation = true;
0074             taskItem.setBlockingAnimation(true);
0075 
0076             //trying to fix the ListView nasty behavior
0077             //during the removal the anchoring for ListView children changes a lot
0078             var previousTask = icList.childAtIndex(taskItem.lastValidIndex-1);
0079             if (previousTask !== undefined && !previousTask.isStartup && !previousTask.inBouncingAnimation){
0080                 if (root.vertical) {
0081                     taskItem.anchors.top = previousTask.bottom;
0082                 } else {
0083                     taskItem.anchors.left = previousTask.right;
0084                 }
0085             }
0086         }
0087     }
0088 
0089     function startLauncherAnimation(){
0090         if (taskItem.abilities.indicators.info.providesTaskLauncherAnimation) {
0091             return;
0092         }
0093 
0094         if(root.launcherBouncingEnabled) {
0095             taskItem.animationStarted();
0096             init();
0097             launcherAnimationLoader.item.start();
0098         } else {
0099             launcherAnimationLoader.item.stop();
0100         }
0101     }
0102 
0103 
0104     Component.onCompleted: {
0105         taskItem.taskLauncherActivated.connect(startLauncherAnimation);
0106     }
0107 
0108     Component.onDestruction: {
0109         clearAnimationsSignals();
0110         taskItem.taskLauncherActivated.disconnect(startLauncherAnimation);
0111     }
0112 }
0113 /////////////////// end of launcher animation