[Pkg-mozext-commits] [firetray] 74/399: * drop dumpObj() in favour of LOG(JSON.stringify()) * UIoptions: add accounts to server types tree. WORK IN PROGRESS

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 4d4c21b9f988d64283566084fb014ced18ebbf25
Author: foudfou <foudil.newbie+git at gmail.com>
Date:   Tue Nov 1 01:33:19 2011 +0100

    * drop dumpObj() in favour of LOG(JSON.stringify())
    * UIoptions: add accounts to server types tree. WORK IN PROGRESS
---
 TODO                              |    3 +-
 src/chrome/content/options.js     |  127 ++++++++++++++++++++++++-------------
 src/chrome/content/options.xul    |   14 ++--
 src/modules/FiretrayMessaging.jsm |   20 ++++++
 src/modules/commons.js            |   12 ----
 5 files changed, 112 insertions(+), 64 deletions(-)

diff --git a/TODO b/TODO
index e034510..9cfbd66 100644
--- a/TODO
+++ b/TODO
@@ -1,6 +1,7 @@
 =TODO=
 
-* gdk_visual_get_depth not provided before Gtk 2.22
+* make accounts_to_exclude a tree that is modified by server_types_to_exclude,
+  or include accounts into server_types' tree ?
 
 * add "enable biff notification" option. And if true:
 
