Warning, /plasma/plasma-desktop/applets/kicker/package/contents/ui/SideBarSection.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2013-2014 Eike Hein <hein@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 import QtQuick 2.15 0008 0009 import org.kde.draganddrop 2.0 0010 import org.kde.kirigami 2.20 as Kirigami 0011 0012 DropArea { 0013 id: root 0014 0015 width: Kirigami.Units.iconSizes.medium 0016 height: contentHeight 0017 0018 anchors.horizontalCenter: parent.horizontalCenter 0019 0020 property int contentHeight: model ? (model.count * Kirigami.Units.iconSizes.medium) + ((model.count - 1) * flow.spacing) : 0 0021 0022 property alias model: repeater.model 0023 0024 onDragMove: event => { 0025 if (flow.animating) { 0026 return; 0027 } 0028 0029 var above = flow.childAt(event.x, event.y); 0030 0031 if (above && above !== kicker.dragSource && dragSource.parent == flow) { 0032 repeater.model.moveRow(dragSource.itemIndex, above.itemIndex); 0033 } 0034 0035 } 0036 0037 Flow { 0038 id: flow 0039 0040 anchors.fill: parent 0041 0042 property bool animating: false 0043 property int animationDuration: resetAnimationDurationTimer.interval 0044 0045 move: Transition { 0046 SequentialAnimation { 0047 PropertyAction { target: flow; property: "animating"; value: true } 0048 0049 NumberAnimation { 0050 duration: flow.animationDuration 0051 properties: "x, y" 0052 easing.type: Easing.OutQuad 0053 } 0054 0055 PropertyAction { target: flow; property: "animating"; value: false } 0056 } 0057 } 0058 0059 spacing: (2 * Kirigami.Units.smallSpacing) 0060 0061 Repeater { 0062 id: repeater 0063 0064 delegate: SideBarItem {} 0065 0066 onCountChanged: { 0067 flow.animationDuration = 0; 0068 resetAnimationDurationTimer.start(); 0069 } 0070 } 0071 } 0072 0073 Timer { 0074 id: resetAnimationDurationTimer 0075 0076 interval: 150 0077 repeat: false 0078 0079 onTriggered: { 0080 flow.animationDuration = interval - 20; 0081 } 0082 } 0083 }