mirror of
https://github.com/ManchildProductions/binoc-central-mirror.git
synced 2026-06-15 11:18:59 +00:00
51b1178fd6
This may require a follow-up Credit to Gaming4JC
110 lines
3.9 KiB
JavaScript
110 lines
3.9 KiB
JavaScript
/* -*- Mode: Javascript; 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/. */
|
|
|
|
// This dialog can only be opened if we have a shell service.
|
|
|
|
var gSystemIntegrationDialog = {
|
|
_shellSvc: Components.classes["@mozilla.org/mail/shell-service;1"]
|
|
.getService(Components.interfaces.nsIShellService),
|
|
|
|
_mailCheckbox: null,
|
|
|
|
_newsCheckbox: null,
|
|
|
|
_rssCheckbox: null,
|
|
|
|
_startupCheckbox: null,
|
|
|
|
onLoad: function()
|
|
{
|
|
// Makes Services accessible via this.Services
|
|
Components.utils.import("resource://gre/modules/Services.jsm", this);
|
|
|
|
// initialize elements
|
|
this._mailCheckbox = document.getElementById("checkMail");
|
|
this._newsCheckbox = document.getElementById("checkNews");
|
|
this._rssCheckbox = document.getElementById("checkRSS");
|
|
this._startupCheckbox = document.getElementById("checkOnStartup");
|
|
|
|
// Initialize the check boxes based on the default app states.
|
|
this._mailCheckbox.disabled =
|
|
this._shellSvc.isDefaultClient(false, this._shellSvc.MAIL);
|
|
|
|
let calledFromPrefs = ("arguments" in window) &&
|
|
(window.arguments[0] == "calledFromPrefs");
|
|
|
|
if (!calledFromPrefs) {
|
|
// As an optimization, if we aren't already the default mail client,
|
|
// then pre-check that option for the user. We'll leave News and RSS alone.
|
|
// Do this only if we are not called from the Preferences (Options) dialog.
|
|
// In that case, the user may want to just check what the current state is.
|
|
this._mailCheckbox.checked = true;
|
|
} else {
|
|
this._mailCheckbox.checked = this._mailCheckbox.disabled;
|
|
|
|
// If called from preferences, use only a simpler "Cancel" label on the
|
|
// cancel button.
|
|
document.documentElement.getButton("cancel").label =
|
|
document.documentElement.getAttribute("buttonlabelcancel2");
|
|
}
|
|
|
|
if (!this._mailCheckbox.disabled)
|
|
this._mailCheckbox.removeAttribute("tooltiptext");
|
|
|
|
this._newsCheckbox.checked = this._newsCheckbox.disabled =
|
|
this._shellSvc.isDefaultClient(false, this._shellSvc.NEWS);
|
|
if (!this._newsCheckbox.disabled)
|
|
this._newsCheckbox.removeAttribute("tooltiptext");
|
|
|
|
this._rssCheckbox.checked = this._rssCheckbox.disabled =
|
|
this._shellSvc.isDefaultClient(false, this._shellSvc.RSS);
|
|
if (!this._rssCheckbox.disabled)
|
|
this._rssCheckbox.removeAttribute("tooltiptext");
|
|
|
|
// read the raw pref value and not shellSvc.shouldCheckDefaultMail
|
|
this._startupCheckbox.checked =
|
|
this.Services.prefs.getBoolPref("mail.shell.checkDefaultClient");
|
|
},
|
|
|
|
/**
|
|
* Called when the dialog is closed by any button.
|
|
*
|
|
* @param aSetAsDefault If true, set TB as the default application for the
|
|
* checked actions (mail/news/rss). Otherwise do nothing.
|
|
*/
|
|
onDialogClose: function(aSetAsDefault)
|
|
{
|
|
// In all cases, save the user's decision for "always check at startup".
|
|
this._shellSvc.shouldCheckDefaultClient = this._startupCheckbox.checked;
|
|
|
|
// If the "skip integration" button was used do not set any defaults
|
|
// and close the dialog.
|
|
if (!aSetAsDefault) {
|
|
return true;
|
|
}
|
|
|
|
// For each checked item, if we aren't already the default client,
|
|
// make us the default.
|
|
let appTypes = 0;
|
|
|
|
if (this._mailCheckbox.checked &&
|
|
!this._shellSvc.isDefaultClient(false, this._shellSvc.MAIL))
|
|
appTypes |= this._shellSvc.MAIL;
|
|
|
|
if (this._newsCheckbox.checked &&
|
|
!this._shellSvc.isDefaultClient(false, this._shellSvc.NEWS))
|
|
appTypes |= this._shellSvc.NEWS;
|
|
|
|
if (this._rssCheckbox.checked &&
|
|
!this._shellSvc.isDefaultClient(false, this._shellSvc.RSS))
|
|
appTypes |= this._shellSvc.RSS;
|
|
|
|
if (appTypes)
|
|
this._shellSvc.setDefaultClient(false, appTypes);
|
|
|
|
return true;
|
|
}
|
|
};
|