home *** CD-ROM | disk | FTP | other *** search
- /* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Simple Timer.
- *
- * The Initial Developer of the Original Code is
- * George Bradt.
- *
- * Portions created by the Initial Developer are Copyright (C) 2009
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
- var SimpleTimerOptions = {
- // Show or hide audio files groupbox, 24 hr checkbox.
- // Enable Browse button if Custom audio file selected.
- // Init textboxes with file paths.
-
- onLoadOptions: function() {
- var strbundle = document.getElementById("simtim-strings");
-
- try {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"].
- getService(Components.interfaces.nsIPrefService).
- getBranch("extensions.simpletimer@grbradt.org.");
-
- if ( prefs.prefHasUserValue("userWavPath") ) {
- document.getElementById("simtim-userWavPath").value =
- prefs.getComplexValue("userWavPath", Components.interfaces.nsILocalFile).path;
- }
- else {
- document.getElementById("simtim-userWavPath").value = "";
- }
-
- if ( prefs.prefHasUserValue("eventLogPath") ) {
- document.getElementById("simtim-eventLogPath").value =
- prefs.getComplexValue("eventLogPath", Components.interfaces.nsILocalFile).path;
- }
- else {
- document.getElementById("simtim-eventLogPath").value = "";
- }
- }
- catch(e) {
- alert(strbundle.getString("alert.error.get.prefs") +
- "\n" + e.message);
- }
-
- // Check if user on 12 or 24 hr clock
- var time = new Date().toLocaleTimeString().split(" ");
-
- document.getElementById("simtim-cboxClock24Hr").hidden =
- ( time.length > 1 ) ? false : true;
- this.onAudioNotifyClick();
-
- if ( document.getElementById("simtim-cboxDialogNotify").checked ) {
- document.getElementById("simtim-tboxRepeatAudio").disabled = false;
- document.getElementById("simtim-tboxRepeatMax").disabled = false;
- }
-
- if ( document.getElementById("simtim-radgrpClockType").selectedIndex === 0 ) {
- document.getElementById("simtim-cboxShowSecs").disabled = false;
- document.getElementById("simtim-cboxClock24Hr").disabled = false;
- }
- else {
- document.getElementById("simtim-cboxShowSecs").disabled = true;
- document.getElementById("simtim-cboxClock24Hr").disabled = true;
- }
-
- if ( document.getElementById("simtim-radgrpAudioFile").selectedIndex === 2 ) {
- document.getElementById("simtim-btnBrowseWav").disabled = false;
- }
-
- if ( document.getElementById("simtim-cboxEventLogging").checked ) {
- document.getElementById("simtim-btnBrowseLogPath").disabled = false;
- document.getElementById("simtim-tboxDeleteLogEntries").disabled = false;
- document.getElementById("simtim-btnResetDefault").disabled = false;
- }
- else {
- document.getElementById("simtim-btnBrowseLogPath").disabled = true;
- document.getElementById("simtim-tboxDeleteLogEntries").disabled = true;
- document.getElementById("simtim-btnResetDefault").disabled = true;
- }
-
- this.setDateFormatLabels();
- },
-
- // Set the menuitem labels for the date format menulist.
-
- setDateFormatLabels: function() {
- var date = new Date();
- var numDate = date.getDate();
-
- document.getElementById("simtim-mitemDate1").label = date.toLocaleFormat("%a");
- document.getElementById("simtim-mitemDate2").label = date.toLocaleFormat("%a %b %d");
- document.getElementById("simtim-mitemDate3").label = date.toLocaleFormat("%a %b %d, %Y");
- document.getElementById("simtim-mitemDate4").label = date.toLocaleFormat("%a %m/%d/%y");
- document.getElementById("simtim-mitemDate5").label = date.toLocaleFormat("%a %m/%d/%Y");
- document.getElementById("simtim-mitemDate6").label = date.toLocaleFormat("%a %d/%m/%y");
- document.getElementById("simtim-mitemDate7").label = date.toLocaleFormat("%a %d/%m/%Y");
- document.getElementById("simtim-mitemDate8").label = date.toLocaleFormat("%a %d");
-
- // Bug 459844 - strftime doesn't support "%e" (%d without leading zero) on Windows.
- document.getElementById("simtim-mitemDate9").label = date.toLocaleFormat("%a") + " " +
- numDate + SimpleTimer.getOrdinalChars(numDate);
-
- },
-
- // Show or hide audio files groupbox.
-
- onAudioNotifyClick: function() {
- document.getElementById("simtim-gboxAudioFiles").hidden =
- !document.getElementById("simtim-cboxAudioNotify").checked;
- this.onDialogNotifyClick();
- },
-
- // Enable or disable audio repeat, max textboxes.
-
- onDialogNotifyClick: function() {
- if ( document.getElementById("simtim-cboxDialogNotify").checked &&
- document.getElementById("simtim-cboxAudioNotify").checked ) {
- document.getElementById("simtim-tboxRepeatAudio").disabled = false;
- document.getElementById("simtim-tboxRepeatMax").disabled = false;
- }
- else {
- document.getElementById("simtim-tboxRepeatAudio").disabled = true;
- document.getElementById("simtim-tboxRepeatMax").disabled = true;
- }
- },
-
- // Enable or disable custom browsing on radio clicking.
-
- onAudioFileRadioClick: function() {
- // Index of 2 == custom.
- if ( document.getElementById("simtim-radgrpAudioFile").selectedIndex === 2 ) {
- document.getElementById("simtim-btnBrowseWav").disabled = false;
- }
- else {
- document.getElementById("simtim-btnBrowseWav").disabled = true;
- }
- },
-
- // Display the file picker dialog and update the
- // textbox with the path of the file selected.
-
- onBrowseClick: function() {
- var strbundle = document.getElementById("simtim-strings");
- var prefs = Components.classes["@mozilla.org/preferences-service;1"].
- getService(Components.interfaces.nsIPrefService).
- getBranch("extensions.simpletimer@grbradt.org.");
- var filePicker = Components.classes["@mozilla.org/filepicker;1"].
- createInstance(Components.interfaces.nsIFilePicker);
-
- filePicker.init(window,
- strbundle.getString("title.audio.filepicker"),
- filePicker.modeOpen);
-
- try {
- // Calling from add-on manager was a problem, so do this again.
- // Check if this browser supports audio object (>= ff 3.5).
- var audioObject = new Audio();
- filePicker.appendFilter("*.ogg *.wav", "*.ogg; *.wav");
- }
- catch(e) {
- filePicker.appendFilter("*.wav", "*.wav");
- }
-
- // Use the nsILocalFile, not path, when possible, to update the pref.
- if ( filePicker.show() === filePicker.returnOK ) {
- document.getElementById("simtim-userWavPath").value = filePicker.file.path;
- prefs.setComplexValue("userWavPath", Components.interfaces.nsILocalFile, filePicker.file);
- }
- },
-
- // Enable or disable event log path browsing.
-
- onEventLoggingClick: function() {
- if ( document.getElementById("simtim-cboxEventLogging").checked ) {
- document.getElementById("simtim-btnBrowseLogPath").disabled = false;
- document.getElementById("simtim-tboxDeleteLogEntries").disabled = false;
- document.getElementById("simtim-btnResetDefault").disabled = false;
- }
- else {
- document.getElementById("simtim-btnBrowseLogPath").disabled = true;
- document.getElementById("simtim-tboxDeleteLogEntries").disabled = true;
- document.getElementById("simtim-btnResetDefault").disabled = true;
- }
- },
-
- // Display the file picker dialog and update the
- // textbox with the path of the log file.
-
- onBrowseLogClick: function() {
- var strbundle = document.getElementById("simtim-strings");
- var prefs = Components.classes["@mozilla.org/preferences-service;1"].
- getService(Components.interfaces.nsIPrefService).
- getBranch("extensions.simpletimer@grbradt.org.");
- var file = Components.classes["@mozilla.org/file/local;1"].
- createInstance(Components.interfaces.nsILocalFile);
- var filePicker = Components.classes["@mozilla.org/filepicker;1"].
- createInstance(Components.interfaces.nsIFilePicker);
-
- filePicker.init(window,
- strbundle.getString("title.log.filepicker"),
- filePicker.modeGetFolder);
-
- if ( filePicker.show() === filePicker.returnOK ) {
- // The filepicker file attribute is a readonly nsILocalFile.
- file.initWithPath(filePicker.file.path);
- file.append("eventLog.txt");
-
- if ( !file.exists() ) {
- SimpleTimerFileIO.create(file);
- }
-
- document.getElementById("simtim-eventLogPath").value = file.path;
- prefs.setComplexValue("eventLogPath", Components.interfaces.nsILocalFile, file);
- }
- },
-
- // Use the default log file and update the textbox with the path.
-
- onResetDefaultClick: function() {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"].
- getService(Components.interfaces.nsIPrefService).
- getBranch("extensions.simpletimer@grbradt.org.");
- var file = SimpleTimerEventLog.createDefaultLogFile();
-
- if ( file ) {
- document.getElementById("simtim-eventLogPath").value = file.path;
- prefs.setComplexValue("eventLogPath", Components.interfaces.nsILocalFile, file);
- }
- },
-
- // Enable or disable "display seconds", "display 24 hr clock".
-
- onClockTypeClick: function() {
- if ( document.getElementById("simtim-radgrpClockType").selectedIndex === 0 ) {
- document.getElementById("simtim-cboxShowSecs").disabled = false;
- document.getElementById("simtim-cboxClock24Hr").disabled = false;
- }
- else {
- document.getElementById("simtim-cboxShowSecs").disabled = true;
- document.getElementById("simtim-cboxClock24Hr").disabled = true;
- }
- },
-
- // Called when user clicks OK on options dialog.
-
- onOKOptions: function() {
- // Can't choose Custom (index == 2) and not set a file.
- // Not called when "browser.preferences.instantApply" is "true",
- // but no harm.
- var strbundle = document.getElementById("simtim-strings");
-
- if ( !document.getElementById("simtim-gboxAudioFiles").hidden &&
- document.getElementById("simtim-radgrpAudioFile").selectedIndex === 2 &&
- document.getElementById("simtim-userWavPath").value === "" ) {
- var strbundle = document.getElementById("simtim-strings");
- alert(strbundle.getString("alert.error.path.empty.line1") +
- "\n" +
- strbundle.getString("alert.error.path.empty.line2"));
- return false;
- }
-
- if ( document.getElementById("simtim-cboxEventLogging").checked &&
- document.getElementById("simtim-eventLogPath").value === "" ) {
- alert(strbundle.getString("alert.error.log.path.empty"));
- return false;
- }
-
- return true;
- },
-
- // Debug messages to console.
-
- debug: function (aMsg) {
- setTimeout(function() { throw new Error("[debug] " + aMsg); }, 0);
- }
- };