diff --git a/src/chrome/content/options.js b/src/chrome/content/options.js index 919cfe5..f71bc69 100644 --- a/src/chrome/content/options.js +++ b/src/chrome/content/options.js @@ -19,8 +19,7 @@ firetray.UIOptions = { onLoad: function() { if(firetray.Handler.inMailApp) { Cu.import("resource://firetray/FiretrayMessaging.jsm"); - this.populateTreeServerTypes(); - this.insertMailAccountsExcluded(this.accountBoxId); + this.populateTreeAccountsOrServerTypes(); } else { this.hideElement("mail_tab"); } @@ -35,12 +34,12 @@ firetray.UIOptions = { let items = document.getElementById("ui_mail_accounts").childNodes; for (let i=0; i < items.length; i++) { let cells = items[i].getElementsByTagName("treecell"); - // col 2 and 3: server_type_excluded, server_type_order + // col 2 and 3: account_or_server_type_excluded, account_or_server_type_order [cells[1], cells[2]].map( function(c) { LOG("i: "+i+", cell:"+c); c.removeEventListener( - 'DOMAttrModified', that._userChangeValueTreeServerTypes, true); + 'DOMAttrModified', that._userChangeValueTreeAccountsOrServerTypes, true); }); } }, @@ -59,10 +58,20 @@ firetray.UIOptions = { } }, + _disableRow: function(row) { + try { + let cells = row.childNodes; //.getElementsByTagName('treecell'); + for (let i=0; i< cells.length; i++) + cells[i].setAttribute('properties', "disabled"); + } catch(e) { + ERROR(e); + } + }, + /** * needed for triggering actual preference change and saving */ - _userChangeValueTreeServerTypes: function(event) { + _userChangeValueTreeAccountsOrServerTypes: function(event) { if (event.attrName == "label") LOG("label changed!"); if (event.attrName == "value") LOG("value changed!"); document.getElementById("pane1") @@ -73,7 +82,7 @@ firetray.UIOptions = { * NOTE: account exceptions for unread messages count are *stored* in * preferences as excluded, but *shown* as "not included" */ - populateTreeServerTypes: function() { + populateTreeAccountsOrServerTypes: function() { let that = this; let prefPane = document.getElementById("pane1"); @@ -96,27 +105,27 @@ firetray.UIOptions = { let row = document.createElement('treerow'); item.appendChild(row); - // server_type_name + // account_or_server_type_name let cell = document.createElement('treecell'); cell.setAttribute('label',serverTypeName); cell.setAttribute('editable',false); row.appendChild(cell); - // server_type_excluded => checkbox + // account_or_server_type_excluded => checkbox cell = document.createElement('treecell'); cell.setAttribute('value',!serverTypes[serverTypeName].excluded); cell.addEventListener( // CAUTION: removeEventListener in onQuit() 'DOMAttrModified', function(e) { - that._userChangeValueTreeServerTypes(e); + that._userChangeValueTreeAccountsOrServerTypes(e); firetray.Messaging.updateUnreadMsgCount(); }, true); row.appendChild(cell); - // server_type_order + // account_or_server_type_order cell = document.createElement('treecell'); cell.setAttribute('label',serverTypes[serverTypeName].order); cell.addEventListener( // CAUTION: removeEventListener in onQuit() - 'DOMAttrModified', that._userChangeValueTreeServerTypes, true); + 'DOMAttrModified', that._userChangeValueTreeAccountsOrServerTypes, true); row.appendChild(cell); target.appendChild(item); @@ -132,28 +141,29 @@ firetray.UIOptions = { let subItem = document.createElement('treeitem'); let subRow = document.createElement('treerow'); - // server_type_name + // account_or_server_type_name cell = document.createElement('treecell'); cell.setAttribute('id', typeAccounts[i].key); cell.setAttribute('label',typeAccounts[i].name); cell.setAttribute('editable',false); subRow.appendChild(cell); - // server_type_excluded => checkbox + // account_or_server_type_excluded => checkbox let cell = document.createElement('treecell'); cell.setAttribute('value',(accountsExcluded.indexOf(typeAccounts[i].key) < 0)); cell.addEventListener( // CAUTION: removeEventListener in onQuit() 'DOMAttrModified', function(e) { - that._userChangeValueTreeServerTypes(e); + that._userChangeValueTreeAccountsOrServerTypes(e); firetray.Messaging.updateUnreadMsgCount(); }, true); subRow.appendChild(cell); - // server_type_order - UNUSED (added for consistency) + // account_or_server_type_order - UNUSED (added for consistency) cell = document.createElement('treecell'); cell.setAttribute('editable',false); subRow.appendChild(cell); + // this._disableRow(subRow); subItem.appendChild(subRow); subChildren.appendChild(subItem); } @@ -162,37 +172,37 @@ firetray.UIOptions = { } let tree = document.getElementById("ui_tree_mail_accounts"); - tree.addEventListener("keypress", that.onKeyPressTreeServerTypes, true); + tree.addEventListener("keypress", that.onKeyPressTreeAccountsOrServerTypes, true); }, /* * Save the "mail_accounts" preference. This is called by the pref's system * when the GUI element is altered. */ - saveTreeServerTypes: function() { + saveTreeAccountsOrServerTypes: function() { let tree = document.getElementById("ui_tree_mail_accounts"); LOG("VIEW="+ tree.view + ", rowCount="+tree.view.rowCount); let prefObj = {"serverTypes":{}, "excludedAccounts":[]}; for (let i=0; i < tree.view.rowCount; i++) { - // TODO: rename server_type_* to account_or_server_type - let serverTypeName = tree.view.getCellText( - i, tree.columns.getNamedColumn("server_type_name")); - let serverTypeExcluded = ( + let accountOrServerTypeName = tree.view.getCellText( + i, tree.columns.getNamedColumn("account_or_server_type_name")); + let accountOrServerTypeExcluded = ( tree.view.getCellValue( - i, tree.columns.getNamedColumn("server_type_excluded")) + i, tree.columns.getNamedColumn("account_or_server_type_excluded")) !== 'true'); - let serverTypeOrder = parseInt(tree.view.getCellText( - i, tree.columns.getNamedColumn("server_type_order"))); + let accountOrServerTypeOrder = parseInt( + tree.view.getCellText( + i, tree.columns.getNamedColumn("account_or_server_type_order"))); - LOG("SUPER: "+serverTypeName+", "+serverTypeExcluded); + LOG("SUPER: "+accountOrServerTypeName+", "+accountOrServerTypeExcluded); if (tree.view.getLevel(i) === 0) { // serverTypes - prefObj["serverTypes"][serverTypeName] = - { order: serverTypeOrder, excluded: serverTypeExcluded }; + prefObj["serverTypes"][accountOrServerTypeName] = + { order: accountOrServerTypeOrder, excluded: accountOrServerTypeExcluded }; } else if (tree.view.getLevel(i) === 1) { // excludedAccounts - if (!serverTypeExcluded) + if (!accountOrServerTypeExcluded) continue; let rowNode = tree.view.getItemAtIndex(i).firstChild; // treerow let rowCells = rowNode.getElementsByTagName('treecell'); @@ -211,13 +221,13 @@ firetray.UIOptions = { return prefStr; }, - onKeyPressTreeServerTypes: function(event) { + onKeyPressTreeAccountsOrServerTypes: function(event) { LOG("TREE KEYPRESS: "+event.originalTarget); let tree = document.getElementById("ui_tree_mail_accounts"); let col = tree.editingColumn; // col.index // only int allowed - if (col == tree.columns.getNamedColumn("server_type_order")) { + if (col == tree.columns.getNamedColumn("account_or_server_type_order")) { let charCode = event.which || event.keyCode; let charStr = String.fromCharCode(charCode); if (!/\d/.test(charStr)) diff --git a/src/chrome/content/options.xul b/src/chrome/content/options.xul index eaff639..70e1176 100644 --- a/src/chrome/content/options.xul +++ b/src/chrome/content/options.xul @@ -49,20 +49,20 @@ seltype="single" editable="true" preference-editable="true" preference="pref_string_mail_accounts" - onsynctopreference="return firetray.UIOptions.saveTreeServerTypes();"> + onsynctopreference="return firetray.UIOptions.saveTreeAccountsOrServerTypes();"> - + - + - diff --git a/src/chrome/locale/en-US/options.dtd b/src/chrome/locale/en-US/options.dtd index 43f3183..a7ee99a 100644 --- a/src/chrome/locale/en-US/options.dtd +++ b/src/chrome/locale/en-US/options.dtd @@ -11,9 +11,9 @@ - - - - - - + + + + + + diff --git a/src/chrome/skin/overlay.css b/src/chrome/skin/overlay.css index e6a7426..e325411 100644 --- a/src/chrome/skin/overlay.css +++ b/src/chrome/skin/overlay.css @@ -1,4 +1,25 @@ +treechildren::-moz-tree-checkbox { + list-style-image: none; + -moz-box-align: center; +} + treechildren::-moz-tree-checkbox(checked) { /* css for checked cells */ - list-style-image: url("chrome://global/skin/checkbox/cbox-check.gif"); + list-style-image: url("chrome://firetray/skin/cbox-check.gif"); } + +treechildren::-moz-tree-checkbox(disabled) { + /* css for disabled checkboxes */ + list-style-image: url("chrome://firetray/skin/cbox-disabled.gif"); +} + +/* properties="disabled" */ +treechildren::-moz-tree-cell-text(disabled) { + color: GrayText; +} + +/* +treechildren::-moz-tree-cell(disabled) { + background-color: #eeeeee; +} +*/