From 34b81cf0335caacc5c6c313a35a649797e8b226a Mon Sep 17 00:00:00 2001 From: "pkw%us.ibm.com" Date: Mon, 12 Jul 2004 23:43:14 +0000 Subject: [PATCH] Bug 201055 - Automatic mail collection does not work with movemail r=pkwarren@gmail.com, sr=mscott@mozilla.org, a=sspitzer@mozilla.org Patch contributed by Michael Malcom . --- .../local/src/nsMovemailIncomingServer.cpp | 82 +++++++++++++++++++ mailnews/local/src/nsMovemailIncomingServer.h | 3 + 2 files changed, 85 insertions(+) diff --git a/mailnews/local/src/nsMovemailIncomingServer.cpp b/mailnews/local/src/nsMovemailIncomingServer.cpp index a140d35ca066..7ddeefcb536c 100644 --- a/mailnews/local/src/nsMovemailIncomingServer.cpp +++ b/mailnews/local/src/nsMovemailIncomingServer.cpp @@ -80,6 +80,72 @@ nsMovemailIncomingServer::GetLocalStoreType(char **type) return NS_OK; } +NS_IMETHODIMP +nsMovemailIncomingServer::PerformBiff(nsIMsgWindow *aMsgWindow) +{ + nsresult rv; + nsCOMPtr movemailService(do_GetService( + kCMovemailServiceCID, &rv)); + if (NS_FAILED(rv)) return rv; + nsCOMPtr inbox; + nsCOMPtr rootMsgFolder; + nsCOMPtr urlListener; + rv = GetRootMsgFolder(getter_AddRefs(rootMsgFolder)); + if(NS_SUCCEEDED(rv) && rootMsgFolder) + { + PRUint32 numFolders; + rv = rootMsgFolder->GetFoldersWithFlag(MSG_FOLDER_FLAG_INBOX, 1, + &numFolders, + getter_AddRefs(inbox)); + if (NS_FAILED(rv) || numFolders != 1) return rv; + } + + SetPerformingBiff(PR_TRUE); + urlListener = do_QueryInterface(inbox); + + PRBool downloadOnBiff = PR_FALSE; + rv = GetDownloadOnBiff(&downloadOnBiff); + if (downloadOnBiff) + { + nsCOMPtr localInbox = do_QueryInterface(inbox, + &rv); + if (localInbox && NS_SUCCEEDED(rv)) + { + PRBool valid = PR_FALSE; + nsCOMPtr db; + rv = inbox->GetMsgDatabase(aMsgWindow, getter_AddRefs(db)); + if (NS_SUCCEEDED(rv) && db) + { + rv = db->GetSummaryValid(&valid); + } + if (NS_SUCCEEDED(rv) && valid) + { + rv = movemailService->GetNewMail(aMsgWindow, urlListener, inbox, + this, nsnull); + } + else + { + PRBool isLocked; + inbox->GetLocked(&isLocked); + if (!isLocked) + { + rv = localInbox->ParseFolder(aMsgWindow, urlListener); + } + if (NS_SUCCEEDED(rv)) + { + rv = localInbox->SetCheckForNewMessagesAfterParsing(PR_TRUE); + } + } + } + } + else + { + movemailService->CheckForNewMail(urlListener, inbox, this, nsnull); + } + + return NS_OK; +} + NS_IMETHODIMP nsMovemailIncomingServer::SetFlagsOnDefaultMailboxes() { @@ -183,6 +249,14 @@ nsMovemailIncomingServer::GetNewMail(nsIMsgWindow *aMsgWindow, return rv; } +NS_IMETHODIMP +nsMovemailIncomingServer::GetDownloadMessagesAtStartup(PRBool *getMessagesAtStartup) +{ + NS_ENSURE_ARG_POINTER(getMessagesAtStartup); + *getMessagesAtStartup = PR_TRUE; + return NS_OK; +} + NS_IMETHODIMP nsMovemailIncomingServer::GetCanSearchMessages(PRBool *canSearchMessages) { @@ -191,6 +265,14 @@ nsMovemailIncomingServer::GetCanSearchMessages(PRBool *canSearchMessages) return NS_OK; } +NS_IMETHODIMP +nsMovemailIncomingServer::GetServerRequiresPasswordForBiff(PRBool *aServerRequiresPasswordForBiff) +{ + NS_ENSURE_ARG_POINTER(aServerRequiresPasswordForBiff); + *aServerRequiresPasswordForBiff = PR_FALSE; + return NS_OK; +} + NS_IMETHODIMP nsMovemailIncomingServer::GetAccountManagerChrome(nsAString& aResult) { diff --git a/mailnews/local/src/nsMovemailIncomingServer.h b/mailnews/local/src/nsMovemailIncomingServer.h index 3b25f8ceef4f..8a610ef82e01 100644 --- a/mailnews/local/src/nsMovemailIncomingServer.h +++ b/mailnews/local/src/nsMovemailIncomingServer.h @@ -60,7 +60,10 @@ public: NS_IMETHOD GetIsSecureServer(PRBool *aIsSecureServer); NS_IMETHOD GetLocalStoreType(char * *type); + NS_IMETHOD PerformBiff(nsIMsgWindow *aMsgWindow); + NS_IMETHOD GetDownloadMessagesAtStartup(PRBool *getMessages); NS_IMETHOD GetCanSearchMessages(PRBool *canSearchMessages); + NS_IMETHOD GetServerRequiresPasswordForBiff(PRBool *aServerRequiresPasswordForBiff); NS_IMETHOD GetAccountManagerChrome(nsAString& aResult); };