[gnome-shell] sessionMode: Add statusArea property



commit e4f1572a3a77c05d71f37d8961acc121c38abee5
Author: Florian MÃllner <fmuellner gnome org>
Date:   Thu May 17 16:09:02 2012 +0200

    sessionMode: Add statusArea property
    
    Add a sessionMode.statusArea property, which specifies both the order
    and shell implementation of the status area items for the mode.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=676156

 js/ui/panel.js       |   46 +++++-----------------------------------------
 js/ui/sessionMode.js |   42 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 47 insertions(+), 41 deletions(-)
---
diff --git a/js/ui/panel.js b/js/ui/panel.js
index d712b9e..121dab2 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -14,7 +14,6 @@ const St = imports.gi.St;
 const Signals = imports.signals;
 const Atk = imports.gi.Atk;
 
-const Config = imports.misc.config;
 const CtrlAltTab = imports.ui.ctrlAltTab;
 const DND = imports.ui.dnd;
 const Layout = imports.ui.layout;
@@ -32,33 +31,6 @@ const BUTTON_DND_ACTIVATION_TIMEOUT = 250;
 const ANIMATED_ICON_UPDATE_TIMEOUT = 100;
 const SPINNER_ANIMATION_TIME = 0.2;
 
-const STANDARD_STATUS_AREA_ORDER = ['a11y', 'keyboard', 'volume', 'bluetooth', 'network', 'battery', 'userMenu'];
-const STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION = {
-    'a11y': imports.ui.status.accessibility.ATIndicator,
-    'volume': imports.ui.status.volume.Indicator,
-    'battery': imports.ui.status.power.Indicator,
-    'keyboard': imports.ui.status.keyboard.XKBIndicator,
-    'userMenu': imports.ui.userMenu.UserMenuButton
-};
-
-if (Config.HAVE_BLUETOOTH)
-    STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['bluetooth'] = imports.ui.status.bluetooth.Indicator;
-
-try {
-    STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['network'] = imports.ui.status.network.NMApplet;
-} catch(e) {
-    log('NMApplet is not supported. It is possible that your NetworkManager version is too old');
-}
-
-const GDM_STATUS_AREA_ORDER = ['a11y', 'display', 'keyboard', 'volume', 'battery', 'powerMenu'];
-const GDM_STATUS_AREA_SHELL_IMPLEMENTATION = {
-    'a11y': imports.ui.status.accessibility.ATIndicator,
-    'volume': imports.ui.status.volume.Indicator,
-    'battery': imports.ui.status.power.Indicator,
-    'keyboard': imports.ui.status.keyboard.XKBIndicator,
-    'powerMenu': imports.gdm.powerMenu.PowerMenuButton
-};
-
 // To make sure the panel corners blend nicely with the panel,
 // we draw background and borders the same way, e.g. drawing
 // them as filled shapes from the outside inwards instead of
@@ -983,14 +955,6 @@ const Panel = new Lang.Class({
         this._menus.addMenu(this._dateMenu.menu);
 
         /* right */
-        if (Main.sessionMode.sessionType == Shell.SessionType.GDM) {
-            this._status_area_order = GDM_STATUS_AREA_ORDER;
-            this._status_area_shell_implementation = GDM_STATUS_AREA_SHELL_IMPLEMENTATION;
-        } else {
-            this._status_area_order = STANDARD_STATUS_AREA_ORDER;
-            this._status_area_shell_implementation = STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION;
-        }
-
         Main.statusIconDispatcher.connect('status-icon-added', Lang.bind(this, this._onTrayIconAdded));
         Main.statusIconDispatcher.connect('status-icon-removed', Lang.bind(this, this._onTrayIconRemoved));
 
@@ -1122,9 +1086,9 @@ const Panel = new Lang.Class({
     },
 
     startStatusArea: function() {
-        for (let i = 0; i < this._status_area_order.length; i++) {
-            let role = this._status_area_order[i];
-            let constructor = this._status_area_shell_implementation[role];
+        for (let i = 0; i < Main.sessionMode.statusArea.order.length; i++) {
+            let role = Main.sessionMode.statusArea.order[i];
+            let constructor = Main.sessionMode.statusArea.implementation[role];
             if (!constructor) {
                 // This icon is not implemented (this is a bug)
                 continue;
@@ -1174,7 +1138,7 @@ const Panel = new Lang.Class({
     },
 
     _onTrayIconAdded: function(o, icon, role) {
-        if (this._status_area_shell_implementation[role]) {
+        if (Main.sessionMode.statusArea.implementation[role]) {
             // This icon is legacy, and replaced by a Shell version
             // Hide it
             return;
@@ -1185,7 +1149,7 @@ const Panel = new Lang.Class({
         let box = buttonBox.actor;
         box.add_actor(icon);
 
-        this._insertStatusItem(box, this._status_area_order.indexOf(role));
+        this._insertStatusItem(box, Main.sessionMode.statusArea.order.indexOf(role));
     },
 
     _onTrayIconRemoved: function(o, icon) {
diff --git a/js/ui/sessionMode.js b/js/ui/sessionMode.js
index 3814d82..ed6eaa2 100644
--- a/js/ui/sessionMode.js
+++ b/js/ui/sessionMode.js
@@ -3,9 +3,31 @@
 const Lang = imports.lang;
 const Shell = imports.gi.Shell;
 
+const Config = imports.misc.config;
 const Main = imports.ui.main;
 const Params = imports.misc.params;
 
+
+const STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION = {
+    'a11y': imports.ui.status.accessibility.ATIndicator,
+    'volume': imports.ui.status.volume.Indicator,
+    'battery': imports.ui.status.power.Indicator,
+    'keyboard': imports.ui.status.keyboard.XKBIndicator,
+    'userMenu': imports.ui.userMenu.UserMenuButton
+};
+
+if (Config.HAVE_BLUETOOTH)
+    STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['bluetooth'] =
+        imports.ui.status.bluetooth.Indicator;
+
+try {
+    STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION['network'] =
+        imports.ui.status.network.NMApplet;
+} catch(e) {
+    log('NMApplet is not supported. It is possible that your NetworkManager version is too old');
+}
+
+
 const DEFAULT_MODE = 'user';
 
 const _modes = {
@@ -19,6 +41,19 @@ const _modes = {
              hasWorkspaces: false,
              createSession: Main.createGDMSession,
              extraStylesheet: global.datadir + '/theme/gdm.css',
+             statusArea: {
+                 order: [
+                     'a11y', 'display', 'keyboard',
+                     'volume', 'battery', 'powerMenu'
+                 ],
+                 implementation: {
+                     'a11y': imports.ui.status.accessibility.ATIndicator,
+                     'volume': imports.ui.status.volume.Indicator,
+                     'battery': imports.ui.status.power.Indicator,
+                     'keyboard': imports.ui.status.keyboard.XKBIndicator,
+                     'powerMenu': imports.gdm.powerMenu.PowerMenuButton
+                 }
+             },
              sessionType: Shell.SessionType.GDM },
 
     'user': { hasOverview: true,
@@ -31,6 +66,13 @@ const _modes = {
               hasWorkspaces: true,
               createSession: Main.createUserSession,
               extraStylesheet: null,
+              statusArea: {
+                  order: [
+                      'a11y', 'keyboard', 'volume', 'bluetooth',
+                      'network', 'battery', 'userMenu'
+                  ],
+                  implementation: STANDARD_STATUS_AREA_SHELL_IMPLEMENTATION
+              },
               sessionType: Shell.SessionType.USER }
 };
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]