mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-22 17:55:50 +00:00
add getsserver and GetIncomingServerType. This allows us to get the incoming server associated with a folder.
This commit is contained in:
parent
0fc879a65a
commit
cab48caf44
@ -258,6 +258,45 @@ NS_IMETHODIMP nsMsgFolder::BuildUrl(nsMsgDatabase *db, nsMsgKey key, char ** url
|
||||
}
|
||||
#endif
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::GetServer(nsIMsgIncomingServer ** aServer)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
if (!m_server) // if we haven't fetched the server yet....
|
||||
{
|
||||
NS_WITH_SERVICE(nsIMsgMailSession, session, kMsgMailSessionCID, &rv);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
nsCOMPtr<nsIMsgAccountManager> accountManager;
|
||||
rv = session->GetAccountManager(getter_AddRefs(accountManager));
|
||||
if(NS_FAILED(rv)) return rv;
|
||||
|
||||
char * hostname = nsnull;
|
||||
rv = GetHostName(&hostname);
|
||||
if(NS_FAILED(rv)) return rv;
|
||||
|
||||
nsCOMPtr<nsISupportsArray> servers;
|
||||
rv = accountManager->FindServersByHostname(hostname,
|
||||
GetIncomingServerType(),
|
||||
getter_AddRefs(servers));
|
||||
PR_FREEIF(hostname);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
// mscott: this is pretty bogus....we should be required by FindServers
|
||||
// to pass in enough information to uniquely identify ONE
|
||||
// server. we need at least the user name and host name.
|
||||
m_server = do_QueryInterface(servers->ElementAt(0));
|
||||
}
|
||||
|
||||
if (aServer)
|
||||
{
|
||||
*aServer = m_server;
|
||||
NS_IF_ADDREF(*aServer);
|
||||
}
|
||||
else
|
||||
rv = NS_ERROR_NULL_POINTER;
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFolder::GetPrettyName(char ** name)
|
||||
{
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include "nsRDFResource.h"
|
||||
#include "nsIDBFolderInfo.h"
|
||||
#include "nsIMsgDatabase.h"
|
||||
#include "nsIMsgIncomingServer.h"
|
||||
#include "nsCOMPtr.h"
|
||||
|
||||
/*
|
||||
@ -75,10 +76,10 @@ public:
|
||||
NS_IMETHOD GetChildNamed(const char *name, nsISupports* *result);
|
||||
NS_IMETHOD GetSubFolders(nsIEnumerator* *result);
|
||||
NS_IMETHOD GetHasSubFolders(PRBool *_retval);
|
||||
NS_IMETHOD AddFolderListener(nsIFolderListener * listener);
|
||||
NS_IMETHOD RemoveFolderListener(nsIFolderListener * listener);
|
||||
NS_IMETHOD GetParent(nsIFolder * *aParent);
|
||||
NS_IMETHOD SetParent(nsIFolder * aParent);
|
||||
NS_IMETHOD AddFolderListener(nsIFolderListener * listener);
|
||||
NS_IMETHOD RemoveFolderListener(nsIFolderListener * listener);
|
||||
NS_IMETHOD GetParent(nsIFolder * *aParent);
|
||||
NS_IMETHOD SetParent(nsIFolder * aParent);
|
||||
|
||||
|
||||
// nsIMsgFolder methods:
|
||||
@ -86,9 +87,11 @@ public:
|
||||
NS_IMETHOD ReplaceElement(nsISupports* element, nsISupports* newElement);
|
||||
NS_IMETHOD GetVisibleSubFolders(nsIEnumerator* *result);
|
||||
NS_IMETHOD GetMessages(nsIEnumerator* *result);
|
||||
NS_IMETHOD GetThreads(nsIEnumerator ** threadEnumerator);
|
||||
NS_IMETHOD GetThreadForMessage(nsIMessage *message, nsIMsgThread **thread);
|
||||
NS_IMETHOD HasMessage(nsIMessage *message, PRBool *hasMessage);
|
||||
NS_IMETHOD GetThreads(nsIEnumerator ** threadEnumerator);
|
||||
NS_IMETHOD GetThreadForMessage(nsIMessage *message, nsIMsgThread **thread);
|
||||
NS_IMETHOD HasMessage(nsIMessage *message, PRBool *hasMessage);
|
||||
|
||||
NS_IMETHOD GetServer(nsIMsgIncomingServer ** aServer);
|
||||
|
||||
|
||||
NS_IMETHOD GetPrettyName(char ** name);
|
||||
@ -265,6 +268,11 @@ protected:
|
||||
nsresult NotifyItemAdded(nsISupports *item);
|
||||
nsresult NotifyItemDeleted(nsISupports *item);
|
||||
|
||||
// this is a little helper function that is not part of the public interface.
|
||||
// we use it to get the IID of the incoming server for the derived folder.
|
||||
// w/out a function like this we would have to implement GetServer in each
|
||||
// derived folder class.
|
||||
virtual const nsIID& GetIncomingServerType() = 0;
|
||||
|
||||
protected:
|
||||
nsString mName;
|
||||
@ -275,7 +283,7 @@ protected:
|
||||
tried to find out.) */
|
||||
PRInt32 mNumTotalMessages; /* count of existing messages. */
|
||||
nsCOMPtr<nsISupportsArray> mSubFolders;
|
||||
nsVoidArray *mListeners; //This can't be an nsISupportsArray because due to
|
||||
nsVoidArray *mListeners; //This can't be an nsISupportsArray because due to
|
||||
//ownership issues, listeners can't be AddRef'd
|
||||
|
||||
PRInt16 mCsid; // default csid for folder/newsgroup - maintained by fe.
|
||||
@ -284,6 +292,8 @@ protected:
|
||||
nsISupports *mSemaphoreHolder; // set when the folder is being written to
|
||||
//Due to ownership issues, this won't be AddRef'd.
|
||||
|
||||
nsCOMPtr<nsIMsgIncomingServer> m_server; // this will be addrefed....no ownership issue here
|
||||
|
||||
#ifdef HAVE_DB
|
||||
nsMsgKey m_lastMessageLoaded;
|
||||
#endif
|
||||
@ -293,7 +303,7 @@ protected:
|
||||
PRInt32 mNumPendingUnreadMessages;
|
||||
PRInt32 mNumPendingTotalMessages;
|
||||
|
||||
PRBool mIsCachable;
|
||||
PRBool mIsCachable;
|
||||
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user