home *** CD-ROM | disk | FTP | other *** search
/ PCGUIA 127 / PC Guia 127.iso / Software / Utils / Fasterfox / Bin / fasterfox-1.0.3-fx.xpi / chrome / fasterfox.jar / content / fasterfox / pref-fasterfox.js < prev    next >
Encoding:
JavaScript  |  2005-12-29  |  9.8 KB  |  269 lines

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  3.  *
  4.  * The contents of this file are subject to the Mozilla Public License Version
  5.  * 1.1 (the "License"); you may not use this file except in compliance with
  6.  * the License. You may obtain a copy of the License at
  7.  * http://www.mozilla.org/MPL/
  8.  *
  9.  * Software distributed under the License is distributed on an "AS IS" basis,
  10.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  11.  * for the specific language governing rights and limitations under the
  12.  * License.
  13.  *
  14.  * The Original Code is Fasterfox.
  15.  *
  16.  * The Initial Developer of the Original Code is
  17.  * Tony Gentilcore.
  18.  * Portions created by the Initial Developer are Copyright (C) 2005
  19.  * the Initial Developer. All Rights Reserved.
  20.  *
  21.  * Contributor(s):
  22.  *  See readme.txt
  23.  *
  24.  * Alternatively, the contents of this file may be used under the terms of
  25.  * either the GNU General Public License Version 2 or later (the "GPL"), or
  26.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  27.  * in which case the provisions of the GPL or the LGPL are applicable instead
  28.  * of those above. If you wish to allow use of your version of this file only
  29.  * under the terms of either the GPL or the LGPL, and not to allow others to
  30.  * use your version of this file under the terms of the MPL, indicate your
  31.  * decision by deleting the provisions above and replace them with the notice
  32.  * and other provisions required by the GPL or the LGPL. If you do not delete
  33.  * the provisions above, a recipient may use your version of this file under
  34.  * the terms of any one of the MPL, the GPL or the LGPL.
  35.  *
  36.  * ***** END LICENSE BLOCK ***** */
  37.  
  38. var PreferencesService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  39.  
  40. // create arrays of the form elements for use in the code below
  41. var _elementIDs =    ["ff_presets", "ff_enhancedPrefetching", "ff_pageLoadTimer", "ff_whitelist", 
  42.                     "ff_pipelining", "ff_pipeliningFirstRequest", "ff_proxyPipelining", "ff_cacheMemoryCapacity", 
  43.                     "ff_cacheDiskCapacity", "ff_maxConnections", "ff_maxConnectionsPerServer", "ff_maxPersistentConnectionsPerServer", 
  44.                     "ff_maxPersistentConnectionsPerProxy","ff_maxPipeliningRequests", "ff_initialPaintDelay", "ff_disablePluginPopups", 
  45.                     "ff_dnsCacheExpiration", "ff_dnsCacheEntries", "ff_uiSubmenuDelay", "ff_fastBack"];
  46.  
  47. // Presets: [Default, Courteous, Optimized, Turbo Charged]
  48. // ff_presets[n] corresponds to _elementIDs[n+4]
  49. var ff_presets =    new Array([false, false, true, true], [false, false, true, true], [false, false, true, true], [-1, 65536, 65536, 65536], 
  50.                     [50000, 76800, 76800, 76800], [24, 24, 40, 48], [8, 8, 16, 24], [2, 2, 6, 8], 
  51.                     [4, 4, 12, 16], [4, 4, 6, 8], [250, 0, 0, 0], [0, 2, 2, 2], 
  52.                     [60, 3600, 3600, 3600], [20, 512, 512, 512], [300, 50, 50, 50], [0, 5, 5, 5]);
  53.                 
  54. /*
  55.  * Runs when the preferences window loads
  56.  */
  57. function FF_windowOnLoad() {
  58.     
  59.     // load the preferences
  60.     FF_loadPrefs();
  61.         
  62.     // show or hide the tabs based on whether custom is selected
  63.     var mruTab = PreferencesService.getIntPref("extensions.fasterfox.lastTab", 0);
  64.     if(PreferencesService.getIntPref("extensions.fasterfox.preset", 3) == 4) {
  65.         FF_displayTabs(true);
  66.     } else {
  67.         FF_displayTabs(false);
  68.         mruTab = (mruTab>1) ? 1 : mruTab;
  69.     }
  70.     document.getElementById("ff_tabs").selectedIndex = mruTab;
  71. }
  72.  
  73. /*
  74.  * save all preferences 
  75.  */
  76. function FF_onOK() {
  77.     
  78.     // save the most recently viewed tab
  79.     try {
  80.         PreferencesService.setIntPref("extensions.fasterfox.lastTab", document.getElementById("ff_tabs").selectedIndex);
  81.     } catch(e){}
  82.     
  83.     // save all the prefs
  84.     FF_savePrefs();
  85. }
  86.  
  87. function FF_loadPrefs() {
  88.     var i, element, prefstring, preftype;
  89.     // Iterate through all elements and load their value from the prefs
  90.     for (i = 0; i < _elementIDs.length; i++) {
  91.         element = document.getElementById(_elementIDs[i]);
  92.           prefstring = element.getAttribute("prefstring");
  93.           preftype = element.getAttribute("preftype");
  94.           if (preftype == "bool") {
  95.               element.checked = PreferencesService.getBoolPref(prefstring);
  96.         } else if (preftype == "char") {
  97.               element.value = PreferencesService.getCharPref(prefstring);
  98.         } else if (preftype == "int" &&
  99.                    _elementIDs[i] != "ff_presets") {
  100.               element.value = PreferencesService.getIntPref(prefstring);
  101.         } else if (_elementIDs[i] == "ff_presets") {
  102.             element.selectedIndex = PreferencesService.getIntPref(prefstring);
  103.         }
  104.       }
  105.           
  106.     // set the custom form elements
  107.     FF_setSpecialElements();
  108. }
  109.  
  110. function FF_savePrefs() {
  111.     var i, element, prefstring, preftype;
  112.     // Iterate through all elements and load their value from the prefs
  113.     for (i = 0; i < _elementIDs.length; i++) {
  114.         element = document.getElementById(_elementIDs[i]);
  115.           prefstring = element.getAttribute("prefstring");
  116.           preftype = element.getAttribute("preftype");
  117.           if (preftype == "bool") {
  118.               PreferencesService.setBoolPref(prefstring, element.checked);
  119.         } else if (preftype == "char") {
  120.               PreferencesService.setCharPref(prefstring, element.value);
  121.         } else if (preftype == "int") {
  122.               PreferencesService.setIntPref(prefstring, element.value);
  123.         }
  124.       }
  125. }
  126.  
  127. function FF_setPreset(presetNumber) {
  128.     var i, element;
  129.     // Set the form elements to the proper preset
  130.     for (i = 0; i < ff_presets.length; i++) {
  131.         element = document.getElementById(_elementIDs[i+4]);
  132.         preftype = element.getAttribute("preftype");
  133.           if (preftype == "bool") {
  134.               element.checked = ff_presets[i][presetNumber];
  135.         } else if (preftype == "char" || 
  136.                    preftype == "int") {
  137.               element.value = ff_presets[i][presetNumber];
  138.         }
  139.       }
  140.       // set the custom form elements
  141.       FF_setSpecialElements();
  142. }
  143.  
  144. function FF_setSpecialElements() {
  145.  
  146.     // set the state of the disabled popups checkbox based on the int value of the pref
  147.     if(document.getElementById("ff_disablePluginPopups").value==2) {
  148.         document.getElementById("ff_disablePluginPopupsCheckbox").checked=true;
  149.     } else {
  150.         document.getElementById("ff_disablePluginPopupsCheckbox").checked=false;
  151.     }
  152.     
  153.     // populate the whitelist listbox
  154.     var listbox = document.getElementById("ff_whitelistbox");
  155.     while (listbox.getRowCount()>=1) listbox.removeItemAt(listbox.getIndexOfItem(0));
  156.     var whitelist = document.getElementById("ff_whitelist").value;
  157.     if(whitelist.length>0) {
  158.         whitelist = whitelist.split(",");
  159.         for(i=0; i<whitelist.length; i++) {
  160.             listbox.appendItem(whitelist[i], whitelist[i]);    
  161.         }
  162.     }
  163.     
  164.     // enable or disable the whitelist
  165.     FF_disableWhitelist(!document.getElementById("ff_enhancedPrefetching").checked);
  166.  
  167.     // set the state of the fastback checkbox based on the int value of the pref
  168.     if(document.getElementById("ff_fastBack").value>0) {
  169.         document.getElementById("ff_fastBackCheckbox").checked=true;
  170.     } else {
  171.         document.getElementById("ff_fastBackCheckbox").checked=false;
  172.     }
  173.     
  174.     // enable or disable the fastback textbox
  175.     FF_disableFastBack(!document.getElementById("ff_fastBackCheckbox").checked);
  176. }
  177.  
  178. function FF_onAdd() {
  179.     var i, listbox = document.getElementById("ff_whitelistbox");
  180.     var addMe = document.getElementById("ff_addtxt").value;
  181.  
  182.     if(addMe.length > 0) {            
  183.         for (i=0; i<=listbox.getRowCount(); i++) {
  184.             if(i>=listbox.getRowCount()) {
  185.                 listbox.appendItem(addMe, addMe);
  186.                 break;
  187.             } else if (addMe <= listbox.getItemAtIndex(i).value) {
  188.                 listbox.insertItemAt(i, addMe, addMe);    
  189.                 break;
  190.             }
  191.             
  192.         }
  193.         document.getElementById("ff_addtxt").value = "";
  194.     }
  195.     FF_updateWhitelist();
  196. }
  197.  
  198. function FF_onRemove() {
  199.     var removeMe = document.getElementById("ff_whitelistbox").selectedIndex;
  200.     if(removeMe >= 0) {
  201.         document.getElementById("ff_whitelistbox").removeItemAt(removeMe);
  202.         document.getElementById("ff_rmvbtn").disabled = "true";
  203.     }
  204.     FF_updateWhitelist();
  205. }
  206.  
  207. function FF_updateWhitelist() {
  208.     var listbox = document.getElementById("ff_whitelistbox");
  209.     var i, whitelist = "";
  210.     for (i=0; i<listbox.getRowCount(); i++) {
  211.         whitelist += listbox.getItemAtIndex(i).value + ",";
  212.     }
  213.     whitelist = whitelist.substring(0, whitelist.length-1);
  214.     document.getElementById("ff_whitelist").value = whitelist;
  215. }
  216.  
  217. /*
  218.  * Accepts a boolean value which determines whether
  219.  * all tabs should be shown or hidden
  220.  *
  221.  * true = display all tabs
  222.  * false = hide all tabs
  223.  */
  224. function FF_displayTabs(show) {
  225.     
  226.     // hide or show the tabs
  227.     document.getElementById("ff_Cache_tab").setAttribute("collapsed", !show);
  228.     document.getElementById("ff_Connection_tab").setAttribute("collapsed", !show);
  229.     document.getElementById("ff_Pipelining_tab").setAttribute("collapsed", !show);
  230.     document.getElementById("ff_Rendering_tab").setAttribute("collapsed", !show);
  231.     document.getElementById("ff_Popups_tab").setAttribute("collapsed", !show);
  232. }
  233.  
  234. /*
  235.  * Accepts a boolean value which determines whether
  236.  * the whitelist prefs should be shown
  237.  *
  238.  * true = disable prefs
  239.  * false = enable prefs
  240.  */
  241. function FF_disableWhitelist(disable) {
  242.     if(!disable) {
  243.         document.getElementById("ff_whitelistbox").disabled = "";
  244.         document.getElementById("ff_addtxt").disabled = "";
  245.         document.getElementById("ff_addbtn").disabled = "";
  246.         document.getElementById("ff_rmvbtn").disabled = "true";
  247.     } else {
  248.         document.getElementById("ff_whitelistbox").clearSelection();
  249.         document.getElementById("ff_whitelistbox").disabled = "true";
  250.         document.getElementById("ff_addtxt").disabled = "true";
  251.         document.getElementById("ff_addbtn").disabled = "true";
  252.         document.getElementById("ff_rmvbtn").disabled = "true";
  253.     }
  254. }
  255.  
  256. /*
  257.  * Accepts a boolean value which determines whether
  258.  * the fastback prefs should be shown
  259.  *
  260.  * true = disable prefs
  261.  * false = enable prefs
  262.  */
  263. function FF_disableFastBack(disable) {
  264.     if(!disable) {
  265.         document.getElementById("ff_fastBack").disabled = "";
  266.     } else {
  267.         document.getElementById("ff_fastBack").disabled = "true";
  268.     }
  269. }