From 536dc945fde9b667ec4f70e92dfde89108ee504b Mon Sep 17 00:00:00 2001 From: Marco Martin Date: Sun, 21 Jun 2015 12:18:02 -0700 Subject: [PATCH] support closing windows --- .../taskpanel/package/contents/ui/Task.qml | 92 +++++++++++++++++++ .../package/contents/ui/TaskSwitcher.qml | 36 +------- 2 files changed, 93 insertions(+), 35 deletions(-) create mode 100644 containments/taskpanel/package/contents/ui/Task.qml diff --git a/containments/taskpanel/package/contents/ui/Task.qml b/containments/taskpanel/package/contents/ui/Task.qml new file mode 100644 index 00000000..3b7e6fca --- /dev/null +++ b/containments/taskpanel/package/contents/ui/Task.qml @@ -0,0 +1,92 @@ +/* + * Copyright 2015 Marco Martin + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU Library General Public License as + * published by the Free Software Foundation; either version 2, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Library General Public License for more details + * + * You should have received a copy of the GNU Library General Public + * License along with this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +import QtQuick 2.0 +import QtQuick.Layouts 1.1 +import QtQuick.Window 2.2 +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.components 2.0 as PlasmaComponents +import org.kde.plasma.mobilecomponents 0.2 + +import org.kde.plasma.private.taskmanager 0.1 as TaskManager + +Item { + id: delegate + width: window.width/2 + height: window.height/2 + Item { + anchors { + fill: parent + margins: units.gridUnit + } + NumberAnimation { + id: slideAnim + target: background + properties: "x" + duration: units.longDuration + easing.type: Easing.InOutQuad + } + Rectangle { + id: background + + width: parent.width + height: parent.height + radius: units.gridUnit + opacity: 0.8 + PlasmaCore.IconItem { + anchors.centerIn: parent + width: Math.min(parent.width, parent.height) + source: model.DecorationRole + } + PlasmaComponents.Label { + anchors { + bottom: parent.bottom + horizontalCenter: parent.horizontalCenter + left: parent.left + right: parent.right + } + horizontalAlignment: Text.AlignHCenter + elide: Text.ElideRight + text: model.DisplayRole + } + MouseArea { + anchors.fill: parent + drag { + target: background + axis: Drag.XAxis + } + onPressed: delegate.z = 10; + onClicked: { + window.hide(); + backend.activateItem(model.Id, true); + } + onReleased: { + delegate.z = 0; + if (Math.abs(background.x) > background.width/2) { + backend.closeByItemId(model.Id); + } else { + slideAnim.to = 0; + slideAnim.running = true; + } + } + } + } + } +} + diff --git a/containments/taskpanel/package/contents/ui/TaskSwitcher.qml b/containments/taskpanel/package/contents/ui/TaskSwitcher.qml index 5158e7d6..55b5dbdf 100644 --- a/containments/taskpanel/package/contents/ui/TaskSwitcher.qml +++ b/containments/taskpanel/package/contents/ui/TaskSwitcher.qml @@ -120,40 +120,6 @@ FullScreenPanel { width: window.width height: window.height } - delegate: Item { - width: window.width/2 - height: window.height/2 - Rectangle { - anchors { - fill: parent - margins: units.gridUnit - } - radius: units.gridUnit - opacity: 0.8 - PlasmaCore.IconItem { - anchors.centerIn: parent - width: Math.min(parent.width, parent.height) - source: model.DecorationRole - } - PlasmaComponents.Label { - anchors { - bottom: parent.bottom - horizontalCenter: parent.horizontalCenter - left: parent.left - right: parent.right - } - horizontalAlignment: Text.AlignHCenter - elide: Text.ElideRight - text: model.DisplayRole - } - MouseArea { - anchors.fill: parent - onClicked: { - window.hide(); - backend.activateItem(model.Id, true); - } - } - } - } + delegate: Task {} } }