[gnome-shell] screensaver: factor out a ScreenSaverProxy helper class
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] screensaver: factor out a ScreenSaverProxy helper class
- Date: Wed, 13 Jul 2011 18:41:02 +0000 (UTC)
commit 6004e3d2e1a19f3d33e828b1d3694884df288f48
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Tue Jul 12 11:42:33 2011 -0400
screensaver: factor out a ScreenSaverProxy helper class
This class will be shared between StatusMenu and the upcoming
AutomountManager classes.
https://bugzilla.gnome.org/show_bug.cgi?id=653520
js/Makefile.am | 1 +
js/misc/screenSaver.js | 59 ++++++++++++++++++++++++++++++++++++++++++++++++
js/ui/statusMenu.js | 14 +---------
3 files changed, 62 insertions(+), 12 deletions(-)
---
diff --git a/js/Makefile.am b/js/Makefile.am
index 758b4c0..33e86c2 100644
--- a/js/Makefile.am
+++ b/js/Makefile.am
@@ -10,6 +10,7 @@ nobase_dist_js_DATA = \
misc/history.js \
misc/modemManager.js \
misc/params.js \
+ misc/screenSaver.js \
misc/util.js \
perf/core.js \
ui/altTab.js \
diff --git a/js/misc/screenSaver.js b/js/misc/screenSaver.js
new file mode 100644
index 0000000..da592f6
--- /dev/null
+++ b/js/misc/screenSaver.js
@@ -0,0 +1,59 @@
+/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
+
+const DBus = imports.dbus;
+const Lang = imports.lang;
+const Signals = imports.signals;
+
+const ScreenSaverIface = {
+ name: 'org.gnome.ScreenSaver',
+ methods: [{ name: 'GetActive',
+ inSignature: '',
+ outSignature: 'b' },
+ { name: 'Lock',
+ inSignature: '' },
+ { name: 'SetActive',
+ inSignature: 'b' }],
+ signals: [{ name: 'ActiveChanged',
+ inSignature: 'b' }]
+};
+
+function ScreenSaverProxy() {
+ this._init();
+}
+
+ScreenSaverProxy.prototype = {
+ _init: function() {
+ DBus.session.proxifyObject(this,
+ 'org.gnome.ScreenSaver',
+ '/org/gnome/ScreenSaver');
+
+ DBus.session.watch_name('org.gnome.ScreenSaver',
+ false, // do not launch a name-owner if none exists
+ Lang.bind(this, this._onSSAppeared),
+ Lang.bind(this, this._onSSVanished));
+
+ this.connect('ActiveChanged',
+ Lang.bind(this, this._onActiveChanged));
+ },
+
+ _onSSAppeared: function(owner) {
+ this.GetActiveRemote(Lang.bind(this, function(isActive) {
+ this._screenSaverActive = isActive;
+ }))
+ },
+
+ _onSSVanished: function(oldOwner) {
+ this._screenSaverActive = false;
+ },
+
+ _onActiveChanged: function(object, isActive) {
+ this._screenSaverActive = isActive;
+ this.emit('active-changed', this._screenSaverActive);
+ },
+
+ getActive: function() {
+ return this._screenSaverActive;
+ }
+};
+DBus.proxifyPrototype(ScreenSaverProxy.prototype, ScreenSaverIface);
+Signals.addSignalMethods(ScreenSaverProxy.prototype);
diff --git a/js/ui/statusMenu.js b/js/ui/statusMenu.js
index 327fc4b..d4d9a43 100644
--- a/js/ui/statusMenu.js
+++ b/js/ui/statusMenu.js
@@ -14,24 +14,14 @@ const GnomeSession = imports.misc.gnomeSession;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
+const ScreenSaver = imports.misc.screenSaver;
const Util = imports.misc.util;
-const BUS_NAME = 'org.gnome.ScreenSaver';
-const OBJECT_PATH = '/org/gnome/ScreenSaver';
-
const LOCKDOWN_SCHEMA = 'org.gnome.desktop.lockdown';
const DISABLE_USER_SWITCH_KEY = 'disable-user-switching';
const DISABLE_LOCK_SCREEN_KEY = 'disable-lock-screen';
const DISABLE_LOG_OUT_KEY = 'disable-log-out';
-const ScreenSaverInterface = {
- name: BUS_NAME,
- methods: [ { name: 'Lock', inSignature: '' },
- { name: 'SetActive', inSignature: 'b' }]
-};
-
-let ScreenSaverProxy = DBus.makeProxyClass(ScreenSaverInterface);
-
// Adapted from gdm/gui/user-switch-applet/applet.c
//
// Copyright (C) 2004-2005 James M. Cape <jcape ignore-your tv>.
@@ -63,7 +53,7 @@ StatusMenuButton.prototype = {
this._account_mgr = Tp.AccountManager.dup()
this._upClient = new UPowerGlib.Client();
- this._screenSaverProxy = new ScreenSaverProxy(DBus.session, BUS_NAME, OBJECT_PATH);
+ this._screenSaverProxy = new ScreenSaver.ScreenSaverProxy();
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this._iconBox = new St.Bin();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]