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 / globalfuncs.js < prev    next >
Text File  |  2007-10-25  |  6KB  |  186 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.  * Andy Frank <andy@andyfrank.com>.
  18.  * Portions created by the Initial Developer are Copyright (C) 2005-2007
  19.  * the Initial Developer. All Rights Reserved.
  20.  *
  21.  * Contributor(s):
  22.  *   Andrey Gromyko <andrey@gromyko.name>
  23.  *   Ron Pruitt <wa84it@gmail.com>
  24.  *
  25.  * Alternatively, the contents of this file may be used under the terms of
  26.  * either the GNU General Public License Version 2 or later (the "GPL"), or
  27.  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  28.  * in which case the provisions of the GPL or the LGPL are applicable instead
  29.  * of those above. If you wish to allow use of your version of this file only
  30.  * under the terms of either the GPL or the LGPL, and not to allow others to
  31.  * use your version of this file under the terms of the MPL, indicate your
  32.  * decision by deleting the provisions above and replace them with the notice
  33.  * and other provisions required by the LGPL or the GPL. If you do not delete
  34.  * the provisions above, a recipient may use your version of this file under
  35.  * the terms of any one of the MPL, the GPL or the LGPL.
  36.  *
  37.  * ***** END LICENSE BLOCK ***** */
  38.  
  39. const VERSION = "0.8.1";
  40. const NEWSFOX = "NewsFox";
  41. const NEWSFOX_RSS = "http://newsfox.mozdev.org/rss/rss.xml?startup";
  42. const NEWSFOX_DATE = "April 15, 2003 8:01 PM";
  43. const LONG_DATE_STYLE = 2;
  44. const ERROR_OK = "0";
  45. const ERROR_INVALID_FEED_URL = "1";
  46. const ERROR_UNKNOWN_FEED_FORMAT = "2";
  47. const FEED_VALIDATOR = "http://validator.w3.org/feed/check.cgi?url=";
  48. const NO_LINK = "";
  49. const ICON_OK = "chrome://newsfox/skin/images/feed.png";
  50.  
  51. var gKMeleon = false;
  52. var gFF3 = false;
  53. var gNewsfoxDirURL = null;
  54. var gMsgDone = false;
  55.  
  56. /**
  57.  * Get the newsfox directory 
  58.  */
  59.  
  60. function getProfileDir()
  61. {
  62.     var nsIPH = Components.classes["@mozilla.org/network/protocol;1?name=file"].createInstance(Components.interfaces.nsIFileProtocolHandler);
  63.     const NF_SB = document.getElementById("newsfox-string-bundle");
  64.     var profURL = getPref("global.directory", "str", "");
  65.     if (gNewsfoxDirURL != null)  // use it, but warn if preference changed
  66.     {
  67.         if (gNewsfoxDirURL != profURL && !gMsgDone)
  68.         {
  69.             alert(NF_SB.getString('inuse'));
  70.             gMsgDone = true;
  71.         }
  72.         return nsIPH.getFileFromURLSpec(gNewsfoxDirURL);
  73.     }
  74.     if (profURL != "")  // use it if exists, otherwise choose new
  75.     {
  76.         var file = nsIPH.getFileFromURLSpec(profURL);
  77.         if (file.exists())
  78.         {
  79.             gNewsfoxDirURL = profURL;
  80.             return nsIPH.getFileFromURLSpec(gNewsfoxDirURL);
  81.         }
  82.  
  83.         var msg = NF_SB.getString('confirm.newNewsfoxDir');
  84.         if (window.confirm(msg))  // pick new directory, else use default
  85.         {
  86.             var picker = nfDirPicked(file);
  87.             if (picker)
  88.             {
  89.                 gNewsfoxDirURL = nsIPH.getURLSpecFromFile(picker.file);
  90.                 setPref("global.directory", "str", gNewsfoxDirURL);
  91.                 return picker.file;
  92.             }
  93.         }
  94.     }
  95.  
  96.     // default to standard location
  97.   var file = Components.classes["@mozilla.org/file/directory_service;1"].
  98.     getService(Components.interfaces.nsIProperties).
  99.     get("ProfD", Components.interfaces.nsIFile);
  100.   file.append("newsfox");
  101.   if (!file.exists()) file.create(0x01, 0750);
  102.     gNewsfoxDirURL = nsIPH.getURLSpecFromFile(file);
  103.     setPref("global.directory", "str", gNewsfoxDirURL);
  104.     return file;
  105. }
  106.  
  107. function nfDirPicked(startFile)
  108. {
  109.     var picker = Components.classes["@mozilla.org/filepicker;1"].
  110.         createInstance(Components.interfaces.nsIFilePicker);
  111.     var file = startFile;
  112.     try
  113.     {
  114.         while (!file.exists() || file.isFile()) file = file.parent;
  115.         picker.displayDirectory = file;
  116.     }
  117.     catch(e){}
  118.     picker.init(window, "Choose Newsfox folder", picker.modeGetFolder);
  119.     if(picker.show() == picker.returnOK) return picker;
  120.     else return null;
  121. }
  122.  
  123. function getPref(name, type, dfault, notNewsfox)
  124. {
  125.     var base = "newsfox.";
  126.     if (notNewsfox) base = "";
  127.     var prefs = Components.classes["@mozilla.org/preferences-service;1"]
  128.         .getService(Components.interfaces.nsIPrefService)
  129.         .getBranch(base);
  130.  
  131.     if (prefs.getPrefType(name) == prefs.PREF_INVALID) return dfault;
  132.     switch (type)
  133.     {
  134.         case "str":
  135.             return prefs.getCharPref(name);
  136.             break;
  137.         case "int":
  138.             return prefs.getIntPref(name);
  139.             break;
  140.         case "bool":
  141.             return prefs.getBoolPref(name);
  142.             break;
  143.     }
  144.     return null;
  145. }
  146.  
  147. function setPref(name, type, value, notNewsfox)
  148. {
  149.     var base = "newsfox.";
  150.     if (notNewsfox) base = "";
  151.     var prefs = Components.classes["@mozilla.org/preferences-service;1"]
  152.         .getService(Components.interfaces.nsIPrefService)
  153.         .getBranch(base);
  154.  
  155.     switch (type)
  156.     {
  157.         case "str":
  158.             prefs.setCharPref(name,value);
  159.             break;
  160.         case "int":
  161.             prefs.setIntPref(name,value);
  162.             break;
  163.         case "bool":
  164.             prefs.setBoolPref(name,value);
  165.             break;
  166.     }
  167. }
  168.  
  169. String.prototype.trim = function()
  170. {
  171.     return this.replace(/^\s+|\s+$/g, '');
  172. }
  173.  
  174. function setTitle()
  175. {
  176.     newTitle(gFdGroup[0].getUnread());
  177. }
  178.  
  179. function newTitle(undone)
  180. {
  181.     var nF = NEWSFOX;
  182.     if (undone > 0) nF += " (" + undone + ")";
  183.     // prevent flicker, only redo if needed
  184.     if (document.title != nF) document.title = nF;
  185. }
  186.