From 71108ddc1c742e881c49535d632754aeb79b9b01 Mon Sep 17 00:00:00 2001 From: "putterman%netscape.com" Date: Fri, 27 Aug 1999 03:48:53 +0000 Subject: [PATCH] Add Priority and Size to thread pane. --- mailnews/base/src/nsMsgMessageDataSource.cpp | 108 +++++++++++++++++-- mailnews/base/src/nsMsgMessageDataSource.h | 11 ++ 2 files changed, 111 insertions(+), 8 deletions(-) diff --git a/mailnews/base/src/nsMsgMessageDataSource.cpp b/mailnews/base/src/nsMsgMessageDataSource.cpp index 4eeefa1430a..7027162a3c1 100644 --- a/mailnews/base/src/nsMsgMessageDataSource.cpp +++ b/mailnews/base/src/nsMsgMessageDataSource.cpp @@ -46,6 +46,9 @@ nsIRDFResource* nsMsgMessageDataSource::kNC_Sender= nsnull; nsIRDFResource* nsMsgMessageDataSource::kNC_Date= nsnull; nsIRDFResource* nsMsgMessageDataSource::kNC_Status= nsnull; nsIRDFResource* nsMsgMessageDataSource::kNC_Flagged= nsnull; +nsIRDFResource* nsMsgMessageDataSource::kNC_Priority= nsnull; +nsIRDFResource* nsMsgMessageDataSource::kNC_Size= nsnull; + //commands nsIRDFResource* nsMsgMessageDataSource::kNC_MarkRead= nsnull; @@ -86,6 +89,10 @@ nsMsgMessageDataSource::~nsMsgMessageDataSource (void) NS_RELEASE2(kNC_Status, refcnt); if (kNC_Flagged) NS_RELEASE2(kNC_Flagged, refcnt); + if (kNC_Priority) + NS_RELEASE2(kNC_Priority, refcnt); + if (kNC_Size) + NS_RELEASE2(kNC_Size, refcnt); if (kNC_MarkRead) NS_RELEASE2(kNC_MarkRead, refcnt); if (kNC_MarkUnread) @@ -135,6 +142,8 @@ nsresult nsMsgMessageDataSource::Init() mRDFService->GetResource(NC_RDF_DATE, &kNC_Date); mRDFService->GetResource(NC_RDF_STATUS, &kNC_Status); mRDFService->GetResource(NC_RDF_FLAGGED, &kNC_Flagged); + mRDFService->GetResource(NC_RDF_PRIORITY, &kNC_Priority); + mRDFService->GetResource(NC_RDF_SIZE, &kNC_Size); mRDFService->GetResource(NC_RDF_MARKREAD, &kNC_MarkRead); mRDFService->GetResource(NC_RDF_MARKUNREAD, &kNC_MarkUnread); @@ -247,7 +256,8 @@ NS_IMETHODIMP nsMsgMessageDataSource::GetTargets(nsIRDFResource* source, nsCOMPtr message(do_QueryInterface(source, &rv)); if (NS_SUCCEEDED(rv)) { if((kNC_Subject == property) || (kNC_Date == property) || - (kNC_Status == property) || kNC_Flagged == property) + (kNC_Status == property) || (kNC_Flagged == property) || + (kNC_Priority == property) || (kNC_Size == property)) { nsSingletonEnumerator* cursor = new nsSingletonEnumerator(source); @@ -359,6 +369,8 @@ nsMsgMessageDataSource::getMessageArcLabelsOut(nsIMessage *folder, (*arcs)->AppendElement(kNC_Date); (*arcs)->AppendElement(kNC_Status); (*arcs)->AppendElement(kNC_Flagged); + (*arcs)->AppendElement(kNC_Priority); + (*arcs)->AppendElement(kNC_Size); return NS_OK; } @@ -500,17 +512,24 @@ nsMsgMessageDataSource::createMessageNode(nsIMessage *message, nsIRDFResource *property, nsIRDFNode **target) { - PRBool sort; - if (peqCollationSort(kNC_Subject, property, &sort)) - return createMessageNameNode(message, sort, target); - else if (peqCollationSort(kNC_Sender, property, &sort)) - return createMessageSenderNode(message, sort, target); + if (peqCollationSort(kNC_Subject, property)) + return createMessageNameNode(message, PR_TRUE, target); + else if (kNC_Subject == property) + return createMessageNameNode(message, PR_FALSE, target); + else if (peqCollationSort(kNC_Sender, property)) + return createMessageSenderNode(message, PR_TRUE, target); + else if (kNC_Sender == property) + return createMessageSenderNode(message, PR_FALSE, target); else if ((kNC_Date == property)) return createMessageDateNode(message, target); - else if ((kNC_Status == property)) + else if ((kNC_Status == property)) return createMessageStatusNode(message, target); - else if ((kNC_Flagged == property)) + else if ((kNC_Flagged == property)) return createMessageFlaggedNode(message, target); + else if ((kNC_Priority == property)) + return createMessagePriorityNode(message, target); + else if ((kNC_Size == property)) + return createMessageSizeNode(message, target); else return NS_RDF_NO_VALUE; } @@ -657,6 +676,79 @@ nsMsgMessageDataSource::createFlaggedStringFromFlag(PRUint32 flags, nsCAutoStrin return rv; } +nsresult +nsMsgMessageDataSource::createPriorityString(nsMsgPriority priority, nsCAutoString &priorityStr) +{ + nsresult rv = NS_OK; + priorityStr = " "; + switch (priority) + { + case nsMsgPriorityNotSet: + case nsMsgPriorityNone: + priorityStr = " "; + break; + case nsMsgPriorityLowest: + priorityStr = "Lowest"; + break; + case nsMsgPriorityLow: + priorityStr = "Low"; + break; + case nsMsgPriorityNormal: + priorityStr = "Normal"; + break; + case nsMsgPriorityHigh: + priorityStr = "High"; + break; + case nsMsgPriorityHighest: + priorityStr = "Highest"; + break; + } + return rv; +} + +nsresult +nsMsgMessageDataSource::createMessagePriorityNode(nsIMessage *message, + nsIRDFNode **target) +{ + nsresult rv; + nsCAutoString priorityStr; + nsMsgPriority priority; + rv = message->GetPriority(&priority); + if(NS_FAILED(rv)) + return rv; + rv = createPriorityString(priority, priorityStr); + if(NS_FAILED(rv)) + return rv; + nsString uniStr = priorityStr; + + rv = createNode(priorityStr, target); + return rv; +} + +nsresult +nsMsgMessageDataSource::createMessageSizeNode(nsIMessage *message, + nsIRDFNode **target) +{ + nsresult rv; + PRUint32 size; + nsString sizeStr=""; + rv = message->GetMessageSize(&size); + if(NS_FAILED(rv)) + return rv; + if(size < 1024) + size = 1024; + PRUint32 sizeInKB = size/1024; + + char * kbStr = PR_smprintf("%uKB", sizeInKB); + if(kbStr) + { + sizeStr =kbStr; + PR_smprintf_free(kbStr); + } + rv = createNode(sizeStr, target); + return rv; +} + nsresult nsMsgMessageDataSource::DoMarkMessagesRead(nsISupportsArray *messages, PRBool markRead) { diff --git a/mailnews/base/src/nsMsgMessageDataSource.h b/mailnews/base/src/nsMsgMessageDataSource.h index 0f630dbca1c..26b7221c0df 100644 --- a/mailnews/base/src/nsMsgMessageDataSource.h +++ b/mailnews/base/src/nsMsgMessageDataSource.h @@ -24,6 +24,7 @@ #include "nsILocale.h" #include "nsIDateTimeFormat.h" #include "nsCOMPtr.h" +#include "MailNewsTypes.h" /** * The mail message source. @@ -142,6 +143,14 @@ protected: nsIRDFNode **target); nsresult createFlaggedStringFromFlag(PRUint32 flags, nsCAutoString &statusStr); + nsresult createMessagePriorityNode(nsIMessage *message, + nsIRDFNode **target); + + nsresult createPriorityString(nsMsgPriority priority, nsCAutoString &priorityStr); + + nsresult createMessageSizeNode(nsIMessage *message, + nsIRDFNode **target); + nsresult DoMarkMessagesRead(nsISupportsArray *messages, PRBool markRead); nsresult DoMarkMessagesFlagged(nsISupportsArray *messages, PRBool markFlagged); @@ -164,6 +173,8 @@ protected: static nsIRDFResource* kNC_Date; static nsIRDFResource* kNC_Status; static nsIRDFResource* kNC_Flagged; + static nsIRDFResource* kNC_Priority; + static nsIRDFResource* kNC_Size; // commands static nsIRDFResource* kNC_MarkRead;