home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 10218 / 10218.xpi / content / options.js < prev    next >
Encoding:
JavaScript  |  2009-12-08  |  7.1 KB  |  141 lines

  1. const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
  2. var VideoSurfEnhancerOptions = {
  3.     getParentWindow: function() {
  4.         var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);  
  5.         var enumerator = wm.getEnumerator("navigator:browser");  
  6.         while(enumerator.hasMoreElements()) {  
  7.             var win = enumerator.getNext();  
  8.             if(win.VideoSurfEnhancer) {
  9.                 return win;
  10.             }
  11.         }  
  12.         //return (opener) ? opener : (opener.opener) ? opener.opener : (window) ? window : parent;
  13.     },
  14.     handleEnabledCheckChange: function(e) {
  15.         var parent_window = VideoSurfEnhancerOptions.getParentWindow();
  16.         var vse = parent_window.VideoSurfEnhancer;
  17.         var cbox = e.target;
  18.         var slug = cbox.id.split("|")[1];
  19.                 
  20.         if(cbox.checked) {
  21.             document.getElementById("search_sites_summaries_enabled|" + slug).setAttribute("disabled", !vse.checkListPresence(vse.getPref("sites_summaries_supported"), slug));
  22.             document.getElementById("search_sites_related_enabled|"   + slug).setAttribute("disabled", !vse.checkListPresence(vse.getPref("sites_related_supported"), slug));
  23.         }
  24.         else {                        
  25.             document.getElementById("search_sites_summaries_enabled|" + slug).setAttribute("disabled", true); 
  26.             document.getElementById("search_sites_related_enabled|"   + slug).setAttribute("disabled", true);
  27.         }
  28.     },
  29.     createOptionRow: function(slug, name, enabled, summaries_enabled, related_enabled) {
  30.         var parent_window = VideoSurfEnhancerOptions.getParentWindow();
  31.         var vse = parent_window.VideoSurfEnhancer;
  32.  
  33.         var hbox = document.createElementNS(XUL_NS, "hbox"); // create a new XUL menuitem
  34.         hbox.setAttribute("class", 'pref-option-row');
  35.         
  36.         var label = document.createElementNS(XUL_NS, "label");
  37.         label.setAttribute("value", name);
  38.         hbox.appendChild(label);
  39.         
  40.         var cbox = document.createElementNS(XUL_NS, "checkbox");
  41.         cbox.addEventListener("CheckboxStateChange", VideoSurfEnhancerOptions.handleEnabledCheckChange, false);
  42.         cbox.setAttribute("id", "enabled_sites|"+slug);
  43.         cbox.setAttribute("class", "overall");
  44.         cbox.setAttribute("checked", enabled ? "true" : "false");
  45.         hbox.appendChild(cbox);
  46.  
  47.         var cbox = document.createElementNS(XUL_NS, "checkbox");
  48.         cbox.setAttribute("id", "search_sites_summaries_enabled|"+slug);
  49.         cbox.setAttribute("class", "summaries");
  50.  
  51.         var summary_supported = vse.checkListPresence(vse.getPref("sites_summaries_supported"), slug);        
  52.         cbox.setAttribute("checked", (summary_supported && summaries_enabled) ? "true" : "false");
  53.         if(!summary_supported) {
  54.             cbox.setAttribute("disabled", "true");
  55.             cbox.setAttribute("tooltiptext", "This feature is not yet available for this site");            
  56.         }
  57.         if(!enabled) { cbox.setAttribute("disabled", "true"); }        
  58.         hbox.appendChild(cbox);
  59.         
  60.         var cbox = document.createElementNS(XUL_NS, "checkbox");
  61.         cbox.setAttribute("id", "search_sites_related_enabled|"+slug);
  62.         cbox.setAttribute("class", "related");
  63.         
  64.         var related_supported = vse.checkListPresence(vse.getPref("sites_related_supported"), slug);
  65.         cbox.setAttribute("checked", (related_enabled && related_supported) ? "true" : "false");
  66.         if(!related_supported) {
  67.             cbox.setAttribute("disabled", "true");
  68.             cbox.setAttribute("tooltiptext", "This feature is not yet available for this site");
  69.         }
  70.         if(!enabled) { cbox.setAttribute("disabled", "true"); }
  71.         hbox.appendChild(cbox);
  72.         
  73.         return hbox;
  74.     },
  75.        initPreferenceWindow: function() {
  76.         var parent_window = VideoSurfEnhancerOptions.getParentWindow();
  77.         var vse = parent_window.VideoSurfEnhancer;
  78.  
  79.         var mainGroup = document.getElementById("videosurf_enhanced-main-options");
  80.         var enabled_sites = vse.getPref("enabled_sites");
  81.         var sites_summaries_enabled = vse.getPref("search_sites_summaries_enabled");
  82.         var sites_related_enabled = vse.getPref("search_sites_related_enabled");
  83.  
  84.         var sites = vse.getPref("sites_info").split(",");
  85.         sites = sites.sort(function(a, b) { return a.split("||")[1] > b.split("||")[1]; })
  86.  
  87.         var Il = vse.checkListPresence; //shorthand for the fn
  88.         for(i = 0 ; i < sites.length ; i++) {
  89.             var site = sites[i].split("||");
  90.             var slug = site[0];
  91.             var name = site[1];
  92.             var row = VideoSurfEnhancerOptions.createOptionRow(slug, name, Il(enabled_sites, slug), Il(sites_summaries_enabled, slug), Il(sites_related_enabled, slug));    
  93.             mainGroup.appendChild(row);
  94.         }
  95.  
  96.         document.getElementById("videosurf_enhanced_pref_safe_search_enabled").setAttribute("checked", vse.getPref("safe_search_enabled") ? "true" : "false");
  97.         document.getElementById("videosurf_enhanced_pref_links_on_youtube_stay_there").setAttribute("checked", vse.getPref("links_on_youtube_stay_there") ? "true" : "false");
  98.         document.getElementById("videosurf_enhanced_pref_exclude_youtube_results_on_youtube_search").setAttribute("checked", vse.getPref("exclude_youtube_results_on_youtube_search") ? "true" : "false");
  99.         document.getElementById("videosurf_enhanced_pref_expose_longer_twitter_urls").setAttribute("checked", vse.getPref("expose_longer_twitter_urls") ? "true" : "false");
  100.         document.getElementById("videosurf_enhanced_pref_external_site_related_videos").setAttribute("checked", vse.getPref("external_site_related_videos") ? "true" : "false");
  101.  
  102.         var sel = document.getElementById("videosurf_enhanced_pref_related_search_num_results");
  103.         var options = document.getElementsByTagName("menuitem", sel);
  104.         var currVal = vse.getPref("related_search_num_results");
  105.         sel.setAttribute("value", currVal);
  106.         sel.setAttribute("label", currVal);
  107.         for(i = 0 ; i < options.length ; i++) {
  108.             var option = options[i];
  109.             option.setAttribute("selected", (option.value == currVal) ? "true" : "false");
  110.         }    
  111.        },
  112.     doCancel: function(event) {
  113.         return true;
  114.     },
  115.     doOK: function(event) {
  116.         var parent_window = VideoSurfEnhancerOptions.getParentWindow();
  117.         var vse = parent_window.VideoSurfEnhancer;
  118.         var checkboxes = document.getElementsByTagName('checkbox');
  119.         for(var i = 0; i < checkboxes.length ; i++) {
  120.             var cbox = checkboxes[i];
  121.             if(cbox.id.indexOf("|") != -1) {
  122.                 var type = cbox.id.split("|")[0];
  123.                 var slug = cbox.id.split("|")[1];
  124.                 var curr_list = vse.getPref(type);
  125.                 if(cbox.checked !== vse.checkListPresence(curr_list, slug)) {  //If the current choice is different than the stored preference, toggle the stored preference
  126.                     vse.setPref(type, vse.toggleListPresence(curr_list, slug));
  127.                 }
  128.             }
  129.         }
  130.         vse.setPref("safe_search_enabled", document.getElementById("videosurf_enhanced_pref_safe_search_enabled").checked);
  131.         vse.setPref("links_on_youtube_stay_there", document.getElementById("videosurf_enhanced_pref_links_on_youtube_stay_there").checked);
  132.         vse.setPref("related_search_num_results", parseInt(document.getElementById("videosurf_enhanced_pref_related_search_num_results").getAttribute("value")));
  133.         vse.setPref("exclude_youtube_results_on_youtube_search", document.getElementById("videosurf_enhanced_pref_exclude_youtube_results_on_youtube_search").checked);
  134.         vse.setPref("expose_longer_twitter_urls", document.getElementById("videosurf_enhanced_pref_expose_longer_twitter_urls").checked);
  135.         vse.setPref("external_site_related_videos", document.getElementById("videosurf_enhanced_pref_external_site_related_videos").checked);
  136.         vse.setIconDisplay();
  137.         return true;
  138.     }
  139. } //VideoSurfEnhancerOptions
  140.  
  141.