From 4e6953ba8122c0025349c0fa983bf52718b24528 Mon Sep 17 00:00:00 2001 From: wackyideas <17151-wackyideas@users.noreply.gitgud.io> Date: Fri, 13 Aug 2021 15:38:28 +0200 Subject: [PATCH] Added System Tray modification, updated SevenStart --- .../SevenStart/contents/pics/menu_select.png | Bin 10029 -> 10373 bytes .../contents/ui/MenuRepresentation.qml | 157 ++++++++-- .../SevenStart/contents/ui/main.qml | 25 +- .../contents/applet/CompactApplet.qml | 83 +++++ .../System Tray/contents/config/config.qml | 35 +++ .../System Tray/contents/config/main.xml | 39 +++ .../System Tray/contents/ui/ConfigEntries.qml | 296 ++++++++++++++++++ .../System Tray/contents/ui/ConfigGeneral.qml | 49 +++ .../contents/ui/CurrentItemHighLight.qml | 182 +++++++++++ .../contents/ui/ExpandedRepresentation.qml | 231 ++++++++++++++ .../System Tray/contents/ui/ExpanderArrow.qml | 112 +++++++ .../contents/ui/HiddenItemsView.qml | 71 +++++ .../contents/ui/PlasmoidPopupsContainer.qml | 157 ++++++++++ .../contents/ui/SystemTrayState.qml | 107 +++++++ .../contents/ui/items/AbstractItem.qml | 216 +++++++++++++ .../contents/ui/items/ItemLoader.qml | 36 +++ .../contents/ui/items/PlasmoidItem.qml | 141 +++++++++ .../contents/ui/items/PulseAnimation.qml | 53 ++++ .../contents/ui/items/StatusNotifierItem.qml | 118 +++++++ .../System Tray/contents/ui/main.qml | 238 ++++++++++++++ Plasma Widgets/System Tray/metadata.desktop | 108 +++++++ Plasma Widgets/System Tray/metadata.json | 117 +++++++ README.md | 16 + Screenshots/System_Tray.png | Bin 0 -> 83164 bytes 24 files changed, 2555 insertions(+), 32 deletions(-) create mode 100644 Plasma Widgets/System Tray/contents/applet/CompactApplet.qml create mode 100644 Plasma Widgets/System Tray/contents/config/config.qml create mode 100644 Plasma Widgets/System Tray/contents/config/main.xml create mode 100644 Plasma Widgets/System Tray/contents/ui/ConfigEntries.qml create mode 100644 Plasma Widgets/System Tray/contents/ui/ConfigGeneral.qml create mode 100644 Plasma Widgets/System Tray/contents/ui/CurrentItemHighLight.qml create mode 100644 Plasma Widgets/System Tray/contents/ui/ExpandedRepresentation.qml create mode 100644 Plasma Widgets/System Tray/contents/ui/ExpanderArrow.qml create mode 100644 Plasma Widgets/System Tray/contents/ui/HiddenItemsView.qml create mode 100644 Plasma Widgets/System Tray/contents/ui/PlasmoidPopupsContainer.qml create mode 100644 Plasma Widgets/System Tray/contents/ui/SystemTrayState.qml create mode 100644 Plasma Widgets/System Tray/contents/ui/items/AbstractItem.qml create mode 100644 Plasma Widgets/System Tray/contents/ui/items/ItemLoader.qml create mode 100644 Plasma Widgets/System Tray/contents/ui/items/PlasmoidItem.qml create mode 100644 Plasma Widgets/System Tray/contents/ui/items/PulseAnimation.qml create mode 100644 Plasma Widgets/System Tray/contents/ui/items/StatusNotifierItem.qml create mode 100644 Plasma Widgets/System Tray/contents/ui/main.qml create mode 100644 Plasma Widgets/System Tray/metadata.desktop create mode 100644 Plasma Widgets/System Tray/metadata.json create mode 100644 Screenshots/System_Tray.png diff --git a/Plasma Widgets/SevenStart/contents/pics/menu_select.png b/Plasma Widgets/SevenStart/contents/pics/menu_select.png index ada270170aa692bc2f10f21fe4d165de81b2edaf..8cbaa18c9e868fbde7347a4366aa1395a77a8df0 100644 GIT binary patch delta 6678 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 delta 6502 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 M07*qoM6N<$f(Z17ssI20 diff --git a/Plasma Widgets/SevenStart/contents/ui/MenuRepresentation.qml b/Plasma Widgets/SevenStart/contents/ui/MenuRepresentation.qml index 73b3e89..cc6d71c 100644 --- a/Plasma Widgets/SevenStart/contents/ui/MenuRepresentation.qml +++ b/Plasma Widgets/SevenStart/contents/ui/MenuRepresentation.qml @@ -511,6 +511,10 @@ PlasmaCore.Dialog { return shortcuts.home else if (val === 5) return shortcuts.movies + else if (val === 6) + return "~/Downloads" + else if (val === 7) + return "/" } } @@ -643,36 +647,7 @@ PlasmaCore.Dialog { size: iconSizeSide //onClicked: executable.exec("dolphin --new-window "+folderDialog.getPath(2)) } - ListDelegate { - text: "Music" - Image { - property bool hovered: false - source: "../pics/menu_select.png" - smooth: true - opacity: hovered ? 1.0 : 0.0 - width: parent.width - height: parent.height - MouseArea { - enabled: !root.hoverDisabled - acceptedButtons: Qt.LeftButton - onEntered: { - parent.hovered = true - } - onExited: { - parent.hovered = false - } - onClicked: { - root.visible = false; - executable.exec("dolphin --new-window "+folderDialog.getPath(3)) - } - hoverEnabled: true - anchors.fill: parent - } - } - icon: "folder-music" - size: iconSizeSide - //onClicked: executable.exec("dolphin --new-window "+folderDialog.getPath(3)) - } + ListDelegate { text: "Pictures" Image { @@ -703,6 +678,36 @@ PlasmaCore.Dialog { size: iconSizeSide //onClicked: executable.exec("dolphin --new-window "+folderDialog.getPath(1)) } + ListDelegate { + text: "Music" + Image { + property bool hovered: false + source: "../pics/menu_select.png" + smooth: true + opacity: hovered ? 1.0 : 0.0 + width: parent.width + height: parent.height + MouseArea { + enabled: !root.hoverDisabled + acceptedButtons: Qt.LeftButton + onEntered: { + parent.hovered = true + } + onExited: { + parent.hovered = false + } + onClicked: { + root.visible = false; + executable.exec("dolphin --new-window "+folderDialog.getPath(3)) + } + hoverEnabled: true + anchors.fill: parent + } + } + icon: "folder-music" + size: iconSizeSide + //onClicked: executable.exec("dolphin --new-window "+folderDialog.getPath(3)) + } ListDelegate { text: "Videos" Image { @@ -733,6 +738,66 @@ PlasmaCore.Dialog { size: iconSizeSide //onClicked: executable.exec("dolphin --new-window "+folderDialog.getPath(5)) } + ListDelegate { + text: "Downloads" + Image { + property bool hovered: false + source: "../pics/menu_select.png" + smooth: true + opacity: hovered ? 1.0 : 0.0 + width: parent.width + height: parent.height + MouseArea { + enabled: !root.hoverDisabled + acceptedButtons: Qt.LeftButton + onEntered: { + parent.hovered = true + } + onExited: { + parent.hovered = false + } + onClicked: { + root.visible = false; + executable.exec("dolphin --new-window "+folderDialog.getPath(6)) + } + hoverEnabled: true + anchors.fill: parent + } + } + icon: "folder-music" + size: iconSizeSide + //onClicked: executable.exec("dolphin --new-window "+folderDialog.getPath(5)) + } + ListDelegate { + text: "Computer" + Image { + property bool hovered: false + source: "../pics/menu_select.png" + smooth: true + opacity: hovered ? 1.0 : 0.0 + width: parent.width + height: parent.height + MouseArea { + enabled: !root.hoverDisabled + acceptedButtons: Qt.LeftButton + onEntered: { + parent.hovered = true + } + onExited: { + parent.hovered = false + } + onClicked: { + root.visible = false; + executable.exec("dolphin --new-window "+folderDialog.getPath(7)) + } + hoverEnabled: true + anchors.fill: parent + } + } + icon: "folder-music" + size: iconSizeSide + //onClicked: executable.exec("dolphin --new-window "+folderDialog.getPath(5)) + } ListDelegate { text: "System Settings" @@ -754,7 +819,37 @@ PlasmaCore.Dialog { } onClicked: { root.visible = false; - logic.openUrl("file:///usr/share/applications/systemsettings.desktop") + executable.exec("systemsettings5") + } + hoverEnabled: true + anchors.fill: parent + } + } + icon: "configure" + size: iconSizeSide + //onClicked: logic.openUrl("file:///usr/share/applications/systemsettings.desktop") + } + ListDelegate { + text: "Default Programs" + Image { + property bool hovered: false + source: "../pics/menu_select.png" + smooth: true + opacity: hovered ? 1.0 : 0.0 + width: parent.width + height: parent.height + MouseArea { + enabled: !root.hoverDisabled + acceptedButtons: Qt.LeftButton + onEntered: { + parent.hovered = true + } + onExited: { + parent.hovered = false + } + onClicked: { + root.visible = false; + executable.exec("systemsettings5 componentchooser") } hoverEnabled: true anchors.fill: parent diff --git a/Plasma Widgets/SevenStart/contents/ui/main.qml b/Plasma Widgets/SevenStart/contents/ui/main.qml index f24234b..5da27b4 100644 --- a/Plasma Widgets/SevenStart/contents/ui/main.qml +++ b/Plasma Widgets/SevenStart/contents/ui/main.qml @@ -44,11 +44,33 @@ Item { property QtObject globalFavorites: rootModel.favoritesModel property QtObject systemFavorites: rootModel.systemFavoritesModel +PlasmaCore.DataSource { + id: menu_executable + engine: "executable" + connectedSources: [] + onNewData: { + var exitCode = data["exit code"] + var exitStatus = data["exit status"] + var stdout = data["stdout"] + var stderr = data["stderr"] + exited(sourceName, exitCode, exitStatus, stdout, stderr) + disconnectSource(sourceName) + } + function exec(cmd) { + if (cmd) { + connectSource(cmd) + } + } + signal exited(string cmd, int exitCode, int exitStatus, string stdout, string stderr) + } function action_menuedit() { processRunner.runMenuEditor(); } - + function action_taskman() { + menu_executable.exec("ksysguard"); + } + Component { id: compactRepresentation CompactRepresentation {} @@ -197,6 +219,7 @@ Item { Component.onCompleted: { plasmoid.setAction("menuedit", i18n("Edit Applications...")); + plasmoid.setAction("taskman", i18n("Task Manager")); rootModel.refreshed.connect(reset); diff --git a/Plasma Widgets/System Tray/contents/applet/CompactApplet.qml b/Plasma Widgets/System Tray/contents/applet/CompactApplet.qml new file mode 100644 index 0000000..5da557c --- /dev/null +++ b/Plasma Widgets/System Tray/contents/applet/CompactApplet.qml @@ -0,0 +1,83 @@ +/* + * Copyright 2011 Marco Martin <mart@kde.org> + * + * 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.1 +import QtQuick.Layouts 1.1 +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.plasmoid 2.0 + + +PlasmaCore.ToolTipArea { + id: appletRoot + objectName: "org.kde.desktop-CompactApplet" + anchors.fill: parent + + mainText: plasmoid.toolTipMainText + subText: plasmoid.toolTipSubText + location: if (plasmoid.parent && plasmoid.parent.inHiddenLayout && plasmoid.location !== PlasmaCore.Types.LeftEdge) { + return PlasmaCore.Types.RightEdge; + } else { + return plasmoid.location; + } + active: !plasmoid.expanded + textFormat: plasmoid.toolTipTextFormat + mainItem: plasmoid.toolTipItem ? plasmoid.toolTipItem : null + + property Item fullRepresentation + property Item compactRepresentation + + Connections { + target: plasmoid + function onContextualActionsAboutToShow() { + appletRoot.hideToolTip() + } + } + + Layout.minimumWidth: { + switch (plasmoid.formFactor) { + case PlasmaCore.Types.Vertical: + return 0; + case PlasmaCore.Types.Horizontal: + return height; + default: + return PlasmaCore.Units.gridUnit * 3; + } + } + + Layout.minimumHeight: { + switch (plasmoid.formFactor) { + case PlasmaCore.Types.Vertical: + return width; + case PlasmaCore.Types.Horizontal: + return 0; + default: + return PlasmaCore.Units.gridUnit * 3; + } + } + + onCompactRepresentationChanged: { + if (compactRepresentation) { + compactRepresentation.parent = appletRoot; + compactRepresentation.anchors.fill = appletRoot; + compactRepresentation.visible = true; + } + appletRoot.visible = true; + } +} + diff --git a/Plasma Widgets/System Tray/contents/config/config.qml b/Plasma Widgets/System Tray/contents/config/config.qml new file mode 100644 index 0000000..e6eeac3 --- /dev/null +++ b/Plasma Widgets/System Tray/contents/config/config.qml @@ -0,0 +1,35 @@ +/*************************************************************************** + * Copyright 2013 by Sebastian Kügler <sebas@kde.org> * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, 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 General Public License for more details. * + * * + * You should have received a copy of the GNU 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 org.kde.plasma.configuration 2.0 + +ConfigModel { + ConfigCategory { + name: i18n("General") + icon: "plasma" + source: "ConfigGeneral.qml" + } + ConfigCategory { + name: i18n("Entries") + icon: "preferences-desktop-notification" + source: "ConfigEntries.qml" + } +} diff --git a/Plasma Widgets/System Tray/contents/config/main.xml b/Plasma Widgets/System Tray/contents/config/main.xml new file mode 100644 index 0000000..4e2fdf5 --- /dev/null +++ b/Plasma Widgets/System Tray/contents/config/main.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0 + http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" > + <kcfgfile name=""/> + + <group name="General"> + <entry name="extraItems" type="StringList"> + <label>All plasmoid items that are explicitly enabled in the systray. It's a comma-separated string list of plasmoid plugin ids.</label> + <default></default> + </entry> + <entry name="hiddenItems" type="StringList"> + <label>All items that are hidden, forced always in the popup. It's a comma-separated string list of unique identifiers that are either plasmoid plugin ids or StatusNotifier ids.</label> + <default></default> + </entry> + <entry name="shownItems" type="StringList"> + <label>All items that are shown. It's a comma-separated string list of unique identifiers that are either plasmoid plugin ids or StatusNotifier ids.</label> + <default></default> + </entry> + <entry name="showAllItems" type="bool"> + <label>If true, all systray entries will be always in the main area, outside the popup.</label> + <default>false</default> + </entry> + <entry name="knownItems" type="StringList" hidden="true"> + <default></default> + </entry> + <entry name="scaleIconsToFit" type="bool"> + <label>Whether to automatically scale System Tray icons to fix the available thickness of the panel. If false, tray icons will be capped at the smallMedium size (22px) and become a two-row/column layout when the panel is thick.</label> + <default>false</default> + </entry> + <entry name="pin" type="Bool"> + <label>Whether the popup should remain open when another window is activated</label> + <default>false</default> + </entry> + </group> + +</kcfg> + diff --git a/Plasma Widgets/System Tray/contents/ui/ConfigEntries.qml b/Plasma Widgets/System Tray/contents/ui/ConfigEntries.qml new file mode 100644 index 0000000..3bc9ecb --- /dev/null +++ b/Plasma Widgets/System Tray/contents/ui/ConfigEntries.qml @@ -0,0 +1,296 @@ +/* + * Copyright 2013 Sebastian Kügler <sebas@kde.org> + * Copyright 2014 Marco Martin <mart@kde.org> + * Copyright 2019 Konrad Materka <materka@gmail.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 2.010-1301, USA. + */ + +import QtQuick 2.5 +import QtQuick.Controls 2.5 as QQC2 +import QtQuick.Layouts 1.3 + +import org.kde.kquickcontrols 2.0 as KQC +import org.kde.kirigami 2.10 as Kirigami + +ColumnLayout { + id: iconsPage + + signal configurationChanged + + property var cfg_shownItems: [] + property var cfg_hiddenItems: [] + property var cfg_extraItems: [] + property alias cfg_showAllItems: showAllCheckBox.checked + + QQC2.CheckBox { + id: showAllCheckBox + text: i18n("Always show all entries") + } + + function categoryName(category) { + switch (category) { + case "ApplicationStatus": + return i18n("Application Status") + case "Communications": + return i18n("Communications") + case "SystemServices": + return i18n("System Services") + case "Hardware": + return i18n("Hardware Control") + case "UnknownCategory": + default: + return i18n("Miscellaneous") + } + } + + QQC2.ScrollView { + id: scrollView + + Layout.fillWidth: true + Layout.fillHeight: true + contentHeight: itemsList.implicitHeight + + Component.onCompleted: scrollView.background.visible = true + + property bool scrollBarVisible: QQC2.ScrollBar.vertical && QQC2.ScrollBar.vertical.visible + property var scrollBarWidth: scrollBarVisible ? QQC2.ScrollBar.vertical.width : 0 + + ListView { + id: itemsList + + property var visibilityColumnWidth: Kirigami.Units.gridUnit + property var keySequenceColumnWidth: Kirigami.Units.gridUnit + + clip: true + + model: plasmoid.nativeInterface.configSystemTrayModel + + header: Kirigami.AbstractListItem { + + hoverEnabled: false + + RowLayout { + Kirigami.Heading { + text: i18nc("Name of the system tray entry", "Entry") + level: 2 + Layout.fillWidth: true + } + Kirigami.Heading { + text: i18n("Visibility") + level: 2 + Layout.preferredWidth: itemsList.visibilityColumnWidth + Component.onCompleted: itemsList.visibilityColumnWidth = Math.max(implicitWidth, itemsList.visibilityColumnWidth) + } + Kirigami.Heading { + text: i18n("Keyboard Shortcut") + level: 2 + Layout.preferredWidth: itemsList.keySequenceColumnWidth + Component.onCompleted: itemsList.keySequenceColumnWidth = Math.max(implicitWidth, itemsList.keySequenceColumnWidth) + } + QQC2.Button { // Configure button column + icon.name: "configure" + enabled: false + opacity: 0 + } + } + } + + section { + property: "category" + delegate: Kirigami.ListSectionHeader { + label: categoryName(section) + } + } + + delegate: Kirigami.AbstractListItem { + highlighted: false + hoverEnabled: false + + property bool isPlasmoid: model.itemType === "Plasmoid" + + contentItem: RowLayout { + RowLayout { + Layout.fillWidth: true + + Kirigami.Icon { + implicitWidth: Kirigami.Units.iconSizes.smallMedium + implicitHeight: Kirigami.Units.iconSizes.smallMedium + source: model.decoration + } + QQC2.Label { + Layout.fillWidth: true + text: model.display + elide: Text.ElideRight + wrapMode: Text.NoWrap + } + } + + QQC2.ComboBox { + id: visibilityComboBox + + property var contentWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitWidth: Math.max(contentWidth, itemsList.visibilityColumnWidth) + Component.onCompleted: itemsList.visibilityColumnWidth = Math.max(implicitWidth, itemsList.visibilityColumnWidth) + + enabled: (!showAllCheckBox.checked || isPlasmoid) && itemId + textRole: "text" + model: comboBoxModel() + + currentIndex: { + var value + + if (cfg_shownItems.indexOf(itemId) !== -1) { + value = "shown" + } else if (cfg_hiddenItems.indexOf(itemId) !== -1) { + value = "hidden" + } else if (isPlasmoid && cfg_extraItems.indexOf(itemId) === -1) { + value = "disabled" + } else { + value = "auto" + } + + for (var i = 0; i < model.length; i++) { + if (model[i].value === value) { + return i + } + } + + return 0 + } + + property var myCurrentValue: model[currentIndex].value + + onActivated: { + var shownIndex = cfg_shownItems.indexOf(itemId) + var hiddenIndex = cfg_hiddenItems.indexOf(itemId) + var extraIndex = cfg_extraItems.indexOf(itemId) + + switch (myCurrentValue) { + case "auto": + if (shownIndex > -1) { + cfg_shownItems.splice(shownIndex, 1) + } + if (hiddenIndex > -1) { + cfg_hiddenItems.splice(hiddenIndex, 1) + } + if (extraIndex === -1) { + cfg_extraItems.push(itemId) + } + break + case "shown": + if (shownIndex === -1) { + cfg_shownItems.push(itemId) + } + if (hiddenIndex > -1) { + cfg_hiddenItems.splice(hiddenIndex, 1) + } + if (extraIndex === -1) { + cfg_extraItems.push(itemId) + } + break + case "hidden": + if (shownIndex > -1) { + cfg_shownItems.splice(shownIndex, 1) + } + if (hiddenIndex === -1) { + cfg_hiddenItems.push(itemId) + } + if (extraIndex === -1) { + cfg_extraItems.push(itemId) + } + break + case "disabled": + if (shownIndex > -1) { + cfg_shownItems.splice(shownIndex, 1) + } + if (hiddenIndex > -1) { + cfg_hiddenItems.splice(hiddenIndex, 1) + } + if (extraIndex > -1) { + cfg_extraItems.splice(extraIndex, 1) + } + break + } + iconsPage.configurationChanged() + } + + function comboBoxModel() { + var autoElement = {"value": "auto", "text": i18n("Shown when relevant")} + var shownElement = {"value": "shown", "text": i18n("Always shown")} + var hiddenElement = {"value": "hidden", "text": i18n("Always hidden")} + var disabledElement = {"value": "disabled", "text": i18n("Disabled")} + + if (showAllCheckBox.checked) { + if (isPlasmoid) { + return [autoElement, disabledElement] + } else { + return [shownElement] + } + } else { + if (isPlasmoid) { + return [autoElement, shownElement, hiddenElement, disabledElement] + } else { + return [autoElement, shownElement, hiddenElement] + } + } + } + } + KQC.KeySequenceItem { + id: keySequenceItem + Layout.minimumWidth: itemsList.keySequenceColumnWidth + Layout.preferredWidth: itemsList.keySequenceColumnWidth + Component.onCompleted: itemsList.keySequenceColumnWidth = Math.max(implicitWidth, itemsList.keySequenceColumnWidth) + + visible: isPlasmoid + enabled: visibilityComboBox.myCurrentValue !== "disabled" + keySequence: model.applet ? model.applet.globalShortcut : "" + onKeySequenceChanged: { + if (model.applet && keySequence !== model.applet.globalShortcut) { + model.applet.globalShortcut = keySequence + + itemsList.keySequenceColumnWidth = Math.max(implicitWidth, itemsList.keySequenceColumnWidth) + } + } + } + // Placeholder for when KeySequenceItem is not visible + Item { + Layout.minimumWidth: itemsList.keySequenceColumnWidth + Layout.maximumWidth: itemsList.keySequenceColumnWidth + visible: !keySequenceItem.visible + } + + QQC2.Button { + readonly property QtObject configureAction: (model.applet && model.applet.action("configure")) || null + + Accessible.name: configureAction ? configureAction.text : "" + icon.name: "configure" + enabled: configureAction && configureAction.visible && configureAction.enabled + // Still reserve layout space, so not setting visible to false + opacity: enabled ? 1 : 0 + onClicked: configureAction.trigger() + + QQC2.ToolTip { + // Strip out ampersands right before non-whitespace characters, i.e. + // those used to determine the alt key shortcut + text: parent.Accessible.name.replace(/&(?=\S)/g, "") + } + } + } + } + } + } +} diff --git a/Plasma Widgets/System Tray/contents/ui/ConfigGeneral.qml b/Plasma Widgets/System Tray/contents/ui/ConfigGeneral.qml new file mode 100644 index 0000000..e2b3de7 --- /dev/null +++ b/Plasma Widgets/System Tray/contents/ui/ConfigGeneral.qml @@ -0,0 +1,49 @@ + + +/*************************************************************************** + * Copyright (C) 2020 Konrad Materka <materka@gmail.com> * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, 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 General Public License for more details. * + * * + * You should have received a copy of the GNU 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.14 +import QtQuick.Controls 2.14 as QQC2 +import QtQuick.Layouts 1.13 + +import org.kde.plasma.core 2.1 as PlasmaCore + +import org.kde.kirigami 2.13 as Kirigami + +ColumnLayout { + property bool cfg_scaleIconsToFit + + Kirigami.FormLayout { + Layout.fillHeight: true + + QQC2.RadioButton { + Kirigami.FormData.label: i18nc("The arrangement of system tray icons in the Panel", "Panel icon size:") + text: i18n("Small") + checked: cfg_scaleIconsToFit == false + onToggled: cfg_scaleIconsToFit = !checked + } + QQC2.RadioButton { + id: automaticRadioButton + text: plasmoid.formFactor === PlasmaCore.Types.Horizontal ? i18n("Scale with Panel height") + : i18n("Scale with Panel width") + checked: cfg_scaleIconsToFit == true + onToggled: cfg_scaleIconsToFit = checked + } + } +} diff --git a/Plasma Widgets/System Tray/contents/ui/CurrentItemHighLight.qml b/Plasma Widgets/System Tray/contents/ui/CurrentItemHighLight.qml new file mode 100644 index 0000000..59f731c --- /dev/null +++ b/Plasma Widgets/System Tray/contents/ui/CurrentItemHighLight.qml @@ -0,0 +1,182 @@ +/* + * Copyright 2011 Marco Martin <mart@kde.org> + * + * 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.12 +import org.kde.plasma.plasmoid 2.0 +import org.kde.plasma.core 2.0 as PlasmaCore + +PlasmaCore.FrameSvgItem { + id: currentItemHighLight + + property int location + + property bool animationEnabled: true + property var highlightedItem: null + + z: -1 // always draw behind icons + opacity: systemTrayState.expanded ? 0.8 : 0 + + MouseArea + { + id: trayItemHighlight + + anchors.fill: parent + + hoverEnabled: true + property int highlightOpacity: 0 + onEntered: highlightOpacity = 1 + onExited: highlightOpacity = 0 + } + + + imagePath: "widgets/tabbar" + prefix: { + var prefix = "" + switch (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; + } + + // update when System Tray is expanded - applet activated or hidden icons shown + Connections { + target: systemTrayState + + function onActiveAppletChanged() { + Qt.callLater(updateHighlightedItem); + } + + function onExpandedChanged() { + Qt.callLater(updateHighlightedItem); + } + } + + // update when applet changes parent (e.g. moves from active to hidden icons) + Connections { + target: systemTrayState.activeApplet + + function onParentChanged() { + Qt.callLater(updateHighlightedItem); + } + } + + // update when System Tray size changes + Connections { + target: parent + + function onWidthChanged() { + Qt.callLater(updateHighlightedItem); + } + + function onHeightChanged() { + Qt.callLater(updateHighlightedItem); + } + } + + // update when scale of newly added tray item changes (check 'add' animation in GridView in main.qml) + Connections { + target: !!highlightedItem && highlightedItem.parent ? highlightedItem.parent : null + + function onScaleChanged() { + Qt.callLater(updateHighlightedItem); + } + } + + function updateHighlightedItem() { + if (systemTrayState.expanded) { + if (systemTrayState.activeApplet && systemTrayState.activeApplet.parent && systemTrayState.activeApplet.parent.inVisibleLayout) { + changeHighlightedItem(systemTrayState.activeApplet.parent.container); + } else { // 'Show hiden items' popup + changeHighlightedItem(parent); + } + } else { + highlightedItem = null; + } + } + + function changeHighlightedItem(nextItem) { + // do not animate the first appearance + // or when the property value of a highlighted item changes + if (!highlightedItem || (highlightedItem === nextItem)) { + animationEnabled = false; + } + + highlightedItem = nextItem; + + const p = parent.mapFromItem(highlightedItem, 0, 0) + x = p.x; + y = p.y; + width = highlightedItem.width + height = highlightedItem.height + + animationEnabled = true; + } + + Behavior on opacity { + NumberAnimation { + duration: PlasmaCore.Units.longDuration + easing.type: systemTrayState.expanded ? Easing.OutCubic : Easing.InCubic + } + } + Behavior on x { + id: xAnim + enabled: animationEnabled + NumberAnimation { + duration: PlasmaCore.Units.longDuration + easing.type: Easing.InOutCubic + } + } + Behavior on y { + id: yAnim + enabled: animationEnabled + NumberAnimation { + duration: PlasmaCore.Units.longDuration + easing.type: Easing.InOutCubic + } + } + Behavior on width { + id: widthAnim + enabled: animationEnabled + NumberAnimation { + duration: PlasmaCore.Units.longDuration + easing.type: Easing.InOutCubic + } + } + Behavior on height { + id: heightAnim + enabled: animationEnabled + NumberAnimation { + duration: PlasmaCore.Units.longDuration + easing.type: Easing.InOutCubic + } + } +} diff --git a/Plasma Widgets/System Tray/contents/ui/ExpandedRepresentation.qml b/Plasma Widgets/System Tray/contents/ui/ExpandedRepresentation.qml new file mode 100644 index 0000000..714aae2 --- /dev/null +++ b/Plasma Widgets/System Tray/contents/ui/ExpandedRepresentation.qml @@ -0,0 +1,231 @@ +/* + * Copyright 2016 Marco Martin <mart@kde.org> + * Copyright 2020 Nate Graham <nate@kde.org> + * + * 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.12 +import QtQuick.Layouts 1.12 + +import org.kde.plasma.core 2.0 as PlasmaCore +// We still need PC2 here for that version of Menu, as PC2 Menu is still very problematic with QActions +// Not being a proper popup window, makes it a showstopper to be used in Plasma +import org.kde.plasma.components 2.0 as PC2 +import org.kde.plasma.components 3.0 as PlasmaComponents +import org.kde.plasma.extras 2.0 as PlasmaExtras + +Item { + id: popup + //set width/height to avoid useless Dialog resize + readonly property int defaultWidth: PlasmaCore.Units.gridUnit * 24 + readonly property int defaultHeight: PlasmaCore.Units.gridUnit * 24 + + width: defaultWidth + Layout.minimumWidth: defaultWidth + Layout.preferredWidth: defaultWidth + Layout.maximumWidth: defaultWidth + + height: defaultHeight + Layout.minimumHeight: defaultHeight + Layout.preferredHeight: defaultHeight + Layout.maximumHeight: defaultHeight + + property alias hiddenLayout: hiddenItemsView.layout + + // Header + PlasmaExtras.PlasmoidHeading { + id: plasmoidHeading + anchors { + top: parent.top + left: parent.left + right: parent.right + } + height: trayHeading.height + bottomPadding + container.headingHeight + Behavior on height { + NumberAnimation { duration: PlasmaCore.Units.shortDuration/2; easing.type: Easing.InOutQuad } + } + } + + // Main content layout + ColumnLayout { + id: expandedRepresentation + anchors.fill: parent + // TODO: remove this so the scrollview fully touches the header; + // add top padding internally + spacing: plasmoidHeading.bottomPadding + + // Header content layout + RowLayout { + id: trayHeading + + PlasmaComponents.ToolButton { + id: backButton + visible: systemTrayState.activeApplet && systemTrayState.activeApplet.expanded && (hiddenLayout.itemCount > 0) + icon.name: LayoutMirroring.enabled ? "go-previous-symbolic-rtl" : "go-previous-symbolic" + onClicked: systemTrayState.setActiveApplet(null) + } + + PlasmaExtras.Heading { + Layout.fillWidth: true + leftPadding: systemTrayState.activeApplet ? 0 : PlasmaCore.Units.smallSpacing * 2 + + level: 1 + text: systemTrayState.activeApplet ? systemTrayState.activeApplet.title : i18n("Status and Notifications") + } + + PlasmaComponents.ToolButton { + id: actionsButton + visible: visibleActions > 0 + checked: visibleActions > 1 ? configMenu.status !== PC2.DialogStatus.Closed : singleAction && singleAction.checked + property QtObject applet: systemTrayState.activeApplet || plasmoid + onAppletChanged: { + configMenu.clearMenuItems(); + updateVisibleActions(); + } + property int visibleActions: 0 + property QtObject singleAction + + function updateVisibleActions() { + let newSingleAction = null; + let newVisibleActions = 0; + for (let i in applet.contextualActions) { + let action = applet.contextualActions[i]; + if (action.visible && action !== actionsButton.applet.action("configure")) { + newVisibleActions++; + newSingleAction = action; + action.changed.connect(() => {updateVisibleActions()}); + } + } + if (newVisibleActions > 1) { + newSingleAction = null; + } + visibleActions = newVisibleActions; + singleAction = newSingleAction; + } + Connections { + target: actionsButton.applet + function onContextualActionsChanged() { + Qt.callLater(actionsButton.updateVisibleActions); + } + } + icon.name: "application-menu" + checkable: visibleActions > 1 || (singleAction && singleAction.checkable) + contentItem.opacity: visibleActions > 1 + // NOTE: it needs an IconItem because QtQuickControls2 buttons cannot load QIcons as their icon + PlasmaCore.IconItem { + parent: actionsButton + anchors.centerIn: parent + active: actionsButton.hovered + implicitWidth: PlasmaCore.Units.iconSizes.smallMedium + implicitHeight: implicitWidth + source: actionsButton.singleAction !== null ? actionsButton.singleAction.icon : "" + visible: actionsButton.singleAction + } + onToggled: { + if (visibleActions > 1) { + if (checked) { + configMenu.openRelative(); + } else { + configMenu.close(); + } + } + } + onClicked: { + if (singleAction) { + singleAction.trigger(); + } + } + PlasmaComponents.ToolTip { + text: actionsButton.singleAction ? actionsButton.singleAction.text : i18n("More actions") + } + PC2.Menu { + id: configMenu + visualParent: actionsButton + placement: PlasmaCore.Types.BottomPosedLeftAlignedPopup + } + + Instantiator { + model: actionsButton.applet.contextualActions + delegate: PC2.MenuItem { + id: menuItem + action: modelData + } + onObjectAdded: { + if (object.action !== actionsButton.applet.action("configure")) { + configMenu.addMenuItem(object); + } + } + } + } + PlasmaComponents.ToolButton { + icon.name: "configure" + visible: actionsButton.applet && actionsButton.applet.action("configure") + PlasmaComponents.ToolTip { + text: parent.visible ? actionsButton.applet.action("configure").text : "" + } + onClicked: actionsButton.applet.action("configure").trigger(); + } + + PlasmaComponents.ToolButton { + id: pinButton + checkable: true + checked: plasmoid.configuration.pin + onToggled: plasmoid.configuration.pin = checked + icon.name: "window-pin" + PlasmaComponents.ToolTip { + text: i18n("Keep Open") + } + } + } + + // Grid view of all available items + HiddenItemsView { + id: hiddenItemsView + Layout.fillWidth: true + Layout.fillHeight: true + Layout.topMargin: PlasmaCore.Units.smallSpacing + visible: !systemTrayState.activeApplet + } + + // Container for currently visible item + PlasmoidPopupsContainer { + id: container + Layout.fillWidth: true + Layout.fillHeight: true + visible: systemTrayState.activeApplet + + // We need to add margin on the top so it matches the dialog's own margin + Layout.topMargin: mergeHeadings ? 0 : dialog.margins.top + } + } + + // Footer + PlasmaExtras.PlasmoidHeading { + id: plasmoidFooter + location: PlasmaExtras.PlasmoidHeading.Location.Footer + anchors { + bottom: parent.bottom + left: parent.left + right: parent.right + } + visible: container.appletHasFooter + height: container.footerHeight + // So that it doesn't appear over the content view, which results in + // the footer controls being inaccessible + z: -9999 + } +} diff --git a/Plasma Widgets/System Tray/contents/ui/ExpanderArrow.qml b/Plasma Widgets/System Tray/contents/ui/ExpanderArrow.qml new file mode 100644 index 0000000..74b740f --- /dev/null +++ b/Plasma Widgets/System Tray/contents/ui/ExpanderArrow.qml @@ -0,0 +1,112 @@ +/*************************************************************************** + * Copyright 2013 Sebastian Kügler <sebas@kde.org> * + * Copyright 2015 Marco Martin <mart@kde.org> * + * * + * 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 of the * + * License, 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 org.kde.plasma.core 2.0 as PlasmaCore + +PlasmaCore.ToolTipArea { + id: tooltip + + property bool vertical: plasmoid.formFactor === PlasmaCore.Types.Vertical + implicitWidth: PlasmaCore.Units.iconSizes.smallMedium + implicitHeight: implicitWidth + + subText: systemTrayState.expanded ? i18n("Close popup") : i18n("Show hidden icons") + + MouseArea { + id: arrowMouseArea + anchors.fill: parent + onClicked: systemTrayState.expanded = !systemTrayState.expanded + + readonly property int arrowAnimationDuration: PlasmaCore.Units.shortDuration + + PlasmaCore.Svg { + id: arrowSvg + imagePath: "widgets/arrows" + } + + PlasmaCore.SvgItem { + id: arrow + + anchors.centerIn: parent + width: Math.min(parent.width, parent.height) + height: width + + rotation: systemTrayState.expanded ? 180 : 0 + Behavior on rotation { + RotationAnimation { + duration: arrowMouseArea.arrowAnimationDuration + } + } + opacity: systemTrayState.expanded ? 0 : 1 + Behavior on opacity { + NumberAnimation { + duration: arrowMouseArea.arrowAnimationDuration + } + } + + svg: arrowSvg + elementId: { + if (plasmoid.location === PlasmaCore.Types.TopEdge) { + return "down-arrow"; + } else if (plasmoid.location === PlasmaCore.Types.LeftEdge) { + return "right-arrow"; + } else if (plasmoid.location === PlasmaCore.Types.RightEdge) { + return "left-arrow"; + } else { + return "up-arrow"; + } + } + } + + PlasmaCore.SvgItem { + anchors.centerIn: parent + width: arrow.width + height: arrow.height + + rotation: systemTrayState.expanded ? 0 : -180 + Behavior on rotation { + RotationAnimation { + duration: arrowMouseArea.arrowAnimationDuration + } + } + opacity: systemTrayState.expanded ? 1 : 0 + Behavior on opacity { + NumberAnimation { + duration: arrowMouseArea.arrowAnimationDuration + } + } + + svg: arrowSvg + elementId: { + if (plasmoid.location === PlasmaCore.Types.TopEdge) { + return "up-arrow"; + } else if (plasmoid.location === PlasmaCore.Types.LeftEdge) { + return "left-arrow"; + } else if (plasmoid.location === PlasmaCore.Types.RightEdge) { + return "right-arrow"; + } else { + return "down-arrow"; + } + } + } + } +} diff --git a/Plasma Widgets/System Tray/contents/ui/HiddenItemsView.qml b/Plasma Widgets/System Tray/contents/ui/HiddenItemsView.qml new file mode 100644 index 0000000..f7c45c8 --- /dev/null +++ b/Plasma Widgets/System Tray/contents/ui/HiddenItemsView.qml @@ -0,0 +1,71 @@ +/* + * Copyright 2016 Marco Martin <mart@kde.org> + * Copyright 2020 Konrad Materka <materka@gmail.com> + * Copyright 2020 Nate Graham <nate@kde.org> + * + * 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.1 +import QtQuick.Layouts 1.1 +import org.kde.plasma.core 2.1 as PlasmaCore +import org.kde.plasma.components 2.0 as PlasmaComponents // For Highlight +import org.kde.plasma.extras 2.0 as PlasmaExtras + +import "items" + +MouseArea { + id: hiddenTasksView + + property alias layout: hiddenTasks + + hoverEnabled: true + onExited: hiddenTasks.currentIndex = -1 + + PlasmaExtras.ScrollArea { + width: parent.width + height: parent.height + frameVisible: false + + horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff + verticalScrollBarPolicy: systemTrayState.activeApplet ? Qt.ScrollBarAlwaysOff : Qt.ScrollBarAsNeeded + + GridView { + id: hiddenTasks + + readonly property int rows: 4 + readonly property int columns: 4 + + cellWidth: hiddenTasks.width / hiddenTasks.columns + cellHeight: hiddenTasks.height / hiddenTasks.rows + + currentIndex: -1 + highlight: PlasmaComponents.Highlight {} + highlightMoveDuration: 0 + + readonly property int itemCount: model.count + + model: PlasmaCore.SortFilterModel { + sourceModel: plasmoid.nativeInterface.systemTrayModel + filterRole: "effectiveStatus" + filterCallback: function(source_row, value) { + return value === PlasmaCore.Types.PassiveStatus + } + } + delegate: ItemLoader {} + } + } +} diff --git a/Plasma Widgets/System Tray/contents/ui/PlasmoidPopupsContainer.qml b/Plasma Widgets/System Tray/contents/ui/PlasmoidPopupsContainer.qml new file mode 100644 index 0000000..0a7d200 --- /dev/null +++ b/Plasma Widgets/System Tray/contents/ui/PlasmoidPopupsContainer.qml @@ -0,0 +1,157 @@ +/* + * Copyright 2015 Marco Martin <mart@kde.org> + * + * 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.4 +import QtQuick.Layouts 1.1 +import QtQuick.Controls 1.4 +//needed for units +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.components 3.0 as PlasmaComponents3 +import org.kde.plasma.extras 2.0 as PlasmaExtras + +StackView { + id: mainStack + focus: true + + Layout.minimumWidth: PlasmaCore.Units.gridUnit * 12 + Layout.minimumHeight: PlasmaCore.Units.gridUnit * 12 + + readonly property Item activeApplet: systemTrayState.activeApplet + + /* Heading */ + property bool appletHasHeading: false + property bool mergeHeadings: appletHasHeading && activeApplet.fullRepresentationItem.header.visible + property int headingHeight: mergeHeadings ? activeApplet.fullRepresentationItem.header.height : 0 + /* Footer */ + property bool appletHasFooter: false + property bool mergeFooters: appletHasFooter && activeApplet.fullRepresentationItem.footer.visible + property int footerHeight: mergeFooters ? activeApplet.fullRepresentationItem.footer.height : 0 + + onActiveAppletChanged: { + mainStack.appletHasHeading = false + mainStack.appletHasFooter = false + if (activeApplet != null) { + //reset any potential anchor + activeApplet.fullRepresentationItem.anchors.left = undefined; + activeApplet.fullRepresentationItem.anchors.top = undefined; + activeApplet.fullRepresentationItem.anchors.right = undefined; + activeApplet.fullRepresentationItem.anchors.bottom = undefined; + activeApplet.fullRepresentationItem.anchors.centerIn = undefined; + activeApplet.fullRepresentationItem.anchors.fill = undefined; + + if (activeApplet.fullRepresentationItem instanceof PlasmaComponents3.Page) { + if (activeApplet.fullRepresentationItem.header && activeApplet.fullRepresentationItem.header instanceof PlasmaExtras.PlasmoidHeading) { + mainStack.appletHasHeading = true + activeApplet.fullRepresentationItem.header.background.visible = false + } + if (activeApplet.fullRepresentationItem.footer && activeApplet.fullRepresentationItem.footer instanceof PlasmaExtras.PlasmoidHeading) { + mainStack.appletHasFooter = true + activeApplet.fullRepresentationItem.footer.background.visible = false + } + } + + mainStack.replace({item: activeApplet.fullRepresentationItem, immediate: !systemTrayState.expanded, properties: {focus: true}}); + } else { + mainStack.replace(emptyPage); + } + } + + onCurrentItemChanged: { + if (currentItem !== null && plasmoid.expanded) { + currentItem.forceActiveFocus(); + } + } + + Connections { + target: plasmoid + function onAppletRemoved(applet) { + if (applet === systemTrayState.activeApplet) { + mainStack.clear() + } + } + } + //used to animate away to nothing + Item { + id: emptyPage + } + + delegate: StackViewDelegate { + id: transitioner + function transitionFinished(properties) { + properties.exitItem.opacity = 1 + } + property bool goingLeft: { + const unFlipped = systemTrayState.oldVisualIndex < systemTrayState.newVisualIndex + + if (Qt.application.layoutDirection == Qt.LeftToRight) { + return unFlipped + } else { + return !unFlipped + } + } + replaceTransition: StackViewTransition { + ParallelAnimation { + PropertyAnimation { + target: enterItem + property: "x" + from: root.vertical ? 0 : (transitioner.goingLeft ? enterItem.width : -enterItem.width) + to: 0 + easing.type: Easing.InOutQuad + duration: PlasmaCore.Units.shortDuration + } + SequentialAnimation { + PropertyAction { + target: enterItem + property: "opacity" + value: 0 + } + PauseAnimation { + duration: root.vertical ? (PlasmaCore.Units.shortDuration/2) : 0 + } + PropertyAnimation { + target: enterItem + property: "opacity" + from: 0 + to: 1 + easing.type: Easing.InOutQuad + duration: (PlasmaCore.Units.shortDuration/2) + } + } + } + ParallelAnimation { + PropertyAnimation { + target: exitItem + property: "x" + from: 0 + to: root.vertical ? 0 : (transitioner.goingLeft ? -exitItem.width : exitItem.width) + easing.type: Easing.InOutQuad + duration: PlasmaCore.Units.shortDuration + } + PropertyAnimation { + target: exitItem + property: "opacity" + from: 1 + to: 0 + easing.type: Easing.InOutQuad + duration: PlasmaCore.Units.shortDuration/2 + } + } + } + } +} diff --git a/Plasma Widgets/System Tray/contents/ui/SystemTrayState.qml b/Plasma Widgets/System Tray/contents/ui/SystemTrayState.qml new file mode 100644 index 0000000..edf9ca3 --- /dev/null +++ b/Plasma Widgets/System Tray/contents/ui/SystemTrayState.qml @@ -0,0 +1,107 @@ +/* + * Copyright 2020 Konrad Materka <materka@gmail.com> + * + * 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.12 +import org.kde.plasma.core 2.1 as PlasmaCore +import org.kde.plasma.plasmoid 2.0 + +//This object contains state of the SystemTray, mainly related to the 'expanded' state +QtObject { + //true if System Tray is 'expanded'. It may be when: + // - there is an active applet or + // - 'Status and Notification' with hidden items is shown + property bool expanded: false + //set when there is an applet selected + property Item activeApplet + + //allow expanded change only when activated at least once + //this is to suppress expanded state change during Plasma startup + property bool acceptExpandedChange: false + + // These properties allow us to keep track of where the expanded applet + // was and is on the panel, allowing PlasmoidPopupContainer.qml to animate + // depending on their locations. + property int oldVisualIndex: -1 + property int newVisualIndex: -1 + + function setActiveApplet(applet, visualIndex) { + if (visualIndex === undefined) { + oldVisualIndex = -1 + newVisualIndex = -1 + } else { + oldVisualIndex = newVisualIndex + newVisualIndex = visualIndex + } + + const oldApplet = activeApplet + activeApplet = applet + if (oldApplet && oldApplet !== applet) { + oldApplet.expanded = false + } + expanded = true + } + + onExpandedChanged: { + if (expanded) { + plasmoid.status = PlasmaCore.Types.RequiresAttentionStatus + } else { + plasmoid.status = PlasmaCore.Types.PassiveStatus; + if (activeApplet) { + // if not expanded we don't have an active applet anymore + activeApplet.expanded = false + activeApplet = null + } + } + acceptExpandedChange = false + plasmoid.expanded = expanded + } + + //listen on SystemTray AppletInterface signals + property Connections plasmoidConnections: Connections { + target: plasmoid + //emitted when activation is requested, for example by using a global keyboard shortcut + function onActivated() { + acceptExpandedChange = true + } + //emitted when the configuration dialog is opened + function onUserConfiguringChanged() { + if (plasmoid.userConfiguring) { + systemTrayState.expanded = false + } + } + function onExpandedChanged() { + if (acceptExpandedChange) { + expanded = plasmoid.expanded + } else { + plasmoid.expanded = expanded + } + } + } + + property Connections activeAppletConnections: Connections { + target: activeApplet + + function onExpandedChanged() { + if (!activeApplet.expanded) { + expanded = false + } + } + } + +} diff --git a/Plasma Widgets/System Tray/contents/ui/items/AbstractItem.qml b/Plasma Widgets/System Tray/contents/ui/items/AbstractItem.qml new file mode 100644 index 0000000..b2c7c72 --- /dev/null +++ b/Plasma Widgets/System Tray/contents/ui/items/AbstractItem.qml @@ -0,0 +1,216 @@ +/* + * Copyright 2016 Marco Martin <mart@kde.org> + * Copyright 2020 Konrad Materka <materka@gmail.com> + * Copyright 2020 Nate Graham <nate@kde.org> + * + * 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.2 +import QtQuick.Layouts 1.1 +import org.kde.plasma.core 2.0 as PlasmaCore +import org.kde.plasma.components 3.0 as PlasmaComponents3 + +PlasmaCore.ToolTipArea { + id: abstractItem + + height: inVisibleLayout ? visibleLayout.cellHeight : hiddenTasks.cellHeight + width: inVisibleLayout ? visibleLayout.cellWidth : hiddenTasks.cellWidth + + property var model: itemModel + + property string itemId + property alias text: label.text + property alias iconContainer: iconContainer + property int /*PlasmaCore.Types.ItemStatus*/ status: model.status || PlasmaCore.Types.UnknownStatus + property int /*PlasmaCore.Types.ItemStatus*/ effectiveStatus: model.effectiveStatus || PlasmaCore.Types.UnknownStatus + readonly property bool inHiddenLayout: effectiveStatus === PlasmaCore.Types.PassiveStatus + readonly property bool inVisibleLayout: effectiveStatus === PlasmaCore.Types.ActiveStatus + + signal clicked(var mouse) + signal pressed(var mouse) + signal wheel(var wheel) + signal contextMenu(var mouse) + + /* subclasses need to assign to this tooltip properties + mainText: + subText: + */ + + location: { + if (inHiddenLayout) { + if (LayoutMirroring.enabled && plasmoid.location !== PlasmaCore.Types.RightEdge) { + return PlasmaCore.Types.LeftEdge; + } else if (plasmoid.location !== PlasmaCore.Types.LeftEdge) { + return PlasmaCore.Types.RightEdge; + } + } + + return plasmoid.location; + } + +//BEGIN CONNECTIONS + + onContainsMouseChanged: { + if (inHiddenLayout && containsMouse) { + root.hiddenLayout.currentIndex = index + } + else if(!inHiddenLayout) { + itemHighLight.opacity = containsMouse ? 1 : 0 + } + + } + +//END CONNECTIONS + + PlasmaCore.FrameSvgItem { + id: itemHighLight + anchors.fill: parent + property int location + + property bool animationEnabled: true + property var highlightedItem: null + + z: -1 // always draw behind icons + opacity: 0 + + imagePath: "widgets/tabbar" + prefix: { + var prefix = "" + switch (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; + } + Behavior on opacity { + NumberAnimation { + duration: PlasmaCore.Units.longDuration + easing.type: Easing.InOutQuad + //easing.type: systemTrayState.expanded ? Easing.OutCubic : Easing.InCubic + } + } + } + PulseAnimation { + targetItem: iconContainer + running: (abstractItem.status === PlasmaCore.Types.NeedsAttentionStatus || + abstractItem.status === PlasmaCore.Types.RequiresAttentionStatus ) && + PlasmaCore.Units.longDuration > 0 + } + + function activated() { + //activatedAnimation.start() + } + + SequentialAnimation { + id: activatedAnimation + loops: 1 + + ScaleAnimator { + target: iconContainer + from: 1 + to: 0.5 + duration: PlasmaCore.Units.shortDuration + easing.type: Easing.InQuad + } + + ScaleAnimator { + target: iconContainer + from: 0.5 + to: 1 + duration: PlasmaCore.Units.shortDuration + easing.type: Easing.OutQuad + } + } + + MouseArea { + anchors.fill: abstractItem + hoverEnabled: true + drag.filterChildren: true + acceptedButtons: Qt.LeftButton | Qt.MiddleButton | Qt.RightButton + onClicked: abstractItem.clicked(mouse) + onPressed: { + abstractItem.hideToolTip() + abstractItem.pressed(mouse) + } + onPressAndHold: { + abstractItem.contextMenu(mouse) + } + onWheel: { + abstractItem.wheel(wheel); + //Don't accept the event in order to make the scrolling by mouse wheel working + //for the parent scrollview this icon is in. + wheel.accepted = false; + } + } + + ColumnLayout { + anchors.fill: abstractItem + spacing: 0 + + Item { + id: iconContainer + + property alias container: abstractItem + property alias inVisibleLayout: abstractItem.inVisibleLayout + readonly property int size: abstractItem.inVisibleLayout ? root.itemSize : PlasmaCore.Units.iconSizes.medium + + Layout.alignment: Qt.Bottom | Qt.AlignHCenter + Layout.fillHeight: abstractItem.inHiddenLayout ? true : false + implicitWidth: root.vertical && abstractItem.inVisibleLayout ? abstractItem.width : size + implicitHeight: !root.vertical && abstractItem.inVisibleLayout ? abstractItem.height : size + Layout.topMargin: abstractItem.inHiddenLayout ? Math.round(PlasmaCore.Units.smallSpacing * 1.5): 0 + } + PlasmaComponents3.Label { + id: label + + Layout.fillWidth: true + Layout.fillHeight: abstractItem.inHiddenLayout ? true : false + Layout.leftMargin: abstractItem.inHiddenLayout ? PlasmaCore.Units.smallSpacing : 0 + Layout.rightMargin: abstractItem.inHiddenLayout ? PlasmaCore.Units.smallSpacing : 0 + Layout.bottomMargin: abstractItem.inHiddenLayout ? PlasmaCore.Units.smallSpacing : 0 + + visible: abstractItem.inHiddenLayout + + verticalAlignment: Text.AlignTop + horizontalAlignment: Text.AlignHCenter + elide: Text.ElideRight + wrapMode: Text.Wrap + maximumLineCount: 3 + + opacity: visible ? 1 : 0 + Behavior on opacity { + NumberAnimation { + duration: PlasmaCore.Units.longDuration + easing.type: Easing.InOutQuad + } + } + } + } +} + diff --git a/Plasma Widgets/System Tray/contents/ui/items/ItemLoader.qml b/Plasma Widgets/System Tray/contents/ui/items/ItemLoader.qml new file mode 100644 index 0000000..64034f5 --- /dev/null +++ b/Plasma Widgets/System Tray/contents/ui/items/ItemLoader.qml @@ -0,0 +1,36 @@ +/* + * Copyright 2020 Konrad Materka <materka@gmail.com> + * + * 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 + +Loader { + id: itemLoader + + property var itemModel: model + + source: { + if (model.itemType === "Plasmoid" && model.hasApplet) { + return "PlasmoidItem.qml" + } else if (model.itemType === "StatusNotifier") { + return "StatusNotifierItem.qml" + } + console.warn("SystemTray ItemLoader: Invalid state, cannot determine source!") + return "" + } +} diff --git a/Plasma Widgets/System Tray/contents/ui/items/PlasmoidItem.qml b/Plasma Widgets/System Tray/contents/ui/items/PlasmoidItem.qml new file mode 100644 index 0000000..5592e57 --- /dev/null +++ b/Plasma Widgets/System Tray/contents/ui/items/PlasmoidItem.qml @@ -0,0 +1,141 @@ +/* + * Copyright 2015 Marco Martin <mart@kde.org> + * + * 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.1 +import QtQml 2.15 + +import org.kde.plasma.core 2.0 as PlasmaCore + +AbstractItem { + id: plasmoidContainer + + property Item applet: model.applet || null + text: applet ? applet.title : "" + + itemId: applet ? applet.pluginName : "" + mainText: applet ? applet.toolTipMainText : "" + subText: applet ? applet.toolTipSubText : "" + mainItem: applet && applet.toolTipItem ? applet.toolTipItem : null + textFormat: applet ? applet.toolTipTextFormat : "" + active: systemTrayState.activeApplet !== applet + + onClicked: { + if (!applet) { + return + } + //forward click event to the applet + if (mouse.button === Qt.LeftButton || mouse.button === Qt.MidButton) { + const mouseArea = findMouseArea(applet.compactRepresentationItem) + if (mouseArea) { + mouseArea.clicked(mouse) + } else if (mouse.button === Qt.LeftButton) {//falback + applet.expanded = true + } + } + } + onPressed: { + if (mouse.button === Qt.RightButton) { + plasmoidContainer.contextMenu(mouse); + } + } + onContextMenu: { + if (applet) { + plasmoid.nativeInterface.showPlasmoidMenu(applet, 0, plasmoidContainer.inHiddenLayout ? applet.height : 0); + } + } + onWheel: { + if (!applet) { + return + } + //forward wheel event to the applet + const mouseArea = findMouseArea(applet.compactRepresentationItem) + if (mouseArea) { + mouseArea.wheel(wheel) + } + } + + //some heuristics to find MouseArea + function findMouseArea(item) { + if (!item) { + return null + } + + if (item instanceof MouseArea) { + return item + } + for (var i = 0; i < item.children.length; i++) { + const child = item.children[i] + if (child instanceof MouseArea && child.enabled) { + //check if MouseArea covers the entire item + if (child.anchors.fill === item || (child.x === 0 && child.y === 0 && child.height === item.height && child.width === item.width)) { + return child + } + } + } + + return null + } + + //This is to make preloading effective, minimizes the scene changes + function preloadFullRepresentationItem(fullRepresentationItem) { + if (fullRepresentationItem && fullRepresentationItem.parent === null) { + fullRepresentationItem.width = expandedRepresentation.width + fullRepresentationItem.width = expandedRepresentation.height + fullRepresentationItem.parent = preloadedStorage; + } + } + + onAppletChanged: { + if (applet) { + applet.parent = plasmoidContainer.iconContainer + applet.anchors.fill = applet.parent + applet.visible = true + + preloadFullRepresentationItem(applet.fullRepresentationItem) + } + } + + Connections { + target: applet + + //activation using global keyboard shortcut + function onActivated() { + plasmoidContainer.activated() + } + + function onExpandedChanged(expanded) { + if (expanded) { + systemTrayState.setActiveApplet(applet, model.row) + plasmoidContainer.activated() + } + } + + function onFullRepresentationItemChanged(fullRepresentationItem) { + preloadFullRepresentationItem(fullRepresentationItem) + } + } + + Binding { + property: "hideOnWindowDeactivate" + value: !plasmoid.configuration.pin + target: plasmoidContainer.applet + when: null !== plasmoidContainer.applet + restoreMode: Binding.RestoreBinding + } +} diff --git a/Plasma Widgets/System Tray/contents/ui/items/PulseAnimation.qml b/Plasma Widgets/System Tray/contents/ui/items/PulseAnimation.qml new file mode 100644 index 0000000..0506a35 --- /dev/null +++ b/Plasma Widgets/System Tray/contents/ui/items/PulseAnimation.qml @@ -0,0 +1,53 @@ +/* + * Copyright 2013 Sebastian Kügler <sebas@kde.org> + * Copyright 2015 Kai Uwe Broulik <kde@privat.broulik.de> + * + * 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 2.010-1301, USA. + */ + +import QtQuick 2.2 +import org.kde.plasma.core 2.0 as PlasmaCore + +SequentialAnimation { + id: pulseAnimation + objectName: "pulseAnimation" + + property Item targetItem + readonly property int duration: PlasmaCore.Units.veryLongDuration * 5 + + loops: Animation.Infinite + alwaysRunToEnd: true + + ScaleAnimator { + target: targetItem + from: 1 + to: 1.2 + duration: pulseAnimation.duration * 0.15 + easing.type: Easing.InQuad + } + + ScaleAnimator { + target: targetItem + from: 1.2 + to: 1 + duration: pulseAnimation.duration * 0.15 + easing.type: Easing.InQuad + } + + PauseAnimation { + duration: pulseAnimation.duration * 0.7 + } +} diff --git a/Plasma Widgets/System Tray/contents/ui/items/StatusNotifierItem.qml b/Plasma Widgets/System Tray/contents/ui/items/StatusNotifierItem.qml new file mode 100644 index 0000000..e7c1571 --- /dev/null +++ b/Plasma Widgets/System Tray/contents/ui/items/StatusNotifierItem.qml @@ -0,0 +1,118 @@ +/* + * Copyright 2016 Marco Martin <mart@kde.org> + * + * 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.1 +import org.kde.plasma.core 2.0 as PlasmaCore + +AbstractItem { + id: taskIcon + + itemId: model.Id + text: model.Title || model.ToolTipTitle + mainText: model.ToolTipTitle !== "" ? model.ToolTipTitle : model.Title + subText: model.ToolTipSubTitle + textFormat: Text.AutoText + + PlasmaCore.IconItem { + id: iconItem + parent: taskIcon.iconContainer + anchors.fill: iconItem.parent + + source: { + if (model.status === PlasmaCore.Types.NeedsAttentionStatus) { + if (model.AttentionIcon) { + return model.AttentionIcon + } + if (model.AttentionIconName) { + return model.AttentionIconName + } + } + return model.Icon ? model.Icon : model.IconName + } + active: taskIcon.containsMouse + } + + onContextMenu: { + openContextMenu(plasmoid.nativeInterface.popupPosition(taskIcon, mouse.x, mouse.y)) + } + + onClicked: { + var pos = plasmoid.nativeInterface.popupPosition(taskIcon, mouse.x, mouse.y); + var service = model.Service; + + switch (mouse.button) { + case Qt.LeftButton: + var operation = service.operationDescription("Activate"); + operation.x = pos.x; + operation.y = pos.y; + var job = service.startOperationCall(operation); + job.finished.connect(function () { + if (!job.result) { + // On error try to invoke the context menu. + // Workaround primarily for apps using libappindicator. + openContextMenu(pos); + } + }); + taskIcon.activated() + break; + case Qt.RightButton: + openContextMenu(pos); + break; + + case Qt.MiddleButton: + var operation = service.operationDescription("SecondaryActivate"); + operation.x = pos.x; + + operation.y = pos.y; + service.startOperationCall(operation); + taskIcon.activated() + break; + } + } + + function openContextMenu(pos) { + var service = model.Service; + var operation = service.operationDescription("ContextMenu"); + operation.x = pos.x; + operation.y = pos.y; + + var job = service.startOperationCall(operation); + job.finished.connect(function () { + plasmoid.nativeInterface.showStatusNotifierContextMenu(job, taskIcon); + }); + } + + onWheel: { + //don't send activateVertScroll with a delta of 0, some clients seem to break (kmix) + if (wheel.angleDelta.y !== 0) { + var service = model.Service; + var operation = service.operationDescription("Scroll"); + operation.delta =wheel.angleDelta.y; + operation.direction = "Vertical"; + service.startOperationCall(operation); + } + if (wheel.angleDelta.x !== 0) { + var service = model.Service; + var operation = service.operationDescription("Scroll"); + operation.delta =wheel.angleDelta.x; + operation.direction = "Horizontal"; + service.startOperationCall(operation); + } + } +} diff --git a/Plasma Widgets/System Tray/contents/ui/main.qml b/Plasma Widgets/System Tray/contents/ui/main.qml new file mode 100644 index 0000000..e284732 --- /dev/null +++ b/Plasma Widgets/System Tray/contents/ui/main.qml @@ -0,0 +1,238 @@ +/* + * Copyright 2011 Marco Martin <mart@kde.org> + * Copyright 2020 Konrad Materka <materka@gmail.com> + * + * 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.5 +import QtQuick.Layouts 1.1 +import org.kde.plasma.core 2.1 as PlasmaCore +import org.kde.plasma.plasmoid 2.0 +import org.kde.draganddrop 2.0 as DnD +import org.kde.kirigami 2.5 as Kirigami + +import "items" + +MouseArea { + id: root + + readonly property bool vertical: plasmoid.formFactor === PlasmaCore.Types.Vertical + + Layout.minimumWidth: vertical ? PlasmaCore.Units.iconSizes.small : mainLayout.implicitWidth + PlasmaCore.Units.smallSpacing + Layout.minimumHeight: vertical ? mainLayout.implicitHeight + PlasmaCore.Units.smallSpacing : PlasmaCore.Units.iconSizes.small + + LayoutMirroring.enabled: !vertical && Qt.application.layoutDirection === Qt.RightToLeft + LayoutMirroring.childrenInherit: true + + readonly property alias systemTrayState: systemTrayState + readonly property alias itemSize: tasksGrid.itemSize + readonly property alias visibleLayout: tasksGrid + readonly property alias hiddenLayout: expandedRepresentation.hiddenLayout + + onWheel: { + // Don't propagate unhandled wheel events + wheel.accepted = true; + } + + SystemTrayState { + id: systemTrayState + } + + //being there forces the items to fully load, and they will be reparented in the popup one by one, this item is *never* visible + Item { + id: preloadedStorage + visible: false + } + + CurrentItemHighLight { + location: plasmoid.location + parent: root + } + + DnD.DropArea { + anchors.fill: parent + + preventStealing: true; + + /** Extracts the name of the system tray applet in the drag data if present + * otherwise returns null*/ + function systemTrayAppletName(event) { + if (event.mimeData.formats.indexOf("text/x-plasmoidservicename") < 0) { + return null; + } + var plasmoidId = event.mimeData.getDataAsByteArray("text/x-plasmoidservicename"); + + if (!plasmoid.nativeInterface.isSystemTrayApplet(plasmoidId)) { + return null; + } + return plasmoidId; + } + + onDragEnter: { + if (!systemTrayAppletName(event)) { + event.ignore(); + } + } + + onDrop: { + var plasmoidId = systemTrayAppletName(event); + if (!plasmoidId) { + event.ignore(); + return; + } + + if (plasmoid.configuration.extraItems.indexOf(plasmoidId) < 0) { + var extraItems = plasmoid.configuration.extraItems; + extraItems.push(plasmoidId); + plasmoid.configuration.extraItems = extraItems; + } + } + } + + //Main Layout + GridLayout { + id: mainLayout + + rowSpacing: 0 + columnSpacing: 0 + anchors.fill: parent + + flow: vertical ? GridLayout.TopToBottom : GridLayout.LeftToRight + + GridView { + id: tasksGrid + + Layout.alignment: Qt.AlignCenter + + interactive: false //disable features we don't need + flow: vertical ? GridView.LeftToRight : GridView.TopToBottom + + // The icon size to display when not using the auto-scaling setting + readonly property int smallIconSize: PlasmaCore.Units.iconSizes.smallMedium + readonly property bool autoSize: plasmoid.configuration.scaleIconsToFit + + readonly property int gridThickness: root.vertical ? root.width : root.height + // Should change to 2 rows/columns on a 56px panel (in standard DPI) + readonly property int rowsOrColumns: autoSize ? 1 : Math.max(1, Math.min(count, Math.floor(gridThickness / (smallIconSize + PlasmaCore.Units.smallSpacing)))) + + // Add margins only if the panel is larger than a small icon (to avoid large gaps between tiny icons) + readonly property int smallSizeCellLength: gridThickness < smallIconSize ? smallIconSize : smallIconSize + PlasmaCore.Units.smallSpacing * 2 + cellHeight: { + if (root.vertical) { + return autoSize ? root.width + PlasmaCore.Units.smallSpacing : smallSizeCellLength + } else { + return autoSize ? root.height : Math.floor(root.height / rowsOrColumns) + } + } + cellWidth: { + if (root.vertical) { + return autoSize ? root.width : Math.floor(root.width / rowsOrColumns) + } else { + return autoSize ? root.height + PlasmaCore.Units.smallSpacing : smallSizeCellLength + } + } + + //depending on the form factor, we are calculating only one dimention, second is always the same as root/parent + implicitHeight: root.vertical ? cellHeight * Math.ceil(count / rowsOrColumns) : root.height + implicitWidth: !root.vertical ? cellWidth * Math.ceil(count / rowsOrColumns) : root.width + + // Used only by AbstractItem, but it's easiest to keep it here since it + // uses dimensions from this item to calculate the final value + readonly property int itemSize: { + if (autoSize) { + const size = Math.min(implicitWidth / rowsOrColumns, implicitHeight / rowsOrColumns) + return PlasmaCore.Units.roundToIconSize(Math.min(size, PlasmaCore.Units.iconSizes.enormous)) + } else { + return smallIconSize + } + } + + model: PlasmaCore.SortFilterModel { + sourceModel: plasmoid.nativeInterface.systemTrayModel + filterRole: "effectiveStatus" + filterCallback: function(source_row, value) { + return value === PlasmaCore.Types.ActiveStatus + } + } + + delegate: ItemLoader {} + + add: Transition { + enabled: itemSize > 0 + + NumberAnimation { + property: "scale" + from: 0 + to: 1 + easing.type: Easing.InOutQuad + duration: PlasmaCore.Units.longDuration + } + } + + displaced: Transition { + //ensure scale value returns to 1.0 + //https://doc.qt.io/qt-5/qml-qtquick-viewtransition.html#handling-interrupted-animations + NumberAnimation { + property: "scale" + to: 1 + easing.type: Easing.InOutQuad + duration: PlasmaCore.Units.longDuration + } + } + + move: Transition { + NumberAnimation { + properties: "x,y" + easing.type: Easing.InOutQuad + duration: PlasmaCore.Units.longDuration + } + } + } + + ExpanderArrow { + id: expander + Layout.fillWidth: vertical + Layout.fillHeight: !vertical + Layout.alignment: vertical ? Qt.AlignVCenter : Qt.AlignHCenter + visible: root.hiddenLayout.itemCount > 0 + } + } + + //Main popup + PlasmaCore.Dialog { + id: dialog + visualParent: root + flags: Qt.WindowStaysOnTopHint + location: plasmoid.location + hideOnWindowDeactivate: !plasmoid.configuration.pin + visible: systemTrayState.expanded + + onVisibleChanged: { + systemTrayState.expanded = visible + } + mainItem: ExpandedRepresentation { + id: expandedRepresentation + + Keys.onEscapePressed: { + systemTrayState.expanded = false + } + + LayoutMirroring.enabled: Qt.application.layoutDirection === Qt.RightToLeft + LayoutMirroring.childrenInherit: true + } + } +} diff --git a/Plasma Widgets/System Tray/metadata.desktop b/Plasma Widgets/System Tray/metadata.desktop new file mode 100644 index 0000000..408860a --- /dev/null +++ b/Plasma Widgets/System Tray/metadata.desktop @@ -0,0 +1,108 @@ +[Desktop Entry] +Name=System Tray +Name[af]=Stelsellaai +Name[ar]=صينية النظام +Name[ast]=Bandexa del sistema +Name[az]=Sistem Çəkməcəsi +Name[be]=Сістэмны трэй +Name[be@latin]=Systemny trej +Name[bg]=Системен панел +Name[bn]=সিস্টেম ট্রে +Name[bn_IN]=সিস্টেম ট্রে +Name[br]=Barlenn ar reizhiad +Name[bs]=Sistemska kaseta +Name[ca]=Safata del sistema +Name[ca@valencia]=Safata del sistema +Name[cs]=Systémová část panelu +Name[csb]=Systemòwi zabiérnik +Name[cy]=Bar Tasgau +Name[da]=Statusområde +Name[de]=Systemabschnitt der Kontrollleiste +Name[el]=Πλαίσιο συστήματος +Name[en_GB]=System Tray +Name[eo]=Sistempleto +Name[es]=Bandeja del sistema +Name[et]=Süsteemne dokk +Name[eu]=Sistema-erretilua +Name[fa]=سینی سیستم +Name[fi]=Ilmoitusalue +Name[fr]=Boîte à miniatures +Name[fy]=Systeemfak +Name[ga]=Tráidire an Chórais +Name[gl]=Bandexa do sistema +Name[gu]=સિસ્ટમ ટ્રે +Name[he]=מגש המערכת +Name[hi]=तंत्र तश्तरी +Name[hne]=तंत्र तस्तरी +Name[hr]=Sistemski blok +Name[hsb]=Systemowa wotkładka +Name[hu]=Paneltálca +Name[ia]=Tabuliero de systema +Name[id]=System Tray +Name[is]=Kerfisbakki +Name[it]=Vassoio di sistema +Name[ja]=システムトレイ +Name[ka]=სისტემური პანელი +Name[kk]=Жүйелік сөре +Name[km]=ថាសប្រព័ន្ធ +Name[kn]=ವ್ಯವಸ್ಥಾ ಖಾನೆ (ಟ್ರೇ) +Name[ko]=시스템 트레이 +Name[lt]=Sistemos dėklas +Name[lv]=Sistēmas ikonu josla +Name[mai]=तंत्र तश्तरी +Name[mk]=Системска лента +Name[ml]=സിസ്റ്റം ട്രേ +Name[mr]=प्रणाली ट्रे +Name[ms]=Dulang Sistem +Name[nb]=Systemkurv +Name[nds]=Paneel-Systeemafsnitt +Name[ne]=प्रणाली ट्रे +Name[nl]=Systeemvak +Name[nn]=Systemtrau +Name[or]=ତନ୍ତ୍ର ଧାରକ +Name[pa]=ਸਿਸਟਮ ਟਰੇ +Name[pl]=Tacka systemowa +Name[pt]=Bandeja do Sistema +Name[pt_BR]=Área de notificação +Name[ro]=Tavă de sistem +Name[ru]=Системный лоток +Name[se]=Vuogádatgárcu +Name[si]=පද්ධතිය තැටිය +Name[sk]=Systémová lišta +Name[sl]=Sistemska vrstica +Name[sr]=системска касета +Name[sr@ijekavian]=системска касета +Name[sr@ijekavianlatin]=sistemska kaseta +Name[sr@latin]=sistemska kaseta +Name[sv]=Systembricka +Name[ta]=சாதனத் தட்டு +Name[te]=వ్యవస్థ ట్రె +Name[tg]=Лавҳачаи низомӣ +Name[th]=ถาดระบบ +Name[tr]=Sistem Çekmecesi +Name[ug]=سىستېما قوندىقى +Name[uk]=Системний лоток +Name[vi]=Khay hệ thống +Name[wa]=Boesse ås imådjetes sistinme +Name[xh]=Itreyi Yendlela yokusebenza +Name[x-test]=xxSystem Trayxx +Name[zh_CN]=系统托盘 +Name[zh_TW]=系統匣 +Icon=preferences-desktop-notification +Type=Service +X-KDE-ServiceTypes=Plasma/Applet,Plasma/Containment + +X-Plasma-API=declarativeappletscript +X-Plasma-MainScript=ui/main.qml +X-KDE-PluginInfo-Author=Marco Martin +X-KDE-PluginInfo-Email=mart@kde.org +X-KDE-PluginInfo-Name=org.kde.plasma.private.systemtray +X-KDE-PluginInfo-Version=1.0 +X-KDE-PluginInfo-Website=https://www.kde.org/plasma-desktop +X-KDE-PluginInfo-Category=Windows and Tasks +X-KDE-PluginInfo-License=GPL-2.0+ +X-KDE-PluginInfo-EnabledByDefault=true +X-Plasma-ContainmentType=Panel +#this is the internal implementation: can't be loaded directly +NoDisplay=true +X-KDE-FormFactors=desktop diff --git a/Plasma Widgets/System Tray/metadata.json b/Plasma Widgets/System Tray/metadata.json new file mode 100644 index 0000000..cd635b0 --- /dev/null +++ b/Plasma Widgets/System Tray/metadata.json @@ -0,0 +1,117 @@ +{ + "KPlugin": { + "Authors": [ + { + "Email": "mart@kde.org", + "Name": "Marco Martin" + } + ], + "Category": "Windows and Tasks", + "EnabledByDefault": true, + "FormFactors": [ + "desktop" + ], + "Icon": "preferences-desktop-notification", + "Id": "org.kde.plasma.private.systemtray", + "License": "GPL-2.0+", + "Name": "System Tray", + "Name[af]": "Stelsellaai", + "Name[ar]": "صينية النظام", + "Name[ast]": "Bandexa del sistema", + "Name[az]": "Sistem Çəkməcəsi", + "Name[be@latin]": "Systemny trej", + "Name[be]": "Сістэмны трэй", + "Name[bg]": "Системен панел", + "Name[bn]": "সিস্টেম ট্রে", + "Name[bn_IN]": "সিস্টেম ট্রে", + "Name[br]": "Barlenn ar reizhiad", + "Name[bs]": "Sistemska kaseta", + "Name[ca@valencia]": "Safata del sistema", + "Name[ca]": "Safata del sistema", + "Name[cs]": "Systémová část panelu", + "Name[csb]": "Systemòwi zabiérnik", + "Name[cy]": "Bar Tasgau", + "Name[da]": "Statusområde", + "Name[de]": "Systemabschnitt der Kontrollleiste", + "Name[el]": "Πλαίσιο συστήματος", + "Name[en_GB]": "System Tray", + "Name[eo]": "Sistempleto", + "Name[es]": "Bandeja del sistema", + "Name[et]": "Süsteemne dokk", + "Name[eu]": "Sistema-erretilua", + "Name[fa]": "سینی سیستم", + "Name[fi]": "Ilmoitusalue", + "Name[fr]": "Boîte à miniatures", + "Name[fy]": "Systeemfak", + "Name[ga]": "Tráidire an Chórais", + "Name[gl]": "Bandexa do sistema", + "Name[gu]": "સિસ્ટમ ટ્રે", + "Name[he]": "מגש המערכת", + "Name[hi]": "तंत्र तश्तरी", + "Name[hne]": "तंत्र तस्तरी", + "Name[hr]": "Sistemski blok", + "Name[hsb]": "Systemowa wotkładka", + "Name[hu]": "Paneltálca", + "Name[ia]": "Tabuliero de systema", + "Name[id]": "System Tray", + "Name[is]": "Kerfisbakki", + "Name[it]": "Vassoio di sistema", + "Name[ja]": "システムトレイ", + "Name[ka]": "სისტემური პანელი", + "Name[kk]": "Жүйелік сөре", + "Name[km]": "ថាសប្រព័ន្ធ", + "Name[kn]": "ವ್ಯವಸ್ಥಾ ಖಾನೆ (ಟ್ರೇ)", + "Name[ko]": "시스템 트레이", + "Name[lt]": "Sistemos dėklas", + "Name[lv]": "Sistēmas ikonu josla", + "Name[mai]": "तंत्र तश्तरी", + "Name[mk]": "Системска лента", + "Name[ml]": "സിസ്റ്റം ട്രേ", + "Name[mr]": "प्रणाली ट्रे", + "Name[ms]": "Dulang Sistem", + "Name[nb]": "Systemkurv", + "Name[nds]": "Paneel-Systeemafsnitt", + "Name[ne]": "प्रणाली ट्रे", + "Name[nl]": "Systeemvak", + "Name[nn]": "Systemtrau", + "Name[or]": "ତନ୍ତ୍ର ଧାରକ", + "Name[pa]": "ਸਿਸਟਮ ਟਰੇ", + "Name[pl]": "Tacka systemowa", + "Name[pt]": "Bandeja do Sistema", + "Name[pt_BR]": "Área de notificação", + "Name[ro]": "Tavă de sistem", + "Name[ru]": "Системный лоток", + "Name[se]": "Vuogádatgárcu", + "Name[si]": "පද්ධතිය තැටිය", + "Name[sk]": "Systémová lišta", + "Name[sl]": "Sistemska vrstica", + "Name[sr@ijekavian]": "системска касета", + "Name[sr@ijekavianlatin]": "sistemska kaseta", + "Name[sr@latin]": "sistemska kaseta", + "Name[sr]": "системска касета", + "Name[sv]": "Systembricka", + "Name[ta]": "சாதனத் தட்டு", + "Name[te]": "వ్యవస్థ ట్రె", + "Name[tg]": "Лавҳачаи низомӣ", + "Name[th]": "ถาดระบบ", + "Name[tr]": "Sistem Çekmecesi", + "Name[ug]": "سىستېما قوندىقى", + "Name[uk]": "Системний лоток", + "Name[vi]": "Khay hệ thống", + "Name[wa]": "Boesse ås imådjetes sistinme", + "Name[x-test]": "xxSystem Trayxx", + "Name[xh]": "Itreyi Yendlela yokusebenza", + "Name[zh_CN]": "系统托盘", + "Name[zh_TW]": "系統匣", + "ServiceTypes": [ + "Plasma/Applet", + "Plasma/Containment" + ], + "Version": "1.0", + "Website": "https://www.kde.org/plasma-desktop" + }, + "NoDisplay": true, + "X-Plasma-API": "declarativeappletscript", + "X-Plasma-ContainmentType": "Panel", + "X-Plasma-MainScript": "ui/main.qml" +} diff --git a/README.md b/README.md index d80bd9f..0fb6b19 100644 --- a/README.md +++ b/README.md @@ -91,6 +91,10 @@ there are any improvements to be made here, any and all effort would be greatly <img src="Screenshots/Taskbar.png"> +### System Tray + +<img src="Screenshots/System_Tray.png"> + ### Plasma Style <img src="Screenshots/Notification.png"> @@ -272,6 +276,16 @@ or inconsistencies, for now post them in the next desktop threads. Make sure that your panel's width is set to 40. Also make sure that you're using the ```Icons-only Task Manager``` widget to make it look closer to Windows 7. +#### Modified System Tray + +This modification will add hover animations to the default system tray plasmoid, as well as remove the annoying popup animation which happens upon clicking on an item. +Since the system tray is a complex plasmoid, its files have to be replaced with a modified version provided in this theme. To do this, copy the ```org.kde.plasma.private.systemtray``` found in the ```Plasma Widgets``` folder to the following directory: + +```/usr/share/plasma/plasmoids/``` + +This will override the default System Tray plasmoid. It is not recommended to edit this particular plasmoid, so proceed with caution. Make sure to back up the original plasmoid somewhere safe. + + #### Digital Clock Lite Install the widget ```Digital Clock Lite``` (https://www.kde-look.org/p/1225135/) and replace the ugly large clock widget with @@ -282,6 +296,8 @@ it. By default it should already look a lot like Windows 7's clock, but if it do You can tweak the other settings to your liking. +#### Show Desktop (Win7) + Lastly, install the ```Show Desktop (Win7)``` widget (https://www.kde-look.org/p/1100895/) and configure it to these settings: In Look: diff --git a/Screenshots/System_Tray.png b/Screenshots/System_Tray.png new file mode 100644 index 0000000000000000000000000000000000000000..bccc892426b424417936241f3fa2eeeb25ba9355 GIT binary patch literal 83164 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 literal 0 HcmV?d00001