From e279ef1c7c251ad1bf46237ae851f86e86bf5a06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Wed, 26 Oct 2011 21:16:08 +0200 Subject: [PATCH] user-menu: Disable combo box if no accounts are enabled If no telepathy accounts have been set up or enabled, the IM status chooser won't have any effect. To avoid confusing behavior, make the status selector insensitive in that case. https://bugzilla.gnome.org/show_bug.cgi?id=662800 --- js/ui/userMenu.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/js/ui/userMenu.js b/js/ui/userMenu.js index 3ae22720c..7e4fbe30c 100644 --- a/js/ui/userMenu.js +++ b/js/ui/userMenu.js @@ -168,11 +168,20 @@ IMStatusChooserItem.prototype = { this._accountMgr = Tp.AccountManager.dup(); this._accountMgr.connect('most-available-presence-changed', Lang.bind(this, this._IMStatusChanged)); + this._accountMgr.connect('account-enabled', + Lang.bind(this, this._IMAccountsChanged)); + this._accountMgr.connect('account-disabled', + Lang.bind(this, this._IMAccountsChanged)); + this._accountMgr.connect('account-removed', + Lang.bind(this, this._IMAccountsChanged)); this._accountMgr.prepare_async(null, Lang.bind(this, function(mgr) { let [presence, status, msg] = mgr.get_most_available_presence(); let savedPresence = global.settings.get_int('saved-im-presence'); + + this._IMAccountsChanged(mgr); + if (savedPresence == presence) { this._IMStatusChanged(mgr, presence, status, msg); } else { @@ -282,6 +291,13 @@ IMStatusChooserItem.prototype = { } }, + _IMAccountsChanged: function(mgr) { + let accounts = mgr.get_valid_accounts().filter(function(account) { + return account.enabled; + }); + this._combo.setSensitive(accounts.length > 0); + }, + _IMStatusChanged: function(accountMgr, presence, status, message) { if (!this._imPresenceRestored) this._imPresenceRestored = true;