[gnome-shell] user-menu: Restore previous session presence at startup
- From: Florian MÃllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] user-menu: Restore previous session presence at startup
- Date: Fri, 7 Oct 2011 05:24:47 +0000 (UTC)
commit 2947b921489937e6fb8ea8d9634510585b78bcc0
Author: Florian MÃllner <fmuellner gnome org>
Date: Thu Oct 6 02:47:18 2011 +0200
user-menu: Restore previous session presence at startup
Save the session presence in GSettings and restore it on startup.
https://bugzilla.gnome.org/show_bug.cgi?id=659021
data/org.gnome.shell.gschema.xml.in | 4 ++++
js/ui/userMenu.js | 25 ++++++++++++++++++++++++-
2 files changed, 28 insertions(+), 1 deletions(-)
---
diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in
index a848818..82b0c33 100644
--- a/data/org.gnome.shell.gschema.xml.in
+++ b/data/org.gnome.shell.gschema.xml.in
@@ -54,6 +54,10 @@
<default>0</default>
<_summary></_summary>
</key>
+ <key name="saved-session-presence" type="i">
+ <default>0</default>
+ <_summary></_summary>
+ </key>
<child name="clock" schema="org.gnome.shell.clock"/>
<child name="calendar" schema="org.gnome.shell.calendar"/>
<child name="recorder" schema="org.gnome.shell.recorder"/>
diff --git a/js/ui/userMenu.js b/js/ui/userMenu.js
index 85d9802..d6e30af 100644
--- a/js/ui/userMenu.js
+++ b/js/ui/userMenu.js
@@ -158,10 +158,11 @@ IMStatusChooserItem.prototype = {
Lang.bind(this, this._changeIMStatus));
this._presence = new GnomeSession.Presence();
- this._presence.getStatus(Lang.bind(this, this._sessionStatusChanged));
this._presence.connect('StatusChanged',
Lang.bind(this, this._sessionStatusChanged));
+ this._sessionPresenceRestored = false;
+ this._imPresenceRestored = false;
this._currentPresence = undefined;
this._accountMgr = Tp.AccountManager.dup()
@@ -267,12 +268,20 @@ IMStatusChooserItem.prototype = {
},
_IMStatusChanged: function(accountMgr, presence, status, message) {
+ if (!this._imPresenceRestored)
+ this._imPresenceRestored = true;
+
if (presence == this._currentPresence)
return;
this._currentPresence = presence;
this._setComboboxPresence(presence);
+ if (!this._sessionPresenceRestored) {
+ this._presence.getStatus(Lang.bind(this, this._sessionStatusChanged));
+ return;
+ }
+
if (presence == Tp.ConnectionPresenceType.AVAILABLE)
this._presence.setStatus(GnomeSession.PresenceStatus.AVAILABLE);
@@ -349,6 +358,20 @@ IMStatusChooserItem.prototype = {
},
_sessionStatusChanged: function(sessionPresence, sessionStatus) {
+ if (!this._imPresenceRestored)
+ return;
+
+ if (!this._sessionPresenceRestored) {
+ let savedStatus = global.settings.get_int('saved-session-presence');
+ if (sessionStatus != savedStatus) {
+ this._presence.setStatus(savedStatus);
+ return;
+ }
+ this._sessionPresenceRestored = true;
+ }
+
+ global.settings.set_int('saved-session-presence', sessionStatus);
+
let [presence, s, msg] = this._accountMgr.get_most_available_presence();
let newPresence, status;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]