46 lines
1.1 KiB
JavaScript
46 lines
1.1 KiB
JavaScript
|
/* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
|
||
|
|
||
|
const DBus = imports.dbus;
|
||
|
const Lang = imports.lang;
|
||
|
|
||
|
const PresenceIface = {
|
||
|
name: 'org.gnome.SessionManager.Presence',
|
||
|
methods: [{ name: 'SetStatus',
|
||
|
inSignature: 'u' }],
|
||
|
properties: [{ name: 'status',
|
||
|
signature: 'u',
|
||
|
access: 'readwrite' }],
|
||
|
signals: [{ name: 'StatusChanged',
|
||
|
inSignature: 'u' }]
|
||
|
};
|
||
|
|
||
|
const PresenceStatus = {
|
||
|
AVAILABLE: 0,
|
||
|
INVISIBLE: 1,
|
||
|
BUSY: 2,
|
||
|
IDLE: 3
|
||
|
};
|
||
|
|
||
|
function Presence() {
|
||
|
this._init();
|
||
|
}
|
||
|
|
||
|
Presence.prototype = {
|
||
|
_init: function() {
|
||
|
DBus.session.proxifyObject(this, 'org.gnome.SessionManager', '/org/gnome/SessionManager/Presence', this);
|
||
|
},
|
||
|
|
||
|
getStatus: function(callback) {
|
||
|
this.GetRemote('status', Lang.bind(this,
|
||
|
function(status, ex) {
|
||
|
if (!ex)
|
||
|
callback(this, status);
|
||
|
}));
|
||
|
},
|
||
|
|
||
|
setStatus: function(status) {
|
||
|
this.SetStatusRemote(status);
|
||
|
}
|
||
|
};
|
||
|
DBus.proxifyPrototype(Presence.prototype, PresenceIface);
|