home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 September / PCWorld_2008-09_cd.bin / komunikace / kmeleon / K-Meleon1.1.3en-US.exe / chrome / newsfox.jar / content / newsfox / newsfox-overlay.js < prev    next >
Text File  |  2007-10-22  |  7KB  |  178 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 NewsFox.
  15.  *
  16.  * The Initial Developer of the Original Code is
  17.  * Ron Pruitt <wa84it@gmail.com>.
  18.  * Portions created by the Initial Developer are Copyright (C) 2006-2007
  19.  * the Initial Developer. All Rights Reserved.
  20.  *
  21.  * Contributor(s):
  22.  *
  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 LGPL or the GPL. 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. const AUTOSIZE = 30;
  39.  
  40. function initoverlay(event)
  41. {
  42.     window.removeEventListener('load', initoverlay, false);
  43.   doneButton = getPref("internal.doneButton", "bool", 
  44.         getPref("global.doneButton", "bool", false));
  45.   doneAuto = getPref("internal.doneAutoSubscribe", "bool", 
  46.         getPref("global.doneAutoSubscribe", "bool", false));
  47.   if (!doneButton) newsfoxdoButton(event);
  48.     if (!doneAuto) addAutoSubscribe();
  49. }
  50.  
  51. function addAutoSubscribe()
  52. {
  53.   setPref("internal.doneAutoSubscribe", "bool", true);
  54.     const NF_URI = "chrome://newsfox/content/addurl.xul?%s";
  55.     // following 'appropriate' method doesn't handle chrome://
  56.     // navigator.registerContentHandler("application/vnd.mozilla.maybe.feed", NF_URI, "Newsfox");
  57.     var feedUri = new Array();
  58.     for (var i=0; i<=AUTOSIZE; i++)
  59.     {
  60.         feedUri[i] = getPref("browser.contentHandlers.types." + i + ".uri", "str", "",true);
  61.         if (feedUri[i] == NF_URI) return;
  62.     }
  63.     var i=2;
  64.     var done = false;
  65.     while (!done && i <= AUTOSIZE)
  66.         if (feedUri[++i] == "chrome://browser-region/locale/region.properties") done = true;
  67.     setPref("browser.contentHandlers.types." + i + ".title", "str", "Newsfox",true);
  68.     setPref("browser.contentHandlers.types." + i + ".uri", "str", NF_URI,true);
  69.     setPref("browser.contentHandlers.types." + i + ".type", "str", "application/vnd.mozilla.maybe.feed",true);
  70. //    setPref("browser.contentHandlers.auto.application/vnd.mozilla.maybe.feed","str",NF_URI,true);
  71. //    setPref("browser.feeds.handlers.webservice","str",NF_URI,true);
  72. }
  73.  
  74. function newsfoxdoButton(event)
  75. {
  76.   const NF_MENUBAR = "toolbar-menubar";
  77.   const NF_NAVBAR = "nav-bar";
  78.   var mbar = document.getElementById(NF_MENUBAR);
  79.   var nbar = document.getElementById(NF_NAVBAR);
  80.   
  81.     var done = false;
  82.     if (nbar.collapsed == true && mbar && mbar.collapsed == true) done = true;
  83.     if ("currentSet" in nbar && nbar.currentSet.indexOf("newsfox-button") > -1) done = true;
  84.     if (mbar && mbar.currentSet.indexOf("newsfox-button") > -1) done = true;
  85.     if (done)
  86.     {
  87.     setPref("internal.doneButton", "bool", true);
  88.     return;
  89.   }
  90.  
  91.   var newSet = "";
  92.  
  93.   if (nbar.collapsed == false && "currentSet" in nbar && nbar.currentSet != "__empty") {
  94.     var homeButton = nbar.currentSet.indexOf("home-button");
  95.     if (homeButton > -1)
  96.       newSet = nbar.currentSet.substring(0,homeButton+11) + ",newsfox-button" + nbar.currentSet.substring(homeButton+11,nbar.currentSet.length);
  97.     else {
  98.       var urlbarContainer = nbar.currentSet.indexOf("urlbar-container");
  99.       if (urlbarContainer > -1)
  100.         newSet = nbar.currentSet.substring(0,urlbarContainer) + "newsfox-button," + nbar.currentSet.substring(urlbarContainer,nbar.currentSet.length);
  101.     }
  102.     if (newSet == "")
  103.       newSet = "newsfox-button," + nbar.currentSet;
  104.     nbar.setAttribute("currentset", newSet);
  105.     nbar.currentSet = newSet;
  106.     document.persist(NF_NAVBAR, "currentset");
  107.   }
  108.   else if (mbar) {  // put it on menubar
  109.     var homeButton = mbar.currentSet.indexOf("home-button");
  110.     if (homeButton > -1)
  111.       newSet = mbar.currentSet.substring(0,homeButton+11) + ",newsfox-button" + mbar.currentSet.substring(homeButton+11,mbar.currentSet.length);
  112.     else {
  113.       var menubarItems = mbar.currentSet.indexOf("menubar-items");
  114.       if (menubarItems > -1)
  115.         newSet = mbar.currentSet.substring(0,menubarItems+13) + ",newsfox-button" + mbar.currentSet.substring(menubarItems+13,mbar.currentSet.length);
  116.       else { 
  117.         if (mbar.currentSet != "__empty")
  118.           newSet = mbar.currentSet + ",newsfox-button";
  119.       }
  120.     }
  121.     if (newSet != "") {
  122.       mbar.setAttribute("currentset", newSet);
  123.       mbar.currentSet = newSet;
  124.       document.persist(NF_MENUBAR, "currentset");
  125.     }
  126.   }
  127.   try {BrowserToolboxCustomizeDone(true);} catch (e) {}
  128.   setPref("internal.doneButton", "bool", true);
  129. }
  130.  
  131. function openNewsfox(newTab)
  132. {
  133.     var nT = getPref("advanced.buttonOpensNewTab", "bool", false);
  134.     if (nT) newTab = !newTab;
  135.     var tabbrowser = window.gBrowser;
  136.   var tabs = tabbrowser.tabContainer.childNodes;
  137.   var tab;
  138.   for (var i = 0; i < tabs.length; ++i) {
  139.     tab = tabs[i];
  140.     var browser = tabbrowser.getBrowserForTab(tab);
  141.         if("chrome://newsfox/content/newsfox.xul" == browser.contentDocument.location)
  142.         {
  143.             tabbrowser.selectedTab = tab;
  144.             return;
  145.         }
  146.     }
  147.     // if we got to this point, it means that no NewsFox in current window. Try to search other windows if any.
  148.  
  149.     var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
  150.                    .getService(Components.interfaces.nsIWindowMediator);
  151.     var enumerator = wm.getEnumerator("navigator:browser");
  152.     while(enumerator.hasMoreElements())
  153.     {
  154.       var win = enumerator.getNext();
  155.       // |win| is [Object ChromeWindow] (just like |window|), do something with it
  156.         tabbrowser = win.gBrowser;
  157.       tabs = tabbrowser.tabContainer.childNodes;
  158.       for (var i = 0; i < tabs.length; ++i) {
  159.         tab = tabs[i];
  160.         var browser = tabbrowser.getBrowserForTab(tab);
  161.             if("chrome://newsfox/content/newsfox.xul" == browser.contentDocument.location)
  162.             {
  163.                 // some problems with raising, so we close it to re-open after in current window
  164.                 browser.loadURI("about:blank", null, null); // if there is only one tab it'll not be removed. So, we change the browser location to save feeds
  165.                 tabbrowser.removeTab(tab);
  166.             }
  167.       }
  168.     }
  169.     // Now we sure that no NewsFox is opened. Starting one.
  170.     if (newTab) {
  171.         getBrowser().selectedTab = getBrowser().addTab("chrome://newsfox/content/newsfox.xul")
  172.     } else {
  173.         getBrowser().loadURI("chrome://newsfox/content/newsfox.xul", null, null);
  174.     }
  175. }
  176.  
  177. window.addEventListener('load', initoverlay, false);
  178.