[Pkg-mozext-commits] [firetray] 77/399: options: finished interaction btw. mail server types and accounts
David Prévot
taffit at alioth.debian.org
Tue Oct 29 18:23:17 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 903f99f0062f96705afe7b9e9ef2296e72ee0924
Author: foudfou <foudil.newbie+git at gmail.com>
Date: Thu Nov 3 01:14:47 2011 +0100
options: finished interaction btw. mail server types and accounts
---
src/chrome/content/options.js | 76 ++++++++++++++++++++++++----------------
src/chrome/content/options.xul | 22 ++++++------
src/modules/commons.js | 55 ++++++++++++++++++++++++++++-
3 files changed, 110 insertions(+), 43 deletions(-)
diff --git a/src/chrome/content/options.js b/src/chrome/content/options.js
index f71bc69..c16187e 100644
--- a/src/chrome/content/options.js
+++ b/src/chrome/content/options.js
@@ -39,7 +39,9 @@ firetray.UIOptions = {
function(c) {
LOG("i: "+i+", cell:"+c);
c.removeEventListener(
- 'DOMAttrModified', that._userChangeValueTreeAccountsOrServerTypes, true);
+ 'DOMAttrModified', that._userChangeValueTreeServerTypes, true);
+ c.removeEventListener(
+ 'DOMAttrModified', that._userChangeValueTreeAccounts, true);
});
}
},
@@ -49,20 +51,16 @@ firetray.UIOptions = {
targetNode.hidden = true;
},
- _disableGroup: function(group, disableval) {
- try {
- for (let i=0; i< group.childNodes.length; i++)
- group.childNodes[i].disabled = disableval;
- } catch(e) {
- ERROR(e);
- }
- },
-
- _disableRow: function(row) {
+ _disableTreeRow: function(row, disable) {
try {
- let cells = row.childNodes; //.getElementsByTagName('treecell');
- for (let i=0; i< cells.length; i++)
- cells[i].setAttribute('properties', "disabled");
+ let cells = row.childNodes; // .getElementsByTagName('treecell');
+ LOG("CELLS: "+cells);
+ for (let i=0; i< cells.length; i++) {
+ if (disable === true)
+ cells[i].setAttribute('properties', "disabled");
+ else
+ cells[i].removeAttribute('properties');
+ }
} catch(e) {
ERROR(e);
}
@@ -71,13 +69,28 @@ firetray.UIOptions = {
/**
* needed for triggering actual preference change and saving
*/
- _userChangeValueTreeAccountsOrServerTypes: function(event) {
+ _userChangeValueTreeAccounts: function(event) {
if (event.attrName == "label") LOG("label changed!");
if (event.attrName == "value") LOG("value changed!");
document.getElementById("pane1")
.userChangedValue(document.getElementById("ui_tree_mail_accounts"));
},
+ _userChangeValueTreeServerTypes: function(event) {
+ let checkboxCell = event.originalTarget;
+ let tree = document.getElementById("ui_tree_mail_accounts");
+
+ let rows = firetray.Utils.XPath(
+ checkboxCell,
+ 'ancestor::xul:treeitem[1]/descendant::xul:treechildren//xul:treerow');
+ LOG("rows="+rows);
+ for (let i=0; i<rows.length; i++)
+ this._disableTreeRow(rows[i],
+ (checkboxCell.getAttribute("value") === "false"));
+
+ this._userChangeValueTreeAccounts(event);
+ },
+
/**
* NOTE: account exceptions for unread messages count are *stored* in
* preferences as excluded, but *shown* as "not included"
@@ -106,27 +119,27 @@ firetray.UIOptions = {
item.appendChild(row);
// account_or_server_type_name
- let cell = document.createElement('treecell');
- cell.setAttribute('label',serverTypeName);
- cell.setAttribute('editable',false);
- row.appendChild(cell);
+ let cellName = document.createElement('treecell');
+ cellName.setAttribute('label',serverTypeName);
+ cellName.setAttribute('editable',false);
+ row.appendChild(cellName);
// account_or_server_type_excluded => checkbox
- cell = document.createElement('treecell');
- cell.setAttribute('value',!serverTypes[serverTypeName].excluded);
- cell.addEventListener( // CAUTION: removeEventListener in onQuit()
+ let cellExcluded = document.createElement('treecell');
+ cellExcluded.setAttribute('value',!serverTypes[serverTypeName].excluded);
+ cellExcluded.addEventListener( // CAUTION: removeEventListener in onQuit()
'DOMAttrModified', function(e) {
- that._userChangeValueTreeAccountsOrServerTypes(e);
+ that._userChangeValueTreeServerTypes(e);
firetray.Messaging.updateUnreadMsgCount();
}, true);
- row.appendChild(cell);
+ row.appendChild(cellExcluded);
// account_or_server_type_order
- cell = document.createElement('treecell');
- cell.setAttribute('label',serverTypes[serverTypeName].order);
- cell.addEventListener( // CAUTION: removeEventListener in onQuit()
- 'DOMAttrModified', that._userChangeValueTreeAccountsOrServerTypes, true);
- row.appendChild(cell);
+ let cellOrder = document.createElement('treecell');
+ cellOrder.setAttribute('label',serverTypes[serverTypeName].order);
+ cellOrder.addEventListener( // CAUTION: removeEventListener in onQuit()
+ 'DOMAttrModified', that._userChangeValueTreeServerTypes, true);
+ row.appendChild(cellOrder);
target.appendChild(item);
@@ -153,7 +166,7 @@ firetray.UIOptions = {
cell.setAttribute('value',(accountsExcluded.indexOf(typeAccounts[i].key) < 0));
cell.addEventListener( // CAUTION: removeEventListener in onQuit()
'DOMAttrModified', function(e) {
- that._userChangeValueTreeAccountsOrServerTypes(e);
+ that._userChangeValueTreeAccounts(e);
firetray.Messaging.updateUnreadMsgCount();
}, true);
subRow.appendChild(cell);
@@ -163,7 +176,8 @@ firetray.UIOptions = {
cell.setAttribute('editable',false);
subRow.appendChild(cell);
- // this._disableRow(subRow);
+ this._disableTreeRow(subRow,
+ (cellExcluded.getAttribute("value") === "false"));
subItem.appendChild(subRow);
subChildren.appendChild(subItem);
}
diff --git a/src/chrome/content/options.xul b/src/chrome/content/options.xul
index 70e1176..c449538 100644
--- a/src/chrome/content/options.xul
+++ b/src/chrome/content/options.xul
@@ -20,24 +20,24 @@
<tabbox>
<tabs>
- <!-- <tab label="&general_options;"/> -->
- <!-- <tab label="&input_options;"/> -->
+ <tab label="&general_options;"/>
+ <tab label="&input_options;"/>
<tab label="&mail_options;" id="mail_tab" />
</tabs>
<tabpanels>
- <!-- <tabpanel id="general_tabpanel"> -->
+ <tabpanel id="general_tabpanel">
- <!-- <groupbox> -->
- <!-- <checkbox id="ui_close_hides" preference="pref_bool_close_hides" -->
- <!-- label="&bool_close_hides.label;" -->
- <!-- accesskey="&bool_close_hides.accesskey;"/> -->
- <!-- </groupbox> -->
+ <groupbox>
+ <checkbox id="ui_close_hides" preference="pref_bool_close_hides"
+ label="&bool_close_hides.label;"
+ accesskey="&bool_close_hides.accesskey;"/>
+ </groupbox>
- <!-- </tabpanel> -->
+ </tabpanel>
- <!-- <tabpanel id="input_tabpanel"> -->
- <!-- </tabpanel> -->
+ <tabpanel id="input_tabpanel">
+ </tabpanel>
<tabpanel id="mail_tabpanel">
diff --git a/src/modules/commons.js b/src/modules/commons.js
index ab4cb3b..2993d66 100644
--- a/src/modules/commons.js
+++ b/src/modules/commons.js
@@ -2,7 +2,8 @@
var EXPORTED_SYMBOLS =
[ "firetray", "Cc", "Ci", "Cu", "LOG", "WARN", "ERROR",
- "FIREFOX_ID", "THUNDERBIRD_ID", "SEAMONKEY_ID", "isArray" ];
+ "FIREFOX_ID", "THUNDERBIRD_ID", "SEAMONKEY_ID",
+ "isArray", "XPath" ];
const Cc = Components.classes;
const Ci = Components.interfaces;
@@ -112,6 +113,58 @@ firetray.Utils = {
}
}
LOG(str);
+ },
+
+ _nsResolver: function(prefix) {
+ var ns = {
+ xul: "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ };
+ return ns[prefix] || null;
+ },
+
+ // adapted from http://code.google.com/p/jslibs/wiki/InternalTipsAndTricks
+ XPath: function(ref, xpath) {
+ var doc = ref.ownerDocument || ref;
+
+ const XPathResult = Ci.nsIDOMXPathResult;
+ try {
+ let that = this;
+ var result = doc.evaluate(xpath, ref, that._nsResolver,
+ XPathResult.ANY_TYPE, null);
+ } catch (x) {
+ ERROR(x);
+ }
+ LOG("XPathResult="+result.resultType);
+
+ switch (result.resultType) {
+ case XPathResult.NUMBER_TYPE:
+ return result.numberValue;
+ case XPathResult.BOOLEAN_TYPE:
+ return result.booleanValue;
+ case XPathResult.STRING_TYPE:
+ return result.stringValue;
+ } // else XPathResult.UNORDERED_NODE_ITERATOR_TYPE
+
+ var list = [];
+ try {
+ for (let node = result.iterateNext(); node; node = result.iterateNext()) {
+ LOG("node="+node.nodeName);
+ switch (node.nodeType) {
+ case node.ATTRIBUTE_NODE:
+ list.push(node.value);
+ break;
+ case node.TEXT_NODE:
+ list.push(node.data);
+ break;
+ default:
+ list.push(node);
+ }
+ }
+ } catch (x) {
+ ERROR(x);
+ }
+
+ return list;
}
};
--
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