add interfaces to get thread object from msg hdr or msg key

This commit is contained in:
bienvenu%netscape.com 1999-04-06 18:27:28 +00:00
parent 13ecc6211a
commit 0c90f57c28
3 changed files with 34 additions and 7 deletions

View File

@ -28,6 +28,7 @@ class nsIEnumerator;
class nsThreadMessageHdr; // XXX where's the public interface to this?
class nsMsgKeyArray;
class nsIDBFolderInfo;
class nsIMsgThread;
enum nsMsgDBCommitType {
kSmallCommit,
@ -182,6 +183,8 @@ public:
// but also useful to tell the summary to mark itself invalid
NS_IMETHOD SetSummaryValid(PRBool valid) = 0;
NS_IMETHOD GetThreadForMsgKey(nsMsgKey msgKey, nsIMsgThread **result) = 0;
NS_IMETHOD GetThreadContainingMsgHdr(nsIMessage *msgHdr, nsIMsgThread **result) = 0;
};
#endif // nsIMsgDatabase_h__

View File

@ -169,6 +169,8 @@ public:
// but also useful to tell the summary to mark itself invalid
NS_IMETHOD SetSummaryValid(PRBool valid);
NS_IMETHOD GetThreadForMsgKey(nsMsgKey msgKey, nsIMsgThread **result);
NS_IMETHOD GetThreadContainingMsgHdr(nsIMessage *msgHdr, nsIMsgThread **result) ;
//////////////////////////////////////////////////////////////////////////////
// nsMsgDatabase methods:
nsMsgDatabase();
@ -227,7 +229,6 @@ protected:
// retrieval methods
nsMsgThread * GetThreadForReference(nsString2 &msgID);
nsMsgThread * GetThreadForSubject(const char * subject);
nsMsgThread * GetThreadForMsgKey(nsMsgKey msgKey);
nsMsgThread * GetThreadForThreadId(nsMsgKey threadId);
nsMsgHdr * GetMsgHdrForReference(nsString2 &reference);
nsMsgHdr * GetMsgHdrForMessageID(nsString2 &msgID);

View File

@ -2378,17 +2378,40 @@ nsMsgHdr * nsMsgDatabase::GetMsgHdrForMessageID(nsString2 &msgID)
return msgHdr;
}
nsMsgThread * nsMsgDatabase::GetThreadContainingMsgHdr(nsMsgHdr *msgHdr)
NS_IMETHODIMP nsMsgDatabase::GetThreadContainingMsgHdr(nsIMessage *msgHdr, nsIMsgThread **result)
{
NS_ASSERTION(PR_FALSE, "not implemented yet.");
return nsnull;
nsresult ret = NS_OK;
if (!result)
return NS_ERROR_NULL_POINTER;
*result = nsnull;
nsMsgKey threadId = nsMsgKey_None;
(void)msgHdr->GetThreadId(&threadId);
if (threadId != nsMsgKey_None)
*result = GetThreadForThreadId(threadId);
return ret;
}
nsMsgThread *nsMsgDatabase::GetThreadForMsgKey(nsMsgKey msgKey)
NS_IMETHODIMP nsMsgDatabase::GetThreadForMsgKey(nsMsgKey msgKey, nsIMsgThread **result)
{
NS_ASSERTION(PR_FALSE, "not implemented yet.");
return nsnull;
nsresult ret = NS_OK;
if (!result)
return NS_ERROR_NULL_POINTER;
*result = nsnull;
nsIMessage *msg = NULL;
ret = GetMsgHdrForKey(msgKey, &msg);
if (NS_SUCCEEDED(ret) && msg)
{
ret = GetThreadContainingMsgHdr(msg, result);
NS_RELEASE(msg);
}
return ret;
}
// caller needs to unrefer.