[Pkg-mozext-commits] [firetray] 291/399: Merge branch 'cybso-favorites'

David Prévot taffit at alioth.debian.org
Tue Oct 29 18:24:01 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 1e4d51f64f9731f4717af2b68d1282a995234f91
Merge: ebe8ee3 934a67f
Author: foudfou <foudil.newbie+git at gmail.com>
Date:   Mon Sep 3 23:05:25 2012 +0200

    Merge branch 'cybso-favorites'
    
    Conflicts:
    	src/chrome/content/options.js
    	src/modules/FiretrayMessaging.jsm

 src/chrome/content/options.js       |  111 ++++++++++++++++++++---------
 src/chrome/content/options.xul      |    8 +++
 src/chrome/locale/en-US/options.dtd |    4 ++
 src/defaults/preferences/prefs.js   |    1 +
 src/modules/FiretrayHandler.jsm     |    1 +
 src/modules/FiretrayMessaging.jsm   |  132 ++++++++++++++++++++---------------
 6 files changed, 167 insertions(+), 90 deletions(-)

diff --cc src/chrome/content/options.js
index 4b9d518,6aa1e9a..a42835d
--- a/src/chrome/content/options.js
+++ b/src/chrome/content/options.js
@@@ -408,8 -406,8 +409,8 @@@ var firetrayUIOptions = 
  
        let subRows = firetray.Utils.XPath(
          checkboxCell,
-         'ancestor::xul:treeitem[1]/descendant::xul:treechildren//xul:treerow');
+         'ancestor::xul:treeitem[1]/child::xul:treechildren/xul:treeitem/xul:treerow');
 -      F.LOG("subRows="+subRows);
 +      log.debug("subRows="+subRows);
        for (let i=0, len=subRows.length; i<len; ++i) {
          firetrayUIOptions._disableTreeRow(
            subRows[i], (checkboxCell.getAttribute("value") === "false"));
@@@ -479,14 -478,14 +481,14 @@@
        cellOrder.setAttribute('label',serverTypes[serverTypeName].order);
        cellOrder.addEventListener( // CAUTION: removeEventListener in onQuit()
          'DOMAttrModified', that._userChangeValueTreeServerTypes, true);
-       row.appendChild(cellOrder);
+       typeRow.appendChild(cellOrder);
  
-       target.appendChild(item);
+       target.appendChild(typeItem);
  
        // add actual accounts as children
-       let subChildren = document.createElement('treechildren');
+       let accountChildren = document.createElement('treechildren');
        let typeAccounts = accountsByServerType[serverTypeName];
 -      F.LOG("type: "+serverTypeName+", Accounts: "+JSON.stringify(typeAccounts));
 +      log.debug("type: "+serverTypeName+", Accounts: "+JSON.stringify(typeAccounts));
        if (typeof(typeAccounts) == "undefined")
          continue;
  
@@@ -526,12 -529,51 +532,51 @@@
          // we must initialize sub-cells correctly to prevent prefsync at a
          // stage where the pref will be incomplete
          /* this._disableTreeRow(
-            subRow, (cellExcluded.getAttribute("value") === "false")); */
-         subItem.appendChild(subRow);
-         subChildren.appendChild(subItem);
+          accountRow, (cellExcluded.getAttribute("value") === "false")); */
+         accountItem.appendChild(accountRow);
+         accountChildren.appendChild(accountItem);
+ 
+         // add favorite folders
+         let folderChildren = document.createElement('treechildren');
+         let folderChildrenCount = 0;
+         let msgAccount = MailServices.accounts.getIncomingServer(account.key);
+         firetray.Messaging.applyToSubfolders(msgAccount.rootFolder, true, function(folder) {
+           if (!(folder.flags & Ci.nsMsgFolderFlags.Favorite)) return;
+ 
 -          F.LOG("adding folder favorite="+folder.prettyName);
++          log.debug("adding folder favorite="+folder.prettyName);
+           let folderItem = document.createElement('treeitem');
+           let folderRow = document.createElement('treerow');
+ 
+           // folder name
+           let folderCell = document.createElement('treecell');
+           folderCell.setAttribute('id', folder.name);
+           folderCell.setAttribute('label',folder.prettyName);
+           folderCell.setAttribute('editable',false);
+           folderCell.setAttribute('properties', "disabled");
+           folderRow.appendChild(folderCell);
+ 
+           // checkbox
+           folderCell = document.createElement('treecell');
+           folderCell.setAttribute('editable', "false");
+           folderCell.setAttribute('properties', "disabled");
+           folderRow.appendChild(folderCell);
+ 
+           // order - UNUSED
+           folderCell = document.createElement('treecell');
+           folderCell.setAttribute('editable', "false");
+           folderCell.setAttribute('properties', "disabled");
+           folderRow.appendChild(folderCell);
+ 
+           folderItem.appendChild(folderRow);
+           folderChildren.appendChild(folderItem);
+           ++folderChildrenCount;
+         });
+ 
+         if (folderChildrenCount)
+           accountItem.appendChild(folderChildren);
        }
