/*SPDX-FileCopyrightText: 2014 Ashish Madeti <ashishmadeti@gmail.com>SPDX-FileCopyrightText: 2016 Kai Uwe Broulik <kde@privat.broulik.de>SPDX-FileCopyrightText: 2022 ivan (@ratijas) tkachenko <me@ratijas.tk>SPDX-License-Identifier: GPL-2.0-or-later*/import QtQuickimport QtQuick.Layoutsimport org.kde.plasma.core as PlasmaCoreimport org.kde.kirigami as Kirigamiimport org.kde.ksvg as KSvgimport org.kde.plasma.plasmoidPlasmoidItem {id: rootpreferredRepresentation: fullRepresentationtoolTipSubText: activeController.descriptionPlasmoid.icon: Plasmoid.configuration.iconPlasmoid.title: activeController.titlePlasmoid.onActivated: activeController.toggle();Plasmoid.backgroundHints: PlasmaCore.Types.NoBackgroundLayout.minimumWidth: Kirigami.Units.iconSizes.mediumLayout.minimumHeight: Kirigami.Units.iconSizes.mediumLayout.maximumWidth: Layout.minimumWidthLayout.maximumHeight: Layout.minimumHeightLayout.preferredWidth: Layout.minimumWidthLayout.preferredHeight: Layout.minimumHeightreadonly property bool inPanel: [PlasmaCore.Types.TopEdge, PlasmaCore.Types.RightEdge, PlasmaCore.Types.BottomEdge, PlasmaCore.Types.LeftEdge].includes(Plasmoid.location)readonly property bool vertical: Plasmoid.location === PlasmaCore.Types.RightEdge || Plasmoid.location === PlasmaCore.Types.LeftEdge/*** @c true if the current applet is Minimize All, @c false if the* current applet is Show Desktop.*/readonly property bool isMinimizeAll: Plasmoid.pluginName === "org.kde.plasma.minimizeall"readonly property Controller primaryController: isMinimizeAll ? minimizeAllController : peekControllerreadonly property Controller activeController: {if (Plasmoid.containment.corona.editMode) {return primaryController;} else if (minimizeAllController.active) {return minimizeAllController;} else if (peekController.active) {return peekController;} else {return primaryController;}}MouseArea {id: mouseAreaanchors.fill: parentactiveFocusOnTab: truehoverEnabled: trueonClicked: Plasmoid.activated();Keys.onPressed: event => {switch (event.key) {case Qt.Key_Space:case Qt.Key_Enter:case Qt.Key_Return:case Qt.Key_Select:Plasmoid.activated();break;}}Accessible.name: Plasmoid.titleAccessible.description: root.toolTipSubTextAccessible.role: Accessible.ButtonAccessible.onPressAction: Plasmoid.activated()PeekController {id: peekController}MinimizeAllController {id: minimizeAllController}Kirigami.Icon {anchors.fill: parentactive: mouseArea.containsMouse || root.activeController.activesource: Plasmoid.icon}// also activate when dragging an item over the plasmoid so a user can easily drag data to the desktopDropArea {anchors.fill: parentonEntered: activateTimer.start()onExited: activateTimer.stop()}Timer {id: activateTimerinterval: 250 // to match TaskManageronTriggered: Plasmoid.activated()}// Active/not active indicatorKSvg.FrameSvgItem {Accessible.name: i18nc("@label Accessible name", "Minimize All Applet Active Indicator")property var containerMargins: {let item = this;while (item.parent) {item = item.parent;if (item.isAppletContainer) {return item.getMargins;}}return undefined;}anchors {fill: parentproperty bool returnAllMargins: true// The above makes sure margin is returned even for side margins// that would be otherwise turned off.topMargin: !root.vertical && containerMargins ? -containerMargins('top', returnAllMargins) : 0leftMargin: root.vertical && containerMargins ? -containerMargins('left', returnAllMargins) : 0rightMargin: root.vertical && containerMargins ? -containerMargins('right', returnAllMargins) : 0bottomMargin: !root.vertical && containerMargins ? -containerMargins('bottom', returnAllMargins) : 0}imagePath: "widgets/tabbar"visible: opacity > 0prefix: {let prefix;switch (Plasmoid.location) {case PlasmaCore.Types.LeftEdge:prefix = "west-active-tab";break;case PlasmaCore.Types.TopEdge:prefix = "north-active-tab";break;case PlasmaCore.Types.RightEdge:prefix = "east-active-tab";break;default:prefix = "south-active-tab";}if (!hasElementPrefix(prefix)) {prefix = "active-tab";}return prefix;}opacity: root.activeController.active ? 1 : 0Behavior on opacity {NumberAnimation {duration: Kirigami.Units.shortDurationeasing.type: Easing.InOutQuad}}}PlasmaCore.ToolTipArea {id: toolTipanchors.fill: parentmainText: Plasmoid.titlesubText: root.toolTipSubTexttextFormat: Text.PlainText}}Plasmoid.contextualActions: [PlasmaCore.Action {text: minimizeAllController.titleicon.name: minimizeAllController.active ? "window-restore-symbolic" : "window-minimize-symbolic"toolTip: minimizeAllController.descriptionenabled: !peekController.activeonTriggered: minimizeAllController.toggle()},PlasmaCore.Action {text: peekController.titleicon.name: peekController.active ? "window-symbolic" : "desktop-symbolic"toolTip: peekController.descriptionenabled: !minimizeAllController.activeonTriggered: peekController.toggle()}]}