Bug 218825, part 1: convert users of nsIFolder to nsIMsgFolder r=bienvenu sr=Henry.Jia

This commit is contained in:
neil%parkwaycc.co.uk 2003-11-11 10:19:05 +00:00
Родитель 085ad44ab6
Коммит fe0e8be7e9
48 изменённых файлов: 223 добавлений и 3156 удалений

Просмотреть файл

@ -1,90 +0,0 @@
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Netscape Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the NPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the NPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#include "nsICollection.idl"
#include "nsIFolderListener.idl"
interface nsISupportsArray;
[scriptable, uuid(75621650-0fce-11d3-8b49-006008948010)]
interface nsIFolder : nsICollection {
readonly attribute string URI;
attribute wstring name;
attribute wstring prettyName;
readonly attribute wstring abbreviatedName;
nsISupports getChildNamed(in wstring name);
attribute nsIFolder parent;
nsIEnumerator GetSubFolders();
readonly attribute boolean hasSubFolders;
void AddFolderListener(in nsIFolderListener listener);
void RemoveFolderListener(in nsIFolderListener listener);
nsIFolder FindSubFolder(in string escapedSubFolderName);
void NotifyPropertyChanged(in nsIAtom property,
in string oldValue,
in string newValue);
void NotifyIntPropertyChanged(in nsIAtom property,
in long oldValue,
in long newValue);
void NotifyBoolPropertyChanged(in nsIAtom property,
in boolean oldValue,
in boolean newValue);
void NotifyPropertyFlagChanged(in nsISupports item,
in nsIAtom property,
in unsigned long oldValue,
in unsigned long newValue);
void NotifyUnicharPropertyChanged(in nsIAtom property,
in wstring oldValue,
in wstring newValue);
void NotifyItemAdded(in nsISupports parentItem, in nsISupports item, in string viewString);
void NotifyItemDeleted(in nsISupports parentItem, in nsISupports item, in string viewString);
void NotifyFolderEvent(in nsIAtom event);
// void NotifyFolderLoaded();
// void NotifyDeleteOrMoveMessagesCompleted(in nsIFolder folder);
// lists all descendents, not just first level children
void ListDescendents(in nsISupportsArray descendents);
void Shutdown(in boolean shutdownChildren);
};

Просмотреть файл

@ -38,7 +38,7 @@
#include "nsISupports.idl"
#include "nsIAtom.idl"
interface nsIFolder;
interface nsIMsgFolder;
typedef unsigned long folderListenerNotifyFlagValue;
@ -85,10 +85,10 @@ interface nsIFolderListener : nsISupports {
in unsigned long newFlag);
const folderListenerNotifyFlagValue event = 0x80;
void OnItemEvent(in nsIFolder item, in nsIAtom event);
void OnItemEvent(in nsIMsgFolder item, in nsIAtom event);
const folderListenerNotifyFlagValue all = 0xFFFFFFFF;
// void OnFolderLoaded(in nsIFolder aFolder);
// void OnDeleteOrMoveMessagesCompleted(in nsIFolder aFolder);
// void OnFolderLoaded(in nsIMsgFolder aFolder);
// void OnDeleteOrMoveMessagesCompleted(in nsIMsgFolder aFolder);
};

Просмотреть файл

@ -189,7 +189,7 @@ interface nsIMsgAccountManager : nsISupports {
void addIncomingServerListener(in nsIIncomingServerListener serverListener);
void removeIncomingServerListener(in nsIIncomingServerListener serverListener);
// these are going away in favor of nsIFolder::NotifyEvent(in nsIAtom event);
// these are going away in favor of nsIMsgFolder::NotifyEvent(in nsIAtom event);
void notifyServerLoaded(in nsIMsgIncomingServer server);
void notifyServerUnloaded(in nsIMsgIncomingServer server);
void notifyServerChanged(in nsIMsgIncomingServer server);

Просмотреть файл

@ -40,7 +40,6 @@
#include "MailNewsTypes2.idl"
interface nsIFileSpec;
interface nsIFolder;
interface nsIMsgFolder;
interface nsIMsgFolderCache;
interface nsIMsgWindow;
@ -159,7 +158,7 @@ interface nsIMsgIncomingServer : nsISupports {
readonly attribute string serverURI;
/* the root folder for this server */
attribute nsIFolder rootFolder;
attribute nsIMsgFolder rootFolder;
/* handy accessor when we want a msg folder */
readonly attribute nsIMsgFolder rootMsgFolder;

Просмотреть файл

@ -777,7 +777,7 @@ function loadStartFolder(initialUri)
}
}
var startFolder = startFolderResource.QueryInterface(Components.interfaces.nsIFolder);
var startFolder = startFolderResource.QueryInterface(Components.interfaces.nsIMsgFolder);
SelectFolder(startFolder.URI);
// only do this on startup, when we pass in null
@ -1400,42 +1400,28 @@ function SetNextMessageAfterDelete()
gNextMessageViewIndexAfterDelete = treeSelection.currentIndex;
}
function EnsureAllAncestorsAreExpanded(tree, resource)
function EnsureFolderIndex(builder, msgFolder)
{
// get the parent of the desired folder, and then try to get
// the index of the parent in the tree
var folder = resource.QueryInterface(Components.interfaces.nsIFolder);
// if this is a server, there are no ancestors, so stop.
var msgFolder = folder.QueryInterface(Components.interfaces.nsIMsgFolder);
if (msgFolder.isServer)
return;
var parentFolderResource = RDF.GetResource(folder.parent.URI);
var folderIndex = GetFolderIndex(tree, parentFolderResource);
if (folderIndex == -1) {
// if we couldn't find the parent, recurse
EnsureAllAncestorsAreExpanded(tree, parentFolderResource);
// ok, now we should be able to find the parent
folderIndex = GetFolderIndex(tree, parentFolderResource);
}
// if the parent isn't open, open it
if (!(tree.treeBoxObject.view.isContainerOpen(folderIndex)))
tree.treeBoxObject.view.toggleOpenState(folderIndex);
// try to get the index of the folder in the tree
var index = builder.getIndexOfResource(msgFolder);
if (index == -1) {
// if we couldn't find the folder, open the parent
builder.toggleOpenState(EnsureFolderindex(builder, msgFolder.parent));
index = builder.getIndexOfResource(msgFolder);
}
return index;
}
function SelectFolder(folderUri)
{
var folderTree = GetFolderTree();
var folderResource = RDF.GetResource(folderUri);
var msgFolder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder);
// before we can select a folder, we need to make sure it is "visible"
// in the tree. to do that, we need to ensure that all its
// ancestors are expanded
EnsureAllAncestorsAreExpanded(folderTree, folderResource);
var folderIndex = GetFolderIndex(folderTree, folderResource);
var folderIndex = EnsureFolderIndex(folderTree.builderView, msgFolder);
ChangeSelection(folderTree, folderIndex);
}

Просмотреть файл

