mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-10 11:55:49 +00:00
fix news to use folder cache
This commit is contained in:
parent
6cbe295674
commit
ec7fff420e
@ -31,7 +31,7 @@ public:
|
||||
static const nsIID& GetIID() { static nsIID iid = NS_INEWSDATABASE_IID; return iid; }
|
||||
|
||||
NS_IMETHOD GetUnreadSet(nsMsgKeySet **pSet) = 0;
|
||||
NS_IMETHOD SetUnreadSet(char * setStr) = 0;
|
||||
NS_IMETHOD SetUnreadSet(const char * setStr) = 0;
|
||||
};
|
||||
|
||||
#endif // nsINewsDatabase_h__
|
||||
|
@ -58,7 +58,7 @@ public:
|
||||
|
||||
// for nsINewsDatabase
|
||||
NS_IMETHOD GetUnreadSet(nsMsgKeySet **pSet);
|
||||
NS_IMETHOD SetUnreadSet(char * setStr);
|
||||
NS_IMETHOD SetUnreadSet(const char * setStr);
|
||||
|
||||
virtual nsresult ExpireUpTo(nsMsgKey expireKey);
|
||||
virtual nsresult ExpireRange(nsMsgKey startRange, nsMsgKey endRange);
|
||||
|
@ -446,7 +446,7 @@ NS_IMETHODIMP nsDBFolderInfo::SetNumNewMessages(PRInt32 numNewMessages)
|
||||
NS_IMETHODIMP nsDBFolderInfo::GetNumMessages(PRInt32 *result)
|
||||
{
|
||||
*result = m_numMessages;
|
||||
return NS_OK;;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsDBFolderInfo::SetNumMessages(PRInt32 numMessages)
|
||||
|
@ -383,7 +383,7 @@ NS_IMETHODIMP nsNewsDatabase::GetUnreadSet(nsMsgKeySet **pSet)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsNewsDatabase::SetUnreadSet(char * setStr)
|
||||
NS_IMETHODIMP nsNewsDatabase::SetUnreadSet(const char * setStr)
|
||||
{
|
||||
NS_ASSERTION(setStr, "no setStr!");
|
||||
if (!setStr) return NS_ERROR_NULL_POINTER;
|
||||
|
@ -310,6 +310,9 @@ nsMsgNewsFolder::GetSubFolders(nsIEnumerator* *result)
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = CreateSubFolders(path);
|
||||
|
||||
// force ourselves to get initialized from cache
|
||||
UpdateSummaryTotals(PR_FALSE);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
mInitialized = PR_TRUE; // XXX do this on failure too?
|
||||
@ -350,23 +353,29 @@ nsresult nsMsgNewsFolder::GetDatabase()
|
||||
{
|
||||
folderOpen = newsDBFactory->Open(pathSpec, PR_TRUE, PR_FALSE, getter_AddRefs(mDatabase));
|
||||
#ifdef DEBUG_NEWS
|
||||
if (NS_SUCCEEDED(folderOpen)) {
|
||||
printf ("newsDBFactory->Open() succeeded\n");
|
||||
}
|
||||
else {
|
||||
printf ("newsDBFactory->Open() failed\n");
|
||||
return rv;
|
||||
}
|
||||
if (NS_SUCCEEDED(folderOpen)) {
|
||||
printf ("newsDBFactory->Open() succeeded\n");
|
||||
}
|
||||
else {
|
||||
printf ("newsDBFactory->Open() failed\n");
|
||||
return rv;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
if (mDatabase) {
|
||||
rv = mDatabase->AddListener(this);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = UpdateSummaryTotals(PR_TRUE);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsINewsDatabase> db(do_QueryInterface(mDatabase, &rv));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
rv = db->SetUnreadSet(m_unreadSet.GetBuffer());
|
||||
}
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = UpdateSummaryTotals(PR_TRUE);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
@ -375,6 +384,7 @@ nsresult nsMsgNewsFolder::GetDatabase()
|
||||
NS_IMETHODIMP
|
||||
nsMsgNewsFolder::UpdateFolder()
|
||||
{
|
||||
GetDatabase(); // want this cached...
|
||||
return GetNewMessages();
|
||||
}
|
||||
|
||||
@ -1248,16 +1258,7 @@ NS_IMETHODIMP nsMsgNewsFolder::SetUnreadSetStr(char * aUnreadSetStr)
|
||||
|
||||
if (!aUnreadSetStr) return NS_ERROR_NULL_POINTER;
|
||||
|
||||
rv = GetDatabase();
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
m_unreadSet = aUnreadSetStr;
|
||||
|
||||
NS_ASSERTION(mDatabase, "no database!");
|
||||
if (!mDatabase) return NS_ERROR_FAILURE;
|
||||
|
||||
nsCOMPtr<nsINewsDatabase> db(do_QueryInterface(mDatabase, &rv));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
rv = db->SetUnreadSet(aUnreadSetStr);
|
||||
return rv;
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -123,6 +123,10 @@ protected:
|
||||
nsISupportsArray *mMessages;
|
||||
char *mOptionLines;
|
||||
char *mHostname;
|
||||
|
||||
// cache this until we open the db.
|
||||
nsCString m_unreadSet;
|
||||
|
||||
nsCOMPtr<nsIFileSpec> mNewsrcFilePath;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user