Revision control

Copy as Markdown

Other Tools

/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
// The content of this file is loaded into the scope of the
// prefwindow and will be available to all prefpanes!
const {AppConstants} = ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
function OnLoad()
{
// Make sure that the preferences window fits the screen.
let dialog = document.documentElement;
let curHeight = dialog.scrollHeight;
let curWidth = dialog.scrollWidth;
// Leave some space for desktop toolbar and window decoration.
let maxHeight = window.screen.availHeight - 48;
let maxWidth = window.screen.availWidth - 24;
// Trigger overflow situation within 40px for bug 868495 expansions.
let setHeight = curHeight > maxHeight - 40 ? maxHeight : curHeight;
let setWidth = curWidth > maxWidth ? maxWidth : curWidth;
if (setHeight == curHeight && setWidth == curWidth)
dialog.setAttribute("overflow", "visible");
window.innerHeight = setHeight;
window.innerWidth = setWidth;
}
function EnableElementById(aElementId, aEnable, aFocus)
{
EnableElement(document.getElementById(aElementId), aEnable, aFocus);
}
function EnableElement(aElement, aEnable, aFocus)
{
let pref = document.getElementById(aElement.getAttribute("preference"));
let enabled = aEnable && !pref.locked;
aElement.disabled = !enabled;
if (enabled && aFocus)
aElement.focus();
}
function WriteSoundField(aField, aValue)
{
var file = GetFileFromString(aValue);
if (file)
{
aField.file = file;
aField.label = (AppConstants.platform == "macosx") ? file.leafName : file.path;
}
}
function SelectSound(aSoundUrlPref)
{
var soundUrlPref = aSoundUrlPref;
let fp = Cc["@mozilla.org/filepicker;1"]
.createInstance(Ci.nsIFilePicker);
var prefutilitiesBundle = document.getElementById("bundle_prefutilities");
fp.init(window, prefutilitiesBundle.getString("choosesound"),
Ci.nsIFilePicker.modeOpen);
let file = GetFileFromString(soundUrlPref.value);
if (file && file.parent && file.parent.exists())
fp.displayDirectory = file.parent;
let filterExts = "*.wav; *.wave";
// On Mac, allow AIFF and CAF files too.
if (AppConstants.platform == "macosx") {
filterExts += "; *.aif; *.aiff; *.caf";
}
fp.appendFilter(prefutilitiesBundle.getString("SoundFiles"), filterExts);
fp.appendFilters(Ci.nsIFilePicker.filterAll);
fp.open(rv => {
if (rv == Ci.nsIFilePicker.returnOK && fp.fileURL.spec &&
fp.fileURL.spec.length > 0) {
soundUrlPref.value = fp.fileURL.spec;
}
});
}
function PlaySound(aValue, aMail)
{
const nsISound = Ci.nsISound;
var sound = Cc["@mozilla.org/sound;1"]
.createInstance(nsISound);
if (aValue)
sound.play(Services.io.newURI(aValue));
else if (aMail && (AppConstants.platform != "macosx"))
sound.playEventSound(nsISound.EVENT_NEW_MAIL_RECEIVED);
else
sound.beep();
}