Warning, /plasma/plasma-mobile/containments/homescreens/folio/package/contents/ui/delegate/AppDelegate.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2023 Devin Lin <devin@kde.org> 0002 // SPDX-License-Identifier: LGPL-2.0-or-later 0003 0004 import QtQuick 0005 import QtQuick.Layouts 0006 import QtQuick.Controls as Controls 0007 import QtQuick.Effects 0008 0009 import org.kde.kirigami 2.20 as Kirigami 0010 0011 import org.kde.private.mobile.homescreen.folio 1.0 as Folio 0012 import org.kde.plasma.private.mobileshell.state as MobileShellState 0013 import org.kde.plasma.private.mobileshell as MobileShell 0014 0015 AbstractDelegate { 0016 id: root 0017 shadow: true 0018 name: application.name 0019 0020 property Folio.FolioApplication application 0021 0022 property alias iconItem: icon 0023 0024 property bool turnToFolder: false 0025 property bool turnToFolderAnimEnabled: false 0026 0027 function launchApp() { 0028 if (application.icon !== "") { 0029 MobileShellState.ShellDBusClient.openAppLaunchAnimation( 0030 application.icon, 0031 application.name, 0032 root.iconItem.Kirigami.ScenePosition.x + root.iconItem.width/2, 0033 root.iconItem.Kirigami.ScenePosition.y + root.iconItem.height/2, 0034 Math.min(root.iconItem.width, root.iconItem.height)); 0035 } 0036 0037 application.setMinimizedDelegate(root); 0038 MobileShell.AppLaunch.launchOrActivateApp(application.storageId); 0039 } 0040 0041 onAfterClickAnimation: { 0042 launchApp(); 0043 } 0044 0045 contentItem: Item { 0046 height: Folio.FolioSettings.delegateIconSize 0047 width: Folio.FolioSettings.delegateIconSize 0048 0049 // background for folder creation animation 0050 Rectangle { 0051 id: rect 0052 radius: Kirigami.Units.largeSpacing 0053 color: Qt.rgba(255, 255, 255, 0.3) 0054 anchors.fill: parent 0055 0056 opacity: root.turnToFolder ? 1 : 0 0057 property real scaleAmount: root.turnToFolder ? 1.2 : 1.0 0058 0059 Behavior on scaleAmount { 0060 enabled: root.turnToFolderAnimEnabled 0061 NumberAnimation { duration: Kirigami.Units.longDuration; easing.type: Easing.InOutQuad } 0062 } 0063 Behavior on opacity { 0064 enabled: root.turnToFolderAnimEnabled 0065 NumberAnimation { duration: Kirigami.Units.longDuration; easing.type: Easing.InOutQuad } 0066 } 0067 0068 transform: Scale { 0069 origin.x: rect.width / 2 0070 origin.y: rect.height / 2 0071 xScale: rect.scaleAmount 0072 yScale: rect.scaleAmount 0073 } 0074 } 0075 0076 // app icon 0077 DelegateAppIcon { 0078 id: icon 0079 anchors.fill: parent 0080 source: root.application.icon 0081 0082 property real scaleAmount: root.turnToFolder ? 0.3 : 1.0 0083 Behavior on scaleAmount { 0084 enabled: root.turnToFolderAnimEnabled 0085 NumberAnimation { duration: root.turnToFolderAnimEnabled ? Kirigami.Units.longDuration : 0; easing.type: Easing.InOutQuad } 0086 } 0087 0088 transform: Scale { 0089 origin.x: icon.width / 2 0090 origin.y: icon.height / 2 0091 xScale: icon.scaleAmount 0092 yScale: icon.scaleAmount 0093 } 0094 0095 Rectangle { 0096 anchors { 0097 horizontalCenter: parent.horizontalCenter 0098 bottom: parent.bottom 0099 bottomMargin: -Kirigami.Units.smallSpacing 0100 } 0101 visible: root.application.running 0102 radius: width 0103 width: Kirigami.Units.smallSpacing 0104 height: width 0105 color: Kirigami.Theme.highlightColor 0106 } 0107 } 0108 } 0109 } 0110 0111