From 968d8d3a54ad56cd1e2fbad7121a8cc96240c1ec Mon Sep 17 00:00:00 2001 From: Michail Vourlakos Date: Sat, 9 Jan 2021 15:05:23 +0200 Subject: [PATCH] plasmoid:expose Ability Launchers.group --- plasmoid/package/contents/ui/ContextMenu.qml | 32 +++++---- .../contents/ui/abilities/Launchers.qml | 53 ++++++++++++--- plasmoid/package/contents/ui/main.qml | 67 +++++++------------ 3 files changed, 86 insertions(+), 66 deletions(-) diff --git a/plasmoid/package/contents/ui/ContextMenu.qml b/plasmoid/package/contents/ui/ContextMenu.qml index e1bbbbf3a..aa65e51aa 100644 --- a/plasmoid/package/contents/ui/ContextMenu.qml +++ b/plasmoid/package/contents/ui/ContextMenu.qml @@ -720,9 +720,10 @@ PlasmaComponents.ContextMenu { if (tasksModel.launcherPosition(get(atm.LauncherUrlWithoutIcon)) != -1) { var launcher = get(atm.LauncherUrl); - if (latteView && root.launchersGroup >= LatteCore.Types.LayoutLaunchers) { + if (latteView && !launchers.inUniqueGroup()) { latteView.layoutsManager.launchersSignals.removeLauncher(root.viewLayoutName, - root.launchersGroup, launcher); + launchers.group, + launcher); } else { root.launcherForRemoval = launcher; tasksModel.requestRemoveLauncher(launcher); @@ -731,9 +732,10 @@ PlasmaComponents.ContextMenu { } else { var launcher = get(atm.LauncherUrl); - if (latteView && root.launchersGroup >= LatteCore.Types.LayoutLaunchers) { + if (latteView && !launchers.inUniqueGroup()) { latteView.layoutsManager.launchersSignals.addLauncher(root.viewLayoutName, - root.launchersGroup, launcher); + launchers.group, + launcher); } else { tasksModel.requestAddLauncher(launcher); root.launchersUpdatedFor(launcher); @@ -780,9 +782,11 @@ PlasmaComponents.ContextMenu { result.clicked.connect( function() { if (result.checked) { - if (latteView && root.launchersGroup >= LatteCore.Types.LayoutLaunchers) { + if (latteView && !launchers.inUniqueGroup()) { latteView.layoutsManager.launchersSignals.addLauncherToActivity(root.viewLayoutName, - root.launchersGroup, url, id); + launchers.group, + url, + id); } else { if (id !== tasksModel.activity && (activities[0] === "00000000-0000-0000-0000-000000000000")) { root.launcherForRemoval = url; @@ -792,9 +796,11 @@ PlasmaComponents.ContextMenu { root.launchersUpdatedFor(url); } } else { - if (latteView && root.launchersGroup >= LatteCore.Types.LayoutLaunchers) { + if (latteView && !launchers.inUniqueGroup()) { latteView.layoutsManager.launchersSignals.removeLauncherFromActivity(root.viewLayoutName, - root.launchersGroup, url, id); + launchers.group, + url, + id); } else { if (id === tasksModel.activity) { root.launcherForRemoval = url; @@ -851,9 +857,10 @@ PlasmaComponents.ContextMenu { onClicked: { var launcher = get(atm.LauncherUrlWithoutIcon); - if (latteView && root.launchersGroup >= LatteCore.Types.LayoutLaunchers) { + if (latteView && !launchers.inUniqueGroup()) { latteView.layoutsManager.launchersSignals.removeLauncher(root.viewLayoutName, - root.launchersGroup, launcher); + launchers.group, + launcher); } else { root.launcherForRemoval = launcher tasksModel.requestRemoveLauncher(launcher); @@ -894,9 +901,10 @@ PlasmaComponents.ContextMenu { onClicked: { var launcher = get(atm.LauncherUrlWithoutIcon); - if (latteView && root.launchersGroup >= LatteCore.Types.LayoutLaunchers) { + if (latteView && !launchers.inUniqueGroup()) { latteView.layoutsManager.launchersSignals.removeLauncher(root.viewLayoutName, - root.launchersGroup, launcher); + launchers.group, + launcher); } else { root.launcherForRemoval = launcher; tasksModel.requestRemoveLauncher(launcher); diff --git a/plasmoid/package/contents/ui/abilities/Launchers.qml b/plasmoid/package/contents/ui/abilities/Launchers.qml index 4e63ca710..4b42247c0 100644 --- a/plasmoid/package/contents/ui/abilities/Launchers.qml +++ b/plasmoid/package/contents/ui/abilities/Launchers.qml @@ -27,6 +27,7 @@ import "launchers" as LaunchersPart Item { id: _launchers + property int group: LatteCore.Types.UniqueLaunchers property Item layout: null property QtObject tasksModel: null @@ -34,6 +35,18 @@ Item { readonly property LaunchersPart.Syncer syncer: LaunchersPart.Syncer{} readonly property LaunchersPart.Validator validator: LaunchersPart.Validator{} + function inUniqueGroup() { + return group === LatteCore.Types.UniqueLaunchers; + } + + function inLayoutGroup() { + return group === LatteCore.Types.LayoutLaunchers; + } + + function inGlobalGroup() { + return group === LatteCore.Types.GlobalLaunchers; + } + function isSeparator(launcher){ return (launcher.indexOf("latte-separator")!==-1 && launcher.indexOf(".desktop")!==1); } @@ -64,6 +77,10 @@ Item { } } + function hasLauncher(url) { + return _launchers.tasksModel.launcherPosition(url) != -1; + } + function inCurrentActivity(url) { var activities = _launchers.tasksModel.launcherActivities(url); @@ -132,12 +149,11 @@ Item { if (viewLayout) { if (latteView && latteView.layoutsManager && latteView.viewLayout && latteView.universalSettings - && (root.launchersGroup === LatteCore.Types.LayoutLaunchers - || root.launchersGroup === LatteCore.Types.GlobalLaunchers)) { + && !_launchers.inUniqueGroup()) { - if (root.launchersGroup === LatteCore.Types.LayoutLaunchers) { + if (_launchers.inLayoutGroup()) { launchersList = latteView.viewLayout.launchers; - } else if (root.launchersGroup === LatteCore.Types.GlobalLaunchers) { + } else if (_launchers.inGlobalGroup()) { launchersList = latteView.universalSettings.launchers; } } @@ -174,27 +190,42 @@ Item { //! Connections + onGroupChanged:{ + if(latteView) { + _launchers.tasksModel.updateLaunchersList(); + } + } + Connections { - target: _launchers.tasksModel + target: root + onLatteViewChanged: { + if (root.latteView) { + if (!_launchers.inUniqueGroup()) { + _launchers.tasksModel.updateLaunchersList(); + } + } + } + } + Connections { + target: _launchers.tasksModel onLauncherListChanged: { if (viewLayout) { if (latteView && latteView.layoutsManager && latteView.viewLayout && latteView.universalSettings - && (root.launchersGroup === LatteCore.Types.LayoutLaunchers - || root.launchersGroup === LatteCore.Types.GlobalLaunchers)) { + && !_launchers.inUniqueGroup()) { - if (root.launchersGroup === LatteCore.Types.LayoutLaunchers) { + if (_launchers.inLayoutGroup()) { latteView.viewLayout.launchers = _launchers.tasksModel.launcherList; - } else if (root.launchersGroup === LatteCore.Types.GlobalLaunchers) { + } else if (_launchers.inGlobalGroup()) { latteView.universalSettings.launchers = _launchers.tasksModel.launcherList; } if (inDraggingPhase) { - if (latteView && root.launchersGroup >= LatteCore.Types.LayoutLaunchers) { + if (latteView && !_launchers.inUniqueGroup()) { latteView.layoutsManager.launchersSignals.validateLaunchersOrder(root.viewLayoutName, plasmoid.id, - root.launchersGroup, + _launchers.group, _launchers.currentShownLauncherList()); } } diff --git a/plasmoid/package/contents/ui/main.qml b/plasmoid/package/contents/ui/main.qml index 10ae886eb..0f44822c8 100644 --- a/plasmoid/package/contents/ui/main.qml +++ b/plasmoid/package/contents/ui/main.qml @@ -175,8 +175,6 @@ Item { property bool titleTooltips: latteView ? latteView.titleTooltips : false property alias windowPreviewIsShown: windowsPreviewDlg.visible - property int launchersGroup: plasmoid.configuration.launchersGroup - property int leftClickAction: plasmoid.configuration.leftClickAction property int middleClickAction: plasmoid.configuration.middleClickAction property int hoverAction: plasmoid.configuration.hoverAction @@ -272,22 +270,11 @@ Item { if (latteView) { plasmoid.action("configure").visible = false; plasmoid.configuration.isInLatteDock = true; - - if (root.launchersGroup === LatteCore.Types.LayoutLaunchers - || root.launchersGroup === LatteCore.Types.GlobalLaunchers) { - tasksModel.updateLaunchersList(); - } } else { plasmoid.configuration.isInLatteDock = false; } } - onLaunchersGroupChanged:{ - if(latteView) { - tasksModel.updateLaunchersList(); - } - } - Connections { target: plasmoid onLocationChanged: { @@ -617,13 +604,11 @@ Item { property bool anyTaskDemandsAttentionInValidTime: false function updateLaunchersList(){ - if (latteView - && (root.launchersGroup === LatteCore.Types.LayoutLaunchers - || root.launchersGroup === LatteCore.Types.GlobalLaunchers)) { - if (root.launchersGroup === LatteCore.Types.LayoutLaunchers) { + if (latteView && !launchers.inUniqueGroup()) { + if (launchers.inLayoutGroup()) { console.log("Tasks: Applying LAYOUT Launchers List..."); tasksModel.launcherList = latteView.viewLayout.launchers; - } else if (root.launchersGroup === LatteCore.Types.GlobalLaunchers) { + } else if (launchers.inGlobalGroup()) { console.log("Tasks: Applying GLOBAL Launchers List..."); tasksModel.launcherList = latteView.universalSettings.launchers; } @@ -661,13 +646,10 @@ Item { //var loadedLaunchers = ActivitiesTools.restoreLaunchers(); ActivitiesTools.importLaunchersToNewArchitecture(); - if (viewLayout && latteView.universalSettings - && (root.launchersGroup === LatteCore.Types.LayoutLaunchers - || root.launchersGroup === LatteCore.Types.GlobalLaunchers)) { - - if (root.launchersGroup === LatteCore.Types.LayoutLaunchers) { + if (viewLayout && latteView.universalSettings && !launchers.inUniqueGroup()) { + if (launchers.inLayoutGroup()) { launcherList = latteView.viewLayout.launchers; - } else if (root.launchersGroup === LatteCore.Types.GlobalLaunchers) { + } else if (launchers.inGlobalGroup()) { launcherList = latteView.universalSettings.launchers; } } else { @@ -852,6 +834,7 @@ Item { Ability.Launchers { id: _launchers + group: plasmoid.configuration.launchersGroup layout: icList.contentItem tasksModel: tasksModel } @@ -1053,7 +1036,7 @@ Item { property int maxThickness: (parabolic.isHovered || windowPreviewIsShown || animations.hasThicknessAnimation) ? metrics.mask.thickness.zoomedForItems : metrics.mask.thickness.normalForItems - function onlyLaunchersInList(list){ + function onlyLaunchersInDroppedList(list){ return list.every(function (item) { return backend.isApplication(item) }); @@ -1061,7 +1044,7 @@ Item { function urlsDroppedOnArea(urls){ // If all dropped URLs point to application desktop files, we'll add a launcher for each of them. - if (onlyLaunchersInList(urls)) { + if (onlyLaunchersDroppedInList(urls)) { urls.forEach(function (item) { addLauncher(item); }); @@ -1082,9 +1065,10 @@ Item { onUrlsDropped: { //! inform synced docks for new dropped launchers - if (latteView && root.launchersGroup >= LatteCore.Types.LayoutLaunchers && onlyLaunchersInList(urls)) { + if (latteView && !launchers.inUniqueGroup() && onlyLaunchersInDroppedList(urls)) { latteView.layoutsManager.launchersSignals.urlsDropped(root.viewLayoutName, - root.launchersGroup, urls); + launchers.group, + urls); return; } @@ -1392,9 +1376,10 @@ Item { if (separatorName !== "") { tasksExtendedManager.addLauncherToBeMoved(separatorName, Math.max(0,pos)); - if (latteView && root.launchersGroup >= LatteCore.Types.LayoutLaunchers) { + if (latteView && !launchers.inUniqueGroup()) { latteView.layoutsManager.launchersSignals.addLauncher(root.viewLayoutName, - root.launchersGroup, separatorName); + launchers.group, + separatorName); } else { tasksModel.requestAddLauncher(separatorName); } @@ -1449,7 +1434,7 @@ Item { //! BEGIN ::: external launchers signals in order to update the tasks model function extSignalAddLauncher(group, launcher) { - if (group === root.launchersGroup) { + if (group === launchers.group) { tasksModel.requestAddLauncher(launcher); launchersUpdatedFor(launcher); tasksModel.syncLaunchers(); @@ -1457,7 +1442,7 @@ Item { } function extSignalRemoveLauncher(group, launcher) { - if (group === root.launchersGroup) { + if (group === launchers.group) { root.launcherForRemoval = launcher; tasksModel.requestRemoveLauncher(launcher); launchersUpdatedFor(launcher); @@ -1466,7 +1451,7 @@ Item { } function extSignalAddLauncherToActivity(group, launcher, activity) { - if (group === root.launchersGroup) { + if (group === launchers.group) { var launcherActivities = tasksModel.launcherActivities(launcher); if (activity !== tasksModel.activity && (launcherActivities[0] === "00000000-0000-0000-0000-000000000000")) { @@ -1480,7 +1465,7 @@ Item { } function extSignalRemoveLauncherFromActivity(group, launcher, activity) { - if (group === root.launchersGroup) { + if (group === launchers.group) { if (activity === tasksModel.activity) { root.launcherForRemoval = launcher; } @@ -1492,20 +1477,20 @@ Item { } function extSignalUrlsDropped(group, urls) { - if (group === root.launchersGroup) { + if (group === launchers.group) { mouseHandler.urlsDroppedOnArea(urls); } } function extSignalMoveTask(group, from, to) { - if (group === root.launchersGroup && !root.dragSource) { + if (group === launchers.group && !root.dragSource) { tasksModel.move(from, to); tasksModel.syncLaunchers(); } } function extSignalValidateLaunchersOrder(group, orderedLaunchers) { - if (group === root.launchersGroup && !root.dragSource) { + if (group === launchers.group && !root.dragSource) { launchers.validateOrder(orderedLaunchers); } } @@ -1521,8 +1506,8 @@ Item { if (separatorName !== "") { tasksExtendedManager.addLauncherToBeMoved(separatorName, Math.max(0,pos)); - if (latteView && root.launchersGroup >= LatteCore.Types.LayoutLaunchers) { - latteView.layoutsManager.launchersSignals.addLauncher(root.launchersGroup, separatorName); + if (latteView && !launchers.inUniqueGroup()) { + latteView.layoutsManager.launchersSignals.addLauncher(launchers.group, separatorName); } else { tasksModel.requestAddLauncher(separatorName); } @@ -1562,10 +1547,6 @@ Item { return false; } - function hasLauncher(url) { - return tasksModel.launcherPosition(url) != -1; - } - function addLauncher(url) { //workaround to protect in case the launcher contains the iconData var pos = url.indexOf("?iconData=");