diff options
Diffstat (limited to 'chrome/code/settings.xul.js')
-rw-r--r-- | chrome/code/settings.xul.js | 276 |
1 files changed, 0 insertions, 276 deletions
diff --git a/chrome/code/settings.xul.js b/chrome/code/settings.xul.js deleted file mode 100644 index bee7817..0000000 --- a/chrome/code/settings.xul.js +++ /dev/null @@ -1,276 +0,0 @@ -Components.utils.import("chrome://redirector/content/code/redirector.js"); -const Cc = Components.classes; -const Ci = Components.interfaces; -const nsLocalFile = Components.Constructor("@mozilla.org/file/local;1", "nsILocalFile", "initWithPath"); - -var Settings = { - - lstRedirects: null, - btnDelete : null, - btnEdit : null, - btnUp : null, - btnDown : null, - btnExport : null, - btnImport : null, - chkEnableRedirector : null, - chkShowStatusBarIcon : null, - chkShowContextMenu : null, - chkEnableDebugOutput : null, - prefs : null, - - onLoad : function() { - try { - //Get references to controls - this.lstRedirects = document.getElementById('lstRedirects'); - this.btnDelete = document.getElementById('btnDelete'); - this.btnEdit = document.getElementById('btnEdit'); - this.btnUp = document.getElementById('btnUp'); - this.btnDown = document.getElementById('btnDown'); - this.btnExport = document.getElementById('btnExport'); - this.btnImport = document.getElementById('btnImport'); - this.chkEnableRedirector = document.getElementById('chkEnableRedirector'); - this.chkShowStatusBarIcon = document.getElementById('chkShowStatusBarIcon'); - this.chkShowContextMenu = document.getElementById('chkShowContextMenu'); - this.chkEnableDebugOutput = document.getElementById('chkEnableDebugOutput'); - - this.prefs = new RedirectorPrefs(); - //Preferences - this.changedPrefs(this.prefs); - this.prefs.addListener(this); - - //Redirect list - this.lstRedirects.selType = 'single'; - this.template = document.getElementsByTagName('richlistitem')[0]; - this.lstRedirects.removeChild(this.template); - var list = []; - for (var i = 0; i < Redirector.redirectCount; i++) { - list.push(Redirector.getRedirectAt(i)); - } - this.addItemsToListBox(list); - this.selectionChange(); - - this.strings = document.getElementById('redirector-strings'); - this.strings.getPluralized = function(id, number) { - id += number == 1 ? 'Singular' : ''; - return this.getFormattedString(id, [number]); - }; - } catch(e) { - alert(e); - } - }, - - onUnload : function() { - this.prefs.dispose(); - }, - - changedPrefs : function(prefs) { - this.chkEnableRedirector.setAttribute('checked', prefs.enabled); - this.chkShowStatusBarIcon.setAttribute('checked', prefs.showStatusBarIcon); - this.chkShowContextMenu.setAttribute('checked', prefs.showContextMenu); - this.chkEnableDebugOutput.setAttribute('checked', prefs.debugEnabled); - }, - - addItemsToListBox : function(items) { - - var item, row, value, newItem; - - for each (item in items) { - newItem = this.template.cloneNode(true); - - newItem.getElementsByAttribute('name', 'dscrIncludePattern')[0].setAttribute('value', item.includePattern); - newItem.getElementsByAttribute('name', 'dscrExcludePattern')[0].setAttribute('value', item.excludePattern); - newItem.getElementsByAttribute('name', 'dscrRedirectTo')[0].setAttribute('value', item.redirectUrl); - var checkEnabled = newItem.getElementsByAttribute('name', 'chkEnabled')[0]; - checkEnabled.setAttribute('checked', !item.disabled); - newItem.setAttribute('class', item.disabled ? 'disabledRedirect' : ''); - newItem.item = item; - this.lstRedirects.appendChild(newItem); - newItem.setAttribute('selected', false) - } - - //Enable, disable functionality - this.lstRedirects.addEventListener('click', function(ev) { - if (ev.originalTarget && ev.originalTarget.tagName == 'checkbox') { - var parent = ev.originalTarget.parentNode; - while (!parent.item) { - parent = parent.parentNode; - } - parent.item.disabled = !ev.originalTarget.hasAttribute('checked'); - parent.setAttribute('class', parent.item.disabled ? 'disabledRedirect' : ''); - Redirector.save(); - } - },false); - }, - - moveUp : function(){ - if (this.lstRedirects.selectedIndex <= 0) { - return; - } - this.switchItems(this.lstRedirects.selectedIndex-1); - }, - - moveDown : function() { - if (this.lstRedirects.selectedIndex == Redirector.redirectCount-1) { - return; - } - this.switchItems(this.lstRedirects.selectedIndex); - }, - - switchItems : function(firstIndex) { - Redirector.switchItems(firstIndex, firstIndex+1); - var firstItem = this.lstRedirects.children[firstIndex]; - var secondItem = this.lstRedirects.children[firstIndex+1]; - this.lstRedirects.removeChild(secondItem); - this.lstRedirects.insertBefore(secondItem, firstItem); - this.selectionChange(); - }, - - setListItemValues : function(listItem, item){ - listItem.getElementsByAttribute('name', 'dscrIncludePattern')[0].setAttribute('value', item.includePattern); - listItem.getElementsByAttribute('name', 'dscrExcludePattern')[0].setAttribute('value', item.excludePattern); - listItem.getElementsByAttribute('name', 'dscrRedirectTo')[0].setAttribute('value', item.redirectUrl); - }, - - preferenceChange : function(event) { - this.prefs[event.originalTarget.getAttribute('preference')] = event.originalTarget.hasAttribute('checked'); - }, - - addRedirect : function() { - var args = { saved : false, redirect : new Redirect() }; - window.openDialog("chrome://redirector/content/ui/editRedirect.xul", "redirect", "chrome,dialog,modal,centerscreen", args); - if (args.saved) { - Redirector.addRedirect(args.redirect); - //Get it from redirector since it has processed it and it's no longer the same - //object as the one we added. - this.addItemsToListBox([Redirector.getRedirectAt(Redirector.redirectCount-1)]); - this.selectionChange(); - } - }, - - editRedirect : function() { - - if (this.lstRedirects.selectedIndex == -1) { - return; - } - //.selectedItem is still there after it has been removed, that's why we have the .selectedIndex check above as well - var listItem = this.lstRedirects.selectedItem; - if (!listItem) { - return; - } - var redirect = listItem.item; - var args = { saved: false, "redirect":redirect.clone()}; - window.openDialog("chrome://redirector/content/ui/editRedirect.xul", "redirect", "chrome,dialog,modal,centerscreen", args); - - if (args.saved) { - redirect.copyValues(args.redirect); - this.setListItemValues(listItem, redirect); - Redirector.save(); - this.selectionChange(); - } - }, - - deleteRedirect : function() { - var index = this.lstRedirects.selectedIndex; - - if (index == -1) { - return; - } - - var text = this.strings.getString("deleteConfirmationText"); - var title = this.strings.getString("deleteConfirmationTitle"); - var reallyDelete = Cc["@mozilla.org/embedcomp/prompt-service;1"].getService(Ci.nsIPromptService).confirm(null, title, text); - if (!reallyDelete) { - return; - } - - try { - this.lstRedirects.removeChild(this.lstRedirects.children[index]); - Redirector.deleteRedirectAt(index); - this.selectionChange(); - } catch(e) { - alert(e); - } - }, - - listKeypress : function(event) { - if (event.keyCode == 13) { //Enter button - this.editRedirect(); - } else if (event.keyCode == 46) { //Del button - this.deleteRedirect(); - } - }, - - selectionChange : function() { - if (!this.lstRedirects) { - return; - } - var index = this.lstRedirects.selectedIndex; - - this.btnEdit.disabled = (index == -1); - this.btnDelete.disabled = (index == -1); - this.btnUp.disabled = (index <= 0); - this.btnDown.disabled = (index == -1 || index >= Redirector.redirectCount-1); - this.btnExport.disabled = (Redirector.redirectCount== 0); - }, - - getFile : function(captionKey, mode) { - //Mostly borrowed from Adblock Plus - var picker = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); - picker.init(window, this.strings.getString(captionKey), mode); - picker.defaultExtension = ".rjson"; - var dir = this.prefs.defaultDir; - if (dir) { - picker.displayDirectory = new nsLocalFile(dir); - } - picker.appendFilter(this.strings.getString('redirectorFiles'), '*.rjson'); - - if (picker.show() == picker.returnCancel) { - return null; - } - this.prefs.defaultDir = picker.displayDirectory.path; - return picker.file; - }, - - export : function() { - var file = this.getFile('exportCaption', Ci.nsIFilePicker.modeSave); - if (file) { - Redirector.exportRedirects(file); - } - }, - - import : function() { - var file = this.getFile('importCaption', Ci.nsIFilePicker.modeOpen); - var result; - if (!file) { - return; - } - result = Redirector.importRedirects(file); - var msg, imported, existed; - imported = result & 0xFFFF; - existed = result >> 16; - - if (imported > 0) { - msg = this.strings.getPluralized('importedMessage', imported); - if (existed > 0) { - msg += ', ' + this.strings.getPluralized('existedMessage',existed); - } else { - msg += '.'; - } - } else if (imported == 0 && existed > 0) { - msg = this.strings.getPluralized('allExistedMessage', existed); - } else { //Both 0 - msg = this.strings.getString('importedNone'); - } - - var title = this.strings.getString("importResult"); - Cc["@mozilla.org/embedcomp/prompt-service;1"].getService(Ci.nsIPromptService).alert(null, title, msg); - - if (imported > 0) { - var newlist = []; - for (var i = Redirector.redirectCount-imported; i < Redirector.redirectCount; i++) { - newlist.push(Redirector.getRedirectAt(i)); - } - this.addItemsToListBox(newlist); - } - } -}; |