[gnome-shell] sessionMode: Add statusArea property
- From: Florian MÃllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] sessionMode: Add statusArea property
- Date: Tue, 22 May 2012 17:47:21 +0000 (UTC)
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]