2023-03-06 06:38:43 +00:00
|
|
|
// SPDX-FileCopyrightText: 2021-2023 Devin Lin <devin@kde.org>
|
|
|
|
|
// SPDX-License-Identifier: LGPL-2.0-or-later
|
2021-12-27 06:32:24 +00:00
|
|
|
|
2023-03-19 06:46:05 +00:00
|
|
|
import QtQuick
|
2021-12-27 06:32:24 +00:00
|
|
|
|
|
|
|
|
Flickable {
|
|
|
|
|
id: root
|
2023-03-06 06:38:43 +00:00
|
|
|
|
2021-12-27 06:32:24 +00:00
|
|
|
required property var taskSwitcherState
|
2023-03-06 06:38:43 +00:00
|
|
|
|
2021-12-27 06:32:24 +00:00
|
|
|
// we use flickable solely for capturing flicks, not positioning elements
|
2022-06-09 17:17:47 +00:00
|
|
|
contentWidth: width * tasksCount
|
2021-12-27 06:32:24 +00:00
|
|
|
contentHeight: height
|
|
|
|
|
contentX: startContentX
|
2023-03-06 06:38:43 +00:00
|
|
|
|
2022-06-09 17:17:47 +00:00
|
|
|
readonly property real startContentX: 0
|
2023-03-06 06:38:43 +00:00
|
|
|
|
2021-12-27 06:32:24 +00:00
|
|
|
// update position from horizontal flickable movement
|
|
|
|
|
property real oldContentX
|
|
|
|
|
onContentXChanged: {
|
|
|
|
|
taskSwitcherState.xPosition += contentX - oldContentX;
|
|
|
|
|
oldContentX = contentX;
|
|
|
|
|
}
|
2023-03-06 06:38:43 +00:00
|
|
|
|
2021-12-27 06:32:24 +00:00
|
|
|
onMovementStarted: taskSwitcherState.cancelAnimations();
|
|
|
|
|
onMovementEnded: {
|
|
|
|
|
resetPosition();
|
|
|
|
|
taskSwitcherState.updateState();
|
|
|
|
|
}
|
2023-03-06 06:38:43 +00:00
|
|
|
|
2022-06-09 17:17:47 +00:00
|
|
|
onFlickStarted: {
|
|
|
|
|
root.cancelFlick();
|
|
|
|
|
}
|
2021-12-27 06:32:24 +00:00
|
|
|
onFlickEnded: {
|
|
|
|
|
resetPosition();
|
|
|
|
|
taskSwitcherState.updateState();
|
|
|
|
|
}
|
2023-03-06 06:38:43 +00:00
|
|
|
|
2021-12-27 06:32:24 +00:00
|
|
|
onDraggingChanged: {
|
|
|
|
|
if (!dragging) {
|
|
|
|
|
resetPosition();
|
|
|
|
|
taskSwitcherState.updateState();
|
|
|
|
|
} else {
|
|
|
|
|
taskSwitcherState.cancelAnimations();
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-03-06 06:38:43 +00:00
|
|
|
|
2021-12-27 06:32:24 +00:00
|
|
|
function resetPosition() {
|
|
|
|
|
oldContentX = startContentX;
|
|
|
|
|
contentX = startContentX;
|
|
|
|
|
}
|
|
|
|
|
}
|