store labels on the imap server r=naving, sr=sspitzer 114379

This commit is contained in:
bienvenu%netscape.com 2002-02-14 01:07:19 +00:00
Родитель 1e44f6eb13
Коммит b494a4bf63
2 изменённых файлов: 18 добавлений и 3 удалений

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

@ -1951,6 +1951,7 @@ nsMsgDBView::ApplyCommandToIndices(nsMsgViewCommandTypeValue command, nsMsgViewI
nsCOMPtr <nsIMsgImapMailFolder> imapFolder = do_QueryInterface(m_folder); nsCOMPtr <nsIMsgImapMailFolder> imapFolder = do_QueryInterface(m_folder);
PRBool thisIsImapFolder = (imapFolder != nsnull); PRBool thisIsImapFolder = (imapFolder != nsnull);
if (command == nsMsgViewCommandType::deleteMsg) if (command == nsMsgViewCommandType::deleteMsg)
rv = DeleteMessages(mMsgWindow, indices, numIndices, PR_FALSE); rv = DeleteMessages(mMsgWindow, indices, numIndices, PR_FALSE);
else if (command == nsMsgViewCommandType::deleteNoTrash) else if (command == nsMsgViewCommandType::deleteNoTrash)
@ -1999,6 +2000,7 @@ nsMsgDBView::ApplyCommandToIndices(nsMsgViewCommandTypeValue command, nsMsgViewI
if (thisIsImapFolder) if (thisIsImapFolder)
{ {
imapMessageFlagsType flags = kNoImapMsgFlag; imapMessageFlagsType flags = kNoImapMsgFlag;
PRBool commandIsLabelSet = PR_FALSE;
PRBool addFlags = PR_FALSE; PRBool addFlags = PR_FALSE;
PRBool isRead = PR_FALSE; PRBool isRead = PR_FALSE;
@ -2031,11 +2033,21 @@ nsMsgDBView::ApplyCommandToIndices(nsMsgViewCommandTypeValue command, nsMsgViewI
flags |= kImapMsgFlaggedFlag; flags |= kImapMsgFlaggedFlag;
addFlags = PR_FALSE; addFlags = PR_FALSE;
break; break;
case nsMsgViewCommandType::label0:
case nsMsgViewCommandType::label1:
case nsMsgViewCommandType::label2:
case nsMsgViewCommandType::label3:
case nsMsgViewCommandType::label4:
case nsMsgViewCommandType::label5:
flags |= ((command - nsMsgViewCommandType::label0) << 9);
addFlags = (command != nsMsgViewCommandType::label0);
commandIsLabelSet = PR_TRUE;
break;
default: default:
break; break;
} }
if (flags != kNoImapMsgFlag) // can't get here without thisIsImapThreadPane == TRUE if (flags != kNoImapMsgFlag || commandIsLabelSet) // can't get here without thisIsImapThreadPane == TRUE
imapFolder->StoreImapFlags(flags, addFlags, imapUids.GetArray(), imapUids.GetSize()); imapFolder->StoreImapFlags(flags, addFlags, imapUids.GetArray(), imapUids.GetSize());
} }

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

@ -1212,8 +1212,11 @@ int nsParseMailMessageState::FinalizeHeaders()
m_newMsgHdr->SetPriority(priorityFlags); m_newMsgHdr->SetPriority(priorityFlags);
// convert the flag values (0xE000000) to label values (0-5) // convert the flag values (0xE000000) to label values (0-5)
if (mozstatus2) // only do this if we have a mozstatus2 header
{
labelFlags = ((flags & MSG_FLAG_LABELS) >> 25); labelFlags = ((flags & MSG_FLAG_LABELS) >> 25);
m_newMsgHdr->SetLabel(labelFlags); m_newMsgHdr->SetLabel(labelFlags);
}
if (delta < 0xffff) if (delta < 0xffff)
{ /* Only use if fits in 16 bits. */ { /* Only use if fits in 16 bits. */
m_newMsgHdr->SetStatusOffset((PRUint16) delta); m_newMsgHdr->SetStatusOffset((PRUint16) delta);