зеркало из https://github.com/mozilla/pjs.git
get downloading newsgroups for offline use working better, r=naving, sr=mscott 84061
This commit is contained in:
Родитель
18c55e9e85
Коммит
97edea9175
|
@ -818,11 +818,7 @@ nsresult nsMsgSearchOfflineNews::OpenSummaryFile ()
|
|||
nsCOMPtr <nsIDBFolderInfo> folderInfo;
|
||||
nsCOMPtr <nsIMsgFolder> scopeFolder;
|
||||
err = m_scope->GetFolder(getter_AddRefs(scopeFolder));
|
||||
nsCOMPtr <nsIFileSpec> pathSpec;
|
||||
err= scopeFolder->GetPath(getter_AddRefs(pathSpec));
|
||||
PRBool exists=PR_FALSE;
|
||||
err = pathSpec->Exists(&exists);
|
||||
if (!exists) return NS_ERROR_FILE_NOT_FOUND;
|
||||
// code here used to check if offline store existed, which breaks offline news.
|
||||
if (NS_SUCCEEDED(err) && scopeFolder)
|
||||
err = scopeFolder->GetMsgDatabase(nsnull, &m_db);
|
||||
return err;
|
||||
|
|
|
@ -671,23 +671,25 @@ nsresult nsMsgSearchSession::TimeSliceSerial (PRBool *aDone)
|
|||
// disk, this is the fastest way to do it.
|
||||
|
||||
NS_ENSURE_ARG(aDone);
|
||||
|
||||
nsMsgSearchScopeTerm *scope = GetRunningScope();
|
||||
nsresult rv = NS_OK;
|
||||
nsMsgSearchScopeTerm *scope = GetRunningScope();
|
||||
if (scope)
|
||||
{
|
||||
scope->TimeSlice (aDone);
|
||||
if (*aDone)
|
||||
rv = scope->TimeSlice (aDone);
|
||||
if (NS_FAILED(rv))
|
||||
*aDone = PR_TRUE;
|
||||
if (*aDone || NS_FAILED(rv))
|
||||
{
|
||||
ReleaseFolderDBRef();
|
||||
m_idxRunningScope++;
|
||||
// if (m_idxRunningScope < m_scopeList.Count())
|
||||
// UpdateStatusBar (MK_MSG_SEARCH_STATUS);
|
||||
}
|
||||
}
|
||||
*aDone = PR_FALSE;
|
||||
return NS_OK;
|
||||
return rv;
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
*aDone = PR_TRUE;
|
||||
return NS_OK;
|
||||
}
|
||||
|
|
|
@ -95,13 +95,13 @@ nsNewsDownloader::nsNewsDownloader(nsIMsgWindow *window, nsIMsgDatabase *msgDB,
|
|||
|
||||
nsNewsDownloader::~nsNewsDownloader()
|
||||
{
|
||||
if (m_listener)
|
||||
m_listener->OnStopRunningUrl(/* don't have a url */nsnull, m_status);
|
||||
if (m_newsDB)
|
||||
{
|
||||
m_newsDB->Commit(nsMsgDBCommitType::kLargeCommit);
|
||||
m_newsDB = nsnull;
|
||||
}
|
||||
if (m_listener)
|
||||
m_listener->OnStopRunningUrl(/* don't have a url */nsnull, m_status);
|
||||
if (m_newsDB)
|
||||
{
|
||||
m_newsDB->Commit(nsMsgDBCommitType::kLargeCommit);
|
||||
m_newsDB = nsnull;
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsNewsDownloader::OnStartRunningUrl(nsIURI* url)
|
||||
|
@ -246,52 +246,52 @@ NS_IMETHODIMP DownloadNewsArticlesToOfflineStore::OnStartRunningUrl(nsIURI* url)
|
|||
|
||||
NS_IMETHODIMP DownloadNewsArticlesToOfflineStore::OnStopRunningUrl(nsIURI* url, nsresult exitCode)
|
||||
{
|
||||
m_status = exitCode;
|
||||
if (m_newsHeader != nsnull)
|
||||
{
|
||||
m_status = exitCode;
|
||||
if (m_newsHeader != nsnull)
|
||||
{
|
||||
#ifdef DEBUG_bienvenu
|
||||
// XP_Trace("finished retrieving %ld\n", m_newsHeader->GetMessageKey());
|
||||
// XP_Trace("finished retrieving %ld\n", m_newsHeader->GetMessageKey());
|
||||
#endif
|
||||
if (m_newsDB)
|
||||
{
|
||||
if (m_newsDB)
|
||||
{
|
||||
nsMsgKey msgKey;
|
||||
m_newsHeader->GetMessageKey(&msgKey);
|
||||
m_newsDB->MarkMarked(msgKey, PR_FALSE, nsnull);
|
||||
}
|
||||
}
|
||||
m_newsHeader = nsnull;
|
||||
return nsNewsDownloader::OnStopRunningUrl(url, exitCode);
|
||||
m_newsDB->MarkMarked(msgKey, PR_FALSE, nsnull);
|
||||
}
|
||||
}
|
||||
m_newsHeader = nsnull;
|
||||
return nsNewsDownloader::OnStopRunningUrl(url, exitCode);
|
||||
}
|
||||
|
||||
int DownloadNewsArticlesToOfflineStore::FinishDownload()
|
||||
{
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP nsNewsDownloader::OnSearchHit(nsIMsgDBHdr *header, nsIMsgFolder *folder)
|
||||
{
|
||||
NS_ENSURE_ARG(header);
|
||||
|
||||
|
||||
|
||||
PRUint32 msgFlags;
|
||||
header->GetFlags(&msgFlags);
|
||||
// only need to download articles we don't already have...
|
||||
if (! (msgFlags & MSG_FLAG_OFFLINE))
|
||||
{
|
||||
// only need to download articles we don't already have...
|
||||
if (! (msgFlags & MSG_FLAG_OFFLINE))
|
||||
{
|
||||
nsMsgKey key;
|
||||
header->GetMessageKey(&key);
|
||||
m_keysToDownload.Add(key);
|
||||
m_keysToDownload.Add(key);
|
||||
#ifdef HAVE_PORT
|
||||
char *statusTemplate = XP_GetString (MK_MSG_ARTICLES_TO_RETRIEVE);
|
||||
char *statusString = PR_smprintf (statusTemplate, (long) newsArticleState->m_keysToDownload.GetSize());
|
||||
if (statusString)
|
||||
{
|
||||
FE_Progress (newsArticleState->m_context, statusString);
|
||||
XP_FREE(statusString);
|
||||
}
|
||||
char *statusTemplate = XP_GetString (MK_MSG_ARTICLES_TO_RETRIEVE);
|
||||
char *statusString = PR_smprintf (statusTemplate, (long) newsArticleState->m_keysToDownload.GetSize());
|
||||
if (statusString)
|
||||
{
|
||||
FE_Progress (newsArticleState->m_context, statusString);
|
||||
XP_FREE(statusString);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -316,14 +316,14 @@ NS_IMETHODIMP nsNewsDownloader::OnNewSearch()
|
|||
|
||||
int DownloadNewsArticlesToOfflineStore::StartDownload()
|
||||
{
|
||||
m_newsDB->GetMsgHdrForKey(m_keyToDownload, getter_AddRefs(m_newsHeader));
|
||||
return 0;
|
||||
m_newsDB->GetMsgHdrForKey(m_keyToDownload, getter_AddRefs(m_newsHeader));
|
||||
return 0;
|
||||
}
|
||||
|
||||
DownloadNewsArticlesToOfflineStore::DownloadNewsArticlesToOfflineStore(nsIMsgWindow *window, nsIMsgDatabase *db, nsIUrlListener *listener)
|
||||
: nsNewsDownloader(window, db, listener)
|
||||
{
|
||||
m_newsDB = db;
|
||||
m_newsDB = db;
|
||||
}
|
||||
|
||||
DownloadNewsArticlesToOfflineStore::~DownloadNewsArticlesToOfflineStore()
|
||||
|
@ -335,10 +335,10 @@ DownloadMatchingNewsArticlesToNewsDB::DownloadMatchingNewsArticlesToNewsDB
|
|||
nsIUrlListener *listener) :
|
||||
DownloadNewsArticlesToOfflineStore(window, newsDB, listener)
|
||||
{
|
||||
m_window = window;
|
||||
m_folder = folder;
|
||||
m_newsDB = newsDB;
|
||||
m_downloadFromKeys = PR_TRUE; // search term matching means downloadFromKeys.
|
||||
m_window = window;
|
||||
m_folder = folder;
|
||||
m_newsDB = newsDB;
|
||||
m_downloadFromKeys = PR_TRUE; // search term matching means downloadFromKeys.
|
||||
}
|
||||
|
||||
DownloadMatchingNewsArticlesToNewsDB::~DownloadMatchingNewsArticlesToNewsDB()
|
||||
|
@ -357,10 +357,13 @@ nsMsgDownloadAllNewsgroups::nsMsgDownloadAllNewsgroups(nsIMsgWindow *window, nsI
|
|||
m_window = window;
|
||||
m_listener = listener;
|
||||
m_downloaderForGroup = new DownloadMatchingNewsArticlesToNewsDB(window, nsnull, nsnull, this);
|
||||
NS_IF_ADDREF(m_downloaderForGroup);
|
||||
m_downloadedHdrsForCurGroup = PR_FALSE;
|
||||
}
|
||||
|
||||
nsMsgDownloadAllNewsgroups::~nsMsgDownloadAllNewsgroups()
|
||||
{
|
||||
NS_IF_RELEASE(m_downloaderForGroup);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgDownloadAllNewsgroups::OnStartRunningUrl(nsIURI* url)
|
||||
|
@ -373,7 +376,17 @@ nsMsgDownloadAllNewsgroups::OnStopRunningUrl(nsIURI* url, nsresult exitCode)
|
|||
{
|
||||
nsresult rv = exitCode;
|
||||
if (NS_SUCCEEDED(exitCode) || exitCode == NS_MSG_NEWS_ARTICLE_NOT_FOUND)
|
||||
rv = ProcessNextGroup();
|
||||
{
|
||||
if (m_downloadedHdrsForCurGroup)
|
||||
{
|
||||
rv = DownloadMsgsForCurrentGroup();
|
||||
m_downloadedHdrsForCurGroup = PR_FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
rv = ProcessNextGroup();
|
||||
}
|
||||
}
|
||||
else if (m_listener) // notify main observer.
|
||||
m_listener->OnStopRunningUrl(url, exitCode);
|
||||
|
||||
|
@ -489,7 +502,7 @@ nsresult DownloadMatchingNewsArticlesToNewsDB::RunSearch(nsIMsgFolder *folder, n
|
|||
|
||||
searchSession->RegisterListener(this);
|
||||
rv = searchSession->AddScopeTerm(nsMsgSearchScope::localNews, folder);
|
||||
return searchSession->Search(m_window);
|
||||
return searchSession->Search(m_window);
|
||||
}
|
||||
|
||||
nsresult nsMsgDownloadAllNewsgroups::ProcessNextGroup()
|
||||
|
@ -513,12 +526,17 @@ nsresult nsMsgDownloadAllNewsgroups::ProcessNextGroup()
|
|||
if (m_listener)
|
||||
return m_listener->OnStopRunningUrl(nsnull, NS_OK);
|
||||
}
|
||||
m_downloadedHdrsForCurGroup = PR_TRUE;
|
||||
return m_currentFolder->GetNewMessages(m_window, this);
|
||||
}
|
||||
|
||||
nsresult nsMsgDownloadAllNewsgroups::DownloadMsgsForCurrentGroup()
|
||||
{
|
||||
nsCOMPtr <nsIMsgDatabase> db;
|
||||
nsCOMPtr <nsISupportsArray> termList;
|
||||
nsCOMPtr <nsIMsgDownloadSettings> downloadSettings;
|
||||
m_currentFolder->GetMsgDatabase(m_window, getter_AddRefs(db));
|
||||
rv = m_currentFolder->GetDownloadSettings(getter_AddRefs(downloadSettings));
|
||||
nsresult rv = m_currentFolder->GetDownloadSettings(getter_AddRefs(downloadSettings));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr <nsIMsgNewsFolder> newsFolder = do_QueryInterface(m_currentFolder);
|
||||
|
|
|
@ -52,42 +52,42 @@
|
|||
class nsNewsDownloader : public nsIUrlListener, public nsIMsgSearchNotify
|
||||
{
|
||||
public:
|
||||
nsNewsDownloader(nsIMsgWindow *window, nsIMsgDatabase *db, nsIUrlListener *listener);
|
||||
virtual ~nsNewsDownloader();
|
||||
nsNewsDownloader(nsIMsgWindow *window, nsIMsgDatabase *db, nsIUrlListener *listener);
|
||||
virtual ~nsNewsDownloader();
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSIURLLISTENER
|
||||
NS_DECL_NSIMSGSEARCHNOTIFY
|
||||
|
||||
virtual nsresult DownloadArticles(nsIMsgWindow *window, nsIMsgFolder *folder, nsMsgKeyArray *pKeyArray);
|
||||
|
||||
PRBool ShouldAbort() const { return m_abort; }
|
||||
virtual nsresult DownloadArticles(nsIMsgWindow *window, nsIMsgFolder *folder, nsMsgKeyArray *pKeyArray);
|
||||
|
||||
PRBool ShouldAbort() const { return m_abort; }
|
||||
|
||||
protected:
|
||||
virtual PRInt32 Write(const char * /*block*/, PRInt32 length) {return length;}
|
||||
virtual void Abort();
|
||||
virtual void Complete();
|
||||
virtual PRBool GetNextHdrToRetrieve();
|
||||
virtual nsresult DownloadNext(PRBool firstTimeP);
|
||||
virtual PRInt32 FinishDownload() {return 0;}
|
||||
virtual PRInt32 StartDownload() {return 0;}
|
||||
virtual PRInt32 Write(const char * /*block*/, PRInt32 length) {return length;}
|
||||
virtual void Abort();
|
||||
virtual void Complete();
|
||||
virtual PRBool GetNextHdrToRetrieve();
|
||||
virtual nsresult DownloadNext(PRBool firstTimeP);
|
||||
virtual PRInt32 FinishDownload() {return 0;}
|
||||
virtual PRInt32 StartDownload() {return 0;}
|
||||
virtual nsresult ShowProgress(const PRUnichar *progressString, PRInt32 percent);
|
||||
|
||||
nsMsgKeyArray m_keysToDownload;
|
||||
PRBool m_downloadFromKeys;
|
||||
nsCOMPtr <nsIMsgFolder> m_folder;
|
||||
nsCOMPtr <nsIMsgDatabase> m_newsDB;
|
||||
nsMsgKeyArray m_keysToDownload;
|
||||
nsCOMPtr <nsIMsgFolder> m_folder;
|
||||
nsCOMPtr <nsIMsgDatabase> m_newsDB;
|
||||
nsCOMPtr <nsIUrlListener> m_listener;
|
||||
PRBool m_existedP;
|
||||
PRBool m_wroteAnyP;
|
||||
PRBool m_summaryValidP;
|
||||
PRInt32 m_numwrote;
|
||||
nsMsgKey m_keyToDownload;
|
||||
nsCOMPtr <nsIMsgWindow> m_window;
|
||||
PRPackedBool m_downloadFromKeys;
|
||||
PRPackedBool m_existedP;
|
||||
PRPackedBool m_wroteAnyP;
|
||||
PRPackedBool m_summaryValidP;
|
||||
PRPackedBool m_abort;
|
||||
PRInt32 m_numwrote;
|
||||
nsMsgKey m_keyToDownload;
|
||||
nsCOMPtr <nsIMsgWindow> m_window;
|
||||
nsCOMPtr <nsIMsgStatusFeedback> m_statusFeedback;
|
||||
nsCOMPtr <nsIMsgSearchSession> m_searchSession;
|
||||
nsresult m_status;
|
||||
PRBool m_abort;
|
||||
nsresult m_status;
|
||||
};
|
||||
|
||||
|
||||
|
@ -95,19 +95,18 @@ protected:
|
|||
class DownloadNewsArticlesToOfflineStore : public nsNewsDownloader
|
||||
{
|
||||
public:
|
||||
DownloadNewsArticlesToOfflineStore(nsIMsgWindow *window, nsIMsgDatabase *db, nsIUrlListener *listener);
|
||||
virtual ~DownloadNewsArticlesToOfflineStore();
|
||||
DownloadNewsArticlesToOfflineStore(nsIMsgWindow *window, nsIMsgDatabase *db, nsIUrlListener *listener);
|
||||
virtual ~DownloadNewsArticlesToOfflineStore();
|
||||
|
||||
NS_IMETHOD OnStartRunningUrl(nsIURI* url);
|
||||
NS_IMETHOD OnStopRunningUrl(nsIURI* url, nsresult exitCode);
|
||||
protected:
|
||||
virtual PRInt32 StartDownload();
|
||||
virtual PRInt32 FinishDownload();
|
||||
virtual PRBool GetNextHdrToRetrieve();
|
||||
virtual PRInt32 StartDownload();
|
||||
virtual PRInt32 FinishDownload();
|
||||
virtual PRBool GetNextHdrToRetrieve();
|
||||
|
||||
nsCOMPtr <nsISimpleEnumerator> m_headerEnumerator;
|
||||
nsCOMPtr <nsIMsgDBHdr> m_newsHeader;
|
||||
// MsgDocument *m_dbWriteDocument;
|
||||
nsCOMPtr <nsISimpleEnumerator> m_headerEnumerator;
|
||||
nsCOMPtr <nsIMsgDBHdr> m_newsHeader;
|
||||
};
|
||||
|
||||
// class for downloading all the articles that match the passed in search criteria
|
||||
|
@ -115,8 +114,8 @@ protected:
|
|||
class DownloadMatchingNewsArticlesToNewsDB : public DownloadNewsArticlesToOfflineStore
|
||||
{
|
||||
public:
|
||||
DownloadMatchingNewsArticlesToNewsDB(nsIMsgWindow *window, nsIMsgFolder *folder, nsIMsgDatabase *newsDB, nsIUrlListener *listener);
|
||||
virtual ~DownloadMatchingNewsArticlesToNewsDB();
|
||||
DownloadMatchingNewsArticlesToNewsDB(nsIMsgWindow *window, nsIMsgFolder *folder, nsIMsgDatabase *newsDB, nsIUrlListener *listener);
|
||||
virtual ~DownloadMatchingNewsArticlesToNewsDB();
|
||||
nsresult RunSearch(nsIMsgFolder *folder, nsIMsgDatabase *newsDB, nsIMsgSearchSession *searchSession);
|
||||
protected:
|
||||
};
|
||||
|
@ -137,10 +136,11 @@ public:
|
|||
protected:
|
||||
nsresult AdvanceToNextServer(PRBool *done);
|
||||
nsresult AdvanceToNextGroup(PRBool *done);
|
||||
nsresult DownloadMsgsForCurrentGroup();
|
||||
|
||||
DownloadMatchingNewsArticlesToNewsDB *m_downloaderForGroup;
|
||||
|
||||
nsCOMPtr <nsIMsgFolder> m_currentFolder;
|
||||
nsCOMPtr <nsIMsgFolder> m_currentFolder;
|
||||
nsCOMPtr <nsIMsgWindow> m_window;
|
||||
nsCOMPtr <nsISupportsArray> m_allServers;
|
||||
nsCOMPtr <nsISupportsArray> m_allFolders;
|
||||
|
@ -148,6 +148,8 @@ protected:
|
|||
nsCOMPtr <nsIEnumerator> m_serverEnumerator;
|
||||
nsCOMPtr <nsIUrlListener> m_listener;
|
||||
nsCOMPtr <nsISupportsArray> m_termList;
|
||||
|
||||
PRBool m_downloadedHdrsForCurGroup;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -971,16 +971,15 @@ nsMsgNewsFolder::DeleteMessages(nsISupportsArray *messages, nsIMsgWindow *aMsgWi
|
|||
|
||||
NS_IMETHODIMP nsMsgNewsFolder::GetNewMessages(nsIMsgWindow *aMsgWindow, nsIUrlListener *aListener)
|
||||
{
|
||||
NS_ASSERTION(aListener == nsnull, "news can't currently listen for this finishing");
|
||||
return GetNewsMessages(aMsgWindow, PR_FALSE);
|
||||
return GetNewsMessages(aMsgWindow, PR_FALSE, aListener);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgNewsFolder::GetNextNMessages(nsIMsgWindow *aMsgWindow)
|
||||
{
|
||||
return GetNewsMessages(aMsgWindow, PR_TRUE);
|
||||
return GetNewsMessages(aMsgWindow, PR_TRUE, nsnull);
|
||||
}
|
||||
|
||||
nsresult nsMsgNewsFolder::GetNewsMessages(nsIMsgWindow *aMsgWindow, PRBool aGetOld)
|
||||
nsresult nsMsgNewsFolder::GetNewsMessages(nsIMsgWindow *aMsgWindow, PRBool aGetOld, nsIUrlListener *aUrlListener)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
|
@ -990,7 +989,7 @@ nsresult nsMsgNewsFolder::GetNewsMessages(nsIMsgWindow *aMsgWindow, PRBool aGetO
|
|||
|
||||
if (isNewsServer) {
|
||||
// get new messages only works on a newsgroup, not a news server
|
||||
return NS_OK;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsCOMPtr <nsINntpService> nntpService = do_GetService(NS_NNTPSERVICE_CONTRACTID, &rv);
|
||||
|
@ -1000,7 +999,14 @@ nsresult nsMsgNewsFolder::GetNewsMessages(nsIMsgWindow *aMsgWindow, PRBool aGetO
|
|||
rv = GetNntpServer(getter_AddRefs(nntpServer));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = nntpService->GetNewNews(nntpServer, mURI, aGetOld, this, aMsgWindow, nsnull);
|
||||
nsCOMPtr <nsIURI> resultUri;
|
||||
rv = nntpService->GetNewNews(nntpServer, mURI, aGetOld, this, aMsgWindow, getter_AddRefs(resultUri));
|
||||
if (aUrlListener && NS_SUCCEEDED(rv) && resultUri)
|
||||
{
|
||||
nsCOMPtr<nsIMsgMailNewsUrl> msgUrl (do_QueryInterface(resultUri));
|
||||
if (msgUrl)
|
||||
msgUrl->RegisterListener(aUrlListener);
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
|
|
@ -131,29 +131,29 @@ protected:
|
|||
PRInt32 RememberLine(const char *line);
|
||||
nsresult RememberUnsubscribedGroup(const char *newsgroup, const char *setStr);
|
||||
nsresult ForgetLine(void);
|
||||
nsresult GetNewsMessages(nsIMsgWindow *aMsgWindow, PRBool getOld);
|
||||
nsresult GetNewsMessages(nsIMsgWindow *aMsgWindow, PRBool getOld, nsIUrlListener *aListener);
|
||||
|
||||
PRInt32 HandleNewsrcLine(char *line, PRUint32 line_size);
|
||||
virtual const char *GetIncomingServerType() {return "nntp";}
|
||||
virtual nsresult CreateBaseMessageURI(const char *aURI);
|
||||
|
||||
nsByteArray m_newsrcInputStream;
|
||||
nsByteArray m_newsrcInputStream;
|
||||
|
||||
protected:
|
||||
PRUint32 mExpungedBytes;
|
||||
PRBool mGettingNews;
|
||||
PRBool mInitialized;
|
||||
nsISupportsArray *mMessages;
|
||||
nsCString mOptionLines;
|
||||
nsCString mUnsubscribedNewsgroupLines;
|
||||
PRBool m_downloadMessageForOfflineUse;
|
||||
nsMsgKeySet *mReadSet;
|
||||
PRUint32 mExpungedBytes;
|
||||
PRBool mGettingNews;
|
||||
PRBool mInitialized;
|
||||
nsISupportsArray *mMessages;
|
||||
nsCString mOptionLines;
|
||||
nsCString mUnsubscribedNewsgroupLines;
|
||||
PRBool m_downloadMessageForOfflineUse;
|
||||
nsMsgKeySet *mReadSet;
|
||||
|
||||
nsCOMPtr<nsIFileSpec> mNewsrcFilePath;
|
||||
nsCOMPtr<nsIFileSpec> mNewsrcFilePath;
|
||||
|
||||
// used for auth news
|
||||
char *mGroupUsername;
|
||||
char *mGroupPassword;
|
||||
// used for auth news
|
||||
char *mGroupUsername;
|
||||
char *mGroupPassword;
|
||||
|
||||
// the name of the newsgroup.
|
||||
char *mAsciiName;
|
||||
|
|
Загрузка…
Ссылка в новой задаче