[gnome-shell] user-menu: Disable combo box if no accounts are enabled



commit e279ef1c7c251ad1bf46237ae851f86e86bf5a06
Author: Florian MÃllner <fmuellner gnome org>
Date:   Wed Oct 26 21:16:08 2011 +0200

    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 files changed, 16 insertions(+), 0 deletions(-)
---
diff --git a/js/ui/userMenu.js b/js/ui/userMenu.js
index 3ae2272..7e4fbe3 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;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]