-       item.appendChild(subChildren);
  
+       typeItem.appendChild(accountChildren);
      }
  
      let tree = document.getElementById("ui_tree_mail_accounts");
diff --cc src/modules/FiretrayMessaging.jsm
index 5fbc0b7,d065cba..6af8214
--- a/src/modules/FiretrayMessaging.jsm
+++ b/src/modules/FiretrayMessaging.jsm
@@@ -115,7 -114,8 +116,8 @@@ firetray.Messaging = 
      },
  
      OnItemPropertyFlagChanged: function(item, property, oldFlag, newFlag) {
 -      F.LOG("OnItemPropertyFlagChanged"+property+" for "+item+" was "+oldFlag+" became "+newFlag);
 +      log.debug("OnItemPropertyFlagChanged"+property+" for "+item+" was "+oldFlag+" became "+newFlag);
+       this.onMsgCountChange(item, property, oldFlag, newFlag);
      },
  
      OnItemEvent: function(item, event) {
@@@ -153,26 -157,24 +159,24 @@@
  
        let mailChangeTriggerFile = firetray.Utils.prefService.getCharPref("mail_change_trigger");
        if (mailChangeTriggerFile)
-         firetray.Messaging.runProcess(mailChangeTriggerFile, [msgCount.toString()]);
+         firetray.Messaging.runProcess(mailChangeTriggerFile, [this.newMsgCount.toString()]);
      };
  
-     let msgCount;
      let msgCountType = firetray.Utils.prefService.getIntPref("message_count_type");
 -    F.LOG("msgCountType="+msgCountType);
 +    log.debug("msgCountType="+msgCountType);
      if (msgCountType === FIRETRAY_MESSAGE_COUNT_TYPE_UNREAD) {
-       msgCount = this.countMessages(this.unreadMsgCountIterate);
+       this.countMessages("UnreadMessages");
      } else if (msgCountType === FIRETRAY_MESSAGE_COUNT_TYPE_NEW) {
-       msgCount = this.countMessages(this.newMsgCountIterate);
+       this.countMessages("HasNewMessages");
      } else
 -      F.ERROR('unknown message count type');
 +      log.error('unknown message count type');
  
-     if (msgCount !== this.currentMsgCount) {
+     if (this.newMsgCount !== this.currentMsgCount) {
        callback.call(this);
-       this.currentMsgCount = msgCount;
+       this.currentMsgCount = this.newMsgCount;
      } else {
 -      F.LOG("message count unchanged");
 +      log.debug("message count unchanged");
      }
- 
    },
  
    updateIcon: function(msgCount) {
@@@ -223,66 -225,80 +227,80 @@@
    /**
     * computes total unread or new message count.
     */
-   countMessages: function(folderCountFunction) {
+   countMessages: function(countType) {
      let mailAccounts = firetray.Utils.getObjPref('mail_accounts');
 -    F.LOG("mail accounts from pref: "+JSON.stringify(mailAccounts));
 +    log.debug("mail accounts from pref: "+JSON.stringify(mailAccounts));
      let serverTypes = mailAccounts["serverTypes"];
      let excludedAccounts = mailAccounts["excludedAccounts"];
-     let excludedFoldersFlags = firetray.Utils.prefService
-       .getIntPref("excluded_folders_flags");
  
-     let msgCount = 0;
-     try {
-       let accounts = new this.Accounts();
-       for (let accountServer in accounts) {
-         log.debug("is servertype excluded: "+serverTypes[accountServer.type].excluded+", account exclusion index: "+excludedAccounts.indexOf(accountServer.key));
-         if ( (serverTypes[accountServer.type].excluded)
-           || (excludedAccounts.indexOf(accountServer.key) >= 0) )
-           continue;
- 
-         let rootFolder = accountServer.rootFolder; // nsIMsgFolder
-         if (rootFolder.hasSubFolders) {
-           let subFolders = rootFolder.subFolders;
-           while(subFolders.hasMoreElements()) {
-             let folder = subFolders.getNext().QueryInterface(Ci.nsIMsgFolder);
-             if (!(folder.flags & excludedFoldersFlags)) {
-               msgCount = folderCountFunction(folder, msgCount);
-             }
-           }
-         }
+     this.newMsgCount = 0;
+     let accounts = new this.Accounts();
+     for (let accountServer in accounts) { // nsIMsgAccount
+       if (!serverTypes[accountServer.type]) {
 -        F.WARN("'"+accountServer.type+"' server type is not handled");
++        log.warn("'"+accountServer.type+"' server type is not handled");
+         continue;
        }
-     } catch (x) {
-       log.error(x);
-     }
-     log.debug("Total New="+msgCount);
-     return msgCount;
-   },
 -      F.LOG("is servertype excluded: "+serverTypes[accountServer.type].excluded+", account exclusion index: "+excludedAccounts.indexOf(accountServer.key));
++      log.debug("is servertype excluded: "+serverTypes[accountServer.type].excluded+", account exclusion index: "+excludedAccounts.indexOf(accountServer.key));
+       if ((serverTypes[accountServer.type].excluded) ||
+           (excludedAccounts.indexOf(accountServer.key) >= 0))
+         continue;
  
-   unreadMsgCountIterate: function(folder, accumulator) {
-     let folderCountFunctionName = 'getNumUnread';
-     let folderUnreadMsgCount = folder[folderCountFunctionName](
-       firetray.Utils.prefService.getBoolPref("folder_count_recursive"));
-     log.debug(folder.prettyName+" "+folderCountFunctionName+"="+folderUnreadMsgCount);
-     return accumulator + folderUnreadMsgCount;
+       this.applyToSubfolders(
+         accountServer.rootFolder,
+         firetray.Utils.prefService.getBoolPref("folder_count_recursive"),
+         function(folder){this.msgCountIterate(countType, folder);}
+       );
+ 
+     }
 -    F.LOG("Total "+countType+"="+this.newMsgCount);
++    log.debug("Total "+countType+"="+this.newMsgCount);
    },
  
-   newMsgCountIterate: function(folder, accumulator) {
-     if (folder.hasSubFolders && firetray.Utils.prefService.getBoolPref("folder_count_recursive")) {
-       log.debug("hasSubFolders");
+   /**
+    * @param folder: a nsIMsgFolder
+    * @param recursive: if we should look into nested folders
+    * @param fun: a function to apply to all folders
+    */
+   applyToSubfolders: function(folder, recursive, fun) {
+     if (folder.hasSubFolders) {
        let subFolders = folder.subFolders;
        while(subFolders.hasMoreElements()) {
          let subFolder = subFolders.getNext().QueryInterface(Ci.nsIMsgFolder);
-         accumulator = firetray.Messaging.newMsgCountIterate(subFolder, accumulator);
+         if (recursive && subFolder.hasSubFolders)
+           firetray.Messaging.applyToSubfoldersRecursive(subFolder, recursive, fun);
+         else
+           fun.call(this, subFolder);
        }
      }
-     accumulator = firetray.Messaging.addHasNewMessages(folder, accumulator);
-     return accumulator;
+   },
+   applyToSubfoldersRecursive: function(folder, recursive, fun) {
+     fun.call(this, folder);
+     this.applyToSubfolders(folder, recursive, fun);
+   },
+ 
+   /**
+    * @param type: one of 'UnreadMessages', 'HasNewMessages'
+    */
+   msgCountIterate: function(type, folder) {
+     let onlyFavorites = firetray.Utils.prefService.getBoolPref("only_favorite_folders");
+     let excludedFoldersFlags = firetray.Utils.prefService.getIntPref("excluded_folders_flags");
+     if (!(folder.flags & excludedFoldersFlags)) {
+       if (!onlyFavorites || folder.flags & Ci.nsMsgFolderFlags.Favorite) {
+         firetray.Messaging["add"+type](folder);
+       }
+     }
 -    F.LOG("newMsgCount="+this.newMsgCount);
++    log.debug("newMsgCount="+this.newMsgCount);
+   },
+ 
+   addUnreadMessages: function(folder) {
+     let folderUnreadMsgCount = folder['getNumUnread'](false);
 -    F.LOG("folder: "+folder.prettyName+" folderUnreadMsgCount="+folderUnreadMsgCount);
++    log.debug("folder: "+folder.prettyName+" folderUnreadMsgCount="+folderUnreadMsgCount);
+     this.newMsgCount += folderUnreadMsgCount;
    },
  
-   addHasNewMessages: function(folder, accumulator) {
-       let folderNewMsgCount = folder.hasNewMessages;
-       log.debug(folder.prettyName+" hasNewMessages="+folderNewMsgCount);
-       return accumulator || folderNewMsgCount;
+   addHasNewMessages: function(folder) {
+     let folderNewMsgCount = folder.hasNewMessages;
 -    F.LOG("folder: "+folder.prettyName+" hasNewMessages="+folderNewMsgCount);
++    log.debug("folder: "+folder.prettyName+" hasNewMessages="+folderNewMsgCount);
+     this.newMsgCount = this.newMsgCount || folderNewMsgCount;
    },
  
    runProcess: function(filepath, args) {

-- 
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