diff --git a/src/chrome/content/options.js b/src/chrome/content/options.js
index 5b24432..f4cc3c3 100644
--- a/src/chrome/content/options.js
+++ b/src/chrome/content/options.js
@@ -36,8 +36,8 @@ firetray.UIOptions = {
     let items = document.getElementById("ui_server_types").childNodes;
     for (let i=0; i < items.length; i++) {
       let cells = items[i].getElementsByTagName("treecell");
-      // col 1 and 3: server_type_excluded, server_type_order
-      [cells[0], cells[2]].map(
+      // col 2 and 3: server_type_excluded, server_type_order
+      [cells[1], cells[2]].map(
         function(c) {
           LOG("i: "+i+", cell:"+c);
           c.removeEventListener(
@@ -101,36 +101,6 @@ firetray.UIOptions = {
     }
   },
 
-  /*
-   * 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");
-
-    LOG("VIEW="+ tree.view + ", rowCount="+tree.view.rowCount);
-    let prefObj = {};
-    for (let i=0; i < tree.view.rowCount; i++) {
-      let serverTypeExcluded = (
-        tree.view.getCellValue(
-          i, tree.columns.getNamedColumn("server_type_excluded"))
-          === 'true');
-      let serverTypeName = tree.view.getCellText(
-        i, tree.columns.getNamedColumn("server_type_name"));
-      let serverTypeOrder = parseInt(tree.view.getCellText(
-                                       i, tree.columns.getNamedColumn("server_type_order")));
-      LOG("SUPER: "+serverTypeName+", "+serverTypeExcluded);
-      prefObj[serverTypeName] =
-        { order: serverTypeOrder, excluded: serverTypeExcluded };
-    }
-
-    let prefStr = JSON.stringify(prefObj);
-    LOG("prefStr"+prefStr);
-
-    /* return the new prefString to be stored by pref system */
-    return prefStr;
-  },
-
   /**
    * needed for triggering actual preference change and saving
    */
@@ -147,19 +117,30 @@ firetray.UIOptions = {
 
     let prefStr = firetray.Utils.prefService.getCharPref("server_types");
     LOG("PREF="+prefStr);
-    let prefObj = JSON.parse(prefStr);
+    let serverTypes = JSON.parse(prefStr);
+    let accountsByServerType = firetray.Messaging.accountsByServerType();
+    LOG(JSON.stringify(accountsByServerType));
 
     let target = document.getElementById("ui_server_types");
-    for (serverTypeName in prefObj) {
-      let name = prefObj[serverTypeName];
+    for (let serverTypeName in serverTypes) {
+      let name = serverTypes[serverTypeName];
 
       let item = document.createElement('treeitem');
+      item.setAttribute("container",true);
+      item.setAttribute("open",true);
+
       let row = document.createElement('treerow');
       item.appendChild(row);
 
-      // server_type_excluded => checkbox
+      // server_type_name
       let cell = document.createElement('treecell');
-      cell.setAttribute('value',prefObj[serverTypeName].excluded);
+      cell.setAttribute('label',serverTypeName);
+      cell.setAttribute('editable',false);
+      row.appendChild(cell);
+
+      // server_type_excluded => checkbox
+      cell = document.createElement('treecell');
+      cell.setAttribute('value',serverTypes[serverTypeName].excluded);
       // CAUTION: removeEventListener in onQuit()
       cell.addEventListener(
         'DOMAttrModified', function(e) {
@@ -168,26 +149,84 @@ firetray.UIOptions = {
         }, true);
       row.appendChild(cell);
 
-      // server_type_name
-      cell = document.createElement('treecell');
-      cell.setAttribute('label',serverTypeName);
-      cell.setAttribute('editable',false);
-      row.appendChild(cell);
-
       // server_type_order
       cell = document.createElement('treecell');
-      cell.setAttribute('label',prefObj[serverTypeName].order);
+      cell.setAttribute('label',serverTypes[serverTypeName].order);
       cell.addEventListener(
         'DOMAttrModified', that._userChangeValueTreeServerTypes, true);
       row.appendChild(cell);
 
       target.appendChild(item);
+
+      // add actual accounts as children
+      let subChildren = document.createElement('treechildren');
+      let typeAccounts = accountsByServerType[serverTypeName];
+      LOG("type: "+serverTypeName+", Accounts: "+JSON.stringify(typeAccounts));
+      if (typeof(typeAccounts) == "undefined")
+        continue;
+      for (let i=0; i<typeAccounts.length; i++) {
+        let subItem = document.createElement('treeitem');
+        let subRow = document.createElement('treerow');
+
+        // server_type_name
+        cell = document.createElement('treecell');
+        cell.setAttribute('label',typeAccounts[i].name);
+        cell.setAttribute('editable',false);
+        subRow.appendChild(cell);
+
+        // server_type_excluded => checkbox
+        let cell = document.createElement('treecell');
+        subRow.appendChild(cell);
+
+        // server_type_order - UNUSED (added for consistency)
+        cell = document.createElement('treecell');
+        cell.setAttribute('editable',false);
+        subRow.appendChild(cell);
+
+        subItem.appendChild(subRow);
+        subChildren.appendChild(subItem);
+      }
+      item.appendChild(subChildren);
+
     }
 
     let tree = document.getElementById("ui_tree_server_types");
     tree.addEventListener("keypress", that.onKeyPressTreeServerTypes, true);
   },
 
+  /*
+   * 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");
+
+    LOG("VIEW="+ tree.view + ", rowCount="+tree.view.rowCount);
+    let prefObj = {};
+    for (let i=0; i < tree.view.rowCount; i++) {
+      if (tree.view.getLevel(i)>0)
+        continue;
+
+      let serverTypeExcluded = (
+        tree.view.getCellValue(
+          i, tree.columns.getNamedColumn("server_type_excluded"))
+          === 'true');
+      let serverTypeName = tree.view.getCellText(
+        i, tree.columns.getNamedColumn("server_type_name"));
+      let serverTypeOrder = parseInt(tree.view.getCellText(
+                                       i, tree.columns.getNamedColumn("server_type_order")));
+      LOG("SUPER: "+serverTypeName+", "+serverTypeExcluded);
+      prefObj[serverTypeName] =
+        { order: serverTypeOrder, excluded: serverTypeExcluded };
+    }
+
+    let prefStr = JSON.stringify(prefObj);
+    LOG("prefStr"+prefStr);
+
+    /* return the new prefString to be stored by pref system */
+    return prefStr;
+  },
+
   onKeyPressTreeServerTypes: function(event) {
     LOG("TREE KEYPRESS: "+event.originalTarget);
     let tree = document.getElementById("ui_tree_server_types");
diff --git a/src/chrome/content/options.xul b/src/chrome/content/options.xul
index cc94dab..368d75c 100644
--- a/src/chrome/content/options.xul
+++ b/src/chrome/content/options.xul
@@ -41,7 +41,7 @@
 
         <tabpanel id="mail_tabpanel">
 
-          <groupbox>
+          <groupbox flex="1">
             <caption label="&unread_count_account_exceptions;" />
 
             <label value="&mail_account_types_exclude;" />
@@ -51,14 +51,14 @@
                   preference="pref_string_server_types"
                   onsynctopreference="return firetray.UIOptions.saveTreeServerTypes();">
               <treecols>
-                <treecol id="server_type_excluded" type="checkbox" editable="true"
-                         label="&server_type_excluded;" primary="true" flex="1" persist="width"
-                         tooltiptext="&server_type_excluded_tooltip;"/>
-                <splitter class="tree-splitter" resizeafter="grow"/>
-                <treecol id="server_type_name" editable="false" flex="1"
+                <treecol id="server_type_name" editable="false" flex="2"
                          persist="width" primary="true" label="&server_type_name;"
                          tooltiptext="&server_type_name_tooltip;"/>
                 <splitter class="tree-splitter" resizeafter="grow"/>
+                <treecol id="server_type_excluded" type="checkbox" editable="true"
+                         label="&server_type_excluded;" flex="1" persist="width"
+                         tooltiptext="&server_type_excluded_tooltip;"/>
+                <splitter class="tree-splitter" resizeafter="grow"/>
                 <treecol id="server_type_order" editable="true"
                          persist="width"
                          flex="1" hidden= "true" label="&server_type_order;"
@@ -75,7 +75,7 @@
                  functions, called at the bottom of this file -->
 
           </groupbox>
-          
+
         </tabpanel>
         
       </tabpanels>
diff --git a/src/modules/FiretrayMessaging.jsm b/src/modules/FiretrayMessaging.jsm
index c1b1543..114aad7 100644
--- a/src/modules/FiretrayMessaging.jsm
+++ b/src/modules/FiretrayMessaging.jsm
@@ -174,3 +174,23 @@ firetray.Messaging.Accounts.prototype.__iterator__ = function() {
     yield accountServers[i];
   }
 };
+
+/**
+ * return accounts grouped by server_types.
+ *
+ * ex: { movemail: {"server1", "server2"}, imap: {"server3"} }
+ */
+firetray.Messaging.accountsByServerType = function() {
+  let accountsByServerType = {};
+  let accounts = new firetray.Messaging.Accounts(false);
+  for (let accountServer in accounts) {
+    let accountServerKey = accountServer.key.toString();
+    let accountServerName = accountServer.prettyName;
+    let accountServerType = accountServer.type;
+    if (typeof(accountsByServerType[accountServerType]) == "undefined")
+      accountsByServerType[accountServerType] = [];
+    accountsByServerType[accountServerType].push(
+      { key: accountServerKey, name: accountServerName });
+  }
+  return accountsByServerType;
+};
diff --git a/src/modules/commons.js b/src/modules/commons.js
index f5288a3..c27d080 100644
--- a/src/modules/commons.js
+++ b/src/modules/commons.js
@@ -66,18 +66,6 @@ firetray.Utils = {
     this.setObjPref(prefStr, aArray);
   },
 
-  dumpObj: function(obj) {
-    let str = "";
-    for(i in obj) {
-      try {
-        str += "obj["+i+"]: " + obj[i] + "\n";
-      } catch(e) {
-        str += "obj["+i+"]: Unavailable\n";
-      }
-    }
-    LOG(str);
-  },
-
   QueryInterfaces: function(obj) {
     for each (i in Components.interfaces) {
       try {

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