Warning, /plasma/latte-dock/plasmoid/package/contents/ui/task/animations/NewWindowAnimation.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 import org.kde.plasma.core 2.0 as PlasmaCore
0012
0013 ////////////////// new window and needs attention animation
0014 Item{
0015 id:newWindowAnimation
0016
0017 property int speed: 1.2 * taskItem.abilities.animations.speedFactor.normal * taskItem.abilities.animations.duration.large
0018 property bool isDemandingAttention: taskItem.inAttention
0019 property bool containsMouse: taskItem.containsMouse
0020
0021 property bool inDelayedStartup: false
0022
0023 readonly property bool running: newWindowAnimationLoader.active ? newWindowAnimationLoader.item.running : false
0024 readonly property bool paused: newWindowAnimationLoader.active ? newWindowAnimationLoader.item.paused : false
0025 readonly property string needThicknessEvent: newWindowAnimation + "_newwindow"
0026
0027 Loader {
0028 id: newWindowAnimationLoader
0029 source: "newwindow/BounceAnimation.qml"
0030 }
0031
0032 Connections {
0033 target: newWindowAnimationLoader.item
0034
0035 onStopped: {
0036 taskItem.abilities.animations.needThickness.removeEvent(needThicknessEvent);
0037 newWindowAnimation.clear();
0038 }
0039 }
0040
0041 Connections{
0042 target: taskItem
0043
0044 onInAttentionChanged:{
0045 if (!taskItem.inAttention && newWindowAnimation.running && taskItem.inAttentionBuiltinAnimation) {
0046 clear();
0047 }
0048 }
0049 }
0050
0051 function clear(){
0052 newWindowAnimationLoader.item.stop();
0053 taskItem.setBlockingAnimation(false);
0054 taskItem.inAttentionBuiltinAnimation = false;
0055 taskItem.inNewWindowBuiltinAnimation = false;
0056 }
0057
0058 function stop() {
0059 if (running) {
0060 clear();
0061 }
0062 }
0063
0064 onIsDemandingAttentionChanged: {
0065 if(isDemandingAttention){
0066 startNewWindowAnimation();
0067 }
0068 }
0069
0070 function init(){
0071 taskItem.setBlockingAnimation(true);
0072 taskItem.inNewWindowBuiltinAnimation = true;
0073 taskItem.inAttentionBuiltinAnimation = isDemandingAttention;
0074 taskItem.abilities.animations.needThickness.addEvent(needThicknessEvent);
0075 }
0076
0077 function startNewWindowAnimation(){
0078 if (isDemandingAttention && taskItem.abilities.indicators.info.providesInAttentionAnimation) {
0079 return;
0080 } else if (!isDemandingAttention && taskItem.abilities.indicators.info.providesGroupedWindowAddedAnimation) {
0081 return;
0082 }
0083
0084 if (!taskItem.abilities.myView.isHidden
0085 && ((root.windowInAttentionEnabled && isDemandingAttention)
0086 || root.windowAddedInGroupEnabled)){
0087 if (newWindowAnimationLoader.status !== Loader.Ready) {
0088 inDelayedStartup = true;
0089 } else {
0090 newWindowAnimation.init();
0091 newWindowAnimationLoader.item.start();
0092 }
0093 }
0094 }
0095
0096 Component.onCompleted: {
0097 taskItem.taskGroupedWindowAdded.connect(startNewWindowAnimation);
0098 }
0099
0100 Component.onDestruction: {
0101 taskItem.taskGroupedWindowAdded.disconnect(startNewWindowAnimation);
0102 taskItem.abilities.animations.needThickness.removeEvent(needThicknessEvent);
0103 }
0104 }