Files
binoc-central-mirror/mail/base/content/systemIntegrationDialog.js
T
Matt A. Tobin 51b1178fd6 Issue #95 - Remove OS Search Integration
This may require a follow-up

Credit to Gaming4JC
2020-07-28 20:52:06 -04:00

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;
}
};