~ubuntu-branches/ubuntu/trusty/gnome-shell/trusty-proposed

« back to all changes in this revision

Viewing changes to js/misc/screenSaver.js

Tags: upstream-3.3.90
ImportĀ upstreamĀ versionĀ 3.3.90

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
2
2
 
3
 
const DBus = imports.dbus;
 
3
const Gio = imports.gi.Gio;
4
4
const Lang = imports.lang;
5
5
 
6
 
const ScreenSaverIface = {
7
 
    name: 'org.gnome.ScreenSaver',
8
 
    methods: [{ name: 'GetActive',
9
 
                inSignature: '',
10
 
                outSignature: 'b' },
11
 
              { name: 'Lock',
12
 
                inSignature: '' },
13
 
              { name: 'SetActive',
14
 
                inSignature: 'b' }],
15
 
    signals: [{ name: 'ActiveChanged',
16
 
                inSignature: 'b' }]
17
 
};
 
6
const ScreenSaverIface = <interface name="org.gnome.ScreenSaver">
 
7
<method name="GetActive">
 
8
    <arg type="b" direction="out" />
 
9
</method>
 
10
<method name="Lock" />
 
11
<method name="SetActive">
 
12
    <arg type="b" direction="in" />
 
13
</method>
 
14
<signal name="ActiveChanged">
 
15
    <arg type="b" direction="out" />
 
16
</signal>
 
17
</interface>;
 
18
 
 
19
const ScreenSaverInfo = Gio.DBusInterfaceInfo.new_for_xml(ScreenSaverIface);
18
20
 
19
21
function ScreenSaverProxy() {
20
 
    this._init();
 
22
    var self = new Gio.DBusProxy({ g_connection: Gio.DBus.session,
 
23
                                   g_interface_name: ScreenSaverInfo.name,
 
24
                                   g_interface_info: ScreenSaverInfo,
 
25
                                   g_name: 'org.gnome.ScreenSaver',
 
26
                                   g_object_path: '/org/gnome/ScreenSaver',
 
27
                                   g_flags: (Gio.DBusProxyFlags.DO_NOT_AUTO_START |
 
28
                                             Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES) });
 
29
    self.init(null);
 
30
    self.screenSaverActive = false;
 
31
 
 
32
    self.connectSignal('ActiveChanged', function(proxy, senderName, [isActive]) {
 
33
        self.screenSaverActive = isActive;
 
34
    });
 
35
    self.connect('notify::g-name-owner', function() {
 
36
        if (self.g_name_owner) {
 
37
            self.GetActiveRemote(function(result, excp) {
 
38
                if (result) {
 
39
                    let [isActive] = result;
 
40
                    self.screenSaverActive = isActive;
 
41
                }
 
42
            });
 
43
        } else
 
44
            self.screenSaverActive = false;
 
45
    });
 
46
 
 
47
    return self;
21
48
}
22
 
 
23
 
ScreenSaverProxy.prototype = {
24
 
    _init: function() {
25
 
        DBus.session.proxifyObject(this,
26
 
                                   'org.gnome.ScreenSaver',
27
 
                                   '/org/gnome/ScreenSaver');
28
 
 
29
 
        DBus.session.watch_name('org.gnome.ScreenSaver',
30
 
                                false, // do not launch a name-owner if none exists
31
 
                                Lang.bind(this, this._onSSAppeared),
32
 
                                Lang.bind(this, this._onSSVanished));
33
 
 
34
 
        this.screenSaverActive = false;
35
 
        this.connect('ActiveChanged',
36
 
                     Lang.bind(this, this._onActiveChanged));
37
 
    },
38
 
 
39
 
    _onSSAppeared: function(owner) {
40
 
        this.GetActiveRemote(Lang.bind(this, function(isActive) {
41
 
            this.screenSaverActive = isActive;
42
 
        }))
43
 
    },
44
 
 
45
 
    _onSSVanished: function(oldOwner) {
46
 
        this.screenSaverActive = false;
47
 
    },
48
 
 
49
 
    _onActiveChanged: function(object, isActive) {
50
 
        this.screenSaverActive = isActive;
51
 
    }
52
 
};
53
 
DBus.proxifyPrototype(ScreenSaverProxy.prototype, ScreenSaverIface);