From a61a384aaa49477a50bbfa2895e5a9bc710ebdff Mon Sep 17 00:00:00 2001 From: "jefft%netscape.com" Date: Tue, 13 Jul 1999 20:14:55 +0000 Subject: [PATCH] more on copy service -- rework on CopyMessages(), CopyFileMessage() interface git-svn-id: svn://10.0.0.236/trunk@39193 18797224-902f-48f8-a5cc-f745e15eee43 --- .../mailnews/local/src/nsLocalMailFolder.cpp | 25 +++++++++++-------- .../mailnews/local/src/nsLocalMailFolder.h | 12 +++++---- 2 files changed, 22 insertions(+), 15 deletions(-) diff --git a/mozilla/mailnews/local/src/nsLocalMailFolder.cpp b/mozilla/mailnews/local/src/nsLocalMailFolder.cpp index 552d9c4f35a..a1392212ba5 100644 --- a/mozilla/mailnews/local/src/nsLocalMailFolder.cpp +++ b/mozilla/mailnews/local/src/nsLocalMailFolder.cpp @@ -1153,7 +1153,7 @@ nsMsgLocalMailFolder::DeleteMessages(nsISupportsArray *messages, &rv); if (NS_SUCCEEDED(rv)) return copyService->CopyMessages(this, messages, trashFolder, - PR_TRUE, nsnull, nsnull, txnMgr); + PR_TRUE, nsnull, txnMgr); } return rv; } @@ -1192,7 +1192,8 @@ nsMsgLocalMailFolder::SetTransactionManager(nsITransactionManager* txnMgr) nsresult nsMsgLocalMailFolder::InitCopyState(nsISupports* aSupport, nsISupportsArray* messages, - PRBool isMove) + PRBool isMove, + nsIMsgCopyServiceListener* listener) { nsresult rv = NS_OK; nsFileSpec path; @@ -1239,6 +1240,8 @@ nsMsgLocalMailFolder::InitCopyState(nsISupports* aSupport, mCopyState->curCopyIndex = 0; mCopyState->isMove = isMove; rv = messages->Count(&mCopyState->totalMsgCount); + if (listener) + mCopyState->listener = do_QueryInterface(listener, &rv); done: @@ -1266,7 +1269,8 @@ nsMsgLocalMailFolder::ClearCopyState() NS_IMETHODIMP nsMsgLocalMailFolder::CopyMessages(nsIMsgFolder* srcFolder, nsISupportsArray* messages, PRBool isMove, - nsITransactionManager* txnMgr) + nsITransactionManager* txnMgr, + nsIMsgCopyServiceListener* listener) { if (!srcFolder || !messages) return NS_ERROR_NULL_POINTER; @@ -1276,7 +1280,7 @@ nsMsgLocalMailFolder::CopyMessages(nsIMsgFolder* srcFolder, nsISupportsArray* nsCOMPtr aSupport(do_QueryInterface(srcFolder, &rv)); if (NS_FAILED(rv)) return rv; - rv = InitCopyState(aSupport, messages, isMove); + rv = InitCopyState(aSupport, messages, isMove, listener); if (NS_FAILED(rv)) return rv; // undo stuff @@ -1312,9 +1316,9 @@ nsMsgLocalMailFolder::CopyMessages(nsIMsgFolder* srcFolder, nsISupportsArray* NS_IMETHODIMP nsMsgLocalMailFolder::CopyFileMessage(nsIFileSpec* fileSpec, nsIMessage* - msgToReplace, PRBool isDraft, - nsISupports* clientSupport, - nsITransactionManager* txnMgr) + msgToReplace, PRBool isDraftOrTemplate, + nsITransactionManager* txnMgr, + nsIMsgCopyServiceListener* listener) { nsresult rv = NS_ERROR_NULL_POINTER; if (!fileSpec) return rv; @@ -1336,10 +1340,9 @@ nsMsgLocalMailFolder::CopyFileMessage(nsIFileSpec* fileSpec, nsIMessage* messages->AppendElement(msgSupport); } - rv = InitCopyState(fileSupport, messages, msgToReplace ? PR_TRUE:PR_FALSE); + rv = InitCopyState(fileSupport, messages, msgToReplace ? PR_TRUE:PR_FALSE, + listener); if (NS_FAILED(rv)) goto done; - if (clientSupport) - mCopyState->clientSupport = do_QueryInterface(clientSupport, &rv); parseMsgState = new nsParseMailMessageState(); if (parseMsgState) @@ -1629,6 +1632,8 @@ NS_IMETHODIMP nsMsgLocalMailFolder::EndCopy(PRBool copySucceeded) if (NS_SUCCEEDED(result) && msgDb) msgDb->AddNewHdrToDB(newHdr, PR_TRUE); } + if (mCopyState->listener) + mCopyState->listener->SetMessageKey((PRUint32) mCopyState->curDstKey); } if (mTxnMgr && NS_SUCCEEDED(rv) && mCopyState->undoMsgTxn) diff --git a/mozilla/mailnews/local/src/nsLocalMailFolder.h b/mozilla/mailnews/local/src/nsLocalMailFolder.h index 5e13c669a6e..a881cf5727e 100644 --- a/mozilla/mailnews/local/src/nsLocalMailFolder.h +++ b/mozilla/mailnews/local/src/nsLocalMailFolder.h @@ -47,7 +47,7 @@ struct nsLocalMailCopyState nsCOMPtr undoMsgTxn; nsCOMPtr message; // current copy message nsCOMPtr parseMsgState; - nsCOMPtr clientSupport; // save Draft/Template listener support + nsCOMPtr listener; nsIMsgMessageService* messageService; PRBool isMove; @@ -119,10 +119,12 @@ public: nsITransactionManager *txnMgr, PRBool deleteStorage); NS_IMETHOD CopyMessages(nsIMsgFolder *srcFolder, nsISupportsArray* messages, - PRBool isMove, nsITransactionManager* txnMgr); + PRBool isMove, nsITransactionManager* txnMgr, + nsIMsgCopyServiceListener* listener); NS_IMETHOD CopyFileMessage(nsIFileSpec* fileSpec, nsIMessage* msgToReplace, - PRBool isDraft, nsISupports* clientSupport, - nsITransactionManager* txnMgr); + PRBool isDraftOrTemplate, + nsITransactionManager* txnMgr, + nsIMsgCopyServiceListener* listener); NS_IMETHOD CreateMessageFromMsgDBHdr(nsIMsgDBHdr *msgDBHdr, nsIMessage **message); NS_IMETHOD GetNewMessages(); @@ -162,7 +164,7 @@ protected: virtual const char* GetIncomingServerType() {return "pop3";} nsresult SetTransactionManager(nsITransactionManager* txnMgr); nsresult InitCopyState(nsISupports* aSupport, nsISupportsArray* messages, - PRBool isMove); + PRBool isMove, nsIMsgCopyServiceListener* listener); void ClearCopyState(); protected: