[Pkg-mozext-commits] [firetray] 268/399: * observe "account-added", "account-removed", at last ! (see 75636723 and 8d0917ab) * auto-start InstantMessaging when needed

David Prévot taffit at alioth.debian.org
Tue Oct 29 18:23:56 UTC 2013


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch dfsg-clean
in repository firetray.

commit b3869630c23ee2984fa52553f2a6c6375537a94e
Author: foudfou <foudil.newbie+git at gmail.com>
Date:   Sat Aug 4 14:02:42 2012 +0200

    * observe "account-added", "account-removed", at last ! (see 75636723 and 8d0917ab)
    * auto-start InstantMessaging when needed
---
 src/modules/FiretrayInstantMessaging.jsm |    8 +++---
 src/modules/FiretrayMessaging.jsm        |   41 +++++++++++++++++++++++++-----
 2 files changed, 38 insertions(+), 11 deletions(-)

diff --git a/src/modules/FiretrayInstantMessaging.jsm b/src/modules/FiretrayInstantMessaging.jsm
index c2edb12..a4d78ad 100644
--- a/src/modules/FiretrayInstantMessaging.jsm
+++ b/src/modules/FiretrayInstantMessaging.jsm
@@ -19,7 +19,8 @@ firetray.InstantMessaging = {
     }
     F.LOG("Enabling InstantMessaging");
 
-    firetray.Utils.addObservers(firetray.InstantMessaging, [ // "*" for debugging
+    firetray.Utils.addObservers(firetray.InstantMessaging, [
+      // "*" // debugging
       "idle-time-changed", "new-directed-incoming-message", "new-text",
       "new-ui-conversation", "status-changed", "unread-im-count-changed",
       "visited-status-resolution"
@@ -38,16 +39,13 @@ firetray.InstantMessaging = {
   },
 
   observe: function(subject, topic, data) {
-    F.WARN("RECEIVED InstantMessaging:");
+    F.LOG("RECEIVED InstantMessaging: "+topic+" subject="+subject+" data="+data);
     switch (topic) {
     case "unread-im-count-changed":
-      F.WARN("received unread-im-count-changed: "+subject+" "+data);
       break;
     case "new-directed-incoming-message": // when PM or cited in channel: new-directed-incoming-message: [xpconnect wrapped (nsISupports, nsIClassInfo, prplIMessage)] null
-      F.WARN("new-directed-incoming-message: "+subject+" "+data);
       break;
     case "visited-status-resolution":
-      F.WARN("visited-status-resolution: "+subject+" "+data);
       break;
     case "status-changed":
     case "idle-time-changed":
diff --git a/src/modules/FiretrayMessaging.jsm b/src/modules/FiretrayMessaging.jsm
index dfd7acf..b908253 100644
--- a/src/modules/FiretrayMessaging.jsm
+++ b/src/modules/FiretrayMessaging.jsm
@@ -27,6 +27,7 @@ firetray.Messaging = {
   initialized: false,
   cleaningTimer: null,
   currentMsgCount: null,
+  observedTopics: {},
 
   init: function() {
     if (this.initialized) {
@@ -35,16 +36,14 @@ firetray.Messaging = {
     }
     F.LOG("Enabling Messaging");
 
-    // there is no means to detect account-removed event
-    this.cleaningTimer = firetray.Utils.timer(firetray.Messaging.cleanExcludedAccounts,
-      FIRETRAY_DELAY_PREF_CLEANING_MILLISECONDS, Ci.nsITimer.TYPE_REPEATING_SLACK);
-    F.LOG(this.cleaningTimer+"="+FIRETRAY_DELAY_PREF_CLEANING_MILLISECONDS);
+    firetray.Utils.addObservers(firetray.Messaging, [ "account-added",
+      "account-removed"]);
 
     let that = this;
     MailServices.mailSession.AddFolderListener(that.mailSessionListener,
                                                that.mailSessionListener.notificationFlags);
 
-    if (Services.prefs.getBoolPref("mail.chat.enabled"))
+    if (Services.prefs.getBoolPref("mail.chat.enabled") && this.existsIMAccount())
       firetray.InstantMessaging.init();
 
     this.initialized = true;
@@ -54,14 +53,44 @@ firetray.Messaging = {
     if (!this.initialized) return;
     F.LOG("Disabling Messaging");
 
+    firetray.InstantMessaging.shutdown();
+
     MailServices.mailSession.RemoveFolderListener(this.mailSessionListener);
     firetray.Handler.setIconImageDefault();
 
-    this.cleaningTimer.cancel();
+    Services.obs.removeAllObservers(firetray.Messaging);
 
     this.initialized = false;
   },
 
+  existsIMAccount: function() {
+    let accounts = new this.Accounts();
+    for (let accountServer in accounts)
+      if (accountServer.type === 'im')  {
+        F.LOG("found im server: "+accountServer.prettyName);
+        return true;
+      }
+
+    return false;
+  },
+
+  observe: function(subject, topic, data) {
+    F.LOG("RECEIVED Messaging: "+topic+" subject="+subject+" data="+data);
+    switch (topic) {
+    case "account-removed":
+      this.cleanExcludedAccounts();
+      if (subject.QueryInterface(Ci.imIAccount) && !this.existsIMAccount())
+        firetray.InstantMessaging.shutdown();
+      break;
+    case "account-added":
+      if (subject.QueryInterface(Ci.imIAccount) && !firetray.InstantMessaging.initialized)
+        firetray.InstantMessaging.init();
+      break;
+    default:
+      F.WARN("unhandled topic: "+topic);
+    }
+  },
+
   /* removes removed accounts from excludedAccounts pref. NOTE: Can't be called
     at shutdown because MailServices.accounts no longer available */
   cleanExcludedAccounts: function() {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/firetray.git



More information about the Pkg-mozext-commits mailing list