allow users or extensions to add headers to display in the message pane header area via a pref 353193, sr=mscott

This commit is contained in:
bienvenu%nventure.com 2006-12-12 19:36:33 +00:00
Родитель 52961ada07
Коммит f167435223
3 изменённых файлов: 33 добавлений и 11 удалений

Просмотреть файл

@ -62,6 +62,7 @@ var gViewAllHeaders = false;
var gShowOrganization = false;
var gShowLargeAttachmentView = false;
var gShowUserAgent = false;
var gExtraExpandedHeaders;
var gMinNumberOfHeaders = 0;
var gDummyHeaderIdIndex = 0;
var gCollapsedHeaderViewMode = false;
@ -214,6 +215,12 @@ function initializeHeaderViewTables()
gExpandedHeaderView[headerName] = new createHeaderEntry('expanded', gExpandedHeaderList[index]);
}
var extraHeaders = gExtraExpandedHeaders.split(' ');
for (index = 0; index < extraHeaders.length; index++)
{
var extraHeader = extraHeaders[index];
gExpandedHeaderView[extraHeader.toLowerCase()] = new createNewHeaderView(extraHeader, extraHeader + ':');
}
if (gShowOrganization)
{
var organizationEntry = {name:"organization", outputFunction:updateHeaderValue};
@ -240,6 +247,7 @@ function OnLoadMsgHeaderPane()
gShowOrganization = pref.getBoolPref("mailnews.headers.showOrganization");
gShowLargeAttachmentView = pref.getBoolPref("mailnews.attachments.display.largeView");
gShowCondensedEmailAddresses = pref.getBoolPref("mail.showCondensedAddresses");
gExtraExpandedHeaders = pref.getCharPref("mailnews.headers.extraExpandedHeaders");
// listen to the
pref.addObserver("mail.showCondensedAddresses", MsgHdrViewObserver, false);
@ -684,7 +692,7 @@ function EnsureMinimumNumberOfHeaders (headerTable)
while (numEmptyHeaders)
{
var dummyHeaderId = "Dummy-Header" + gDummyHeaderIdIndex;
gExpandedHeaderView[dummyHeaderId] = new createNewHeaderView(dummyHeaderId);
gExpandedHeaderView[dummyHeaderId] = new createNewHeaderView(dummyHeaderId, "");
gExpandedHeaderView[dummyHeaderId].valid = true;
gDummyHeaderIdIndex++;
@ -738,17 +746,13 @@ function updateHeaderValueInTextNode(headerEntry, headerValue)
headerEntry.textNode.value = headerValue;
}
function createNewHeaderView(headerName)
function createNewHeaderView(headerName, label)
{
var idName = 'expanded' + headerName + 'Box';
var newHeader = document.createElement("mail-headerfield");
newHeader.setAttribute('id', idName);
if (headerName.indexOf("Dummy-Header") == 0) // -1 means not found, 0 means starts at the beginning
newHeader.setAttribute('label', "");
else
newHeader.setAttribute('label', currentHeaderData[headerName].headerName + ':');
newHeader.setAttribute('id', idName);
newHeader.setAttribute('label', label);
newHeader.collapsed = true;
// this new element needs to be inserted into the view...
@ -803,7 +807,7 @@ function UpdateMessageHeaders()
{
// for view all headers, if we don't have a header field for this value....cheat and create one....then
// fill in a headerEntry
gExpandedHeaderView[headerName] = new createNewHeaderView(headerName);
gExpandedHeaderView[headerName] = new createNewHeaderView(headerName, currentHeaderData[headerName].headerName + ':');
headerEntry = gExpandedHeaderView[headerName];
}
} // if we are in expanded view....

Просмотреть файл

@ -72,6 +72,9 @@ pref("mailnews.headers.showUserAgent", false);
// is displayed in the message pane or not...
pref("mailnews.headers.showOrganization", false);
// space-delimited list of extra headers to show in msg header display area.
pref("mailnews.headers.extraExpandedHeaders", "");
// default sort order settings (when creating new folder views)
// sort_order is an int value reflecting nsMsgViewSortOrder values
// as defined in nsIMsgDBView.idl (ascending = 1, descending = 2)

Просмотреть файл

@ -161,14 +161,25 @@ nsresult nsMimeHtmlDisplayEmitter::BroadcastHeaders(nsIMsgHeaderSink * aHeaderSi
// CStringArrays which we can pass into the enumerators
nsCStringArray headerNameArray;
nsCStringArray headerValueArray;
nsXPIDLCString extraExpandedHeaders;
nsCStringArray extraExpandedHeadersArray;
nsCAutoString convertedDateString;
PRBool displayOriginalDate = PR_FALSE;
nsresult rv;
nsCOMPtr<nsIPrefBranch> pPrefBranch(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv));
if (pPrefBranch)
{
pPrefBranch->GetBoolPref("mailnews.display.original_date", &displayOriginalDate);
pPrefBranch->GetCharPref("mailnews.headers.extraExpandedHeaders", getter_Copies(extraExpandedHeaders));
// todo - should make this upper case
if (!extraExpandedHeaders.IsEmpty())
{
ToLowerCase(extraExpandedHeaders);
extraExpandedHeadersArray.ParseString(extraExpandedHeaders, " ");
}
}
for (PRInt32 i=0; i<mHeaderArray->Count(); i++)
{
@ -182,6 +193,7 @@ nsresult nsMimeHtmlDisplayEmitter::BroadcastHeaders(nsIMsgHeaderSink * aHeaderSi
// don't waste time sending those out to the UI since the UI is going to ignore them anyway.
if (aHeaderMode != VIEW_ALL_HEADERS && (mFormat != nsMimeOutput::nsMimeMessageFilterSniffer))
{
nsDependentCString headerStr(headerInfo->name);
if (nsCRT::strcasecmp("to", headerInfo->name) && nsCRT::strcasecmp("from", headerInfo->name) &&
nsCRT::strcasecmp("cc", headerInfo->name) && nsCRT::strcasecmp("newsgroups", headerInfo->name) &&
nsCRT::strcasecmp("bcc", headerInfo->name) && nsCRT::strcasecmp("followup-to", headerInfo->name) &&
@ -190,7 +202,10 @@ nsresult nsMimeHtmlDisplayEmitter::BroadcastHeaders(nsIMsgHeaderSink * aHeaderSi
nsCRT::strcasecmp("content-base", headerInfo->name) && nsCRT::strcasecmp("sender", headerInfo->name) &&
nsCRT::strcasecmp("date", headerInfo->name) && nsCRT::strcasecmp("x-mailer", headerInfo->name) &&
nsCRT::strcasecmp("content-type", headerInfo->name) && nsCRT::strcasecmp("message-id", headerInfo->name) &&
nsCRT::strcasecmp("x-newsreader", headerInfo->name) && nsCRT::strcasecmp("x-mimeole", headerInfo->name))
nsCRT::strcasecmp("x-newsreader", headerInfo->name) && nsCRT::strcasecmp("x-mimeole", headerInfo->name) &&
// make headerStr lower case because IndexOf is case-sensitive
(!extraExpandedHeadersArray.Count() || (ToLowerCase(headerStr),
extraExpandedHeadersArray.IndexOf(headerStr) == kNotFound)))
continue;
}