From f137c6f1a97075fcca0c0bdeb07c2073b093719f Mon Sep 17 00:00:00 2001 From: "bienvenu%netscape.com" Date: Tue, 17 Jul 2001 01:14:45 +0000 Subject: [PATCH] fix download now for newsgroups r=naving, sr=sspitzer 89726 git-svn-id: svn://10.0.0.236/trunk@99367 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/mailnews/news/src/nsNewsFolder.cpp | 54 ++++++++++++++++++---- mozilla/mailnews/news/src/nsNewsFolder.h | 1 + 2 files changed, 46 insertions(+), 9 deletions(-) diff --git a/mozilla/mailnews/news/src/nsNewsFolder.cpp b/mozilla/mailnews/news/src/nsNewsFolder.cpp index b7c9fab1ba1..660cb6d9196 100644 --- a/mozilla/mailnews/news/src/nsNewsFolder.cpp +++ b/mozilla/mailnews/news/src/nsNewsFolder.cpp @@ -1678,12 +1678,49 @@ NS_IMETHODIMP nsMsgNewsFolder::SetSaveArticleOffline(PRBool aBool) return NS_OK; } +NS_IMETHODIMP nsMsgNewsFolder::DownloadAllForOffline(nsIUrlListener *listener, nsIMsgWindow *msgWindow) +{ + nsMsgKeyArray srcKeyArray; + + SetSaveArticleOffline(PR_TRUE); + nsresult rv; + + // build up message keys. + if (mDatabase) + { + nsCOMPtr enumerator; + rv = mDatabase->EnumerateMessages(getter_AddRefs(enumerator)); + if (NS_SUCCEEDED(rv) && enumerator) + { + PRBool hasMore; + + while (NS_SUCCEEDED(rv = enumerator->HasMoreElements(&hasMore)) && hasMore) + { + nsCOMPtr pHeader; + rv = enumerator->GetNext(getter_AddRefs(pHeader)); + NS_ASSERTION(NS_SUCCEEDED(rv), "nsMsgDBEnumerator broken"); + if (pHeader && NS_SUCCEEDED(rv)) + { + PRBool shouldStoreMsgOffline = PR_FALSE; + nsMsgKey msgKey; + pHeader->GetMessageKey(&msgKey); + MsgFitsDownloadCriteria(msgKey, &shouldStoreMsgOffline); + if (shouldStoreMsgOffline) + srcKeyArray.Add(msgKey); + } + } + } + } + DownloadNewsArticlesToOfflineStore *downloadState = new DownloadNewsArticlesToOfflineStore(msgWindow, mDatabase, nsnull); + if (downloadState) + return downloadState->DownloadArticles(msgWindow, this, &srcKeyArray); + else + return NS_ERROR_OUT_OF_MEMORY; +} + NS_IMETHODIMP nsMsgNewsFolder::DownloadMessagesForOffline(nsISupportsArray *messages, nsIMsgWindow *window) { nsMsgKeyArray srcKeyArray; -#ifdef DEBUG_bienvenu -// return DownloadAllForOffline(nsnull, window); -#endif SetSaveArticleOffline(PR_TRUE); // ### TODO need to clear this when we've finished PRUint32 count = 0; @@ -1703,12 +1740,11 @@ NS_IMETHODIMP nsMsgNewsFolder::DownloadMessagesForOffline(nsISupportsArray *mess if (NS_SUCCEEDED(rv)) srcKeyArray.Add(key); } - DownloadNewsArticlesToOfflineStore *downloadState = new DownloadNewsArticlesToOfflineStore(window, mDatabase, nsnull); - if (downloadState) - return downloadState->DownloadArticles(window, this, &srcKeyArray); - else - return NS_ERROR_OUT_OF_MEMORY; - return rv; + DownloadNewsArticlesToOfflineStore *downloadState = new DownloadNewsArticlesToOfflineStore(window, mDatabase, nsnull); + if (downloadState) + return downloadState->DownloadArticles(window, this, &srcKeyArray); + else + return NS_ERROR_OUT_OF_MEMORY; } diff --git a/mozilla/mailnews/news/src/nsNewsFolder.h b/mozilla/mailnews/news/src/nsNewsFolder.h index 8daea54a326..e6979216b23 100644 --- a/mozilla/mailnews/news/src/nsNewsFolder.h +++ b/mozilla/mailnews/news/src/nsNewsFolder.h @@ -96,6 +96,7 @@ public: NS_IMETHOD DownloadMessagesForOffline(nsISupportsArray *messages, nsIMsgWindow *window); NS_IMETHOD Compact(nsIUrlListener *aListener, nsIMsgWindow *aMsgWindow); + NS_IMETHOD DownloadAllForOffline(nsIUrlListener *listener, nsIMsgWindow *msgWindow); // for nsMsgLineBuffer virtual PRInt32 HandleLine(char *line, PRUint32 line_size);