@ -502,14 +502,12 @@ nsresult nsMsgFilter::ConvertMoveToFolderValue(nsIMsgRuleAction *filterAction, n
nsCRT::free(utfNewName);
}
nsCOMPtr <nsIFolder> destIFolder;
nsCOMPtr <nsIMsgFolder> destIFolder;
if (rootFolder)
{
rootFolder->FindSubFolder(originalServerPath.get(), getter_AddRefs(destIFolder));
if (destIFolder)
{
nsCOMPtr <nsIMsgFolder> msgFolder;
msgFolder = do_QueryInterface(destIFolder);
destIFolder->GetURI(getter_Copies(folderUri));
filterAction->SetTargetFolderUri(folderUri);
moveValue.Assign(folderUri);
@ -521,7 +519,7 @@ nsresult nsMsgFilter::ConvertMoveToFolderValue(nsIMsgRuleAction *filterAction, n
// start off leaving the value the same.
filterAction->SetTargetFolderUri(moveValue.get());
nsresult rv = NS_OK;
nsCOMPtr <nsIFolder> localMailRoot;
nsCOMPtr <nsIMsgFolder> localMailRoot;
rootFolder->GetURI(getter_Copies(folderUri));
// if the root folder is not imap, than the local mail root is the server root.
// otherwise, it's the migrated local folders.

Просмотреть файл

@ -561,7 +561,7 @@ nsresult nsMsgFilterAfterTheFact::ApplyFilter()
NS_ENSURE_SUCCESS(rv, rv);
PRBool canFileMessages = PR_TRUE;
nsCOMPtr<nsIFolder> parentFolder;
nsCOMPtr<nsIMsgFolder> parentFolder;
destIFolder->GetParent(getter_AddRefs(parentFolder));
if (parentFolder)
destIFolder->GetCanFileMessages(&canFileMessages);

Просмотреть файл

@ -736,7 +736,7 @@ nsMsgSearchSession::RemoveFolderListener(nsIFolderListener *listener)
// nsIFolderListener methods.
NS_IMETHODIMP
nsMsgSearchSession::OnItemEvent(nsIFolder *aFolder,
nsMsgSearchSession::OnItemEvent(nsIMsgFolder *aFolder,
nsIAtom *aEvent)
{
PRInt32 count = m_folderListenerList.Count();

Просмотреть файл

@ -163,7 +163,7 @@ nsMessengerOS2Integration::OnItemBoolPropertyChanged(nsISupports *aItem,
}
NS_IMETHODIMP
nsMessengerOS2Integration::OnItemEvent(nsIFolder *, nsIAtom *)
nsMessengerOS2Integration::OnItemEvent(nsIMsgFolder *, nsIAtom *)
{
return NS_OK;
}

Просмотреть файл

@ -887,7 +887,7 @@ nsMessengerWinIntegration::OnItemBoolPropertyChanged(nsISupports *aItem,
}
NS_IMETHODIMP
nsMessengerWinIntegration::OnItemEvent(nsIFolder *, nsIAtom *)
nsMessengerWinIntegration::OnItemEvent(nsIMsgFolder *, nsIAtom *)
{
return NS_OK;
}

Просмотреть файл

@ -544,10 +544,10 @@ nsMsgAccountManager::createKeyedServer(const char* key,
// now add all listeners that are supposed to be
// waiting on root folders
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
rv = server->GetRootFolder(getter_AddRefs(rootFolder));
mFolderListeners->EnumerateForwards(addListenerToFolder,
(void *)(nsIFolder*)rootFolder);
(void *)(nsIMsgFolder*)rootFolder);
*aServer = server;
NS_ADDREF(*aServer);
@ -559,7 +559,7 @@ PRBool
nsMsgAccountManager::addListenerToFolder(nsISupports *element, void *data)
{
nsresult rv;
nsIFolder *rootFolder = (nsIFolder *)data;
nsIMsgFolder *rootFolder = (nsIMsgFolder *)data;
nsCOMPtr<nsIFolderListener> listener = do_QueryInterface(element, &rv);
NS_ENSURE_SUCCESS(rv, PR_TRUE);
@ -571,7 +571,7 @@ PRBool
nsMsgAccountManager::removeListenerFromFolder(nsISupports *element, void *data)
{
nsresult rv;
nsIFolder *rootFolder = (nsIFolder *)data;
nsIMsgFolder *rootFolder = (nsIMsgFolder *)data;
nsCOMPtr<nsIFolderListener> listener = do_QueryInterface(element, &rv);
NS_ENSURE_SUCCESS(rv, PR_TRUE);
@ -655,7 +655,7 @@ nsMsgAccountManager::RemoveAccount(nsIMsgAccount *aAccount)
// remove reference from hashtable
NS_IF_RELEASE(removedServer);
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
server->GetRootFolder(getter_AddRefs(rootFolder));
nsCOMPtr<nsISupportsArray> allDescendents;
NS_NewISupportsArray(getter_AddRefs(allDescendents));
@ -852,7 +852,7 @@ nsMsgAccountManager::notifyDefaultServerChange(nsIMsgAccount *aOldAccount,
nsresult rv;
nsCOMPtr<nsIMsgIncomingServer> server;
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
// first tell old server it's no longer the default
if (aOldAccount) {
@ -925,11 +925,11 @@ nsMsgAccountManager::hashUnloadServer(nsHashKey *aKey, void *aData,
nsMsgAccountManager *accountManager = (nsMsgAccountManager*)closure;
accountManager->NotifyServerUnloaded(server);
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
rv = server->GetRootFolder(getter_AddRefs(rootFolder));
accountManager->mFolderListeners->EnumerateForwards(removeListenerFromFolder,
(void *)(nsIFolder*)rootFolder);
(void *)(nsIMsgFolder*)rootFolder);
if(NS_SUCCEEDED(rv))
rootFolder->Shutdown(PR_TRUE);
@ -1023,7 +1023,7 @@ PRBool PR_CALLBACK nsMsgAccountManager::cleanupOnExit(nsHashKey *aKey, void *aDa
imapserver->GetCleanupInboxOnExit(&cleanupInboxOnExit);
if (emptyTrashOnExit || cleanupInboxOnExit)
{
nsCOMPtr<nsIFolder> root;
nsCOMPtr<nsIMsgFolder> root;
server->GetRootFolder(getter_AddRefs(root));
nsXPIDLCString type;
server->GetType(getter_Copies(type));
@ -1524,7 +1524,7 @@ nsMsgAccountManager::SetSpecialFolders()
if (folderUri && NS_SUCCEEDED(rdf->GetResource(folderUri, getter_AddRefs(res))))
{
folder = do_QueryInterface(res, &rv);
nsCOMPtr <nsIFolder> parent;
nsCOMPtr <nsIMsgFolder> parent;
if (folder && NS_SUCCEEDED(rv))
{
rv = folder->GetParent(getter_AddRefs(parent));
@ -1545,7 +1545,7 @@ nsMsgAccountManager::SetSpecialFolders()
folder = do_QueryInterface(res, &rv);
if (folder && NS_SUCCEEDED(rv))
{
nsCOMPtr <nsIFolder> parent;
nsCOMPtr <nsIMsgFolder> parent;
rv = folder->GetParent(getter_AddRefs(parent));
if (NS_SUCCEEDED(rv) && parent) // only set flag if folder is real
rv = folder->SetFlag(MSG_FOLDER_FLAG_TEMPLATES);
@ -2181,7 +2181,7 @@ nsMsgAccountManager::addListener(nsHashKey *aKey, void *element, void *aData)
nsresult rv;
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
rv = server->GetRootFolder(getter_AddRefs(rootFolder));
NS_ENSURE_SUCCESS(rv, PR_TRUE);
@ -2199,7 +2199,7 @@ nsMsgAccountManager::removeListener(nsHashKey *aKey, void *element, void *aData)
nsresult rv;
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
rv = server->GetRootFolder(getter_AddRefs(rootFolder));
NS_ENSURE_SUCCESS(rv, PR_TRUE);

Просмотреть файл

@ -895,7 +895,7 @@ nsMsgAccountManagerDataSource::createServerResources(nsISupports *element,
nsCOMPtr<nsIMsgIncomingServer> server = do_QueryInterface(element, &rv);
if (NS_FAILED(rv)) return PR_TRUE;
nsCOMPtr <nsIFolder> serverFolder;
nsCOMPtr <nsIMsgFolder> serverFolder;
rv = server->GetRootFolder(getter_AddRefs(serverFolder));
if(NS_FAILED(rv)) return PR_TRUE;
@ -1259,7 +1259,7 @@ nsMsgAccountManagerDataSource::OnServerLoaded(nsIMsgIncomingServer* aServer)
{
nsresult rv;
nsCOMPtr<nsIFolder> serverFolder;
nsCOMPtr<nsIMsgFolder> serverFolder;
rv = aServer->GetRootFolder(getter_AddRefs(serverFolder));
if (NS_FAILED(rv)) return rv;
@ -1292,7 +1292,7 @@ nsMsgAccountManagerDataSource::OnServerUnloaded(nsIMsgIncomingServer* aServer)
{
nsresult rv;
nsCOMPtr<nsIFolder> serverFolder;
nsCOMPtr<nsIMsgFolder> serverFolder;
rv = aServer->GetRootFolder(getter_AddRefs(serverFolder));
if (NS_FAILED(rv)) return rv;
@ -1375,7 +1375,7 @@ nsMsgAccountManagerDataSource::OnItemBoolPropertyChanged(nsISupports *aItem,
}
nsresult
nsMsgAccountManagerDataSource::OnItemEvent(nsIFolder *, nsIAtom *)
nsMsgAccountManagerDataSource::OnItemEvent(nsIMsgFolder *, nsIAtom *)
{
return NS_OK;
}

Просмотреть файл

@ -501,7 +501,6 @@ nsMsgCopyService::CopyFolders( nsISupportsArray* folders,
nsCopySource* copySource = nsnull;
nsresult rv = NS_ERROR_NULL_POINTER;
PRUint32 cnt;
nsCOMPtr<nsIFolder> folder;
nsCOMPtr<nsIMsgFolder> curFolder;
nsCOMPtr<nsISupports> support;
@ -520,10 +519,7 @@ nsMsgCopyService::CopyFolders( nsISupportsArray* folders,
isMove, listener, window, PR_FALSE);
NS_ENSURE_SUCCESS(rv,rv);
folder = do_QueryInterface(support, &rv);
NS_ENSURE_SUCCESS(rv, rv);
curFolder = do_QueryInterface(folder, &rv);
curFolder = do_QueryInterface(support, &rv);
NS_ENSURE_SUCCESS(rv, rv);
copySource = copyRequest->AddNewCopySource(curFolder);

Просмотреть файл

@ -365,8 +365,6 @@ nsFolderCompactState::FinishCompact()
// All okay time to finish up the compact process
nsresult rv = NS_OK;
nsCOMPtr<nsIFileSpec> pathSpec;
nsCOMPtr<nsIFolder> parent;
nsCOMPtr<nsIMsgFolder> parentFolder;
nsCOMPtr<nsIDBFolderInfo> folderInfo;
nsFileSpec fileSpec;

Просмотреть файл

@ -951,7 +951,7 @@ nsMsgFolderDataSource::OnItemPropertyFlagChanged(nsISupports *item,
nsresult rv = NS_OK;
if (kBiffStateAtom == property) {
// for Incoming biff (to turn it on) the item is of type nsIFolder (see nsMsgFolder::SetBiffState)
// for Incoming biff (to turn it on) the item is of type nsIMsgFolder (see nsMsgFolder::SetBiffState)
// for clearing the biff the item is of type nsIMsgDBHdr (see nsMsgDBFolder::OnKeyChange)
// so check for both of these here
nsCOMPtr<nsIMsgFolder> folder(do_QueryInterface(item));
@ -980,7 +980,7 @@ nsMsgFolderDataSource::OnItemPropertyFlagChanged(nsISupports *item,
}
NS_IMETHODIMP
nsMsgFolderDataSource::OnItemEvent(nsIFolder *aFolder, nsIAtom *aEvent)
nsMsgFolderDataSource::OnItemEvent(nsIMsgFolder *aFolder, nsIAtom *aEvent)
{
return NS_OK;
}
@ -2175,14 +2175,13 @@ nsresult nsMsgFolderDataSource::DoFolderHasAssertion(nsIMsgFolder *folder,
if((kNC_Child == property))
{
nsCOMPtr<nsIFolder> childFolder(do_QueryInterface(target, &rv));
nsCOMPtr<nsIMsgFolder> childFolder(do_QueryInterface(target, &rv));
if(NS_SUCCEEDED(rv))
{
nsCOMPtr<nsIFolder> folderasFolder(do_QueryInterface(folder));
nsCOMPtr<nsIFolder> childsParent;
nsCOMPtr<nsIMsgFolder> childsParent;
rv = childFolder->GetParent(getter_AddRefs(childsParent));
*hasAssertion = (NS_SUCCEEDED(rv) && childsParent && folderasFolder
&& (childsParent.get() == folderasFolder.get()));
*hasAssertion = (NS_SUCCEEDED(rv) && childsParent && folder
&& (childsParent.get() == folder));
}
}
else if ((kNC_Name == property) ||

Просмотреть файл

@ -248,7 +248,7 @@ NS_IMETHODIMP nsMsgMailSession::OnItemRemoved(nsISupports *parentItem, nsISuppor
}
NS_IMETHODIMP nsMsgMailSession::OnItemEvent(nsIFolder *aFolder,
NS_IMETHODIMP nsMsgMailSession::OnItemEvent(nsIMsgFolder *aFolder,
nsIAtom *aEvent)
{
PRInt32 count = mListeners.Count();

Просмотреть файл

@ -273,7 +273,7 @@ nsStatusBarBiffManager::OnItemPropertyFlagChanged(nsISupports *item, nsIAtom *pr
}
NS_IMETHODIMP
nsStatusBarBiffManager::OnItemEvent(nsIFolder *item, nsIAtom *event)
nsStatusBarBiffManager::OnItemEvent(nsIMsgFolder *item, nsIAtom *event)
{
return NS_OK;
}

Просмотреть файл

@ -43,7 +43,6 @@
#include "nsCRT.h"
#include "nsXPIDLString.h"
#include "nsReadableUtils.h"
#include "nsIFolder.h"
#include "prmem.h"
#include "rdf.h"

Просмотреть файл

@ -132,7 +132,7 @@ NS_IMETHODIMP nsMsgDBFolder::Shutdown(PRBool shutdownChildren)
{
for (PRUint32 i = 0; i < count; i++)
{
nsCOMPtr<nsIFolder> childFolder = do_QueryElementAt(mSubFolders, i);
nsCOMPtr<nsIMsgFolder> childFolder = do_QueryElementAt(mSubFolders, i);
if(childFolder)
childFolder->Shutdown(PR_TRUE);
}
@ -1399,7 +1399,7 @@ nsMsgDBFolder::AutoCompact(nsIMsgWindow *aWindow)
PRInt32 localExpungedBytes = 0;
do
{
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
rv = server->GetRootFolder(getter_AddRefs(rootFolder));
if(NS_SUCCEEDED(rv) && rootFolder)
{

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -126,14 +126,14 @@ nsMsgIncomingServer::SetKey(const char * serverKey)
}
NS_IMETHODIMP
nsMsgIncomingServer::SetRootFolder(nsIFolder * aRootFolder)
nsMsgIncomingServer::SetRootFolder(nsIMsgFolder * aRootFolder)
{
m_rootFolder = aRootFolder;
return NS_OK;
}
NS_IMETHODIMP
nsMsgIncomingServer::GetRootFolder(nsIFolder * *aRootFolder)
nsMsgIncomingServer::GetRootFolder(nsIMsgFolder * *aRootFolder)
{
if (!aRootFolder)
return NS_ERROR_NULL_POINTER;
@ -154,12 +154,16 @@ NS_IMETHODIMP
nsMsgIncomingServer::GetRootMsgFolder(nsIMsgFolder **aRootMsgFolder)
{
NS_ENSURE_ARG_POINTER(aRootMsgFolder);
nsCOMPtr <nsIFolder> rootFolder;
nsresult rv = GetRootFolder(getter_AddRefs(rootFolder));
if (NS_SUCCEEDED(rv) && rootFolder)
rv = rootFolder->QueryInterface(NS_GET_IID(nsIMsgFolder), (void **) aRootMsgFolder);
return rv;
if (!m_rootFolder)
{
nsresult rv = CreateRootFolder();
if (NS_FAILED(rv))
return rv;
}
NS_IF_ADDREF(*aRootMsgFolder = m_rootFolder);
return NS_OK;
}
NS_IMETHODIMP
@ -689,7 +693,7 @@ nsMsgIncomingServer::SetPrettyName(const PRUnichar *value)
{
SetUnicharValue("name", value);
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
GetRootFolder(getter_AddRefs(rootFolder));
if (rootFolder)

Просмотреть файл

@ -43,7 +43,7 @@
#include "nsIPrefBranch.h"
#include "nsIMsgFilterList.h"
#include "msgCore.h"
#include "nsIFolder.h"
#include "nsIMsgFolder.h"
#include "nsCOMPtr.h"
#include "nsWeakReference.h"
#include "nsIMsgDatabase.h"
@ -82,7 +82,7 @@ protected:
NS_IMETHOD SetPrefPassword(const char * aPassword);
PRBool PasswordProtectLocalCache();
nsCOMPtr <nsIFolder> m_rootFolder;
nsCOMPtr <nsIMsgFolder> m_rootFolder;
nsCOMPtr <nsIMsgRetentionSettings> m_retentionSettings;
nsCOMPtr <nsIMsgDownloadSettings> m_downloadSettings;
nsresult getDefaultCharPref(const char *pref, char **);

Просмотреть файл

@ -554,7 +554,7 @@ nsresult GetExistingFolder(const char *aFolderURI, nsIMsgFolder **aFolder)
NS_ENSURE_SUCCESS(rv, rv);
// Parent doesn't exist means that this folder doesn't exist.
nsCOMPtr<nsIFolder> parentFolder;
nsCOMPtr<nsIMsgFolder> parentFolder;
rv = thisFolder->GetParent(getter_AddRefs(parentFolder));
if (NS_SUCCEEDED(rv) && parentFolder)
NS_ADDREF(*aFolder = thisFolder);
@ -673,7 +673,7 @@ GetOrCreateFolder(const nsACString &aURI, nsIUrlListener *aListener)
rv = server->GetMsgFolderFromURI(folderResource, nsCAutoString(aURI).get(), getter_AddRefs(msgFolder));
NS_ENSURE_SUCCESS(rv,rv);
nsCOMPtr <nsIFolder> parent;
nsCOMPtr <nsIMsgFolder> parent;
rv = msgFolder->GetParent(getter_AddRefs(parent));
if (NS_FAILED(rv) || !parent)
{

Просмотреть файл

@ -44,7 +44,7 @@
#include "nsMsgFolderFlags.h"
#include "nsIMsgFolder.h"
#include "nsIMsgAccountManager.h"
#include "nsIFolder.h"
#include "nsIMsgFolder.h"
#include "nsISupportsArray.h"
#include "nsIMsgIncomingServer.h"
#include "nsISupports.h"
@ -383,7 +383,7 @@ nsMsgCopy::CreateIfMissing(nsIMsgFolder **folder, PRBool *waitForUrl)
nsresult ret = NS_OK;
if (folder && *folder)
{
nsCOMPtr <nsIFolder> parent;
nsCOMPtr <nsIMsgFolder> parent;
(*folder)->GetParent(getter_AddRefs(parent));
if (!parent)
{
@ -503,13 +503,8 @@ LocateMessageFolder(nsIMsgIdentity *userIdentity,
if ( NS_FAILED(rv) || (!serverURI) || !(*serverURI) )
continue;
nsCOMPtr <nsIFolder> folder;
rv = inServer->GetRootFolder(getter_AddRefs(folder));
if (NS_FAILED(rv) || (!folder))
continue;
nsCOMPtr<nsIMsgFolder> rootFolder;
rootFolder = do_QueryInterface(folder, &rv);
rv = inServer->GetRootFolder(getter_AddRefs(rootFolder));
if(NS_FAILED(rv) || (!rootFolder))
continue;

Просмотреть файл

@ -947,13 +947,8 @@ nsImapIncomingServer::PerformExpand(nsIMsgWindow *aMsgWindow)
rv = ResetFoldersToUnverified(nsnull);
nsCOMPtr<nsIFolder> rootFolder;
rv = GetRootFolder(getter_AddRefs(rootFolder));
if (NS_FAILED(rv)) return rv;
if (!rootFolder) return NS_ERROR_FAILURE;
nsCOMPtr<nsIMsgFolder> rootMsgFolder = do_QueryInterface(rootFolder,
&rv);
nsCOMPtr<nsIMsgFolder> rootMsgFolder;
rv = GetRootFolder(getter_AddRefs(rootMsgFolder));
if (NS_FAILED(rv)) return rv;
if (!rootMsgFolder) return NS_ERROR_FAILURE;
@ -1038,7 +1033,6 @@ NS_IMETHODIMP nsImapIncomingServer::GetIsPFC(const char *folderName, PRBool *res
NS_IMETHODIMP nsImapIncomingServer::GetPFC(PRBool createIfMissing, nsIMsgFolder **pfcFolder)
{
nsresult rv;
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgAccountManager> accountManager =
do_GetService(NS_MSGACCOUNTMANAGER_CONTRACTID, &rv);
if (NS_SUCCEEDED(rv))
@ -1121,15 +1115,11 @@ NS_IMETHODIMP nsImapIncomingServer::PossibleImapMailbox(const char *folderPath,
if (!folderPath || !*folderPath || !aNewFolder) return NS_ERROR_NULL_POINTER;
*aNewFolder = PR_FALSE;
nsCOMPtr<nsIFolder> rootFolder;
rv = GetRootFolder(getter_AddRefs(rootFolder));
nsCOMPtr<nsIMsgFolder> a_nsIFolder;
rv = GetRootFolder(getter_AddRefs(a_nsIFolder));
if(NS_FAILED(rv))
return rv;
nsCOMPtr<nsIMsgFolder> a_nsIFolder(do_QueryInterface(rootFolder, &rv));
if (NS_FAILED(rv))
return rv;
nsCAutoString dupFolderPath(folderPath);
if (dupFolderPath.Last() == hierarchyDelimiter)
@ -1146,15 +1136,12 @@ NS_IMETHODIMP nsImapIncomingServer::PossibleImapMailbox(const char *folderPath,
if (a_nsIFolder && !dupFolderPath.IsEmpty())
{
nsCOMPtr<nsIMsgFolder> msgFolder;
nsCOMPtr<nsIFolder> subFolder;
PRBool isNamespace = PR_FALSE;
PRBool noSelect = PR_FALSE;
rv = a_nsIFolder->FindSubFolder(dupFolderPath.get(), getter_AddRefs(subFolder));
rv = a_nsIFolder->FindSubFolder(dupFolderPath.get(), getter_AddRefs(msgFolder));
NS_ENSURE_SUCCESS(rv,rv);
msgFolder = do_QueryInterface(subFolder, &rv);
m_subscribeFolders.AppendObject(msgFolder);
NS_ENSURE_SUCCESS(rv,rv);
noSelect = (boxFlags & kNoselect) != 0;
nsCOMPtr<nsIMsgImapMailFolder> imapFolder = do_QueryInterface(msgFolder, &rv);
NS_ENSURE_SUCCESS(rv,rv);
@ -1349,7 +1336,7 @@ NS_IMETHODIMP nsImapIncomingServer::PossibleImapMailbox(const char *folderPath,
NS_IMETHODIMP nsImapIncomingServer::AddFolderRights(const char *mailboxName, const char *userName, const char *rights)
{
nsCOMPtr <nsIFolder> rootFolder;
nsCOMPtr <nsIMsgFolder> rootFolder;
nsresult rv = GetRootFolder(getter_AddRefs(rootFolder));
if(NS_SUCCEEDED(rv) && rootFolder)
{
@ -1368,7 +1355,7 @@ NS_IMETHODIMP nsImapIncomingServer::AddFolderRights(const char *mailboxName, con
NS_IMETHODIMP nsImapIncomingServer::FolderNeedsACLInitialized(const char *folderPath, PRBool *aNeedsACLInitialized)
{
NS_ENSURE_ARG_POINTER(aNeedsACLInitialized);
nsCOMPtr <nsIFolder> rootFolder;
nsCOMPtr <nsIMsgFolder> rootFolder;
nsresult rv = GetRootFolder(getter_AddRefs(rootFolder));
if(NS_SUCCEEDED(rv) && rootFolder)
{
@ -1391,7 +1378,7 @@ NS_IMETHODIMP nsImapIncomingServer::FolderNeedsACLInitialized(const char *folder
NS_IMETHODIMP nsImapIncomingServer::RefreshFolderRights(const char *folderPath)
{
nsCOMPtr <nsIFolder> rootFolder;
nsCOMPtr <nsIMsgFolder> rootFolder;
nsresult rv = GetRootFolder(getter_AddRefs(rootFolder));
if(NS_SUCCEEDED(rv) && rootFolder)
{
@ -1586,7 +1573,7 @@ nsresult nsImapIncomingServer::GetFolder(const char* name, nsIMsgFolder** pFolde
nsresult rv = NS_ERROR_NULL_POINTER;
if (!name || !*name || !pFolder) return rv;
*pFolder = nsnull;
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
rv = GetRootFolder(getter_AddRefs(rootFolder));
if (NS_SUCCEEDED(rv) && rootFolder)
{
@ -1646,9 +1633,7 @@ NS_IMETHODIMP nsImapIncomingServer::OnlineFolderRename(nsIMsgWindow *msgWindow,
}
else // root is the parent
{
nsCOMPtr<nsIFolder> rootFolder;
rv = GetRootFolder(getter_AddRefs(rootFolder));
parent = do_QueryInterface(rootFolder,&rv);
rv = GetRootFolder(getter_AddRefs(parent));
}
if (NS_SUCCEEDED(rv) && parent)
{
@ -1695,7 +1680,7 @@ NS_IMETHODIMP nsImapIncomingServer::FolderIsNoSelect(const char *aFolderName, P
NS_IMETHODIMP nsImapIncomingServer::SetFolderAdminURL(const char *aFolderName, const char *aFolderAdminUrl)
{
nsCOMPtr <nsIFolder> rootFolder;
nsCOMPtr <nsIMsgFolder> rootFolder;
nsresult rv = GetRootFolder(getter_AddRefs(rootFolder));
if(NS_SUCCEEDED(rv) && rootFolder)
{
@ -1715,11 +1700,11 @@ NS_IMETHODIMP nsImapIncomingServer::FolderVerifiedOnline(const char *folderName
{
NS_ENSURE_ARG_POINTER(aResult);
*aResult = PR_FALSE;
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
nsresult rv = GetRootFolder(getter_AddRefs(rootFolder));
if (NS_SUCCEEDED(rv) && rootFolder)
{
nsCOMPtr<nsIFolder> aFolder;
nsCOMPtr<nsIMsgFolder> aFolder;
rv = rootFolder->FindSubFolder(folderName, getter_AddRefs(aFolder));
if (NS_SUCCEEDED(rv) && aFolder)
{
@ -1738,15 +1723,11 @@ NS_IMETHODIMP nsImapIncomingServer::DiscoveryDone()
if (mDoingSubscribeDialog)
return NS_OK;
nsCOMPtr<nsIFolder> rootFolder;
rv = GetRootFolder(getter_AddRefs(rootFolder));
if (NS_SUCCEEDED(rv) && rootFolder)
nsCOMPtr<nsIMsgFolder> rootMsgFolder;
rv = GetRootFolder(getter_AddRefs(rootMsgFolder));
if (NS_SUCCEEDED(rv) && rootMsgFolder)
{
if (NS_FAILED(rv))
return rv;
nsCOMPtr<nsIMsgFolder> rootMsgFolder = do_QueryInterface(rootFolder, &rv);
if (rootMsgFolder)
rootMsgFolder->SetPrefFlag();
rootMsgFolder->SetPrefFlag();
// Verify there is only one trash folder. Another might be present if
// the trash name has been changed.
@ -1794,7 +1775,7 @@ NS_IMETHODIMP nsImapIncomingServer::DiscoveryDone()
unverifiedFolders->GetElementAt(k, getter_AddRefs(element));
nsCOMPtr<nsIMsgImapMailFolder> currentImapFolder = do_QueryInterface(element, &rv);
nsCOMPtr<nsIFolder> currentFolder = do_QueryInterface(element, &rv);
nsCOMPtr<nsIMsgFolder> currentFolder = do_QueryInterface(element, &rv);
if (NS_FAILED(rv))
continue;
if ((NS_SUCCEEDED(currentImapFolder->GetExplicitlyVerify(&explicitlyVerify)) && explicitlyVerify) ||
@ -1820,7 +1801,7 @@ NS_IMETHODIMP nsImapIncomingServer::DiscoveryDone()
return rv;
}
nsresult nsImapIncomingServer::DeleteNonVerifiedFolders(nsIFolder *curFolder)
nsresult nsImapIncomingServer::DeleteNonVerifiedFolders(nsIMsgFolder *curFolder)
{
PRBool autoUnsubscribeFromNoSelectFolders = PR_TRUE;
nsresult rv;
@ -1981,8 +1962,7 @@ nsresult nsImapIncomingServer::DeleteNonVerifiedFolders(nsIFolder *curFolder)
#endif // 0
nsCOMPtr<nsIFolder> parent;
nsCOMPtr<nsIMsgFolder> msgFolder = do_QueryInterface(curFolder);
nsCOMPtr<nsIMsgFolder> parent;
rv = curFolder->GetParent(getter_AddRefs(parent));
@ -1990,13 +1970,13 @@ nsresult nsImapIncomingServer::DeleteNonVerifiedFolders(nsIFolder *curFolder)
{
nsCOMPtr<nsIMsgImapMailFolder> imapParent = do_QueryInterface(parent);
if (imapParent)
imapParent->RemoveSubFolder(msgFolder);
imapParent->RemoveSubFolder(curFolder);
}
return rv;
}
PRBool nsImapIncomingServer::NoDescendentsAreVerified(nsIFolder *parentFolder)
PRBool nsImapIncomingServer::NoDescendentsAreVerified(nsIMsgFolder *parentFolder)
{
PRBool nobodyIsVerified = PR_TRUE;
@ -2020,7 +2000,7 @@ PRBool nsImapIncomingServer::NoDescendentsAreVerified(nsIFolder *parentFolder)
nsCOMPtr <nsIMsgImapMailFolder> childImapFolder = do_QueryInterface(child, &rv);
if (NS_SUCCEEDED(rv) && childImapFolder)
{
nsCOMPtr <nsIFolder> childFolder = do_QueryInterface(child, &rv);
nsCOMPtr <nsIMsgFolder> childFolder = do_QueryInterface(child, &rv);
rv = childImapFolder->GetVerifiedAsOnlineFolder(&childVerified);
nobodyIsVerified = !childVerified && NoDescendentsAreVerified(childFolder);
}
@ -2033,7 +2013,7 @@ PRBool nsImapIncomingServer::NoDescendentsAreVerified(nsIFolder *parentFolder)
}
PRBool nsImapIncomingServer::AllDescendentsAreNoSelect(nsIFolder *parentFolder)
PRBool nsImapIncomingServer::AllDescendentsAreNoSelect(nsIMsgFolder *parentFolder)
{
PRBool allDescendentsAreNoSelect = PR_TRUE;
nsCOMPtr<nsIEnumerator> subFolders;
@ -2082,7 +2062,7 @@ PRBool nsImapIncomingServer::AllDescendentsAreNoSelect(nsIFolder *parentFolder)
#if 0
void nsImapIncomingServer::UnsubscribeFromAllDescendents(nsIFolder *parentFolder)
void nsImapIncomingServer::UnsubscribeFromAllDescendents(nsIMsgFolder *parentFolder)
{
int numberOfSubfolders = parentFolder->GetNumSubFolders();
@ -2229,12 +2209,12 @@ NS_IMETHODIMP nsImapIncomingServer::FormatStringWithHostNameByID(PRInt32 aMsgId
return NS_OK;
}
nsresult nsImapIncomingServer::ResetFoldersToUnverified(nsIFolder *parentFolder)
nsresult nsImapIncomingServer::ResetFoldersToUnverified(nsIMsgFolder *parentFolder)
{
nsresult rv = NS_OK;
if (!parentFolder)
{
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
rv = GetRootFolder(getter_AddRefs(rootFolder));
if (NS_FAILED(rv)) return rv;
return ResetFoldersToUnverified(rootFolder);
@ -2259,7 +2239,7 @@ nsresult nsImapIncomingServer::ResetFoldersToUnverified(nsIFolder *parentFolder)
rv = simpleEnumerator->GetNext(getter_AddRefs(child));
if (NS_SUCCEEDED(rv) && child)
{
nsCOMPtr<nsIFolder> childFolder = do_QueryInterface(child,
nsCOMPtr<nsIMsgFolder> childFolder = do_QueryInterface(child,
&rv);
if (NS_SUCCEEDED(rv) && childFolder)
{
@ -2275,16 +2255,16 @@ nsresult nsImapIncomingServer::ResetFoldersToUnverified(nsIFolder *parentFolder)
nsresult nsImapIncomingServer::GetUnverifiedFolders(nsISupportsArray *aFoldersArray, PRInt32 *aNumUnverifiedFolders)
{
// can't have both be null, but one null is OK, since the caller
// may just be trying to count the number of unverified folders.
if (!aFoldersArray && !aNumUnverifiedFolders)
return NS_ERROR_NULL_POINTER;
if (aNumUnverifiedFolders)
*aNumUnverifiedFolders = 0;
nsCOMPtr<nsIFolder> rootFolder;
nsresult rv = GetRootFolder(getter_AddRefs(rootFolder));
if(NS_SUCCEEDED(rv) && rootFolder)
// can't have both be null, but one null is OK, since the caller
// may just be trying to count the number of unverified folders.
if (!aFoldersArray && !aNumUnverifiedFolders)
return NS_ERROR_NULL_POINTER;
if (aNumUnverifiedFolders)
*aNumUnverifiedFolders = 0;
nsCOMPtr<nsIMsgFolder> rootFolder;
nsresult rv = GetRootFolder(getter_AddRefs(rootFolder));
if(NS_SUCCEEDED(rv) && rootFolder)
{
nsCOMPtr <nsIMsgImapMailFolder> imapRoot = do_QueryInterface(rootFolder);
if (imapRoot)
@ -2294,57 +2274,57 @@ nsresult nsImapIncomingServer::GetUnverifiedFolders(nsISupportsArray *aFoldersAr
return rv;
}
nsresult nsImapIncomingServer::GetUnverifiedSubFolders(nsIFolder *parentFolder, nsISupportsArray *aFoldersArray, PRInt32 *aNumUnverifiedFolders)
nsresult nsImapIncomingServer::GetUnverifiedSubFolders(nsIMsgFolder *parentFolder, nsISupportsArray *aFoldersArray, PRInt32 *aNumUnverifiedFolders)
{
nsresult rv = NS_OK;
nsCOMPtr <nsIMsgImapMailFolder> imapFolder = do_QueryInterface(parentFolder);
PRBool verified = PR_FALSE, explicitlyVerify = PR_FALSE;
if (imapFolder)
{
rv = imapFolder->GetVerifiedAsOnlineFolder(&verified);
if (NS_SUCCEEDED(rv))
rv = imapFolder->GetExplicitlyVerify(&explicitlyVerify);
if (NS_SUCCEEDED(rv) && (!verified || explicitlyVerify))
{
if (aFoldersArray)
{
nsCOMPtr <nsISupports> supports = do_QueryInterface(imapFolder);
aFoldersArray->AppendElement(supports);
}
if (aNumUnverifiedFolders)
(*aNumUnverifiedFolders)++;
}
}
nsCOMPtr<nsIEnumerator> subFolders;
rv = parentFolder->GetSubFolders(getter_AddRefs(subFolders));
if(NS_SUCCEEDED(rv))
{
nsAdapterEnumerator *simpleEnumerator = new nsAdapterEnumerator(subFolders);
if (simpleEnumerator == nsnull)
return NS_ERROR_OUT_OF_MEMORY;
PRBool moreFolders;
while (NS_SUCCEEDED(simpleEnumerator->HasMoreElements(&moreFolders)) && moreFolders)
{
nsCOMPtr<nsISupports> child;
rv = simpleEnumerator->GetNext(getter_AddRefs(child));
if (NS_SUCCEEDED(rv) && child)
{
nsCOMPtr <nsIFolder> childFolder = do_QueryInterface(child, &rv);
if (NS_SUCCEEDED(rv) && childFolder)
{
rv = GetUnverifiedSubFolders(childFolder, aFoldersArray, aNumUnverifiedFolders);
if (NS_FAILED(rv))
break;
}
}
}
delete simpleEnumerator;
}
return rv;
nsresult rv = NS_OK;
nsCOMPtr <nsIMsgImapMailFolder> imapFolder = do_QueryInterface(parentFolder);
PRBool verified = PR_FALSE, explicitlyVerify = PR_FALSE;
if (imapFolder)
{
rv = imapFolder->GetVerifiedAsOnlineFolder(&verified);
if (NS_SUCCEEDED(rv))
rv = imapFolder->GetExplicitlyVerify(&explicitlyVerify);
if (NS_SUCCEEDED(rv) && (!verified || explicitlyVerify))
{
if (aFoldersArray)
{
nsCOMPtr <nsISupports> supports = do_QueryInterface(imapFolder);
aFoldersArray->AppendElement(supports);
}
if (aNumUnverifiedFolders)
(*aNumUnverifiedFolders)++;
}
}
nsCOMPtr<nsIEnumerator> subFolders;
rv = parentFolder->GetSubFolders(getter_AddRefs(subFolders));
if(NS_SUCCEEDED(rv))
{
nsAdapterEnumerator *simpleEnumerator = new nsAdapterEnumerator(subFolders);
if (simpleEnumerator == nsnull)
return NS_ERROR_OUT_OF_MEMORY;
PRBool moreFolders;
while (NS_SUCCEEDED(simpleEnumerator->HasMoreElements(&moreFolders)) && moreFolders)
{
nsCOMPtr<nsISupports> child;
rv = simpleEnumerator->GetNext(getter_AddRefs(child));
if (NS_SUCCEEDED(rv) && child)
{
nsCOMPtr <nsIMsgFolder> childFolder = do_QueryInterface(child, &rv);
if (NS_SUCCEEDED(rv) && childFolder)
{
rv = GetUnverifiedSubFolders(childFolder, aFoldersArray, aNumUnverifiedFolders);
if (NS_FAILED(rv))
break;
}
}
}
delete simpleEnumerator;
}
return rv;
}
NS_IMETHODIMP nsImapIncomingServer::ForgetSessionPassword()
@ -2472,7 +2452,7 @@ NS_IMETHODIMP nsImapIncomingServer::PseudoInterruptMsgLoad(nsIMsgFolder *aImapFo
NS_IMETHODIMP nsImapIncomingServer::ResetNamespaceReferences()
{
nsCOMPtr <nsIFolder> rootFolder;
nsCOMPtr <nsIMsgFolder> rootFolder;
nsresult rv = GetRootFolder(getter_AddRefs(rootFolder));
if (NS_SUCCEEDED(rv) && rootFolder)
{
@ -2752,7 +2732,7 @@ nsImapIncomingServer::SetDelimiterFromHierarchyDelimiter()
NS_ENSURE_SUCCESS(rv,rv);
if (!imapService) return NS_ERROR_FAILURE;
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
rv = GetRootFolder(getter_AddRefs(rootFolder));
NS_ENSURE_SUCCESS(rv,rv);
@ -3036,10 +3016,8 @@ nsImapIncomingServer::SubscribeToFolder(const PRUnichar *aName, PRBool subscribe
if (NS_FAILED(rv)) return rv;
if (!imapService) return NS_ERROR_FAILURE;
nsCOMPtr<nsIFolder> rootFolder;
rv = GetRootFolder(getter_AddRefs(rootFolder));
if (NS_FAILED(rv)) return rv;
nsCOMPtr<nsIMsgFolder> rootMsgFolder = do_QueryInterface(rootFolder, &rv);
nsCOMPtr<nsIMsgFolder> rootMsgFolder;
rv = GetRootFolder(getter_AddRefs(rootMsgFolder));
if (NS_FAILED(rv)) return rv;
if (!rootMsgFolder) return NS_ERROR_FAILURE;
@ -3048,12 +3026,9 @@ nsImapIncomingServer::SubscribeToFolder(const PRUnichar *aName, PRBool subscribe
nsCAutoString folderCName;
folderCName.AppendWithConversion(aName);
nsCOMPtr<nsIMsgFolder> msgFolder;
nsCOMPtr<nsIFolder> subFolder;
if (rootMsgFolder && aName && (*aName))
{
rv = rootMsgFolder->FindSubFolder(folderCName.get(), getter_AddRefs(subFolder));
if (NS_SUCCEEDED(rv))
msgFolder = do_QueryInterface(subFolder);
rv = rootMsgFolder->FindSubFolder(folderCName.get(), getter_AddRefs(msgFolder));
}
nsCOMPtr<nsIEventQueue> queue;

Просмотреть файл

@ -100,13 +100,13 @@ public:
protected:
nsresult GetFolder(const char* name, nsIMsgFolder** pFolder);
nsresult ResetFoldersToUnverified(nsIFolder *parentFolder);
nsresult GetUnverifiedSubFolders(nsIFolder *parentFolder, nsISupportsArray *aFoldersArray, PRInt32 *aNumUnverifiedFolders);
nsresult ResetFoldersToUnverified(nsIMsgFolder *parentFolder);
nsresult GetUnverifiedSubFolders(nsIMsgFolder *parentFolder, nsISupportsArray *aFoldersArray, PRInt32 *aNumUnverifiedFolders);
nsresult GetUnverifiedFolders(nsISupportsArray *aFolderArray, PRInt32 *aNumUnverifiedFolders);
nsresult DeleteNonVerifiedFolders(nsIFolder *parentFolder);
PRBool NoDescendentsAreVerified(nsIFolder *parentFolder);
PRBool AllDescendentsAreNoSelect(nsIFolder *parentFolder);
nsresult DeleteNonVerifiedFolders(nsIMsgFolder *parentFolder);
PRBool NoDescendentsAreVerified(nsIMsgFolder *parentFolder);
PRBool AllDescendentsAreNoSelect(nsIMsgFolder *parentFolder);
nsresult GetStringBundle();
const char *GetPFCName();

Просмотреть файл

@ -3332,7 +3332,7 @@ nsresult nsImapMailFolder::MoveIncorporatedMessage(nsIMsgDBHdr *mailHdr,
// and if it can file messages (e.g., servers or news folders can't file messages).
// Or read only imap folders...
PRBool canFileMessages = PR_TRUE;
nsCOMPtr<nsIFolder> parentFolder;
nsCOMPtr<nsIMsgFolder> parentFolder;
destIFolder->GetParent(getter_AddRefs(parentFolder));
if (parentFolder)
destIFolder->GetCanFileMessages(&canFileMessages);

Просмотреть файл

@ -206,10 +206,9 @@ public:
// nsICollection methods
NS_IMETHOD Enumerate(nsIEnumerator **result);
// nsIFolder methods:
// nsIMsgFolder methods:
NS_IMETHOD GetSubFolders(nsIEnumerator* *result);
// nsIMsgFolder methods:
NS_IMETHOD GetMessages(nsIMsgWindow *aMsgWindow, nsISimpleEnumerator* *result);
NS_IMETHOD UpdateFolder(nsIMsgWindow *aWindow);

Просмотреть файл

@ -140,7 +140,7 @@ nsresult nsImapOfflineSync::AdvanceToNextServer()
m_currentServer = nsnull;
PRUint32 numServers;
m_allServers->Count(&numServers);
nsCOMPtr <nsIFolder> rootFolder;
nsCOMPtr <nsIMsgFolder> rootFolder;
while (serverIndex < numServers)
{
@ -583,7 +583,7 @@ PRBool nsImapOfflineSync::CreateOfflineFolders()
PRBool nsImapOfflineSync::CreateOfflineFolder(nsIMsgFolder *folder)
{
nsCOMPtr<nsIFolder> parent;
nsCOMPtr<nsIMsgFolder> parent;
folder->GetParent(getter_AddRefs(parent));
nsCOMPtr <nsIMsgImapMailFolder> imapFolder = do_QueryInterface(parent);
@ -962,14 +962,11 @@ nsresult nsImapOfflineDownloader::ProcessNextOperation()
AdvanceToNextServer();
if (m_currentServer)
{
nsCOMPtr <nsIFolder> rootFolder;
m_currentServer->GetRootFolder(getter_AddRefs(rootFolder));
nsCOMPtr <nsIMsgFolder> rootMsgFolder;
m_currentServer->GetRootFolder(getter_AddRefs(rootMsgFolder));
nsCOMPtr<nsIMsgFolder> inbox;
if (rootFolder)
if (rootMsgFolder)
{
nsCOMPtr<nsIMsgFolder> rootMsgFolder = do_QueryInterface(rootFolder, &rv);
if (rootMsgFolder)
{
PRUint32 numFolders;
rootMsgFolder->GetFoldersWithFlag(MSG_FOLDER_FLAG_INBOX, 1, &numFolders, getter_AddRefs(inbox));
if (inbox)
@ -1008,7 +1005,6 @@ nsresult nsImapOfflineDownloader::ProcessNextOperation()
return rv; // otherwise, fall through.
}
}
}
}
return ProcessNextOperation(); // recurse and do next server.
}

Просмотреть файл

@ -2544,10 +2544,8 @@ nsImapService::GetDefaultServerPort(PRBool isSecure, PRInt32 *aDefaultPort)
nsresult nsImapService::CreateSubscribeURI(nsIMsgIncomingServer *server, char *folderName, nsIURI **retURI)
{
nsCOMPtr<nsIFolder> rootFolder;
nsresult rv = server->GetRootFolder(getter_AddRefs(rootFolder));
if (NS_FAILED(rv)) return rv;
nsCOMPtr<nsIMsgFolder> rootMsgFolder = do_QueryInterface(rootFolder, &rv);
nsCOMPtr<nsIMsgFolder> rootMsgFolder;
nsresult rv = server->GetRootFolder(getter_AddRefs(rootMsgFolder));
if (NS_FAILED(rv)) return rv;
if (!rootMsgFolder) return NS_ERROR_FAILURE;
PRUnichar hierarchyDelimiter;
@ -2667,12 +2665,12 @@ NS_IMETHODIMP nsImapService::NewURI(const nsACString &aSpec,
NS_ENSURE_TRUE(server, NS_ERROR_FAILURE);
// now try to get the folder in question...
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
server->GetRootFolder(getter_AddRefs(rootFolder));
if (rootFolder && !folderName.IsEmpty())
{
nsCOMPtr<nsIFolder> folder;
nsCOMPtr<nsIMsgFolder> folder;
nsCOMPtr <nsIMsgImapMailFolder> imapRoot = do_QueryInterface(rootFolder, &rv);
nsCOMPtr <nsIMsgImapMailFolder> subFolder;
if (imapRoot)
@ -2759,9 +2757,9 @@ NS_IMETHODIMP nsImapService::NewChannel(nsIURI *aURI, nsIChannel **_retval)
}
// if the parent is null, then the folder doesn't really exist, so see if the user
// wants to subscribe to it./
nsCOMPtr<nsIFolder> aFolder;
nsCOMPtr<nsIMsgFolder> aFolder;
// now try to get the folder in question...
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
server->GetRootFolder(getter_AddRefs(rootFolder));
nsCOMPtr <nsIMsgImapMailFolder> imapRoot = do_QueryInterface(rootFolder);
nsCOMPtr <nsIMsgImapMailFolder> subFolder;
@ -2770,8 +2768,7 @@ NS_IMETHODIMP nsImapService::NewChannel(nsIURI *aURI, nsIChannel **_retval)
imapRoot->FindOnlineSubFolder(folderName, getter_AddRefs(subFolder));
aFolder = do_QueryInterface(subFolder);
}
nsCOMPtr<nsIMsgFolder> msgFolder = do_QueryInterface(aFolder);
nsCOMPtr <nsIFolder> parent;
nsCOMPtr <nsIMsgFolder> parent;
if (aFolder)
aFolder->GetParent(getter_AddRefs(parent));
nsXPIDLCString serverKey;
@ -3077,7 +3074,6 @@ nsImapService::GetListOfFoldersWithPath(nsIImapIncomingServer *aServer, nsIMsgWi
// Locate the folder so that the correct hierarchical delimiter is used in the folder
// pathnames, otherwise root's (ie, '^') is used and this is wrong.
nsCOMPtr<nsIMsgFolder> msgFolder;
nsCOMPtr<nsIFolder> subFolder;
if (rootMsgFolder && folderPath && (*folderPath))
{
// If the folder path contains 'INBOX' of any forms, we need to convert it to uppercase
@ -3102,9 +3098,7 @@ nsImapService::GetListOfFoldersWithPath(nsIImapIncomingServer *aServer, nsIMsgWi
changedStr.Append(remStr);
rv = rootMsgFolder->FindSubFolder(changedStr.get(), getter_AddRefs(subFolder));
if (NS_SUCCEEDED(rv))
msgFolder = do_QueryInterface(subFolder);
rv = rootMsgFolder->FindSubFolder(changedStr.get(), getter_AddRefs(msgFolder));
}
rv = DiscoverChildren(queue, msgFolder, listener, folderPath, nsnull);

Просмотреть файл

@ -814,7 +814,7 @@ ImportMailThread( void *stuff)
else if (newDepth < depth) {
rv = NS_OK;
while ((newDepth < depth) && NS_SUCCEEDED( rv)) {
nsCOMPtr<nsIFolder> parFolder;
nsCOMPtr<nsIMsgFolder> parFolder;
rv = curProxy->GetParent( getter_AddRefs( parFolder));
if (NS_FAILED( rv)) {
IMPORT_LOG1("*** ImportMailThread: Failed to get the interface for parent folder '%s'.", lastName.get());

Просмотреть файл

@ -540,7 +540,6 @@ nsMsgLocalMailFolder::GetSubFolders(nsIEnumerator* *result)
// must happen after CreateSubFolders, or the folders won't exist.
if (createdDefaultMailboxes && isServer)
{
nsCOMPtr<nsIFolder> rootFolder;
rv = localMailServer->SetFlagsOnDefaultMailboxes();
if (NS_FAILED(rv)) return rv;
}
@ -1940,11 +1939,10 @@ nsMsgLocalMailFolder::CopyFolderAcrossServer(nsIMsgFolder* srcFolder, nsIMsgWind
rv = NS_MsgEscapeEncodeURLPath(folderName.get(), getter_Copies(escapedFolderName));
NS_ENSURE_SUCCESS(rv,rv);
nsCOMPtr<nsIFolder> newFolder;
nsCOMPtr<nsIMsgFolder> newFolder;
nsCOMPtr<nsIMsgFolder> newMsgFolder;
FindSubFolder(escapedFolderName.get(), getter_AddRefs(newFolder));
newMsgFolder = do_QueryInterface(newFolder,&rv);
rv = FindSubFolder(escapedFolderName.get(), getter_AddRefs(newMsgFolder));
NS_ENSURE_SUCCESS(rv,rv);
nsCOMPtr<nsISimpleEnumerator> messages;
@ -2032,7 +2030,6 @@ nsMsgLocalMailFolder::CopyFolderLocal(nsIMsgFolder *srcFolder, PRBool isMoveFold
{
nsresult rv;
mInitialized = PR_TRUE;
nsCOMPtr<nsIFolder> newFolder;
nsCOMPtr<nsIMsgFolder> newMsgFolder;
PRBool isChildOfTrash=PR_FALSE;
rv = IsChildOfTrash(&isChildOfTrash);
@ -3361,15 +3358,11 @@ nsMsgLocalMailFolder::setSubfolderFlag(const PRUnichar *aFolderName,
nsXPIDLCString escapedFolderName;
nsresult rv = NS_MsgEscapeEncodeURLPath(aFolderName, getter_Copies(escapedFolderName));
NS_ENSURE_SUCCESS(rv,rv);
nsCOMPtr<nsIFolder> folder;
rv = FindSubFolder(escapedFolderName, getter_AddRefs(folder));
nsCOMPtr<nsIMsgFolder> msgFolder;
rv = FindSubFolder(escapedFolderName, getter_AddRefs(msgFolder));
if (NS_FAILED(rv))
return rv;
if (!folder)
return NS_ERROR_FAILURE;
nsCOMPtr<nsIMsgFolder> msgFolder = do_QueryInterface(folder);
if (!msgFolder)
return NS_ERROR_FAILURE;

Просмотреть файл

@ -119,10 +119,9 @@ public:
NS_IMETHOD OnStartRunningUrl(nsIURI * aUrl);
NS_IMETHOD OnStopRunningUrl(nsIURI * aUrl, nsresult aExitCode);
// nsIFolder methods:
// nsIMsgFolder methods:
NS_IMETHOD GetSubFolders(nsIEnumerator* *result);
// nsIMsgFolder methods:
NS_IMETHOD GetMessages(nsIMsgWindow *aMsgWindow, nsISimpleEnumerator* *result);
NS_IMETHOD UpdateFolder(nsIMsgWindow *aWindow);

Просмотреть файл

@ -488,7 +488,7 @@ NS_IMETHODIMP nsLocalUndoFolderListener::OnItemPropertyFlagChanged(nsISupports *
return NS_OK;
}
NS_IMETHODIMP nsLocalUndoFolderListener::OnItemEvent(nsIFolder *item, nsIAtom *event)
NS_IMETHODIMP nsLocalUndoFolderListener::OnItemEvent(nsIMsgFolder *item, nsIAtom *event)
{
nsCOMPtr <nsIAtom> folderLoadedAtom = do_GetAtom("FolderLoaded");
nsCOMPtr <nsIMsgFolder> itemFolder = do_QueryInterface(item);

Просмотреть файл

@ -85,7 +85,7 @@ nsMovemailIncomingServer::SetFlagsOnDefaultMailboxes()
{
nsresult rv;
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
rv = GetRootFolder(getter_AddRefs(rootFolder));
NS_ENSURE_SUCCESS(rv, rv);

Просмотреть файл

@ -55,7 +55,7 @@
#include "nsIMsgProtocolInfo.h"
#include "nsIMsgMailSession.h"
#include "nsParseMailbox.h"
#include "nsIFolder.h"
#include "nsIMsgFolder.h"
#include "nsIPrompt.h"
#include "nsILocalFile.h"
@ -388,7 +388,7 @@ nsMovemailService::GetNewMail(nsIMsgWindow *aMsgWindow,
goto freebuff_and_unlock;
}
nsCOMPtr <nsIFolder> serverFolder;
nsCOMPtr <nsIMsgFolder> serverFolder;
rv = in_server->GetRootFolder(getter_AddRefs(serverFolder));
if (NS_FAILED(rv))

Просмотреть файл

@ -49,7 +49,7 @@
#include "nsIMsgWindow.h"
class nsParseNewMailState;
class nsIFolder;
class nsIMsgFolder;
class nsMovemailService : public nsIMsgProtocolInfo, public nsIMovemailService
{

Просмотреть файл

@ -81,7 +81,7 @@ nsNoIncomingServer::SetFlagsOnDefaultMailboxes()
{
nsresult rv;
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
rv = GetRootFolder(getter_AddRefs(rootFolder));
NS_ENSURE_SUCCESS(rv, rv);

Просмотреть файл

@ -1425,7 +1425,7 @@ nsParseNewMailState::nsParseNewMailState()
NS_IMPL_ISUPPORTS_INHERITED1(nsParseNewMailState, nsMsgMailboxParser, nsIMsgFilterHitNotify)
nsresult
nsParseNewMailState::Init(nsIFolder *rootFolder, nsIMsgFolder *downloadFolder, nsFileSpec &folder, nsIOFileStream *inboxFileStream, nsIMsgWindow *aMsgWindow)
nsParseNewMailState::Init(nsIMsgFolder *rootFolder, nsIMsgFolder *downloadFolder, nsFileSpec &folder, nsIOFileStream *inboxFileStream, nsIMsgWindow *aMsgWindow)
{
nsresult rv;
m_position = folder.GetFileSize();
@ -1729,7 +1729,7 @@ nsresult nsParseNewMailState::MoveIncorporatedMessage(nsIMsgDBHdr *mailHdr,
// and if it can file messages (e.g., servers or news folders can't file messages).
// Or read only imap folders...
PRBool canFileMessages = PR_TRUE;
nsCOMPtr<nsIFolder> parentFolder;
nsCOMPtr<nsIMsgFolder> parentFolder;
destIFolder->GetParent(getter_AddRefs(parentFolder));
if (parentFolder)
destIFolder->GetCanFileMessages(&canFileMessages);

Просмотреть файл

@ -68,7 +68,7 @@ class nsInputFileStream;
class nsIMsgFilter;
class MSG_FolderInfoMail;
class nsIMsgFilterList;
class nsIFolder;
class nsIMsgFolder;
/* Used for the various things that parse RFC822 headers...
*/
@ -228,7 +228,7 @@ public:
nsParseNewMailState();
virtual ~nsParseNewMailState();
NS_DECL_ISUPPORTS_INHERITED
nsresult Init(nsIFolder *rootFolder, nsIMsgFolder *downloadFolder, nsFileSpec &folder, nsIOFileStream *inboxFileStream, nsIMsgWindow *aMsgWindow);
nsresult Init(nsIMsgFolder *rootFolder, nsIMsgFolder *downloadFolder, nsFileSpec &folder, nsIOFileStream *inboxFileStream, nsIMsgWindow *aMsgWindow);
virtual void DoneParsingFolder(nsresult status);
@ -259,7 +259,7 @@ protected:
virtual int MarkFilteredMessageRead(nsIMsgDBHdr *msgHdr);
void LogRuleHit(nsIMsgFilter *filter, nsIMsgDBHdr *msgHdr);
nsCOMPtr <nsIMsgFilterList> m_filterList;
nsCOMPtr <nsIFolder> m_rootFolder;
nsCOMPtr <nsIMsgFolder> m_rootFolder;
nsCOMPtr <nsIMsgWindow> m_msgWindow;
nsIOFileStream *m_inboxFileStream;
nsFileSpec m_inboxFileSpec;

Просмотреть файл

@ -190,7 +190,7 @@ nsPop3IncomingServer::SetFlagsOnDefaultMailboxes()
{
nsresult rv;
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
rv = GetRootFolder(getter_AddRefs(rootFolder));
NS_ENSURE_SUCCESS(rv, rv);

Просмотреть файл

@ -45,7 +45,6 @@
#include <time.h>
#include "nsIFileSpec.h"
#include "nsParseMailbox.h"
#include "nsIFolder.h"
#include "nsIMsgLocalMailFolder.h"
#include "nsIMsgIncomingServer.h"
#include "nsLocalUtils.h"
@ -195,7 +194,7 @@ nsPop3Sink::BeginMailDelivery(PRBool uidlDownload, nsIMsgWindow *aMsgWindow, PRB
if (m_newMailParser == nsnull)
return NS_ERROR_OUT_OF_MEMORY;
nsCOMPtr <nsIFolder> serverFolder;
nsCOMPtr <nsIMsgFolder> serverFolder;
rv = GetServerFolder(getter_AddRefs(serverFolder));
if (NS_FAILED(rv)) return rv;
@ -430,7 +429,7 @@ nsresult nsPop3Sink::SetFolder(nsIMsgFolder * folder)
}
nsresult
nsPop3Sink::GetServerFolder(nsIFolder **aFolder)
nsPop3Sink::GetServerFolder(nsIMsgFolder **aFolder)
{
if (!aFolder)
return NS_ERROR_NULL_POINTER;

Просмотреть файл

@ -50,7 +50,7 @@
#include "nsXPIDLString.h"
class nsParseNewMailState;
class nsIFolder;
class nsIMsgFolder;
class nsPop3Sink : public nsIPop3Sink
{
@ -60,7 +60,7 @@ public:
NS_DECL_ISUPPORTS
NS_DECL_NSIPOP3SINK
nsresult GetServerFolder(nsIFolder **aFolder);
nsresult GetServerFolder(nsIMsgFolder **aFolder);
static char* GetDummyEnvelope(void);

Просмотреть файл

@ -94,7 +94,6 @@
#include "nsIPrompt.h"
#include "nsIMsgStatusFeedback.h"
#include "nsIFolder.h"
#include "nsIMsgFolder.h"
#include "nsIMsgNewsFolder.h"
#include "nsIDocShell.h"
@ -2748,7 +2747,7 @@ PRInt32 nsNNTPProtocol::BeginAuthorization()
if (!m_newsFolder && m_nntpServer) {
nsCOMPtr<nsIMsgIncomingServer> server = do_QueryInterface(m_nntpServer);
if (m_nntpServer) {
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
rv = server->GetRootFolder(getter_AddRefs(rootFolder));
if (NS_SUCCEEDED(rv) && rootFolder) {
m_newsFolder = do_QueryInterface(rootFolder);
@ -4044,7 +4043,7 @@ PRInt32 nsNNTPProtocol::DisplayNewsRC()
if ( NS_FAILED( GetNextGroupNeedingCounts( getter_AddRefs( currChild ), &status ) ) )
return status;
nsCOMPtr<nsIFolder> currFolder = do_QueryInterface(currChild, &rv);
nsCOMPtr<nsIMsgFolder> currFolder = do_QueryInterface(currChild, &rv);
if (NS_FAILED(rv)) return -1;
if (!currFolder) return -1;

Просмотреть файл

@ -432,7 +432,7 @@ nsresult nsMsgDownloadAllNewsgroups::AdvanceToNextServer(PRBool *done)
m_currentServer = nsnull;
PRUint32 numServers;
m_allServers->Count(&numServers);
nsCOMPtr <nsIFolder> rootFolder;
nsCOMPtr <nsIMsgFolder> rootFolder;
while (serverIndex < numServers)
{

Просмотреть файл

@ -69,10 +69,9 @@ public:
// nsIUrlListener method
NS_IMETHOD OnStopRunningUrl(nsIURI * aUrl, nsresult aExitCode);
// nsIFolder methods:
// nsIMsgFolder methods:
NS_IMETHOD GetSubFolders(nsIEnumerator* *result);
// nsIMsgFolder methods:
NS_IMETHOD GetMessages(nsIMsgWindow *aMsgWindow, nsISimpleEnumerator* *result);
NS_IMETHOD UpdateFolder(nsIMsgWindow *aWindow);

Просмотреть файл

@ -44,7 +44,7 @@
#include "nsIPrefBranch.h"
#include "nsIPrefService.h"
#include "nsIMsgNewsFolder.h"
#include "nsIFolder.h"
#include "nsIMsgFolder.h"
#include "nsIFileSpec.h"
#include "nsCOMPtr.h"
#include "nsINntpService.h"
@ -342,7 +342,7 @@ nsNntpIncomingServer::WriteNewsrcFile()
nsIOFileStream newsrcStream(newsrcFileSpec, (PR_RDWR | PR_CREATE_FILE | PR_TRUNCATE));
nsCOMPtr<nsIEnumerator> subFolders;
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
rv = GetRootFolder(getter_AddRefs(rootFolder));
if (NS_FAILED(rv)) return rv;
@ -627,7 +627,7 @@ NS_IMETHODIMP
nsNntpIncomingServer::GetNumGroupsNeedingCounts(PRInt32 *aNumGroupsNeedingCounts)
{
nsCOMPtr<nsIEnumerator> subFolders;
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
nsresult rv = GetRootFolder(getter_AddRefs(rootFolder));
if (NS_FAILED(rv)) return rv;
@ -1205,12 +1205,8 @@ nsNntpIncomingServer::Unsubscribe(const PRUnichar *aUnicharName)
rv = NS_MsgEscapeEncodeURLPath(aUnicharName, getter_Copies(escapedName));
NS_ENSURE_SUCCESS(rv,rv);
nsCOMPtr <nsIFolder> subFolder;
rv = serverFolder->FindSubFolder(escapedName.get(), getter_AddRefs(subFolder));
if (NS_FAILED(rv))
return rv;
nsCOMPtr <nsIMsgFolder> newsgroupFolder = do_QueryInterface(subFolder, &rv);
nsCOMPtr <nsIMsgFolder> newsgroupFolder;
rv = serverFolder->FindSubFolder(escapedName.get(), getter_AddRefs(newsgroupFolder));
if (NS_FAILED(rv))
return rv;
@ -1371,7 +1367,7 @@ nsNntpIncomingServer::ForgetPassword()
nsresult rv;
// clear password of root folder (for the news account)
nsCOMPtr<nsIFolder> rootFolder;
nsCOMPtr<nsIMsgFolder> rootFolder;
rv = GetRootFolder(getter_AddRefs(rootFolder));
NS_ENSURE_SUCCESS(rv,rv);
if (!rootFolder) return NS_ERROR_FAILURE;
@ -1533,7 +1529,7 @@ nsNntpIncomingServer::FindGroup(const char *name, nsIMsgNewsFolder **result)
if (!serverFolder) return NS_ERROR_FAILURE;
nsCOMPtr <nsIFolder> subFolder;
nsCOMPtr <nsIMsgFolder> subFolder;
rv = serverFolder->FindSubFolder(name, getter_AddRefs(subFolder));
NS_ENSURE_SUCCESS(rv,rv);
if (!subFolder) return NS_ERROR_FAILURE;

Просмотреть файл

@ -641,14 +641,17 @@ nsNntpService::GetFolderFromUri(const char *aUri, nsIMsgFolder **aFolder)
PR_Free(unescapedUserPass);
NS_ENSURE_SUCCESS(rv,rv);
nsCOMPtr <nsIFolder> rootFolder;
nsCOMPtr <nsIMsgFolder> rootFolder;
rv = server->GetRootFolder(getter_AddRefs(rootFolder));
NS_ENSURE_SUCCESS(rv,rv);
// check if path is "/"
// if so, use the root folder
if (path.Length() == 1)
return rootFolder->QueryInterface(NS_GET_IID(nsIMsgFolder), (void **) aFolder);
if (path.Length() == 1)
{
NS_ADDREF(*aFolder = rootFolder);
return NS_OK;
}
// the URI is news://host/(escaped group)
// but the *name* of the newsgroup (we are calling ::GetChildNamed())