mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-04 07:40:42 +00:00
added new imap SubscribeFolder() & UnsubscribeFolder() services
This commit is contained in:
parent
5a614b70b9
commit
f9cf91a8ec
@ -192,5 +192,15 @@ interface nsIImapService : nsISupports
|
||||
in nsIMsgFolder aMailFolder,
|
||||
in nsIUrlListener aUrlListener);
|
||||
|
||||
nsIURI subscribeFolder(in nsIEventQueue aClientEventQueue,
|
||||
in nsIMsgFolder aMailFolder,
|
||||
in wstring mailboxName,
|
||||
in nsIUrlListener aUrlListener);
|
||||
|
||||
nsIURI unsubscribeFolder(in nsIEventQueue aClientEventQueue,
|
||||
in nsIMsgFolder aMailFolder,
|
||||
in wstring mailboxName,
|
||||
in nsIUrlListener aUrlListener);
|
||||
|
||||
void buildSubscribeDatasource(in nsIImapIncomingServer aServer, in nsIMsgWindow aMsgWindow);
|
||||
};
|
||||
|
@ -2782,3 +2782,81 @@ nsImapService::BuildSubscribeDatasource(nsIImapIncomingServer *aServer, nsIMsgWi
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsImapService::SubscribeFolder(nsIEventQueue* eventQueue,
|
||||
nsIMsgFolder* aFolder,
|
||||
const PRUnichar* folderName,
|
||||
nsIUrlListener* urlListener, nsIURI** url)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(eventQueue);
|
||||
NS_ENSURE_ARG_POINTER(aFolder);
|
||||
NS_ENSURE_ARG_POINTER(folderName);
|
||||
|
||||
nsCOMPtr<nsIImapUrl> imapUrl;
|
||||
nsCAutoString urlSpec;
|
||||
nsresult rv;
|
||||
PRUnichar hierarchySeparator = GetHierarchyDelimiter(aFolder);
|
||||
rv = CreateStartOfImapUrl(getter_AddRefs(imapUrl), aFolder, urlListener,
|
||||
urlSpec, hierarchySeparator);
|
||||
if (NS_SUCCEEDED(rv) && imapUrl)
|
||||
{
|
||||
rv = SetImapUrlSink(aFolder, imapUrl);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
{
|
||||
nsCOMPtr<nsIURI> uri = do_QueryInterface(imapUrl);
|
||||
urlSpec.Append("/subscribe>");
|
||||
urlSpec.AppendWithConversion(hierarchySeparator);
|
||||
char *utfFolderName =
|
||||
CreateUtf7ConvertedStringFromUnicode(folderName);
|
||||
char *escapedFolderName = nsEscape(utfFolderName, url_Path);
|
||||
urlSpec.Append(escapedFolderName);
|
||||
nsCRT::free(escapedFolderName);
|
||||
nsCRT::free(utfFolderName);
|
||||
rv = uri->SetSpec((char*) urlSpec.GetBuffer());
|
||||
if (NS_SUCCEEDED(rv))
|
||||
rv = GetImapConnectionAndLoadUrl(eventQueue, imapUrl,
|
||||
nsnull, url);
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsImapService::UnsubscribeFolder(nsIEventQueue* eventQueue,
|
||||
nsIMsgFolder* aFolder,
|
||||
const PRUnichar* folderName,
|
||||
nsIUrlListener* urlListener, nsIURI** url)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(eventQueue);
|
||||
NS_ENSURE_ARG_POINTER(aFolder);
|
||||
NS_ENSURE_ARG_POINTER(folderName);
|
||||
|
||||
nsCOMPtr<nsIImapUrl> imapUrl;
|
||||
nsCAutoString urlSpec;
|
||||
nsresult rv;
|
||||
PRUnichar hierarchySeparator = GetHierarchyDelimiter(aFolder);
|
||||
rv = CreateStartOfImapUrl(getter_AddRefs(imapUrl), aFolder, urlListener,
|
||||
urlSpec, hierarchySeparator);
|
||||
if (NS_SUCCEEDED(rv) && imapUrl)
|
||||
{
|
||||
rv = SetImapUrlSink(aFolder, imapUrl);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
{
|
||||
nsCOMPtr<nsIURI> uri = do_QueryInterface(imapUrl);
|
||||
urlSpec.Append("/unsubscribe>");
|
||||
urlSpec.AppendWithConversion(hierarchySeparator);
|
||||
char *utfFolderName =
|
||||
CreateUtf7ConvertedStringFromUnicode(folderName);
|
||||
char *escapedFolderName = nsEscape(utfFolderName, url_Path);
|
||||
urlSpec.Append(escapedFolderName);
|
||||
nsCRT::free(escapedFolderName);
|
||||
nsCRT::free(utfFolderName);
|
||||
rv = uri->SetSpec((char*) urlSpec.GetBuffer());
|
||||
if (NS_SUCCEEDED(rv))
|
||||
rv = GetImapConnectionAndLoadUrl(eventQueue, imapUrl,
|
||||
nsnull, url);
|
||||
}
|
||||
}
|
||||
return rv;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user