зеркало из https://github.com/mozilla/pjs.git
get top level reference threading working
This commit is contained in:
Родитель
64353113d8
Коммит
a8a6b0bda5
|
@ -225,12 +225,12 @@ protected:
|
||||||
// prefs stuff - in future, we might want to cache the prefs interface
|
// prefs stuff - in future, we might want to cache the prefs interface
|
||||||
nsresult GetBoolPref(const char *prefName, PRBool *result);
|
nsresult GetBoolPref(const char *prefName, PRBool *result);
|
||||||
// retrieval methods
|
// retrieval methods
|
||||||
nsMsgThread * GetThreadForReference(const char * msgID);
|
nsMsgThread * GetThreadForReference(nsString2 &msgID);
|
||||||
nsMsgThread * GetThreadForSubject(const char * subject);
|
nsMsgThread * GetThreadForSubject(const char * subject);
|
||||||
nsMsgThread * GetThreadForMsgKey(nsMsgKey msgKey);
|
nsMsgThread * GetThreadForMsgKey(nsMsgKey msgKey);
|
||||||
nsMsgThread * GetThreadForThreadId(nsMsgKey threadId);
|
nsMsgThread * GetThreadForThreadId(nsMsgKey threadId);
|
||||||
nsMsgHdr * GetMsgHdrForReference(const char *reference);
|
nsMsgHdr * GetMsgHdrForReference(nsString2 &reference);
|
||||||
nsMsgHdr * GetMsgHdrForMessageID(const char *msgID);
|
nsMsgHdr * GetMsgHdrForMessageID(nsString2 &msgID);
|
||||||
nsMsgThread * GetThreadContainingMsgHdr(nsMsgHdr *msgHdr);
|
nsMsgThread * GetThreadContainingMsgHdr(nsMsgHdr *msgHdr);
|
||||||
// threading interfaces
|
// threading interfaces
|
||||||
virtual nsresult CreateNewThread(nsMsgKey key, nsMsgThread **newThread);
|
virtual nsresult CreateNewThread(nsMsgKey key, nsMsgThread **newThread);
|
||||||
|
|
|
@ -2236,7 +2236,7 @@ nsresult nsMsgDatabase::CreateNewThread(nsMsgKey threadId, nsMsgThread **pnewThr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
nsMsgThread *nsMsgDatabase::GetThreadForReference(const char * msgID)
|
nsMsgThread *nsMsgDatabase::GetThreadForReference(nsString2 &msgID)
|
||||||
{
|
{
|
||||||
nsMsgHdr *msgHdr = GetMsgHdrForMessageID(msgID);
|
nsMsgHdr *msgHdr = GetMsgHdrForMessageID(msgID);
|
||||||
nsMsgThread *thread = NULL;
|
nsMsgThread *thread = NULL;
|
||||||
|
@ -2285,7 +2285,7 @@ nsresult nsMsgDatabase::ThreadNewHdr(nsMsgHdr* newHdr, PRBool &newThread)
|
||||||
if (reference.Length() == 0)
|
if (reference.Length() == 0)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if ((thread = GetThreadForReference(reference.GetBuffer())) != NULL)
|
if ((thread = GetThreadForReference(reference)) != NULL)
|
||||||
{
|
{
|
||||||
thread->GetThreadKey(&threadId);
|
thread->GetThreadKey(&threadId);
|
||||||
newHdr->SetThreadId(threadId);
|
newHdr->SetThreadId(threadId);
|
||||||
|
@ -2329,16 +2329,16 @@ nsresult nsMsgDatabase::AddToThread(nsMsgHdr *newHdr, nsMsgThread *thread, PRBoo
|
||||||
return thread->AddChild(newHdr, threadInThread);
|
return thread->AddChild(newHdr, threadInThread);
|
||||||
}
|
}
|
||||||
|
|
||||||
nsMsgHdr * nsMsgDatabase::GetMsgHdrForReference(const char *reference)
|
nsMsgHdr * nsMsgDatabase::GetMsgHdrForReference(nsString2 &reference)
|
||||||
{
|
{
|
||||||
NS_ASSERTION(PR_FALSE, "not implemented yet.");
|
NS_ASSERTION(PR_FALSE, "not implemented yet.");
|
||||||
return nsnull;
|
return nsnull;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsMsgHdr * nsMsgDatabase::GetMsgHdrForMessageID(const char *msgID)
|
nsMsgHdr * nsMsgDatabase::GetMsgHdrForMessageID(nsString2 &msgID)
|
||||||
{
|
{
|
||||||
nsIEnumerator* hdrs;
|
nsIEnumerator* hdrs;
|
||||||
nsMsgHdr *pHeader = nsnull;
|
nsIMessage *pHeader = nsnull;
|
||||||
|
|
||||||
nsresult rv = EnumerateMessages(&hdrs);
|
nsresult rv = EnumerateMessages(&hdrs);
|
||||||
if (NS_FAILED(rv))
|
if (NS_FAILED(rv))
|
||||||
|
@ -2352,12 +2352,14 @@ nsMsgHdr * nsMsgDatabase::GetMsgHdrForMessageID(const char *msgID)
|
||||||
|
|
||||||
nsString messageId;
|
nsString messageId;
|
||||||
(void)pHeader->GetMessageId(messageId);
|
(void)pHeader->GetMessageId(messageId);
|
||||||
if (!nsCRT::strcmp(messageId, msgID))
|
if (msgID.Equals(messageId, PR_FALSE))
|
||||||
break;
|
break;
|
||||||
NS_RELEASE(pHeader);
|
NS_RELEASE(pHeader);
|
||||||
pHeader = nsnull;
|
pHeader = nsnull;
|
||||||
}
|
}
|
||||||
return pHeader;
|
nsMsgHdr* msgHdr = NS_STATIC_CAST(nsMsgHdr*, pHeader); // closed system, cast ok
|
||||||
|
|
||||||
|
return msgHdr;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsMsgThread * nsMsgDatabase::GetThreadContainingMsgHdr(nsMsgHdr *msgHdr)
|
nsMsgThread * nsMsgDatabase::GetThreadContainingMsgHdr(nsMsgHdr *msgHdr)
|
||||||
|
|
|
@ -252,6 +252,8 @@ NS_IMETHODIMP nsMsgHdr::GetStringReference(PRInt32 refNum, nsString2 &resultRefe
|
||||||
for (refIndex = 0; refIndex <= refNum && startNextRef; refIndex++)
|
for (refIndex = 0; refIndex <= refNum && startNextRef; refIndex++)
|
||||||
{
|
{
|
||||||
startNextRef = GetNextReference(startNextRef, resultReference);
|
startNextRef = GetNextReference(startNextRef, resultReference);
|
||||||
|
if (refIndex == refNum)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (refIndex != refNum)
|
if (refIndex != refNum)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче