break out UpdateFolder method from GetMessages

This commit is contained in:
bienvenu%netscape.com 1999-09-14 04:02:34 +00:00
parent a8a9325142
commit 3456144dd5
11 changed files with 41 additions and 29 deletions

View File

@ -51,6 +51,8 @@ interface nsIMsgFolder : nsIFolder {
nsISimpleEnumerator GetMessages();
nsISimpleEnumerator GetThreads();
/* get new headers for db */
void UpdateFolder();
nsIMsgThread GetThreadForMessage(in nsIMessage message);
boolean HasMessage(in nsIMessage message);
nsIEnumerator GetVisibleSubFolders();

View File

@ -276,6 +276,12 @@ nsMsgFolder::GetMessages(nsISimpleEnumerator* *result)
return NS_ERROR_FAILURE;
}
NS_IMETHODIMP
nsMsgFolder::UpdateFolder()
{
return NS_OK;
}
NS_IMETHODIMP
nsMsgFolder::GetThreads(nsISimpleEnumerator ** threadEnumerator)
{

View File

@ -92,6 +92,8 @@ public:
NS_IMETHOD ReplaceElement(nsISupports* element, nsISupports* newElement);
NS_IMETHOD GetVisibleSubFolders(nsIEnumerator* *result);
NS_IMETHOD GetMessages(nsISimpleEnumerator* *result);
NS_IMETHOD UpdateFolder();
NS_IMETHOD GetThreads(nsISimpleEnumerator ** threadEnumerator);
NS_IMETHOD GetThreadForMessage(nsIMessage *message, nsIMsgThread **thread);
NS_IMETHOD HasMessage(nsIMessage *message, PRBool *hasMessage);

View File

@ -79,6 +79,7 @@ ComposeBEGetStringByIDREAL(PRInt32 stringID)
nsIStringBundle* sBundle = nsnull;
res = sBundleService->CreateBundle(url, locale, &sBundle);
#endif
NS_RELEASE(sBundle);
if (NS_FAILED(res))
{
return PL_strdup("???"); // Don't I18N this string...failsafe return value
@ -92,6 +93,7 @@ ComposeBEGetStringByIDREAL(PRInt32 stringID)
#else
res = sBundle->GetStringFromID(stringID, v);
#endif
NS_RELEASE(sBundle);
if (NS_FAILED(res))
{
char buf[128];

View File

@ -143,6 +143,9 @@ NS_IMETHODIMP nsMsgDatabase::NotifyKeyDeletedAll(nsMsgKey keyDeleted, nsMsgKey p
NS_IMETHODIMP nsMsgDatabase::NotifyKeyAddedAll(nsMsgKey keyAdded, nsMsgKey parentKey, PRInt32 flags,
nsIDBChangeListener *instigator)
{
#ifdef DEBUG_bienvenu1
printf("notifying add of %ld parent %ld\n", keyAdded, parentKey);
#endif
if (m_ChangeListeners == nsnull)
return NS_OK;
for (PRInt32 i = 0; i < m_ChangeListeners->Count(); i++)

View File

@ -411,12 +411,11 @@ nsresult nsImapMailFolder::GetDatabase()
return folderOpen;
}
NS_IMETHODIMP nsImapMailFolder::GetMessages(nsISimpleEnumerator* *result)
NS_IMETHODIMP
nsImapMailFolder::UpdateFolder()
{
nsresult rv = NS_ERROR_NULL_POINTER;
PRBool selectFolder = PR_FALSE;
if (result)
*result = nsnull;
NS_WITH_SERVICE(nsIImapService, imapService, kCImapService, &rv);
@ -455,7 +454,15 @@ NS_IMETHODIMP nsImapMailFolder::GetMessages(nsISimpleEnumerator* *result)
rv = imapService->SelectFolder(eventQ, this, this, nsnull, nsnull);
m_urlRunning = PR_TRUE;
}
return rv;
}
NS_IMETHODIMP nsImapMailFolder::GetMessages(nsISimpleEnumerator* *result)
{
if (result)
*result = nsnull;
nsresult rv = UpdateFolder();
if(NS_SUCCEEDED(rv))
{
nsCOMPtr<nsISimpleEnumerator> msgHdrEnumerator;
@ -2904,7 +2911,6 @@ nsImapMailFolder::CreateDirectoryForFolder(nsFileSpec &path) //** dup
return rv;
nsFileSpec tempPath(path.GetNativePathCString(), PR_TRUE); // create incoming directories.
// need bienvenu to fix this for real - the intent of this line is a mystery to sfraser and I
//If that doesn't exist, then we have to create this directory
if(!path.IsDirectory())

View File

@ -106,6 +106,7 @@ public:
NS_IMETHOD AddUnique(nsISupports* element);
NS_IMETHOD ReplaceElement(nsISupports* element, nsISupports* newElement);
NS_IMETHOD GetMessages(nsISimpleEnumerator* *result);
NS_IMETHOD UpdateFolder();
NS_IMETHOD CreateSubfolder(const char *folderName);

View File

@ -500,6 +500,12 @@ nsresult nsMsgLocalMailFolder::GetDatabase()
return rv;
}
NS_IMETHODIMP
nsMsgLocalMailFolder::UpdateFolder()
{
return GetDatabase(); // this will cause a reparse, if needed.
}
NS_IMETHODIMP
nsMsgLocalMailFolder::GetMessages(nsISimpleEnumerator* *result)
{

View File

@ -85,7 +85,7 @@ public:
NS_IMETHOD AddUnique(nsISupports* element);
NS_IMETHOD ReplaceElement(nsISupports* element, nsISupports* newElement);
NS_IMETHOD GetMessages(nsISimpleEnumerator* *result);
NS_IMETHOD UpdateFolder();
NS_IMETHOD CreateSubfolder(const char *folderName);

View File

@ -369,39 +369,22 @@ nsresult nsMsgNewsFolder::GetDatabase()
return NS_OK;
}
NS_IMETHODIMP
nsMsgNewsFolder::UpdateFolder()
{
return GetNewMessages();
}
NS_IMETHODIMP
nsMsgNewsFolder::GetMessages(nsISimpleEnumerator* *result)
{
#ifdef DEBUG_NEWS
printf("nsMsgNewsFolder::GetMessages(%s)\n",mURI);
#endif
// number_to_show is a tempory hack to allow newsgroups
// with thousands of message to work. the way it works is
// we return a cropped enumerator back to to the caller
// instead of the full one. This gets around the problem
// where tree layout (and probably other things) don't scale
PRInt32 number_to_show;
nsresult rv = NS_OK;
NS_WITH_SERVICE(nsIPref, prefs, kPrefServiceCID, &rv);
if (NS_SUCCEEDED(rv) && prefs) {
rv = prefs->GetIntPref(PREF_NEWS_MAX_HEADERS_TO_SHOW, &number_to_show);
if (NS_FAILED(rv)) {
// failed to get the pref...show them all the headers
number_to_show = 0;
}
}
else {
// failed to get pref service...show them all headers
number_to_show = 0;
}
// if the user asks for a negative value, I'll just ignore them
if (number_to_show < 0) {
number_to_show = 0;
}
rv = GetDatabase();
*result = nsnull;

View File

@ -54,6 +54,7 @@ public:
NS_IMETHOD AddUnique(nsISupports* element);
NS_IMETHOD ReplaceElement(nsISupports* element, nsISupports* newElement);
NS_IMETHOD GetMessages(nsISimpleEnumerator* *result);
NS_IMETHOD UpdateFolder();
NS_IMETHOD CreateSubfolder(const char *folderName);