From dcebe210ac5f9fb9c9ab8ed196cc635c2c4cfde7 Mon Sep 17 00:00:00 2001 From: "scott%scott-macgregor.org" Date: Fri, 29 Sep 2006 22:07:50 +0000 Subject: [PATCH] Bug #353906 --> modernize mail's registry code, implementing toolkit's nsIShellService, separating it out from the MAPI implementation. We now have a new default client dialog, and new options UI. this work is a precursor for vista integration sr=bienvenu git-svn-id: svn://10.0.0.236/trunk@212886 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/mail/app/profile/all-thunderbird.js | 7 +- mozilla/mail/base/Makefile.in | 4 + .../mail/base/content/defaultClientDialog.js | 84 ++++ .../mail/base/content/defaultClientDialog.xul | 69 +++ .../mail/base/content/mailWindowOverlay.xul | 1 + .../mail/base/content/msgMail3PaneWindow.js | 13 + mozilla/mail/base/jar.mn | 2 + mozilla/mail/components/Makefile.in | 2 +- mozilla/mail/components/build/Makefile.in | 7 +- mozilla/mail/components/build/nsModule.cpp | 12 +- .../mail/components/preferences/Makefile.in | 2 +- .../components/preferences/defaultClient.js | 116 ----- .../components/preferences/defaultClient.xul | 114 ----- .../mail/components/preferences/general.js | 107 ++-- .../mail/components/preferences/general.xul | 77 +-- mozilla/mail/components/preferences/jar.mn | 6 +- mozilla/mail/components/shell/Makefile.in | 16 + mozilla/mail/components/shell/contents.rdf | 20 - mozilla/mail/components/shell/jar.mn | 2 - .../shell/nsMailGNOMEIntegration.cpp | 261 +++------- .../components/shell/nsMailGNOMEIntegration.h | 25 +- .../components/shell/nsMailMacIntegration.cpp | 269 +++------- .../components/shell/nsMailMacIntegration.h | 23 +- .../components/shell/nsMailWinIntegration.cpp | 465 ++++++++++++++++++ .../components/shell/nsMailWinIntegration.h | 85 ++++ .../mail/components/shell/nsSetDefaultMail.js | 139 ++++++ .../mail/components/shell/public/Makefile.in | 50 ++ .../shell/public/nsIShellService.idl | 83 ++++ mozilla/mail/installer/removed-files.in | 1 + .../mail/installer/windows/packages-static | 1 - .../chrome/messenger/defaultClientDialog.dtd | 9 + .../messenger/preferences/defaultClient.dtd | 13 - .../chrome/messenger/preferences/general.dtd | 23 +- .../chrome/messenger/shellservice.properties | 5 + mozilla/mail/locales/jar.mn | 3 +- .../prefs/resources/content/accountUtils.js | 15 +- mozilla/mailnews/jar.mn | 2 +- .../mapi/mapihook/public/nsIMapiSupport.idl | 14 +- .../mailnews/mapi/mapihook/src/Makefile.in | 6 +- .../mapi/mapihook/src/msgMapiSupport.cpp | 27 +- .../mapi/mapihook/src/nsMapiRegistry.cpp | 7 + .../mapi/mapihook/src/nsMapiRegistry.h | 7 + .../mapi/mapihook/src/nsMapiRegistryUtils.cpp | 21 +- .../mapi/mapihook/src/nsMapiRegistryUtils.h | 8 +- mozilla/xpfe/components/Makefile.in | 4 - 45 files changed, 1363 insertions(+), 864 deletions(-) create mode 100644 mozilla/mail/base/content/defaultClientDialog.js create mode 100644 mozilla/mail/base/content/defaultClientDialog.xul delete mode 100644 mozilla/mail/components/preferences/defaultClient.js delete mode 100644 mozilla/mail/components/preferences/defaultClient.xul delete mode 100644 mozilla/mail/components/shell/contents.rdf delete mode 100644 mozilla/mail/components/shell/jar.mn create mode 100644 mozilla/mail/components/shell/nsMailWinIntegration.cpp create mode 100644 mozilla/mail/components/shell/nsMailWinIntegration.h create mode 100644 mozilla/mail/components/shell/nsSetDefaultMail.js create mode 100644 mozilla/mail/components/shell/public/Makefile.in create mode 100644 mozilla/mail/components/shell/public/nsIShellService.idl create mode 100644 mozilla/mail/locales/en-US/chrome/messenger/defaultClientDialog.dtd delete mode 100644 mozilla/mail/locales/en-US/chrome/messenger/preferences/defaultClient.dtd create mode 100644 mozilla/mail/locales/en-US/chrome/messenger/shellservice.properties diff --git a/mozilla/mail/app/profile/all-thunderbird.js b/mozilla/mail/app/profile/all-thunderbird.js index 07c5da0f847..6b24c046c22 100644 --- a/mozilla/mail/app/profile/all-thunderbird.js +++ b/mozilla/mail/app/profile/all-thunderbird.js @@ -135,6 +135,7 @@ pref("extensions.dss.switchPending", false); // Non-dynamic switch pending af pref("xpinstall.whitelist.add", "update.mozilla.org"); pref("xpinstall.whitelist.add.103", "addons.mozilla.org"); +pref("mail.shell.checkDefaultClient", true); pref("mail.phishing.detection.enabled", true); // enable / disable phishing detection for link clicks pref("mail.spellcheck.inline", true); pref("mail.showPreviewText", true); // enables preview text in mail alerts and folder tooltips @@ -213,12 +214,6 @@ pref("network.cookie.cookieBehavior", 3); // 0-Accept, 1-dontAcceptForeign, 2-do // End seamonkey suite mailnews.js pref overrides ///////////////////////////////////////////////////////////////// -// whether to check if we are the default mail, news or feed client -// on startup. -pref("mail.checkDefaultMail", true); -pref("mail.checkDefaultNews", false); -pref("mail.checkDefaultFeed", false); - ///////////////////////////////////////////////////////////////// // Overrides for generic app behavior from the seamonkey suite's all.js ///////////////////////////////////////////////////////////////// diff --git a/mozilla/mail/base/Makefile.in b/mozilla/mail/base/Makefile.in index 2b1732084c4..497729123ae 100644 --- a/mozilla/mail/base/Makefile.in +++ b/mozilla/mail/base/Makefile.in @@ -44,6 +44,10 @@ include $(DEPTH)/config/autoconf.mk DEFINES += -DMOZ_APP_VERSION=$(MOZ_APP_VERSION) +ifneq (,$(filter windows gtk2 mac cocoa, $(MOZ_WIDGET_TOOLKIT))) +DEFINES += -DHAVE_SHELL_SERVICE=1 +endif + ifndef MOZ_BRANDING_DIRECTORY DEFINES += -DMOZ_USE_GENERIC_BRANDING endif diff --git a/mozilla/mail/base/content/defaultClientDialog.js b/mozilla/mail/base/content/defaultClientDialog.js new file mode 100644 index 00000000000..dc097bea576 --- /dev/null +++ b/mozilla/mail/base/content/defaultClientDialog.js @@ -0,0 +1,84 @@ +# -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- +# ***** 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 the Thunderbird Default Client Dialog +# +# The Initial Developer of the Original Code is +# Scott MacGregor +# Portions created by the Initial Developer are Copyright (C) 2006 +# 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 ***** + +// this dialog can only be opened if we have a shell service + +var gDefaultClientDialog = { + onLoad: function () + { + var nsIShellService = Components.interfaces.nsIShellService; + var shellSvc = Components.classes["@mozilla.org/mail/shell-service;1"] + .getService(nsIShellService); + + // initialize the check boxes based on the default app states. + var mailCheckbox = document.getElementById('checkMail'); + var newsCheckbox = document.getElementById('checkNews'); + var rssCheckbox = document.getElementById('checkRSS'); + + mailCheckbox.disabled = shellSvc.isDefaultClient(false, nsIShellService.MAIL); + // 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. + mailCheckbox.checked = true; + newsCheckbox.checked = newsCheckbox.disabled = shellSvc.isDefaultClient(false, nsIShellService.NEWS); + rssCheckbox.checked = rssCheckbox.disabled = shellSvc.isDefaultClient(false, nsIShellService.RSS); + + // read the raw pref value and not shellSvc.shouldCheckDefaultMail + var prefs = Components.classes["@mozilla.org/preferences-service;1"] + .getService(Components.interfaces.nsIPrefBranch); + document.getElementById('checkOnStartup').checked = prefs.getBoolPref("mail.shell.checkDefaultClient"); + }, + + onAccept: function() + { + // for each checked item, if we aren't already the default, make us the default. + var nsIShellService = Components.interfaces.nsIShellService; + var shellSvc = Components.classes["@mozilla.org/mail/shell-service;1"] + .getService(nsIShellService); + var appTypes = 0; + if (document.getElementById('checkMail').checked && !shellSvc.isDefaultClient(false, nsIShellService.MAIL)) + appTypes |= nsIShellService.MAIL; + if (document.getElementById('checkNews').checked && !shellSvc.isDefaultClient(false, nsIShellService.NEWS)) + appTypes |= nsIShellService.NEWS; + if (document.getElementById('checkRSS').checked && !shellSvc.isDefaultClient(false, nsIShellService.RSS)) + appTypes |= nsIShellService.RSS; + + if (appTypes) + shellSvc.setDefaultClient(false, appTypes); + + shellSvc.shouldCheckDefaultClient = document.getElementById('checkOnStartup').checked; + } +}; diff --git a/mozilla/mail/base/content/defaultClientDialog.xul b/mozilla/mail/base/content/defaultClientDialog.xul new file mode 100644 index 00000000000..034272095b8 --- /dev/null +++ b/mozilla/mail/base/content/defaultClientDialog.xul @@ -0,0 +1,69 @@ + +# -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 4 -*- +# ***** 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 the Thunderbird Default Client Dialog +# +# The Initial Developer of the Original Code is +# Scott MacGregor. +# Portions created by the Initial Developer are Copyright (C) 2006 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Scott MacGregor + + + %brandDTD; + + %defaultClientDTD; +]> + + + +