mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-07-26 06:14:45 +00:00
animate index reordering
This commit is contained in:
parent
ba089aa1dd
commit
d09c3beafb
1 changed files with 87 additions and 44 deletions
|
|
@ -3,10 +3,41 @@ import org.kde.plasma.core 2.0 as PlasmaCore
|
|||
import org.kde.kio 1.0 as Kio
|
||||
import org.kde.plasma.components 2.0 as PlasmaComponents
|
||||
|
||||
MouseArea {
|
||||
Item {
|
||||
id: delegateRoot
|
||||
width: applicationsView.cellWidth
|
||||
height: width
|
||||
|
||||
property int idx: index
|
||||
property int oldIdx: -1
|
||||
onIdxChanged: {
|
||||
if (oldIdx < 0) {
|
||||
oldIdx = idx;
|
||||
return;
|
||||
}
|
||||
delegateItem.x = ((oldIdx % 4) * GridView.view.cellWidth) - ((idx % 4) * GridView.view.cellWidth);
|
||||
delegateItem.y = (Math.floor(oldIdx / 4) * GridView.view.cellHeight) - (Math.floor(idx / 4) * GridView.view.cellHeight);
|
||||
if (!delegateItem.drag.target) {
|
||||
translAnim.running = true;
|
||||
}
|
||||
oldIdx = idx;
|
||||
}
|
||||
|
||||
|
||||
NumberAnimation {
|
||||
id: translAnim
|
||||
duration: units.longDuration
|
||||
easing.type: Easing.InOutQuad
|
||||
target: delegateItem
|
||||
properties: "x,y"
|
||||
to: 0
|
||||
}
|
||||
MouseArea {
|
||||
id: delegateItem
|
||||
property int oldX
|
||||
property int oldY
|
||||
width: applicationsView.cellWidth
|
||||
height: width
|
||||
scale: root.reorderingApps && !drag.target ? 0.6 : 1
|
||||
Behavior on scale {
|
||||
NumberAnimation {
|
||||
|
|
@ -14,21 +45,32 @@ MouseArea {
|
|||
easing.type: Easing.InOutQuad
|
||||
}
|
||||
}
|
||||
|
||||
onXChanged: {
|
||||
oldX = x
|
||||
oldY = y
|
||||
}
|
||||
onClicked: {
|
||||
console.log("Clicked: " + model.ApplicationStorageIdRole)
|
||||
appListModel.runApplication(model.ApplicationStorageIdRole)
|
||||
oldX = x
|
||||
oldY = y
|
||||
}
|
||||
onPressAndHold: {
|
||||
delegateRoot.drag.target = delegateRoot;
|
||||
delegateItem.drag.target = delegateItem;
|
||||
root.reorderingApps = true;
|
||||
}
|
||||
onReleased: {
|
||||
delegateRoot.drag.target = null;
|
||||
delegateItem.drag.target = null;
|
||||
root.reorderingApps = false;
|
||||
|
||||
translAnim.running = true
|
||||
}
|
||||
onPositionChanged: {
|
||||
if (delegateRoot.drag.target) {
|
||||
appListModel.setOrder(model.ApplicationOriginalRowRole, (Math.round(GridView.view.width / GridView.view.cellWidth) * Math.round(delegateRoot.y / GridView.view.cellHeight) + Math.round(delegateRoot.x / GridView.view.cellWidth)));
|
||||
if (delegateItem.drag.target) {
|
||||
var pos = mapToItem(delegateRoot.parent, 0, 0);
|
||||
|
||||
appListModel.setOrder(model.ApplicationOriginalRowRole, (Math.round(delegateRoot.GridView.view.width / delegateRoot.GridView.view.cellWidth) * Math.round(pos.y / delegateRoot.GridView.view.cellHeight) + Math.round(pos.x / delegateRoot.GridView.view.cellWidth)));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -60,3 +102,4 @@ MouseArea {
|
|||
color: PlasmaCore.ColorScope.textColor
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue