[Pkg-mozext-commits] [firetray] 71/399: refactoring + make server_type a preference

David Prévot taffit at alioth.debian.org
Tue Oct 29 18:23:16 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 aa9e13a36613cf097387c1e30c33e14a2385ab01
Author: foudfou <foudil.newbie+git at gmail.com>
Date:   Sat Oct 29 22:27:55 2011 +0200

    refactoring + make server_type a preference
---
 src/chrome/content/options.js     |   21 +++++++++------
 src/modules/FiretrayMessaging.jsm |   54 ++++++-------------------------------
 src/modules/commons.js            |   28 +++++++++++++++++++
 3 files changed, 49 insertions(+), 54 deletions(-)

diff --git a/src/chrome/content/options.js b/src/chrome/content/options.js
index 63835a3..7ab6d70 100644
--- a/src/chrome/content/options.js
+++ b/src/chrome/content/options.js
@@ -56,9 +56,10 @@ firetray.UIOptions = {
 
   populateMailAccountTypes: function() {
     let targetTree = document.getElementById("ui_mail_account_types");
+    let serverTypes = firetray.Utils.getObjPref('server_types');
 
-    for (t in firetray.Messaging.SERVER_TYPES) {
-      let accType = firetray.Messaging.SERVER_TYPES[t];
+    for (t in serverTypes) {
+      let accType = serverTypes[t];
 
       let item = document.createElement('treeitem');
       let row = document.createElement('treerow');
@@ -84,9 +85,10 @@ firetray.UIOptions = {
     // the DOM parent where we do appendChild
     let targetNode = document.getElementById(parentId);
 
+    let serverTypes = firetray.Utils.getObjPref('server_types');
     let accounts = new firetray.Messaging.Accounts(true);
     for (let accountServer in accounts) {
-      if (firetray.Messaging.SERVER_TYPES[accountServer.type].excluded)
+      if (serverTypes[accountServer.type].excluded)
         continue;
 
       let nodeAccount = document.createElement("checkbox");
@@ -94,7 +96,7 @@ firetray.UIOptions = {
       nodeAccount.setAttribute('id', accountServerKey);
       nodeAccount.setAttribute('label', accountServer.rootFolder.name);
       nodeAccount.setAttribute('checked',
-        (firetray.Messaging.getPrefAccountsExcluded().indexOf(accountServerKey) >= 0));
+        (firetray.Utils.getArrayPref('accounts_to_exclude').indexOf(accountServerKey) >= 0));
       let that = this;
       nodeAccount.addEventListener('command', function(e){
         that.updateMailAccountsExcluded(that.accountBoxId);}, true);
@@ -115,7 +117,7 @@ firetray.UIOptions = {
     }
 
     LOG("accounts_to_exclude:"+prefValue);
-    firetray.Messaging.setPrefAccountsExcluded(prefValue);
+    firetray.Utils.setArrayPref('accounts_to_exclude', prefValue);
 
     firetray.Messaging.updateUnreadMsgCount();
   },
@@ -130,8 +132,8 @@ firetray.UIOptions = {
   },
 
   /*
-   * Save SERVER_TYPES to the "server_types" preference.
-   * This is called by the pref's system when the GUI element is altered.
+   * Save the "server_types" preference. This is called by the pref's system
+   * when the GUI element is altered.
    */
   saveTreeServerTypes: function() {
     let tree = document.getElementById("ui_tree_server_types");
@@ -190,7 +192,10 @@ firetray.UIOptions = {
       cell.setAttribute('value',prefObj[serverTypeName].excluded);
       // CAUTION: removeEventListener in onQuit()
       cell.addEventListener(
-        'DOMAttrModified', that._userChangeValueTreeServerTypes, true);
+        'DOMAttrModified', function(e) {
+          that._userChangeValueTreeServerTypes(e);
+          firetray.Messaging.updateUnreadMsgCount();
+        }, true);
       row.appendChild(cell);
 
       // server_type_name
diff --git a/src/modules/FiretrayMessaging.jsm b/src/modules/FiretrayMessaging.jsm
index a6d3bc4..c1b1543 100644
--- a/src/modules/FiretrayMessaging.jsm
+++ b/src/modules/FiretrayMessaging.jsm
@@ -30,19 +30,6 @@ if ("undefined" == typeof(firetray)) {
 
 
 firetray.Messaging = {
-  // TODO: turn into pref.
-  /* NOTE: definition checks not implemented on purpose (performance mainly)
-   should be well defined in default prefs, and new types are unlikely to
-   appear soon. */
-  SERVER_TYPES: {
-    "pop3": { order: 1, excluded: false },
-    "imap": { order: 1, excluded: false },
-    "movemail": { order: 2, excluded: true },
-    "none": { order: 3, excluded: false },
-    "rss": { order: 4, excluded: true },
-    "nntp": { order: 5, excluded: true }
-  },
-
   _unreadMsgCount: 0,
 
   enable: function() {
@@ -86,45 +73,19 @@ firetray.Messaging = {
   },
 
   /**
-   * get/set accounts_to_exclude preference which is a stringified Array
-   * containing the keys of the accounts to exclude
-   */
-  getPrefAccountsExcluded: function() {
-    return JSON.parse(
-      firetray.Utils.prefService.getCharPref('accounts_to_exclude'));
-  },
-
-  setPrefAccountsExcluded: function(aArray) {
-    if (!isArray(aArray)) throw new TypeError();
-    LOG(aArray);
-    firetray.Utils.prefService.setCharPref('accounts_to_exclude',
-                                           JSON.stringify(aArray));
-  },
-
-
-// window.addEventListener('unload', function(e){filteredClipboard.saveList();}, false); // TRY DIFFERENT EVENTS
-// var filteredClipboard = {
-// prefix:"extensions.filteredclipboard.",
-// saveList: function (){
-//    var str = JSON.stringify(treeView.model);
-//    var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
-//    prefManager.setCharPref(this.prefix + "jsondata", str);
-// },
-
-
-  /**
    * computes total unread message count
    * TODO: check news accounts shouldn't be considered
    */
   updateUnreadMsgCount: function() {
     LOG("unreadMsgCount");
+    let serverTypes = firetray.Utils.getObjPref('server_types');
 
     this._unreadMsgCount = 0;   // reset
     try {
       let accounts = new this.Accounts();
       for (let accountServer in accounts) {
-        if ( (this.SERVER_TYPES[accountServer.type].excluded)
-          || (this.getPrefAccountsExcluded().indexOf(accountServer.key) >= 0) )
+        if ( (serverTypes[accountServer.type].excluded)
+          || (firetray.Utils.getArrayPref('accounts_to_exclude').indexOf(accountServer.key) >= 0) )
           continue;
 
         let rootFolder = accountServer.rootFolder; // nsIMsgFolder
@@ -191,13 +152,14 @@ firetray.Messaging.Accounts.prototype.__iterator__ = function() {
     accountServers[i] = accountServer;
   }
 
+  let serverTypes = firetray.Utils.getObjPref('server_types');
   if (this.sortByTypeAndName) {
     accountServers.sort(function(a,b) {
-      if (firetray.Messaging.SERVER_TYPES[a.type].order
-          < firetray.Messaging.SERVER_TYPES[b.type].order)
+      if (serverTypes[a.type].order
+          < serverTypes[b.type].order)
         return -1;
-      if (firetray.Messaging.SERVER_TYPES[a.type].order
-          > firetray.Messaging.SERVER_TYPES[b.type].order)
+      if (serverTypes[a.type].order
+          > serverTypes[b.type].order)
         return 1;
       if (a.prettyName < b.prettyName)
         return -1;
diff --git a/src/modules/commons.js b/src/modules/commons.js
index 074e021..f5288a3 100644
--- a/src/modules/commons.js
+++ b/src/modules/commons.js
@@ -38,6 +38,34 @@ firetray.Utils = {
   prefService: Services.prefs.getBranch("extensions.firetray."),
   strings: Services.strings.createBundle("chrome://firetray/locale/overlay.properties"),
 
+  getObjPref: function(prefStr) {
+    try {
+      var objPref = JSON.parse(
+        firetray.Utils.prefService.getCharPref(prefStr));
+    } catch (x) {
+      ERROR(x);
+    }
+    return objPref;
+  },
+  setObjPref: function(prefStr, obj) {
+    LOG(obj);
+    try {
+      firetray.Utils.prefService.setCharPref(prefStr, JSON.stringify(obj));
+    } catch (x) {
+      ERROR(x);
+    }
+  },
+
+  getArrayPref: function(prefStr) {
+    let arrayPref = this.getObjPref(prefStr);
+    if (!isArray(arrayPref)) throw new TypeError();
+    return arrayPref;
+  },
+  setArrayPref: function(prefStr, aArray) {
+    if (!isArray(aArray)) throw new TypeError();
+    this.setObjPref(prefStr, aArray);
+  },
+
   dumpObj: function(obj) {
     let str = "";
     for(i in obj) {

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