[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [plasma-desktop] applets/taskmanager/package/contents/ui: Replaced the launcher pinning action with 
From:       Ivan Čukić <ivan.cukic () kde ! org>
Date:       2016-10-21 15:17:39
Message-ID: E1bxbZj-00089n-I8 () code ! kde ! org
[Download RAW message or body]

Git commit e69643e039f0e228da358b30b6d98bc94867be00 by Ivan Čukić.
Committed on 21/10/2016 at 15:17.
Pushed by ivan into branch 'master'.

Replaced the launcher pinning action with a per-activity meny

Reviewers: mart, hein, #plasma

Reviewed By: mart, hein, #plasma

Subscribers: broulik, plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D3106

M  +86   -1    applets/taskmanager/package/contents/ui/ContextMenu.qml

http://commits.kde.org/plasma-desktop/e69643e039f0e228da358b30b6d98bc94867be00

diff --git a/applets/taskmanager/package/contents/ui/ContextMenu.qml \
b/applets/taskmanager/package/contents/ui/ContextMenu.qml index 1cbf252..5377e9c \
                100644
--- a/applets/taskmanager/package/contents/ui/ContextMenu.qml
+++ b/applets/taskmanager/package/contents/ui/ContextMenu.qml
@@ -45,6 +45,8 @@ PlasmaComponents.ContextMenu {
     onStatusChanged: {
         if (visualParent && visualParent.m.LauncherUrlWithoutIcon != null && status \
                == PlasmaComponents.DialogStatus.Open) {
             launcherToggleAction.checked = \
(tasksModel.launcherPosition(visualParent.m.LauncherUrlWithoutIcon) != -1); +         \
activitiesDesktopsMenu.refresh(); +
         } else if (status == PlasmaComponents.DialogStatus.Closed) {
             menu.destroy();
         }
@@ -394,7 +396,11 @@ PlasmaComponents.ContextMenu {
     PlasmaComponents.MenuItem {
         id: launcherToggleAction
 
-        visible: (visualParent && visualParent.m.IsLauncher !== true && \
visualParent.m.IsStartup !== true) && plasmoid.immutability !== \
PlasmaCore.Types.SystemImmutable +        visible: visualParent
+                     && visualParent.m.IsLauncher !== true
+                     && visualParent.m.IsStartup !== true
+                     && plasmoid.immutability !== PlasmaCore.Types.SystemImmutable
+                     && (activityInfo.numberOfRunningActivities < 2)
 
         enabled: visualParent && visualParent.m.LauncherUrlWithoutIcon != ""
 
@@ -412,6 +418,85 @@ PlasmaComponents.ContextMenu {
     }
 
     PlasmaComponents.MenuItem {
+        id: showLauncherInActivitiesItem
+
+        text: i18n("&Show A Launcher When Not Running")
+
+        visible: visualParent
+                     && visualParent.m.IsLauncher !== true
+                     && visualParent.m.IsStartup !== true
+                     && plasmoid.immutability !== PlasmaCore.Types.SystemImmutable
+                     && (activityInfo.numberOfRunningActivities >= 2)
+
+        Connections {
+            target: activityInfo
+            onNumberOfRunningActivitiesChanged: activitiesDesktopsMenu.refresh()
+        }
+
+        PlasmaComponents.ContextMenu {
+            id: activitiesLaunchersMenu
+            visualParent: showLauncherInActivitiesItem.action
+
+            function refresh() {
+                clearMenuItems();
+
+                if (menu.visualParent === null) return;
+
+                var createNewItem = function(id, title, url, activities) {
+                    var result = menu.newMenuItem(activitiesLaunchersMenu);
+                    result.text = title;
+
+                    result.visible = true;
+                    result.checkable = true;
+
+                    result.checked = activities.some(function(activity) { return \
activity === id }); +
+                    result.clicked.connect(
+                        function() {
+                            if (result.checked) {
+                                tasksModel.requestAddLauncherToActivity(url, id);
+                            } else {
+                                tasksModel.requestRemoveLauncherFromActivity(url, \
id); +                            }
+                        }
+                    );
+
+                    return result;
+                }
+
+                if (menu.visualParent === null) return;
+
+                var url = menu.visualParent.m.LauncherUrlWithoutIcon;
+
+                var activities = tasksModel.launcherActivities(url);
+
+                var NULL_UUID = "00000000-0000-0000-0000-000000000000";
+
+                createNewItem(NULL_UUID, i18n("On All Activities"), url, \
activities); +
+                if (activityInfo.numberOfRunningActivities <= 1) {
+                    return;
+                }
+
+                createNewItem(activityInfo.currentActivity, i18n("On The Current \
Activity"), url, activities); +
+                menu.newSeparator(activitiesLaunchersMenu);
+
+                var runningActivities = activityInfo.runningActivities();
+
+                runningActivities.forEach(function(id) {
+                    createNewItem(id, activityInfo.activityName(id), url, \
activities); +                });
+            }
+
+            Component.onCompleted: {
+                menu.onVisualParentChanged.connect(refresh);
+                refresh();
+            }
+        }
+    }
+
+    PlasmaComponents.MenuItem {
         visible: (visualParent && visualParent.m.IsLauncher === true) && \
plasmoid.immutability !== PlasmaCore.Types.SystemImmutable  
         text: i18n("Remove Launcher")


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic