mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 20:05:49 +00:00
extensibility hooks for mailnews FE and IMAP back end.
see bug #161226. r/sr=bienvenu
This commit is contained in:
parent
ef17840fcd
commit
a0cf394eea
@ -25,6 +25,8 @@ var gDefaultPickerMode = "1";
|
||||
|
||||
var gFccFolderWithDelim, gDraftsFolderWithDelim, gTemplatesFolderWithDelim;
|
||||
|
||||
var gPrefBranch = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
|
||||
|
||||
// Picker IDs
|
||||
var fccAccountPickerId = "msgFccAccountPicker";
|
||||
var fccFolderPickerId = "msgFccFolderPicker";
|
||||
@ -61,6 +63,30 @@ function onInit() {
|
||||
initBccSelf();
|
||||
setupFccItems();
|
||||
SetSpecialFolderNamesWithDelims();
|
||||
SetupStoreReadMail();
|
||||
}
|
||||
|
||||
function SetupStoreReadMail()
|
||||
{
|
||||
var groupbox = document.getElementById("store_read_mail_in_pfc");
|
||||
|
||||
var serverId = GetCurrentServerId();
|
||||
var account = parent.getAccountFromServerId(serverId);
|
||||
if (!account)
|
||||
return;
|
||||
|
||||
var server = account.incomingServer;
|
||||
var prefString = server.type + "." + server.redirectorType + ".showStoreReadMailInPFC";
|
||||
|
||||
try {
|
||||
if (gPrefBranch.getBoolPref(prefString))
|
||||
groupbox.removeAttribute("hidden");
|
||||
else
|
||||
groupbox.setAttribute("hidden","true");
|
||||
}
|
||||
catch (ex) {
|
||||
groupbox.setAttribute("hidden","true");
|
||||
}
|
||||
}
|
||||
|
||||
// Initialize the picker mode choices (account/folder picker) into global vars
|
||||
@ -260,23 +286,27 @@ function SaveFolderSettings(radioElemChoice,
|
||||
folderElementId,
|
||||
folderPickerModeId)
|
||||
{
|
||||
var formElement;
|
||||
var uri;
|
||||
var picker;
|
||||
|
||||
switch (radioElemChoice)
|
||||
{
|
||||
case "0" :
|
||||
var picker = document.getElementById(accountPickerId);
|
||||
var uri = picker.getAttribute("uri");
|
||||
picker = document.getElementById(accountPickerId);
|
||||
uri = picker.getAttribute("uri");
|
||||
if (uri) {
|
||||
// Create Folder URI
|
||||
uri = uri + folderSuffix;
|
||||
|
||||
var formElement = document.getElementById(folderElementId);
|
||||
formElement = document.getElementById(folderElementId);
|
||||
formElement.setAttribute("value",uri);
|
||||
}
|
||||
break;
|
||||
|
||||
case "1" :
|
||||
var picker = document.getElementById(folderPickerId);
|
||||
var uri = picker.getAttribute("uri");
|
||||
picker = document.getElementById(folderPickerId);
|
||||
uri = picker.getAttribute("uri");
|
||||
if (uri) {
|
||||
SaveUriFromPicker(folderElementId, folderPickerId);
|
||||
}
|
||||
@ -287,7 +317,7 @@ function SaveFolderSettings(radioElemChoice,
|
||||
return;
|
||||
}
|
||||
|
||||
var formElement = document.getElementById(folderPickerModeId);
|
||||
formElement = document.getElementById(folderPickerModeId);
|
||||
formElement.setAttribute("value", radioElemChoice);
|
||||
}
|
||||
|
||||
|
@ -95,6 +95,17 @@
|
||||
</hbox>
|
||||
|
||||
</groupbox>
|
||||
|
||||
<groupbox id="store_read_mail_in_pfc">
|
||||
<caption label="&readingPrefix.label;"/>
|
||||
|
||||
<hbox align="center">
|
||||
<checkbox hidable="true" wsm_persist="true" id="imap.storeReadMailInPFC"
|
||||
label="&readingMailFolder.label;"
|
||||
prefattribute="value"
|
||||
prefstring="mail.server.%serverkey%.store_read_mail_in_pfc"/>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
|
||||
<groupbox>
|
||||
<caption label="&specialFoldersTitle.label;"/>
|
||||
|
@ -3,6 +3,8 @@
|
||||
<!ENTITY copyAndFolderTitle.label "Copies & Folders">
|
||||
<!ENTITY sendingPrefix.label "When sending messages, automatically: ">
|
||||
<!ENTITY fccMailFolder.label "Place a copy in:">
|
||||
<!ENTITY readingPrefix.label "When reading messages, automatically: ">
|
||||
<!ENTITY readingMailFolder.label "Place a copy in my "Read Mail" folder on Local Folders">
|
||||
<!ENTITY chooseFolderButton.label "Choose Folder...">
|
||||
<!-- LOCALIZATION NOTE (bccAccount.label): do not translate "Bcc" in below line -->
|
||||
<!ENTITY bccAccount.label "Bcc ">
|
||||
|
@ -76,7 +76,7 @@ function GetServer(uri)
|
||||
|
||||
function LoadMessageByUri(uri)
|
||||
{
|
||||
dump("XXX LoadMessageByUri " + uri + " vs " + gCurrentDisplayedMessage + "\n");
|
||||
//dump("XXX LoadMessageByUri " + uri + " vs " + gCurrentDisplayedMessage + "\n");
|
||||
if(uri != gCurrentDisplayedMessage)
|
||||
{
|
||||
dump("fix this, get the nsIMsgDBHdr and the nsIMsgFolder from the uri...\n");
|
||||
@ -152,6 +152,10 @@ function UpdateMailToolbar(caller)
|
||||
{
|
||||
//dump("XXX update mail-toolbar " + caller + "\n");
|
||||
document.commandDispatcher.updateCommands('mail-toolbar');
|
||||
|
||||
// hook for extra toolbar items
|
||||
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
|
||||
observerService.notifyObservers(window, "mail:updateToolbarItems", null);
|
||||
}
|
||||
|
||||
function ChangeFolderByURI(uri, viewType, viewFlags, sortType, sortOrder)
|
||||
@ -159,6 +163,11 @@ function ChangeFolderByURI(uri, viewType, viewFlags, sortType, sortOrder)
|
||||
//dump("In ChangeFolderByURI uri = " + uri + " sortType = " + sortType + "\n");
|
||||
if (uri == gCurrentLoadingFolderURI)
|
||||
return;
|
||||
|
||||
// hook for extra toolbar items
|
||||
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
|
||||
observerService.notifyObservers(window, "mail:setupToolbarItems", uri);
|
||||
|
||||
var resource = RDF.GetResource(uri);
|
||||
var msgfolder =
|
||||
resource.QueryInterface(Components.interfaces.nsIMsgFolder);
|
||||
@ -209,7 +218,22 @@ function ChangeFolderByURI(uri, viewType, viewFlags, sortType, sortOrder)
|
||||
gCurrentLoadingFolderViewType = viewType;
|
||||
gCurrentLoadingFolderSortType = sortType;
|
||||
gCurrentLoadingFolderSortOrder = sortOrder;
|
||||
if(msgfolder.manyHeadersToDownload)
|
||||
|
||||
var showMessagesAfterLoading;
|
||||
try {
|
||||
var server = msgfolder.server;
|
||||
if (server.redirectorType) {
|
||||
var prefString = server.type + "." + server.redirectorType + ".showMessagesAfterLoading";
|
||||
showMessagesAfterLoading = gPrefs.getBoolPref(prefString);
|
||||
}
|
||||
else
|
||||
showMessagesAfterLoading = false;
|
||||
}
|
||||
catch (ex) {
|
||||
showMessagesAfterLoading = false;
|
||||
}
|
||||
|
||||
if (msgfolder.manyHeadersToDownload || showMessagesAfterLoading)
|
||||
{
|
||||
gRerootOnFolderLoad = true;
|
||||
try
|
||||
@ -313,7 +337,12 @@ function RerootFolder(uri, newFolder, viewType, viewFlags, sortType, sortOrder)
|
||||
}
|
||||
|
||||
SetUpToolbarButtons(uri);
|
||||
|
||||
UpdateStatusMessageCounts(newFolder);
|
||||
|
||||
// hook for extra toolbar items
|
||||
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
|
||||
observerService.notifyObservers(window, "mail:updateToolbarItems", null);
|
||||
}
|
||||
|
||||
function SwitchView(command)
|
||||
|
@ -25,6 +25,7 @@
|
||||
-->
|
||||
|
||||
<?xml-stylesheet href="chrome://messenger/skin/folderPane.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://messenger/skin/folderPaneExtras.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://messenger/skin/fakeAccount.css" type="text/css"?>
|
||||
|
||||
<!DOCTYPE window SYSTEM "chrome://messenger/locale/folderpane.dtd">
|
||||
@ -80,6 +81,9 @@
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#ServerType"
|
||||
object="?serverType" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#RedirectorType"
|
||||
object="?redirectorType" />
|
||||
<binding subject="?member"
|
||||
predicate="http://home.netscape.com/NC-rdf#NoSelect"
|
||||
object="?noSelect" />
|
||||
@ -103,7 +107,7 @@
|
||||
<treerow>
|
||||
<treecell id="folderNameCell"
|
||||
label="?folderTreeName"
|
||||
properties="specialFolder-?specialFolder biffState-?biffState isServer-?isServer newMessages-?newMessages hasUnreadMessages-?hasUnreadMessages subfoldersHaveUnreadMessages-?subfoldersHaveUnreadMessages isSecure-?isSecure serverType-?serverType noSelect-?noSelect imapShared-?imapShared fakeAccount-?fakeAccount"/>
|
||||
properties="specialFolder-?specialFolder biffState-?biffState isServer-?isServer newMessages-?newMessages hasUnreadMessages-?hasUnreadMessages subfoldersHaveUnreadMessages-?subfoldersHaveUnreadMessages isSecure-?isSecure serverType-?serverType redirectorType-?redirectorType noSelect-?noSelect imapShared-?imapShared fakeAccount-?fakeAccount"/>
|
||||
<treecell label="?unreadCount"
|
||||
properties="hasUnreadMessages-?hasUnreadMessages subfoldersHaveUnreadMessages-?subfoldersHaveUnreadMessages"/>
|
||||
<treecell label="?totalCount"
|
||||
|
@ -162,10 +162,12 @@ Rights Reserved.
|
||||
|
||||
<hbox id="mail3PaneVertLayoutBox" persist="collapsed width" flex="2">
|
||||
<vbox id="searchAndthreadpaneBox" persist="width" flex ="1">
|
||||
<vbox id="messagesBox" flex="1">
|
||||
<hbox id="searchBox"/>
|
||||
<vbox id="threadpaneBox" flex="1" persist="width">
|
||||
<tree id="threadTree" flex="1" persist="width" style="width:0px" context="threadPaneContext"/>
|
||||
</vbox>
|
||||
</vbox>
|
||||
</vbox>
|
||||
<hbox id="accountCentralBox" flex="1" persist="width">
|
||||
<iframe name="accountCentralPane" style="width:0px;" flex="1" src="about:blank"/>
|
||||
|
@ -68,6 +68,8 @@ var gPaneConfig = null;
|
||||
var gIsEditableMsgFolder = false;
|
||||
var gOfflineManager;
|
||||
|
||||
// cache the last keywords
|
||||
var gLastKeywords = "";
|
||||
|
||||
function OnMailWindowUnload()
|
||||
{
|
||||
@ -569,3 +571,29 @@ function GetSearchSession()
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
function SetKeywords(aKeywords)
|
||||
{
|
||||
// we cache the last keywords.
|
||||
// if there is no chagne, we do nothing.
|
||||
// most of the time, this will be the case.
|
||||
if (aKeywords == gLastKeywords)
|
||||
return;
|
||||
|
||||
// these are the UI elements who care about keywords
|
||||
var ids = ["expandedKeywordImage","expandedHeaderView","msgHeaderView","collapsedHeaderView","collapsedKeywordImage","editMessageBox","expandedAttachmentBox"];
|
||||
for (i in ids) {
|
||||
var element = document.getElementById(ids[i]);
|
||||
if (element) {
|
||||
if (aKeywords)
|
||||
element.setAttribute("class", aKeywords);
|
||||
else {
|
||||
// if no keywords, reset class to the original class
|
||||
element.setAttribute("class", element.getAttribute("originalclass"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// cache the keywords
|
||||
gLastKeywords = aKeywords;
|
||||
}
|
||||
|
28
mailnews/base/resources/content/mailWindowExtrasOverlay.xul
Normal file
28
mailnews/base/resources/content/mailWindowExtrasOverlay.xul
Normal file
@ -0,0 +1,28 @@
|
||||
<!--
|
||||
The contents of this file are subject to the Netscape 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/NPL/
|
||||
|
||||
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 Mozilla Communicator client code, released
|
||||
March 31, 1998.
|
||||
|
||||
The Initial Developer of the Original Code is Netscape
|
||||
Communications Corporation. Portions created by Netscape are
|
||||
Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
Rights Reserved.
|
||||
-->
|
||||
|
||||
<overlay
|
||||
xmlns:nc="http://home.netscape.com/NC-rdf#"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
|
||||
<!-- plug in your mail window extras here.
|
||||
see http://www.mozilla.org/mailnews/arch/mailwindowextras.html -->
|
||||
|
||||
</overlay>
|
@ -22,6 +22,7 @@
|
||||
* Håkan Waara <hwaara@chello.se>
|
||||
* Jan Varga <varga@utcru.sk>
|
||||
* Seth Spitzer <sspitzer@netscape.com>
|
||||
* David Bienvenu <bienvenu@netscape.com>
|
||||
*/
|
||||
|
||||
var gMessengerBundle;
|
||||
@ -397,8 +398,18 @@ function InitViewBodyMenu()
|
||||
|
||||
function IsNewsMessage(messageUri)
|
||||
{
|
||||
if (!messageUri) return false;
|
||||
return (messageUri.substring(0,14) == "news-message:/")
|
||||
if (!messageUri)
|
||||
return false;
|
||||
else
|
||||
return (messageUri.substring(0,14) == "news-message:/");
|
||||
}
|
||||
|
||||
function IsImapMessage(messageUri)
|
||||
{
|
||||
if (!messageUri)
|
||||
return false;
|
||||
else
|
||||
return (messageUri.substring(0,14) == "imap-message:/");
|
||||
}
|
||||
|
||||
function SetMenuItemLabel(menuItemId, customLabel)
|
||||
@ -644,7 +655,7 @@ function MsgGetMessagesForAllServers(defaultServer)
|
||||
{
|
||||
if (defaultServer && defaultServer.equals(currentServer))
|
||||
{
|
||||
dump(currentServer.serverURI + "...skipping, already opened\n");
|
||||
//dump(currentServer.serverURI + "...skipping, already opened\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -853,8 +864,11 @@ function MsgForwardMessage(event)
|
||||
{
|
||||
var forwardType = 0;
|
||||
try {
|
||||
forwardType = gPrefs.getIntPref("mail.forward_message_mode");
|
||||
} catch (e) {dump ("failed to retrieve pref mail.forward_message_mode");}
|
||||
forwardType = gPrefs.getIntPref("mail.forward_message_mode");
|
||||
}
|
||||
catch (ex) {
|
||||
dump("failed to retrieve pref mail.forward_message_mode");
|
||||
}
|
||||
|
||||
// mail.forward_message_mode could be 1, if the user migrated from 4.x
|
||||
// 1 (forward as quoted) is obsolete, so we treat is as forward inline
|
||||
@ -1482,7 +1496,7 @@ function getMarkupDocumentViewer()
|
||||
|
||||
function MsgSynchronizeOffline()
|
||||
{
|
||||
dump("in MsgSynchronize() \n");
|
||||
//dump("in MsgSynchronize() \n");
|
||||
window.openDialog("chrome://messenger/content/msgSynchronize.xul",
|
||||
"", "centerscreen,chrome,modal,titlebar,resizable=yes",{msgWindow:msgWindow});
|
||||
}
|
||||
@ -1707,6 +1721,57 @@ function SetupUndoRedoCommand(command)
|
||||
return canUndoOrRedo;
|
||||
}
|
||||
|
||||
function OnMsgLoaded(folder, msgURI)
|
||||
{
|
||||
var currentMsgFolder = folder.QueryInterface(Components.interfaces.nsIMsgFolder);
|
||||
if (!IsImapMessage(msgURI))
|
||||
return;
|
||||
var imapServer = currentMsgFolder.server.QueryInterface(Components.interfaces.nsIImapIncomingServer);
|
||||
var storeReadMailInPFC = imapServer.storeReadMailInPFC;
|
||||
if (storeReadMailInPFC)
|
||||
{
|
||||
var messageID;
|
||||
|
||||
var copyToOfflineFolder = true;
|
||||
|
||||
// look in read mail PFC for msg with same msg id - if we find one,
|
||||
// don't put this message in the read mail pfc.
|
||||
var outputPFC = imapServer.GetReadMailPFC(true);
|
||||
var messageURI = GetLoadedMessage();
|
||||
if (messageURI != msgURI)
|
||||
{
|
||||
// XXX TODO
|
||||
// bienvenu tells me:
|
||||
// if you have two message windows open, you can get multiple attempts
|
||||
// to copy into the pfc. the second will fail and assert.
|
||||
dump("not loading msg into this window - loaded message = " + messageURI + "loading " + msgURI + "\n");
|
||||
// return;
|
||||
}
|
||||
var msgHdr = messenger.messageServiceFromURI(messageURI).messageURIToMsgHdr(messageURI);
|
||||
if (msgHdr)
|
||||
{
|
||||
messageID = msgHdr.messageId;
|
||||
if (messageID.length > 0)
|
||||
{
|
||||
var readMailDB = outputPFC.getMsgDatabase(msgWindow);
|
||||
if (readMailDB)
|
||||
{
|
||||
var hdrInDestDB = readMailDB.getMsgHdrForMessageID(messageID);
|
||||
if (hdrInDestDB)
|
||||
copyToOfflineFolder = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (copyToOfflineFolder)
|
||||
{
|
||||
var messages = Components.classes["@mozilla.org/supports-array;1"].createInstance(Components.interfaces.nsISupportsArray);
|
||||
messages.AppendElement(msgHdr);
|
||||
|
||||
res = outputPFC.copyMessages(currentMsgFolder, messages, false /*isMove*/, msgWindow /* nsIMsgWindow */, null /* listener */, false /* isFolder */, false /*allowUndo*/ );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function MsgSearchMessages()
|
||||
{
|
||||
var preselectedFolder = null;
|
||||
|
@ -24,6 +24,7 @@ Rights Reserved.
|
||||
|
||||
<?xul-overlay href="chrome://global/content/charsetOverlay.xul"?>
|
||||
<?xul-overlay href="chrome://communicator/content/viewZoomOverlay.xul"?>
|
||||
<?xul-overlay href="chrome://messenger/content/mailWindowExtrasOverlay.xul"?>
|
||||
|
||||
<!DOCTYPE window [
|
||||
<!ENTITY % messengerDTD SYSTEM "chrome://messenger/locale/messenger.dtd" >
|
||||
|
@ -62,6 +62,9 @@ var folderListener = {
|
||||
else if (event.GetUnicode() == "DeleteOrMoveMsgFailed") {
|
||||
HandleDeleteOrMoveMsgFailed(folder);
|
||||
}
|
||||
else if (event.GetUnicode() == "msgLoaded") {
|
||||
OnMsgLoaded(folder, gCurrentMessageUri);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -125,6 +128,13 @@ function UpdateDBView(folderUri)
|
||||
function nsMsgDBViewCommandUpdater()
|
||||
{}
|
||||
|
||||
function UpdateStandAloneMessageCounts()
|
||||
{
|
||||
// hook for extra toolbar items
|
||||
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
|
||||
observerService.notifyObservers(window, "mail:updateStandAloneMessageCounts", "");
|
||||
}
|
||||
|
||||
nsMsgDBViewCommandUpdater.prototype =
|
||||
{
|
||||
updateCommandStatus : function()
|
||||
@ -134,10 +144,12 @@ nsMsgDBViewCommandUpdater.prototype =
|
||||
UpdateMailToolbar("dbview, std alone window");
|
||||
},
|
||||
|
||||
displayMessageChanged : function(aFolder, aSubject)
|
||||
displayMessageChanged : function(aFolder, aSubject, aKeywords)
|
||||
{
|
||||
setTitleFromFolder(aFolder, aSubject);
|
||||
gCurrentMessageUri = gDBView.URIForFirstSelectedMessage;
|
||||
UpdateStandAloneMessageCounts();
|
||||
SetKeywords(aKeywords);
|
||||
},
|
||||
|
||||
QueryInterface : function(iid)
|
||||
@ -245,9 +257,9 @@ function OnLoadMessageWindow()
|
||||
}
|
||||
|
||||
CreateView(originalView)
|
||||
|
||||
setTimeout("var msgKey = extractMsgKeyFromURI(gCurrentMessageUri); gDBView.loadMessageByMsgKey(msgKey); gNextMessageViewIndexAfterDelete = gDBView.msgToSelectAfterDelete;", 0);
|
||||
|
||||
|
||||
setTimeout("var msgKey = extractMsgKeyFromURI(gCurrentMessageUri); gDBView.loadMessageByMsgKey(msgKey); gNextMessageViewIndexAfterDelete = gDBView.msgToSelectAfterDelete; UpdateStandAloneMessageCounts();", 0);
|
||||
|
||||
SetupCommandUpdateHandlers();
|
||||
var messagePaneFrame = top.frames['messagepane'];
|
||||
if(messagePaneFrame)
|
||||
@ -290,12 +302,19 @@ function CreateView(originalView)
|
||||
// create a db view
|
||||
CreateBareDBView(originalView, msgFolder, viewType, viewFlags, sortType, sortOrder);
|
||||
|
||||
if (gCurrentMessageUri) {
|
||||
SetUpToolbarButtons(gCurrentMessageUri);
|
||||
}
|
||||
else if (gCurrentFolderUri) {
|
||||
SetUpToolbarButtons(gCurrentFolderUri);
|
||||
}
|
||||
var uri;
|
||||
if (gCurrentMessageUri)
|
||||
uri = gCurrentMessageUri;
|
||||
else if (gCurrentFolderUri)
|
||||
uri = gCurrentFolderUri;
|
||||
else
|
||||
uri = null;
|
||||
|
||||
SetUpToolbarButtons(uri);
|
||||
|
||||
// hook for extra toolbar items
|
||||
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
|
||||
observerService.notifyObservers(window, "mail:setupToolbarItems", uri);
|
||||
}
|
||||
|
||||
function extractMsgKeyFromURI()
|
||||
@ -483,7 +502,6 @@ function SelectMessage(messageUri)
|
||||
gDBView.loadMessageByMsgKey(msgHdr.messageKey);
|
||||
}
|
||||
|
||||
|
||||
function ReloadMessage()
|
||||
{
|
||||
gDBView.reloadMessage();
|
||||
@ -851,6 +869,8 @@ function performNavigation(type)
|
||||
{
|
||||
// load the message key
|
||||
gDBView.loadMessageByMsgKey(resultId.value);
|
||||
// if we changed folders, the message counts changed.
|
||||
UpdateStandAloneMessageCounts();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -125,7 +125,8 @@ Rights Reserved.
|
||||
<menubar id="mailMenubar"/>
|
||||
</toolbox>
|
||||
|
||||
<!-- msg header view -->
|
||||
<!-- msg header view -->
|
||||
<vbox id="messagesBox" flex="1">
|
||||
<vbox id="messagepanebox" flex="3" persist="collapsed"
|
||||
ondragover="nsDragAndDrop.dragOver(event, messagepaneObserver);"
|
||||
ondragdrop="nsDragAndDrop.drop(event, messagepaneObserver);"
|
||||
@ -136,7 +137,7 @@ Rights Reserved.
|
||||
<browser id="messagepane" context="messagePaneContext" style="height: 0px" flex="1" name="messagepane"
|
||||
disableHistory="true" type="content-primary" src="about:blank" onclick="contentAreaClick(event);"/>
|
||||
</vbox>
|
||||
|
||||
</vbox>
|
||||
|
||||
<statusbar class="chromeclass-status" id="status-bar"/>
|
||||
|
||||
|
@ -22,6 +22,7 @@ Rights Reserved.
|
||||
<!DOCTYPE window SYSTEM "chrome://messenger/locale/msgHdrViewOverlay.dtd">
|
||||
|
||||
<?xml-stylesheet href="chrome://messenger/skin/messageHeader.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://messenger/skin/messageKeywords.css" type="text/css"?>
|
||||
|
||||
<overlay xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
@ -54,9 +55,9 @@ Rights Reserved.
|
||||
<tooltip id="attachmentListTooltip"
|
||||
onpopupshowing="return FillInAttachmentTooltip(document.tooltipNode);"/>
|
||||
|
||||
<hbox id="msgHeaderView" persist="state">
|
||||
<hbox id="msgHeaderView" originalclass="none" persist="state">
|
||||
|
||||
<grid id="collapsedHeaderView" class="header-part1" flex="1" collapsed="true">
|
||||
<grid id="collapsedHeaderView" class="header-part1" originalclass="header-part1" flex="1" collapsed="true">
|
||||
<rows>
|
||||
<row flex="1"/>
|
||||
</rows>
|
||||
@ -88,6 +89,12 @@ Rights Reserved.
|
||||
</hbox>
|
||||
</column>
|
||||
|
||||
<column id="collapsedKeywordBox">
|
||||
<hbox align="start">
|
||||
<image id="collapsedKeywordImage" originalclass="none"/>
|
||||
</hbox>
|
||||
</column>
|
||||
|
||||
<column id="collapsedAttachmentBox" collapsed="true">
|
||||
<hbox align="start">
|
||||
<image id="collapsedAttachment" class="collapsedAttachmentButton" onclick="ToggleHeaderView();" />
|
||||
@ -96,7 +103,7 @@ Rights Reserved.
|
||||
</columns>
|
||||
</grid>
|
||||
|
||||
<hbox id="expandedHeaderView" class="header-part1" flex="1" collapsed="true">
|
||||
<hbox id="expandedHeaderView" class="header-part1" originalclass="header-part1" flex="1" collapsed="true">
|
||||
<vbox id="expandedHeaders" flex="1">
|
||||
<mail-toggle-headerfield id="expandedsubjectBox" class="subjectvalue" label="&subjectField.label;" ontwistyclick="ToggleHeaderView();" collapsed="true"/>
|
||||
|
||||
@ -115,11 +122,19 @@ Rights Reserved.
|
||||
|
||||
</vbox>
|
||||
|
||||
<vbox id="editMessageBox" class="header-part1" collapsed="true">
|
||||
<vbox id="expandedKeywordBox">
|
||||
<spacer flex="1"/>
|
||||
<image id="expandedKeywordImage" originalclass="none" />
|
||||
<spacer flex="1"/>
|
||||
</vbox>
|
||||
|
||||
<vbox id="editMessageBox" class="header-part1" originalclass="header-part1" collapsed="true">
|
||||
<spacer flex="1"/>
|
||||
<button id="editMessageButton" label="&editMessage.label;" oncommand="MsgComposeDraftMessage()"/>
|
||||
<spacer flex="1"/>
|
||||
</vbox>
|
||||
|
||||
<vbox id="expandedAttachmentBox" class="header-part1" collapsed="true">
|
||||
<vbox id="expandedAttachmentBox" class="header-part1" originalclass="header-part1" collapsed="true">
|
||||
<label id="attachmentText" value="&attachmentsTree.label;" crop="right"/>
|
||||
<listbox id="attachmentList" flex="2"
|
||||
onclick="attachmentListClick(event);" ondraggesture="nsDragAndDrop.startDrag(event,attachmentAreaDNDObserver);" ondragover="nsDragAndDrop.dragOver(event, attachmentAreaDNDObserver);" context="attachmentListContext"/>
|
||||
|
@ -183,6 +183,27 @@ var folderListener = {
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (eventType == "ImapHdrDownloaded") {
|
||||
if (folder) {
|
||||
var imapFolder = folder.QueryInterface(Components.interfaces.nsIMsgImapMailFolder);
|
||||
if (imapFolder) {
|
||||
var hdrParser = imapFolder.hdrParser;
|
||||
if (hdrParser) {
|
||||
var msgHdr = hdrParser.GetNewMsgHdr();
|
||||
if (msgHdr)
|
||||
{
|
||||
var hdrs = hdrParser.headers;
|
||||
if (hdrs && hdrs.indexOf("X-attachment-size:") > 0) {
|
||||
msgHdr.OrFlags(0x10000000); // 0x10000000 is MSG_FLAG_ATTACHMENT
|
||||
}
|
||||
if (hdrs && hdrs.indexOf("X-image-size:") > 0) {
|
||||
msgHdr.setStringProperty("imageSize", "1");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (eventType == "DeleteOrMoveMsgCompleted") {
|
||||
HandleDeleteOrMoveMsgCompleted(folder);
|
||||
}
|
||||
@ -195,6 +216,9 @@ var folderListener = {
|
||||
else if(eventType == "RenameCompleted") {
|
||||
SelectFolder(folder.URI);
|
||||
}
|
||||
else if (eventType == "msgLoaded") {
|
||||
OnMsgLoaded(folder, gCurrentDisplayedMessage);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -268,6 +292,11 @@ function HandleDeleteOrMoveMsgFailed(folder)
|
||||
|
||||
function HandleDeleteOrMoveMsgCompleted(folder)
|
||||
{
|
||||
// you might not have a db view. this can happen if
|
||||
// biff fires when the 3 pane is set to account central.
|
||||
if (!gDBView)
|
||||
return;
|
||||
|
||||
gDBView.onDeleteCompleted(true);
|
||||
if (gNextMessageViewIndexAfterDelete != -2)
|
||||
{
|
||||
@ -320,9 +349,15 @@ function HandleDeleteOrMoveMsgCompleted(folder)
|
||||
if (treeView)
|
||||
treeView.selectionChanged();
|
||||
|
||||
|
||||
EnsureRowInThreadTreeIsVisible(gNextMessageViewIndexAfterDelete);
|
||||
gDBView.suppressCommandUpdating = false;
|
||||
|
||||
// hook for extra toolbar items
|
||||
// XXX I think there is a bug in the suppression code above.
|
||||
// what if I have two rows selected, and I hit delete, and so we load the next row.
|
||||
// what if I have commands that only enable where exactly one row is selected?
|
||||
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
|
||||
observerService.notifyObservers(window, "mail:updateToolbarItems", null);
|
||||
}
|
||||
}
|
||||
gNextMessageViewIndexAfterDelete = -2;
|
||||
|
@ -77,10 +77,11 @@ nsMsgDBViewCommandUpdater.prototype =
|
||||
UpdateMailToolbar("dbview driven, thread pane");
|
||||
},
|
||||
|
||||
displayMessageChanged : function(aFolder, aSubject)
|
||||
displayMessageChanged : function(aFolder, aSubject, aKeywords)
|
||||
{
|
||||
setTitleFromFolder(aFolder, aSubject);
|
||||
gHaveLoadedMessage = true;
|
||||
SetKeywords(aKeywords);
|
||||
},
|
||||
|
||||
QueryInterface : function(iid)
|
||||
|
@ -21,6 +21,7 @@ Rights Reserved.
|
||||
-->
|
||||
|
||||
<?xml-stylesheet href="chrome://messenger/skin/threadPane.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://messenger/skin/threadPaneExtras.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://messenger/skin/threadPaneLabels.css" type="text/css"?>
|
||||
|
||||
<!DOCTYPE window SYSTEM "chrome://messenger/locale/threadpane.dtd">
|
||||
|
@ -439,7 +439,7 @@ nsMsgSearchCommandUpdater.prototype =
|
||||
// when the # of items in the selection has actually changed.
|
||||
document.commandDispatcher.updateCommands('mail-search');
|
||||
},
|
||||
displayMessageChanged : function(aFolder, aSubject)
|
||||
displayMessageChanged : function(aFolder, aSubject, aKeywords)
|
||||
{
|
||||
},
|
||||
|
||||
|
@ -321,7 +321,7 @@ NS_IMETHODIMP nsMsgDBView::Observe(nsISupports *aSubject, const char *aTopic, co
|
||||
nsresult rv = NS_OK;
|
||||
PRBool matchFound = PR_FALSE;
|
||||
|
||||
if (!nsCRT::strcmp(aTopic, NS_PREFBRANCH_PREFCHANGE_TOPIC_ID))
|
||||
if (!strcmp(aTopic, NS_PREFBRANCH_PREFCHANGE_TOPIC_ID))
|
||||
{
|
||||
nsCString prefName;
|
||||
nsCString indexStr;
|
||||
@ -1116,6 +1116,9 @@ NS_IMETHODIMP nsMsgDBView::GetCellProperties(PRInt32 aRow, const PRUnichar *colI
|
||||
if ((mDeleteModel == nsMsgImapDeleteModels::IMAPDelete) && (flags & MSG_FLAG_IMAP_DELETED))
|
||||
properties->AppendElement(kImapDeletedMsgAtom);
|
||||
|
||||
if (mRedirectorTypeAtom)
|
||||
properties->AppendElement(mRedirectorTypeAtom);
|
||||
|
||||
if (mIsNews)
|
||||
properties->AppendElement(kNewsMsgAtom);
|
||||
|
||||
@ -1604,7 +1607,17 @@ NS_IMETHODIMP nsMsgDBView::Open(nsIMsgFolder *folder, nsMsgViewSortTypeValue sor
|
||||
nsXPIDLCString type;
|
||||
rv = server->GetType(getter_Copies(type));
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
mIsNews = !nsCRT::strcmp("nntp",type.get());
|
||||
|
||||
// turn the redirector type into an atom
|
||||
nsXPIDLCString redirectorType;
|
||||
rv = server->GetRedirectorType(getter_Copies(redirectorType));
|
||||
NS_ENSURE_SUCCESS(rv,rv);
|
||||
if (redirectorType.IsEmpty())
|
||||
mRedirectorTypeAtom = nsnull;
|
||||
else
|
||||
mRedirectorTypeAtom = getter_AddRefs(NS_NewAtom(redirectorType.get()));
|
||||
|
||||
mIsNews = !strcmp("nntp",type.get());
|
||||
GetImapDeleteModel(nsnull);
|
||||
}
|
||||
return NS_OK;
|
||||
|
@ -332,6 +332,7 @@ protected:
|
||||
|
||||
nsCOMPtr <nsIMsgDatabase> m_db;
|
||||
nsCOMPtr <nsIMsgFolder> m_folder;
|
||||
nsCOMPtr <nsIAtom> mRedirectorTypeAtom;
|
||||
nsWeakPtr m_searchSession;
|
||||
nsMsgViewSortTypeValue m_sortType;
|
||||
nsMsgViewSortOrderValue m_sortOrder;
|
||||
|
@ -76,6 +76,7 @@ nsIRDFResource* nsMsgFolderDataSource::kNC_NameSort= nsnull;
|
||||
nsIRDFResource* nsMsgFolderDataSource::kNC_FolderTreeNameSort= nsnull;
|
||||
nsIRDFResource* nsMsgFolderDataSource::kNC_SpecialFolder= nsnull;
|
||||
nsIRDFResource* nsMsgFolderDataSource::kNC_ServerType = nsnull;
|
||||
nsIRDFResource* nsMsgFolderDataSource::kNC_RedirectorType = nsnull;
|
||||
nsIRDFResource* nsMsgFolderDataSource::kNC_CanCreateFoldersOnServer = nsnull;
|
||||
nsIRDFResource* nsMsgFolderDataSource::kNC_CanFileMessagesOnServer = nsnull;
|
||||
nsIRDFResource* nsMsgFolderDataSource::kNC_IsServer = nsnull;
|
||||
@ -140,6 +141,7 @@ nsMsgFolderDataSource::nsMsgFolderDataSource()
|
||||
rdf->GetResource(NC_RDF_FOLDERTREENAME_SORT, &kNC_FolderTreeNameSort);
|
||||
rdf->GetResource(NC_RDF_SPECIALFOLDER, &kNC_SpecialFolder);
|
||||
rdf->GetResource(NC_RDF_SERVERTYPE, &kNC_ServerType);
|
||||
rdf->GetResource(NC_RDF_REDIRECTORTYPE, &kNC_RedirectorType);
|
||||
rdf->GetResource(NC_RDF_CANCREATEFOLDERSONSERVER, &kNC_CanCreateFoldersOnServer);
|
||||
rdf->GetResource(NC_RDF_CANFILEMESSAGESONSERVER, &kNC_CanFileMessagesOnServer);
|
||||
rdf->GetResource(NC_RDF_ISSERVER, &kNC_IsServer);
|
||||
@ -208,6 +210,7 @@ nsMsgFolderDataSource::~nsMsgFolderDataSource (void)
|
||||
NS_RELEASE2(kNC_FolderTreeNameSort, refcnt);
|
||||
NS_RELEASE2(kNC_SpecialFolder, refcnt);
|
||||
NS_RELEASE2(kNC_ServerType, refcnt);
|
||||
NS_RELEASE2(kNC_RedirectorType, refcnt);
|
||||
NS_RELEASE2(kNC_CanCreateFoldersOnServer, refcnt);
|
||||
NS_RELEASE2(kNC_CanFileMessagesOnServer, refcnt);
|
||||
NS_RELEASE2(kNC_IsServer, refcnt);
|
||||
@ -453,6 +456,7 @@ NS_IMETHODIMP nsMsgFolderDataSource::GetTargets(nsIRDFResource* source,
|
||||
(kNC_CanRename == property) ||
|
||||
(kNC_CanCompact == property) ||
|
||||
(kNC_ServerType == property) ||
|
||||
(kNC_RedirectorType == property) ||
|
||||
(kNC_CanCreateFoldersOnServer == property) ||
|
||||
(kNC_CanFileMessagesOnServer == property) ||
|
||||
(kNC_NoSelect == property) ||
|
||||
@ -542,6 +546,7 @@ nsMsgFolderDataSource::HasArcOut(nsIRDFResource *aSource, nsIRDFResource *aArc,
|
||||
aArc == kNC_FolderTreeSimpleName ||
|
||||
aArc == kNC_SpecialFolder ||
|
||||
aArc == kNC_ServerType ||
|
||||
aArc == kNC_RedirectorType ||
|
||||
aArc == kNC_CanCreateFoldersOnServer ||
|
||||
aArc == kNC_CanFileMessagesOnServer ||
|
||||
aArc == kNC_IsServer ||
|
||||
@ -608,6 +613,7 @@ nsMsgFolderDataSource::getFolderArcLabelsOut(nsISupportsArray **arcs)
|
||||
(*arcs)->AppendElement(kNC_FolderTreeSimpleName);
|
||||
(*arcs)->AppendElement(kNC_SpecialFolder);
|
||||
(*arcs)->AppendElement(kNC_ServerType);
|
||||
(*arcs)->AppendElement(kNC_RedirectorType);
|
||||
(*arcs)->AppendElement(kNC_CanCreateFoldersOnServer);
|
||||
(*arcs)->AppendElement(kNC_CanFileMessagesOnServer);
|
||||
(*arcs)->AppendElement(kNC_IsServer);
|
||||
@ -1009,6 +1015,8 @@ nsresult nsMsgFolderDataSource::createFolderNode(nsIMsgFolder* folder,
|
||||
rv = createFolderSpecialNode(folder,target);
|
||||
else if ((kNC_ServerType == property))
|
||||
rv = createFolderServerTypeNode(folder, target);
|
||||
else if ((kNC_RedirectorType == property))
|
||||
rv = createFolderRedirectorTypeNode(folder, target);
|
||||
else if ((kNC_CanCreateFoldersOnServer == property))
|
||||
rv = createFolderCanCreateFoldersOnServerNode(folder, target);
|
||||
else if ((kNC_CanFileMessagesOnServer == property))
|
||||
@ -1173,10 +1181,24 @@ nsMsgFolderDataSource::createFolderServerTypeNode(nsIMsgFolder* folder,
|
||||
rv = server->GetType(getter_Copies(serverType));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
nsAutoString type;
|
||||
type.AssignWithConversion(serverType.get());
|
||||
createNode(NS_ConvertASCIItoUCS2(serverType).get(), target, getRDFService());
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
createNode(type.get(), target, getRDFService());
|
||||
nsresult
|
||||
nsMsgFolderDataSource::createFolderRedirectorTypeNode(nsIMsgFolder* folder,
|
||||
nsIRDFNode **target)
|
||||
{
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIMsgIncomingServer> server;
|
||||
rv = folder->GetServer(getter_AddRefs(server));
|
||||
if (NS_FAILED(rv) || !server) return NS_ERROR_FAILURE;
|
||||
|
||||
nsXPIDLCString redirectorType;
|
||||
rv = server->GetRedirectorType(getter_Copies(redirectorType));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
createNode(NS_ConvertASCIItoUCS2(redirectorType).get(), target, getRDFService());
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -2100,6 +2122,7 @@ nsresult nsMsgFolderDataSource::DoFolderHasAssertion(nsIMsgFolder *folder,
|
||||
(kNC_FolderTreeSimpleName == property) ||
|
||||
(kNC_SpecialFolder == property) ||
|
||||
(kNC_ServerType == property) ||
|
||||
(kNC_RedirectorType == property) ||
|
||||
(kNC_CanCreateFoldersOnServer == property) ||
|
||||
(kNC_CanFileMessagesOnServer == property) ||
|
||||
(kNC_IsServer == property) ||
|
||||
|
@ -133,6 +133,8 @@ protected:
|
||||
nsresult createFolderSpecialNode(nsIMsgFolder *folder, nsIRDFNode **target);
|
||||
nsresult createFolderServerTypeNode(nsIMsgFolder *folder,
|
||||
nsIRDFNode **target);
|
||||
nsresult createFolderRedirectorTypeNode(nsIMsgFolder *folder,
|
||||
nsIRDFNode **target);
|
||||
nsresult createFolderCanCreateFoldersOnServerNode(nsIMsgFolder *folder,
|
||||
nsIRDFNode **target);
|
||||
nsresult createFolderCanFileMessagesOnServerNode(nsIMsgFolder *folder,
|
||||
@ -219,6 +221,7 @@ protected:
|
||||
static nsIRDFResource* kNC_MSGFolderRoot;
|
||||
static nsIRDFResource* kNC_SpecialFolder;
|
||||
static nsIRDFResource* kNC_ServerType;
|
||||
static nsIRDFResource* kNC_RedirectorType;
|
||||
static nsIRDFResource* kNC_CanCreateFoldersOnServer;
|
||||
static nsIRDFResource* kNC_CanFileMessagesOnServer;
|
||||
static nsIRDFResource* kNC_IsServer;
|
||||
|
@ -81,6 +81,7 @@ typedef struct _nsMsgRDFNotification {
|
||||
#define NC_RDF_FOLDER NC_NAMESPACE_URI "Folder"
|
||||
#define NC_RDF_SPECIALFOLDER NC_NAMESPACE_URI "SpecialFolder"
|
||||
#define NC_RDF_SERVERTYPE NC_NAMESPACE_URI "ServerType"
|
||||
#define NC_RDF_REDIRECTORTYPE NC_NAMESPACE_URI "RedirectorType"
|
||||
#define NC_RDF_CANCREATEFOLDERSONSERVER NC_NAMESPACE_URI "CanCreateFoldersOnServer"
|
||||
#define NC_RDF_CANFILEMESSAGESONSERVER NC_NAMESPACE_URI "CanFileMessagesOnServer"
|
||||
#define NC_RDF_ISSERVER NC_NAMESPACE_URI "IsServer"
|
||||
|
@ -1728,6 +1728,10 @@ function GenericSendMessage( msgType )
|
||||
}
|
||||
}
|
||||
|
||||
// hook for extra compose pre-processing
|
||||
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
|
||||
observerService.notifyObservers(window, "mail:composeOnSend", null);
|
||||
|
||||
// Check if the headers of composing mail can be converted to a mail charset.
|
||||
if (msgType == nsIMsgCompDeliverMode.Now ||
|
||||
msgType == nsIMsgCompDeliverMode.Later ||
|
||||
|
@ -0,0 +1,28 @@
|
||||
<!--
|
||||
The contents of this file are subject to the Netscape 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/NPL/
|
||||
|
||||
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 Mozilla Communicator client code, released
|
||||
March 31, 1998.
|
||||
|
||||
The Initial Developer of the Original Code is Netscape
|
||||
Communications Corporation. Portions created by Netscape are
|
||||
Copyright (C) 1998-1999 Netscape Communications Corporation. All
|
||||
Rights Reserved.
|
||||
-->
|
||||
|
||||
<overlay
|
||||
xmlns:nc="http://home.netscape.com/NC-rdf#"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
|
||||
<!-- plug in your mail compose window extras here.
|
||||
see http://www.mozilla.org/mailnews/arch/composewindowextras.html -->
|
||||
|
||||
</overlay>
|
@ -37,6 +37,7 @@
|
||||
<?xul-overlay href="chrome://global/content/globalOverlay.xul"?>
|
||||
<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
|
||||
<?xul-overlay href="chrome://editor/content/editorOverlay.xul"?>
|
||||
<?xul-overlay href="chrome://messenger/content/messengercompose/mailComposeExtrasOverlay.xul"?>
|
||||
|
||||
<!DOCTYPE window [
|
||||
<!ENTITY % messengercomposeDTD SYSTEM "chrome://messenger/locale/messengercompose/messengercompose.dtd" >
|
||||
|
@ -96,6 +96,7 @@ messenger.jar:
|
||||
content/messenger/messenger.css (base/resources/content/messenger.css)
|
||||
content/messenger/messenger.xul (base/resources/content/messenger.xul)
|
||||
content/messenger/mail3PaneWindowVertLayout.xul (base/resources/content/mail3PaneWindowVertLayout.xul)
|
||||
content/messenger/mailWindowExtrasOverlay.xul (base/resources/content/mailWindowExtrasOverlay.xul)
|
||||
content/messenger/mailWindowOverlay.xul (base/resources/content/mailWindowOverlay.xul)
|
||||
content/messenger/mailWindowOverlay.js (base/resources/content/mailWindowOverlay.js)
|
||||
content/messenger/msgSynchronize.xul (base/resources/content/msgSynchronize.xul)
|
||||
@ -169,6 +170,7 @@ messenger.jar:
|
||||
content/messenger/messengercompose/sendProgress.xul (compose/resources/content/sendProgress.xul)
|
||||
content/messenger/messengercompose/sendProgress.js (compose/resources/content/sendProgress.js)
|
||||
content/messenger/messengercompose/mailComposeBindings.xml (compose/resources/content/mailComposeBindings.xml)
|
||||
content/messenger/messengercompose/mailComposeExtrasOverlay.xul (compose/resources/content/mailComposeExtrasOverlay.xul)
|
||||
content/messenger/importDialog.js (import/resources/content/importDialog.js)
|
||||
content/messenger/importDialog.xul (import/resources/content/importDialog.xul)
|
||||
content/messenger/importProgress.xul (import/resources/content/importProgress.xul)
|
||||
|
@ -270,6 +270,9 @@ classic.jar:
|
||||
skin/classic/messenger/icons/thread-open-offl-eye.gif (messenger/icons/thread-open-offl-eye.gif)
|
||||
skin/classic/messenger/icons/thread-open-offl-kill.gif (messenger/icons/thread-open-offl-kill.gif)
|
||||
skin/classic/messenger/icons/server-news-new.gif (messenger/icons/server-news-new.gif)
|
||||
skin/classic/messenger/folderPaneExtras.css (messenger/folderPaneExtras.css)
|
||||
skin/classic/messenger/threadPaneExtras.css (messenger/threadPaneExtras.css)
|
||||
skin/classic/messenger/messageKeywords.css (messenger/messageKeywords.css)
|
||||
skin/classic/messenger/icons/new-mail-alert.png (messenger/icons/new-mail-alert.png)
|
||||
skin/classic/messenger/addressbook/abResultsPane.css (messenger/addressbook/abResultsPane.css)
|
||||
skin/classic/messenger/addressbook/addressPanes.css (messenger/addressbook/addressPanes.css)
|
||||
|
3
themes/classic/messenger/folderPaneExtras.css
Normal file
3
themes/classic/messenger/folderPaneExtras.css
Normal file
@ -0,0 +1,3 @@
|
||||
/* distributors / ISPs can override folder pane icons
|
||||
* see http://www.mozilla.org/mailnews/arch/folderpaneextras.html
|
||||
*/
|
4
themes/classic/messenger/messageKeywords.css
Normal file
4
themes/classic/messenger/messageKeywords.css
Normal file
@ -0,0 +1,4 @@
|
||||
/* distributors / ISPs can use this
|
||||
* to add or override icons and colors to the message pane.
|
||||
* see http://www.mozilla.org/mailnews/arch/messagekeywords.html
|
||||
*/
|
3
themes/classic/messenger/threadPaneExtras.css
Normal file
3
themes/classic/messenger/threadPaneExtras.css
Normal file
@ -0,0 +1,3 @@
|
||||
/* distributors / ISPs can override this to override thread pane icons.
|
||||
* see http://www.mozilla.org/mailnews/arch/threadpaneextras.html
|
||||
*/
|
@ -270,9 +270,12 @@ modern.jar:
|
||||
skin/modern/messenger/folderMenus.css (messenger/folderMenus.css)
|
||||
skin/modern/messenger/folderPane.css (messenger/folderPane.css)
|
||||
skin/modern/messenger/fakeAccount.css (messenger/fakeAccount.css)
|
||||
skin/modern/messenger/folderPaneExtras.css (messenger/folderPaneExtras.css)
|
||||
skin/modern/messenger/threadPaneExtras.css (messenger/threadPaneExtras.css)
|
||||
skin/modern/messenger/mailWindow2.css (messenger/mailWindow2.css)
|
||||
skin/modern/messenger/messageBody.css (messenger/messageBody.css)
|
||||
skin/modern/messenger/messageHeader.css (messenger/messageHeader.css)
|
||||
skin/modern/messenger/messageKeywords.css (messenger/messageKeywords.css)
|
||||
skin/modern/messenger/messageWindow.css (messenger/messageWindow.css)
|
||||
skin/modern/messenger/messenger.css (messenger/messenger.css)
|
||||
skin/modern/messenger/prefPanels.css (messenger/prefPanels.css)
|
||||
|
3
themes/modern/messenger/folderPaneExtras.css
Normal file
3
themes/modern/messenger/folderPaneExtras.css
Normal file
@ -0,0 +1,3 @@
|
||||
/* distributors / ISPs can override folder pane icons
|
||||
* see http://www.mozilla.org/mailnews/arch/folderpaneextras.html
|
||||
*/
|
4
themes/modern/messenger/messageKeywords.css
Normal file
4
themes/modern/messenger/messageKeywords.css
Normal file
@ -0,0 +1,4 @@
|
||||
/* distributors / ISPs can use this
|
||||
* to add or override icons and colors to the message pane.
|
||||
* see http://www.mozilla.org/mailnews/arch/messagekeywords.html
|
||||
*/
|
3
themes/modern/messenger/threadPaneExtras.css
Normal file
3
themes/modern/messenger/threadPaneExtras.css
Normal file
@ -0,0 +1,3 @@
|
||||
/* distributors / ISPs can override this to override thread pane icons.
|
||||
* see http://www.mozilla.org/mailnews/arch/threadpaneextras.html
|
||||
*/
|
Loading…
Reference in New Issue
Block a user