From ebc9d39804387ea050a2004bdbd4c98c7617d03f Mon Sep 17 00:00:00 2001 From: "alecf%netscape.com" Date: Fri, 20 Aug 1999 22:41:38 +0000 Subject: [PATCH] add new isServer attribute git-svn-id: svn://10.0.0.236/trunk@43849 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/mailnews/base/public/nsIMsgFolder.idl | 1 + mozilla/mailnews/base/util/nsMsgFolder.cpp | 71 +++++++++++++++---- mozilla/mailnews/base/util/nsMsgFolder.h | 6 ++ 3 files changed, 65 insertions(+), 13 deletions(-) diff --git a/mozilla/mailnews/base/public/nsIMsgFolder.idl b/mozilla/mailnews/base/public/nsIMsgFolder.idl index c25bdcfd2dd..531cf09b223 100644 --- a/mozilla/mailnews/base/public/nsIMsgFolder.idl +++ b/mozilla/mailnews/base/public/nsIMsgFolder.idl @@ -61,6 +61,7 @@ interface nsIMsgFolder : nsIFolder { readonly attribute boolean showDeletedMessages; readonly attribute nsIMsgIncomingServer server; + readonly attribute boolean isServer; void OnCloseFolder (); void Delete (); diff --git a/mozilla/mailnews/base/util/nsMsgFolder.cpp b/mozilla/mailnews/base/util/nsMsgFolder.cpp index 6a6c47152b9..1deec5b9bd9 100644 --- a/mozilla/mailnews/base/util/nsMsgFolder.cpp +++ b/mozilla/mailnews/base/util/nsMsgFolder.cpp @@ -50,8 +50,9 @@ nsMsgFolder::nsMsgFolder(void) mNumTotalMessages(-1), mDepth(0), mPrefFlags(0), - mBiffState(nsMsgBiffState_NoMail), - mNumNewBiffMessages(0) + mBiffState(nsMsgBiffState_NoMail), + mNumNewBiffMessages(0), + mIsServer(PR_FALSE) { // NS_INIT_REFCNT(); done by superclass @@ -95,7 +96,8 @@ NS_IMETHODIMP nsMsgFolder::QueryInterface(REFNSIID aIID, void** aInstancePtr) { if (!aInstancePtr) return NS_ERROR_NULL_POINTER; *aInstancePtr = nsnull; - if (aIID.Equals(nsCOMTypeInfo::GetIID()) || aIID.Equals(nsCOMTypeInfo::GetIID())) + if (aIID.Equals(nsCOMTypeInfo::GetIID()) || + aIID.Equals(nsCOMTypeInfo::GetIID())) { *aInstancePtr = NS_STATIC_CAST(nsIMsgFolder*, this); } @@ -109,6 +111,35 @@ NS_IMETHODIMP nsMsgFolder::QueryInterface(REFNSIID aIID, void** aInstancePtr) return nsRDFResource::QueryInterface(aIID, aInstancePtr); } +NS_IMETHODIMP +nsMsgFolder::Init(const char* aURI) +{ + nsresult rv; + + // this parsing is totally hacky. we really should generalize this, + // but I'm not going to do this until we can eliminate the + // nsXXX2Name/etc routines + // -alecf + + // do initial parsing of the URI + const char *cp=aURI; + + // skip to initial // + while (*cp && (*cp != '/')) + cp++; + + // skip past // + while (*cp && (*cp == '/')) + cp++; + + if (PL_strchr(cp, '/')) + mIsServer = PR_FALSE; + else + mIsServer = PR_TRUE; + + return nsRDFResource::Init(aURI); +} + //////////////////////////////////////////////////////////////////////////////// typedef PRBool @@ -295,6 +326,12 @@ NS_IMETHODIMP nsMsgFolder::BuildUrl(nsMsgDatabase *db, nsMsgKey key, char ** url NS_IMETHODIMP nsMsgFolder::GetServer(nsIMsgIncomingServer ** aServer) { + + /* this should really just: + - truncate the URI + - GetResource on the URI + - QueryInterface to nsIMsgIncomingServer::GetIID() + */ nsresult rv = NS_OK; if (!m_server) // if we haven't fetched the server yet.... { @@ -340,6 +377,14 @@ NS_IMETHODIMP nsMsgFolder::GetServer(nsIMsgIncomingServer ** aServer) return rv; } +NS_IMETHODIMP +nsMsgFolder::GetIsServer(PRBool *aResult) +{ + NS_ENSURE_ARG_POINTER(aResult); + *aResult = mIsServer; + return NS_OK; +} + NS_IMETHODIMP nsMsgFolder::GetPrettyName(PRUnichar ** name) { if (!name) @@ -1324,20 +1369,20 @@ NS_IMETHODIMP nsMsgFolder::UserNeedsToAuthenticateForFolder(PRBool displayOnly, #if 0 NS_IMETHODIMP nsMsgFolder::GetUsername(char **userName) { - if(!userName) - return NS_ERROR_NULL_POINTER; - - *userName = ""; - return NS_OK; + nsCOMPtr server; + nsresult rv = GetServer(getter_AddRefs(server)); + if (NS_FAILED(rv)) return rv; + + return server->GetUsername(userName); } NS_IMETHODIMP nsMsgFolder::GetHostname(char **hostName) { - if(!hostName) - return NS_ERROR_NULL_POINTER; - - *hostName = ""; - return NS_OK; + nsCOMPtr server; + nsresult rv = GetServer(getter_AddRefs(server)); + if (NS_FAILED(rv)) return rv; + + return server->GetHostname(hostName); } #endif diff --git a/mozilla/mailnews/base/util/nsMsgFolder.h b/mozilla/mailnews/base/util/nsMsgFolder.h index 0bfbd754091..e1b830a45d8 100644 --- a/mozilla/mailnews/base/util/nsMsgFolder.h +++ b/mozilla/mailnews/base/util/nsMsgFolder.h @@ -45,6 +45,10 @@ public: NS_DECL_ISUPPORTS_INHERITED + // nsIRDFResource + + NS_IMETHOD Init(const char *aURI); + // nsICollection methods: NS_IMETHOD Count(PRUint32 *result) { return mSubFolders->Count(result); @@ -93,6 +97,7 @@ public: NS_IMETHOD HasMessage(nsIMessage *message, PRBool *hasMessage); NS_IMETHOD GetServer(nsIMsgIncomingServer ** aServer); + NS_IMETHOD GetIsServer(PRBool *aResult); NS_IMETHOD GetPrettyName(PRUnichar ** name); @@ -345,6 +350,7 @@ protected: PRInt32 mNumNewBiffMessages; PRBool mIsCachable; + PRBool mIsServer; }; #endif