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 / options.js < prev    next >
Text File  |  2007-10-05  |  9KB  |  211 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. ////////////////////////////////////////////////////////////////
  40. // Global
  41. ////////////////////////////////////////////////////////////////
  42.  
  43. var gOptions = new AppOptions();
  44.  
  45. var noObserve = false;
  46.  
  47. var nFprefObserver = 
  48. {
  49.     observe: function(subject, topic, data)
  50.     {
  51.         if (noObserve) return;
  52.         gOptions.load();
  53.         if (gOptions.addUrl != "") addFeedUrl();
  54.     } 
  55. }
  56.  
  57. ////////////////////////////////////////////////////////////////
  58. // Model
  59. ////////////////////////////////////////////////////////////////
  60.  
  61. function AppOptions()
  62. {
  63.   // Control wether we display an article as simple text or
  64.   // if we dislpay the actual webpage link.  Can be overrided
  65.   // by individual feed.
  66.   //
  67.   // 1 Text
  68.   // 2 Web page
  69.   // 3 Newspaper
  70.   this.globalStyle = 1;
  71.  
  72.   // Control if feeds should be automatically checked on startup
  73.   this.checkOnStartup = false;
  74.  
  75.     // Auto-refresh flag
  76.     this.autoRefresh = false;
  77.  
  78.     // Auto-refresh interval, minutes
  79.     this.autoRefreshInterval = 30;
  80.  
  81.     this.notifyUponNew = false;
  82.  
  83.     // Confirm deletions?
  84.     this.confirmDelete = true;
  85.  
  86. ////////////////////////////////////////////////////////////////
  87. // Methods
  88. ////////////////////////////////////////////////////////////////
  89.  
  90.     this.startup = function()
  91.     {
  92. //        var nsIPref = Components.classes["@mozilla.org/preferences;1"].getService(Components.interfaces.nsIPref);
  93. //        var branch = nsIPref.getBranch("newsfox.global.TMP.");
  94. //        branch.deleteBranch("");
  95.         this.renamePrefs();
  96.         // need to set the directory preference, so the observer doesn't catch 
  97.         // the setting later and process the addurl before models loaded
  98.         var file = getProfileDir();
  99.         this.load();
  100.         this.save(true);
  101.         this.addObserver();
  102.     }
  103.  
  104.     this.addObserver = function()
  105.     {
  106.         var nsIPrefBranch2 = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch2);
  107.         nsIPrefBranch2.addObserver("newsfox.", nFprefObserver, false);
  108.     }
  109.  
  110.     this.rmObserver = function()
  111.     {
  112.         var nsIPrefBranch2 = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch2);
  113.         nsIPrefBranch2.removeObserver("newsfox.", nFprefObserver);
  114.     }
  115.  
  116.   this.load = function()
  117.   {
  118.     this.globalStyle = getPref("global.style", "int", 1);
  119.     this.checkOnStartup = getPref("global.checkOnStartup", "bool", false);
  120.         this.autoRefresh = getPref("global.autoRefresh", "bool", false);
  121.         this.autoRefreshInterval = getPref("global.autoRefreshInterval", "int", 30);
  122.         this.notifyUponNew = getPref("global.notifyUponNew", "bool", false);
  123.         this.confirmDelete = getPref("global.confirmDelete", "bool", true);
  124.         this.dateStyle = getPref("global.dateStyle", "int", 2);
  125.         this.addUrl = getPref("internal.addUrl", "str", NEWSFOX_RSS);
  126.         this.favicons = getPref("advanced.favicons", "bool", getPref("browser.chrome.favicons","bool",true,true));
  127.         this.guessHomepage = getPref("advanced.guessHomepage", "bool", true);
  128.         this.refreshTimeout = 1000 * getPref("advanced.refreshTimeoutInSeconds", "int", 60);
  129.         this.horiz = getPref("advanced.horizontalPanes", "bool", false);
  130.         this.newtab = getPref("advanced.buttonOpensNewTab", "bool", false);
  131.         this.copyToClip = getPref("advanced.copyArtBodyToClipboard","bool", false);
  132.         this.selectAddedFeed = getPref("advanced.selectAddedFeed", "bool", true);
  133.         this.changedUnread = getPref("advanced.markChangedArtAsUnread", "bool", false);
  134.         this.dateNoneStrict = getPref("date.noneStrict", "bool", true);
  135.         this.dateInvalidStrict = getPref("date.invalidStrict", "bool", true);
  136.         this.dateFutureStrict = getPref("date.futureStrict", "bool", false);
  137.   }
  138.  
  139.   this.save = function(savenonUI)
  140.   {
  141.         noObserve = true;  // can't have observer while saving many options
  142.     setPref("global.style", "int", this.globalStyle);
  143.     setPref("global.checkOnStartup", "bool", this.checkOnStartup);
  144.         setPref("global.autoRefresh", "bool", this.autoRefresh);
  145.         setPref("global.autoRefreshInterval", "int", this.autoRefreshInterval);
  146.         setPref("global.notifyUponNew", "bool", this.notifyUponNew);
  147.         setPref("global.confirmDelete", "bool", this.confirmDelete);
  148.         setPref("global.dateStyle", "int", this.dateStyle);
  149.         setPref("internal.addUrl", "str", this.addUrl);
  150.         if (savenonUI)
  151.         {
  152.             setPref("advanced.favicons", "bool", this.favicons);
  153.             setPref("advanced.guessHomepage", "bool", this.guessHomepage);
  154.             setPref("advanced.refreshTimeoutInSeconds", "int", this.refreshTimeout/1000);
  155.             setPref("advanced.horizontalPanes", "bool", this.horiz);
  156.             setPref("advanced.buttonOpensNewTab", "bool", this.newtab);
  157.             setPref("advanced.copyArtBodyToClipboard", "bool", this.copyToClip);
  158.             setPref("advanced.selectAddedFeed", "bool", this.selectAddedFeed);
  159.             setPref("advanced.markChangedArtAsUnread", "bool", this.changedUnread);
  160.             setPref("date.noneStrict", "bool", this.dateNoneStrict);
  161.             setPref("date.invalidStrict", "bool", this.dateInvalidStrict);
  162.             setPref("date.futureStrict", "bool", this.dateFutureStrict);
  163.         }
  164.         noObserve = false;
  165.   }
  166.  
  167.     this.renamePrefs = function()
  168.     {
  169.         var done = getPref("internal.rename", "bool", false);
  170.         if (!done)
  171.         {
  172.             var prefs = Components.classes["@mozilla.org/preferences-service;1"]
  173.                 .getService(Components.interfaces.nsIPrefService)
  174.                 .getBranch("newsfox.");
  175.             setPref("internal.addUrl", "str", 
  176.                 getPref("global.addUrl", "str", NEWSFOX_RSS));
  177.             if (getPref("global.addUrl","str",null))
  178.                 prefs.clearUserPref("global.addUrl");
  179.             setPref("advanced.favicons", "bool", 
  180.                 getPref("global.favicons", "bool", 
  181.                     getPref("browser.chrome.favicons","bool",true,true)));
  182.             if (getPref("global.favicons","bool",null))
  183.                 prefs.clearUserPref("global.favicons");
  184.             setPref("advanced.guessHomepage", "bool", 
  185.                 getPref("global.guessHomepage", "bool", true));
  186.             if (getPref("global.guessHomepage","bool",null))
  187.                 prefs.clearUserPref("global.guessHomepage");
  188.             setPref("advanced.refreshTimeoutInSeconds", "int", 
  189.                 getPref("global.refreshTimeoutInSeconds", "int", 60));
  190.             if (getPref("global.refreshTimeoutInSeconds","int",null))
  191.                 prefs.clearUserPref("global.refreshTimeoutInSeconds");
  192.             setPref("advanced.horizontalPanes", "bool", 
  193.                 getPref("global.horizontalPanes", "bool", false));
  194.             if (getPref("global.horizontalPanes","bool",null))
  195.                 prefs.clearUserPref("global.horizontalPanes");
  196.             if (!gKMeleon)
  197.             {
  198.                 setPref("internal.doneButton", "bool", 
  199.                     getPref("global.doneButton", "bool", false));
  200.                 if (getPref("global.doneButton","bool",null))
  201.                     prefs.clearUserPref("global.doneButton");
  202.                 setPref("internal.doneAutoSubscribe", "bool", 
  203.                     getPref("global.doneAutoSubscribe", "bool", false));
  204.                 if (getPref("global.doneAutoSubscribe","bool",null))
  205.                     prefs.clearUserPref("global.doneAutoSubscribe");
  206.             }
  207.             setPref("internal.rename", "bool", true);
  208.         }
  209.     }
  210. }
  211.