Warning, /plasma/plasma-mobile/components/mobileshell/qml/actiondrawer/ActionDrawerOpenSurface.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  *  SPDX-FileCopyrightText: 2021-2022 Devin Lin <devin@kde.org>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 import QtQuick 2.15
0008 
0009 import org.kde.plasma.private.mobileshell.shellsettingsplugin as ShellSettings
0010 import org.kde.plasma.private.mobileshell as MobileShell
0011 
0012 /**
0013  * Component that triggers the opening and closing of an ActionDrawer when dragged on with touch or mouse.
0014  */
0015 MobileShell.SwipeArea {
0016     id: root
0017     mode: MobileShell.SwipeArea.VerticalOnly
0018     
0019     required property ActionDrawer actionDrawer
0020     
0021     property int oldMouseY: 0
0022 
0023     function startSwipe() {
0024         if (actionDrawer.visible) {
0025             // ensure the action drawer state is consistent
0026             actionDrawer.closeImmediately();
0027         }
0028         actionDrawer.cancelAnimations();
0029         actionDrawer.dragging = true;
0030         actionDrawer.opened = false;
0031         
0032         // must be after properties other are set, we cannot have actionDrawer.updateState() be called
0033         actionDrawer.offset = 0;
0034         actionDrawer.oldOffset = 0;
0035         actionDrawer.visible = true;
0036     }
0037     
0038     function endSwipe() {
0039         actionDrawer.dragging = false;
0040         actionDrawer.updateState();
0041     }
0042     
0043     function updateOffset(offsetY) {
0044         actionDrawer.offset += offsetY;
0045     }
0046     
0047     anchors.fill: parent
0048 
0049     onSwipeStarted: (point) => {
0050         // if the user swiped from the top left, otherwise it's from the top right
0051         if (point.x < root.width / 2) {
0052             actionDrawer.openToPinnedMode = ShellSettings.Settings.actionDrawerTopLeftMode == ShellSettings.Settings.Pinned;
0053         } else {
0054             actionDrawer.openToPinnedMode = ShellSettings.Settings.actionDrawerTopRightMode == ShellSettings.Settings.Pinned;
0055         }
0056 
0057         startSwipe();
0058     }
0059     onSwipeEnded: endSwipe()
0060     onSwipeMove: (totalDeltaX, totalDeltaY, deltaX, deltaY) => updateOffset(deltaY);
0061 }