67997 --> make saving local mail attachments work directly from the message pane. To do this,

nsMailboxService now support nsIMsgMessageFetchService.
sr=sspitzer
This commit is contained in:
mscott%netscape.com 2001-03-27 07:35:45 +00:00
Родитель 8185057a77
Коммит 1822070e69
3 изменённых файлов: 24 добавлений и 12 удалений

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

@ -321,14 +321,15 @@ nsresult nsMailboxProtocol::LoadUrl(nsIURI * aURL, nsISupports * aConsumer)
// when fetching a part, we need to insert a converter into the listener chain order to
// force just the part out of the message.
nsCOMPtr<nsIStreamConverterService> converter = do_GetService(kIStreamConverterServiceCID);
nsCOMPtr<nsIStreamListener> consumer = m_channelListener;
nsCOMPtr<nsIStreamListener> consumer = do_QueryInterface(consumerToUse);
nsIChannel * channel;
QueryInterface(NS_GET_IID(nsIChannel), (void **) &channel);
if (converter && channel)
{
nsCOMPtr<nsIStreamListener> newConsumer;
converter->AsyncConvertData(NS_LITERAL_STRING("message/rfc822").get(), NS_LITERAL_STRING("*/*").get(),
consumer, channel, getter_AddRefs(m_channelListener));
consumer, channel, getter_AddRefs(newConsumer));
consumerToUse = do_QueryInterface(newConsumer);
}
m_nextState = MAILBOX_READ_MESSAGE;
@ -339,7 +340,7 @@ nsresult nsMailboxProtocol::LoadUrl(nsIURI * aURL, nsISupports * aConsumer)
}
}
rv = nsMsgProtocol::LoadUrl(aURL, aConsumer);
rv = nsMsgProtocol::LoadUrl(aURL, consumerToUse);
} // if we received an MAILBOX url...
} // if we received a url!

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

@ -59,7 +59,7 @@ nsMailboxService::nsMailboxService()
nsMailboxService::~nsMailboxService()
{}
NS_IMPL_ISUPPORTS3(nsMailboxService, nsIMailboxService, nsIMsgMessageService, nsIProtocolHandler);
NS_IMPL_ISUPPORTS4(nsMailboxService, nsIMailboxService, nsIMsgMessageService, nsIProtocolHandler, nsIMsgMessageFetchPartService);
nsresult nsMailboxService::ParseMailbox(nsIMsgWindow *aMsgWindow, nsFileSpec& aMailboxPath, nsIStreamListener *aMailboxParser,
nsIUrlListener * aUrlListener, nsIURI ** aURL)
@ -175,8 +175,19 @@ nsresult nsMailboxService::FetchMessage(const char* aMessageURI,
return rv;
}
NS_IMETHODIMP nsMailboxService::FetchMimePart(nsIURI *aURI, const char *aMessageURI, nsISupports *aDisplayConsumer, nsIMsgWindow *aMsgWindow, nsIUrlListener *aUrlListener, nsIURI **aURL)
{
nsCOMPtr<nsIMsgMailNewsUrl> msgUrl (do_QueryInterface(aURI));
msgUrl->SetMsgWindow(aMsgWindow);
nsresult nsMailboxService::DisplayMessage(const char* aMessageURI,
// set up the url listener
if (aUrlListener)
msgUrl->RegisterListener(aUrlListener);
return RunMailboxUrl(msgUrl, aDisplayConsumer);
}
NS_IMETHODIMP nsMailboxService::DisplayMessage(const char* aMessageURI,
nsISupports * aDisplayConsumer,
nsIMsgWindow * aMsgWindow,
nsIUrlListener * aUrlListener,
@ -326,9 +337,8 @@ nsresult nsMailboxService::PrepareMessageUrl(const char * aSrcMsgMailboxURI, nsI
nsCOMPtr <nsIMsgMailNewsUrl> url = do_QueryInterface(*aMailboxUrl);
url->SetSpec(urlSpec);
PR_FREEIF(urlSpec);
// set up the mailbox action
(*aMailboxUrl)->SetMailboxAction(aMailboxAction);
(*aMailboxUrl)->SetMailboxAction(aMailboxAction);
// set up the url listener
if (aUrlListener)

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

@ -37,7 +37,7 @@
#include "nsIProtocolHandler.h"
#include "nsIRDFService.h"
class nsMailboxService : public nsIMailboxService, public nsIMsgMessageService, public nsIProtocolHandler
class nsMailboxService : public nsIMailboxService, public nsIMsgMessageService, public nsIMsgMessageFetchPartService, public nsIProtocolHandler
{
public:
@ -45,9 +45,10 @@ public:
virtual ~nsMailboxService();
NS_DECL_ISUPPORTS
NS_DECL_NSIMAILBOXSERVICE
NS_DECL_NSIMSGMESSAGESERVICE
NS_DECL_NSIPROTOCOLHANDLER
NS_DECL_NSIMAILBOXSERVICE
NS_DECL_NSIMSGMESSAGESERVICE
NS_DECL_NSIMSGMESSAGEFETCHPARTSERVICE
NS_DECL_NSIPROTOCOLHANDLER
protected:
PRBool mPrintingOperation;