[Pkg-mozext-commits] [firetray] 70/399: refactoring + remove EventListeners on quitting options
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 b6a54fb005e2cd028580679630472fbc7d02d69b
Author: foudfou <foudil.newbie+git at gmail.com>
Date: Sat Oct 29 15:16:07 2011 +0200
refactoring + remove EventListeners on quitting options
---
src/chrome/content/options.js | 65 +++++++++++++++++++++++++++-------------
src/chrome/content/options.xul | 3 +-
2 files changed, 46 insertions(+), 22 deletions(-)
diff --git a/src/chrome/content/options.js b/src/chrome/content/options.js
index 49baedd..63835a3 100644
--- a/src/chrome/content/options.js
+++ b/src/chrome/content/options.js
@@ -22,20 +22,36 @@ firetray.UIOptions = {
Cu.import("resource://firetray/FiretrayMessaging.jsm");
this.insertMailAccountsExcluded(this.accountBoxId);
this.populateMailAccountTypes();
+
+ this.populateTreeServerTypes();
+
} else {
this.hideElement("mail_tab");
}
- this.populateTreeServerTypes();
},
onQuit: function() {
- // FIXME: removeEventListener on cells !
+ let that = this;
+
+ // cleaning: removeEventListener on cells
+ // NOTE: not sure this is necessary on window close
+ 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(
+ function(c) {
+ LOG("i: "+i+", cell:"+c);
+ c.removeEventListener(
+ 'DOMAttrModified', that._userChangeValueTreeServerTypes, true);
+ });
+ }
},
hideElement: function(parentId) {
let targetNode = document.getElementById(parentId);
- targetNode.hidden = true; //!(appType & Firetray_MAIL);
+ targetNode.hidden = true;
},
populateMailAccountTypes: function() {
@@ -137,14 +153,24 @@ firetray.UIOptions = {
}
let prefStr = JSON.stringify(prefObj);
- // let prefStr = JSON.stringify(treeView.model);
LOG("prefStr"+prefStr);
/* return the new prefString to be stored by pref system */
return prefStr;
},
+ /**
+ * needed for triggering actual preference change and saving
+ */
+ _userChangeValueTreeServerTypes: function(event) {
+ if (event.attrName == "label") LOG("label changed!");
+ if (event.attrName == "value") LOG("value changed!");
+ document.getElementById("pane1")
+ .userChangedValue(document.getElementById("ui_tree_server_types"));
+ },
+
populateTreeServerTypes: function() {
+ let that = this;
let prefPane = document.getElementById("pane1");
let prefStr = firetray.Utils.prefService.getCharPref("server_types");
@@ -162,14 +188,9 @@ firetray.UIOptions = {
// server_type_excluded => checkbox
let cell = document.createElement('treecell');
cell.setAttribute('value',prefObj[serverTypeName].excluded);
- // FIXME: we need to removeEventListener() !!! (onQuit)
+ // CAUTION: removeEventListener in onQuit()
cell.addEventListener(
- 'DOMAttrModified', function(event) {
- if (event.attrName == "label") LOG("label changed!");
- if (event.attrName == "value") LOG("value changed!");
- document.getElementById("pane1")
- .userChangedValue(document.getElementById("ui_tree_server_types"));
- }, true);
+ 'DOMAttrModified', that._userChangeValueTreeServerTypes, true);
row.appendChild(cell);
// server_type_name
@@ -181,21 +202,14 @@ firetray.UIOptions = {
// server_type_order
cell = document.createElement('treecell');
cell.setAttribute('label',prefObj[serverTypeName].order);
- // FIXME: refactor !!
cell.addEventListener(
- 'DOMAttrModified', function(event) {
- if (event.attrName == "label") LOG("label changed!");
- if (event.attrName == "value") LOG("value changed!");
- document.getElementById("pane1")
- .userChangedValue(document.getElementById("ui_tree_server_types"));
- }, true);
+ 'DOMAttrModified', that._userChangeValueTreeServerTypes, true);
row.appendChild(cell);
target.appendChild(item);
}
let tree = document.getElementById("ui_tree_server_types");
- let that = this;
tree.addEventListener("keypress", that.onKeyPressTreeServerTypes, true);
},
@@ -211,7 +225,18 @@ firetray.UIOptions = {
if (!/\d/.test(charStr))
event.preventDefault();
}
- },
+ }
};
+
+window.addEventListener(
+ 'load', function (e) {
+ removeEventListener('load', arguments.callee, true);
+ firetray.UIOptions.onLoad(); },
+ false);
+window.addEventListener(
+ 'unload', function (e) {
+ removeEventListener('unload', arguments.callee, true);
+ firetray.UIOptions.onQuit(); },
+ false);
diff --git a/src/chrome/content/options.xul b/src/chrome/content/options.xul
index b96165a..63d7ac4 100644
--- a/src/chrome/content/options.xul
+++ b/src/chrome/content/options.xul
@@ -4,8 +4,7 @@
<!DOCTYPE prefwindow SYSTEM "chrome://firetray/locale/options.dtd">
<prefwindow id="firetray-preferences"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- title="&prefwindow.title;"
- onload="firetray.UIOptions.onLoad()">
+ title="&prefwindow.title;">
<script type="application/x-javascript" src="options.js" />
--
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