mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 05:15:45 +00:00
general cleanup of dead code in messenger, and fixup to use non-DOM interfaces so that the interface isn't tied to a UI
r=sspitzer a=chofmann
This commit is contained in:
parent
c36aaf7aae
commit
1038bd68e3
@ -30,8 +30,6 @@
|
||||
|
||||
%{C++
|
||||
#include "nsIDOMWindow.h"
|
||||
#include "nsIDOMNodeList.h"
|
||||
#include "nsIDOMXULElement.h"
|
||||
%}
|
||||
|
||||
interface nsITransactionManager;
|
||||
@ -41,39 +39,50 @@ interface nsIMessenger : nsISupports {
|
||||
|
||||
readonly attribute nsITransactionManager transactionManager;
|
||||
|
||||
void GetNewMessages(in nsIRDFCompositeDataSource database, in nsIDOMXULElement folder);
|
||||
void Open3PaneWindow();
|
||||
void GetNewMessages(in nsIRDFCompositeDataSource database,
|
||||
in nsIRDFResource folder);
|
||||
void SetWindow(in nsIDOMWindow ptr, in nsIMsgWindow msgWindow);
|
||||
void DoPrint();
|
||||
void DoPrintPreview();
|
||||
void DeleteMessages(in nsIDOMXULElement tree, in nsIDOMXULElement srcFolder, in nsIDOMNodeList node);
|
||||
void DeleteFolders(in nsIRDFCompositeDataSource db, in nsIDOMXULElement parentFolder, in nsIDOMXULElement folder);
|
||||
void CopyMessages(in nsIRDFCompositeDataSource database, in nsIDOMXULElement srcFolderElement,
|
||||
in nsIDOMXULElement dstFolderElement, in nsIDOMNodeList messages,
|
||||
void DeleteMessages(in nsIRDFCompositeDataSource database,
|
||||
in nsIRDFResource srcFolderResource,
|
||||
in nsISupportsArray messages);
|
||||
void DeleteFolders(in nsIRDFCompositeDataSource db,
|
||||
in nsIRDFResource parentFolder,
|
||||
in nsIRDFResource folder);
|
||||
void CopyMessages(in nsIRDFCompositeDataSource database,
|
||||
in nsIRDFResource srcFolder,
|
||||
in nsIRDFResource dstFolder,
|
||||
in nsISupportsArray messages,
|
||||
in boolean isMove);
|
||||
nsISupports GetRDFResourceForMessage(in nsIDOMXULElement tree, in nsIDOMNodeList node);
|
||||
|
||||
void OpenURL(in string url);
|
||||
void Exit();
|
||||
void Close();
|
||||
void OnUnload();
|
||||
void MarkMessagesRead(in nsIRDFCompositeDataSource database, in nsIDOMNodeList messages,
|
||||
void MarkMessagesRead(in nsIRDFCompositeDataSource database,
|
||||
in nsISupportsArray messages,
|
||||
in boolean markRead);
|
||||
void MarkMessageRead(in nsIRDFCompositeDataSource database, in nsIDOMXULElement message,
|
||||
in boolean markRead);
|
||||
void MarkAllMessagesRead(in nsIRDFCompositeDataSource database, in nsIDOMXULElement folder);
|
||||
void MarkMessageRead(in nsIRDFCompositeDataSource database,
|
||||
in nsIRDFResource message,
|
||||
in boolean markRead);
|
||||
void MarkAllMessagesRead(in nsIRDFCompositeDataSource database,
|
||||
in nsIRDFResource folder);
|
||||
|
||||
void MarkMessagesFlagged(in nsIRDFCompositeDataSource database, in nsIDOMNodeList messages,
|
||||
in boolean markFlagged);
|
||||
void MarkMessageFlagged(in nsIRDFCompositeDataSource database, in nsIDOMXULElement message,
|
||||
in boolean markFlagged);
|
||||
void MarkMessagesFlagged(in nsIRDFCompositeDataSource database,
|
||||
in nsISupportsArray messages,
|
||||
in boolean markFlagged);
|
||||
void MarkMessageFlagged(in nsIRDFCompositeDataSource database,
|
||||
in nsIRDFResource message,
|
||||
in boolean markFlagged);
|
||||
|
||||
void NewFolder(in nsIRDFCompositeDataSource database, in nsIRDFResource parentFolder,
|
||||
void NewFolder(in nsIRDFCompositeDataSource database,
|
||||
in nsIRDFResource parentFolder,
|
||||
in string name);
|
||||
|
||||
void RenameFolder(in nsIRDFCompositeDataSource db,
|
||||
in nsIRDFResource folder, in string name);
|
||||
void CompactFolder(in nsIRDFCompositeDataSource db, in nsIDOMXULElement folder);
|
||||
void EmptyTrash(in nsIRDFCompositeDataSource db, in nsIDOMXULElement folder);
|
||||
void CompactFolder(in nsIRDFCompositeDataSource db,
|
||||
in nsIRDFResource folder);
|
||||
void EmptyTrash(in nsIRDFCompositeDataSource db,
|
||||
in nsIRDFResource folder);
|
||||
|
||||
void Undo();
|
||||
void Redo();
|
||||
|
@ -161,7 +161,7 @@ function GetNewMessages()
|
||||
if(selectedFolderList.length > 0)
|
||||
{
|
||||
var selectedFolder = selectedFolderList[0];
|
||||
messenger.GetNewMessages(folderTree.database, selectedFolder);
|
||||
messenger.GetNewMessages(folderTree.database, selectedFolder.resource);
|
||||
}
|
||||
else {
|
||||
dump("Nothing was selected\n");
|
||||
@ -356,7 +356,7 @@ function ToggleMessageRead(treeItem)
|
||||
var tree = GetThreadTree();
|
||||
var status = treeItem.getAttribute('Status');
|
||||
var unread = (status == " ") || (status == "new");
|
||||
messenger.MarkMessageRead(tree.database, treeItem, unread);
|
||||
messenger.MarkMessageRead(tree.database, treeItem.resource, unread);
|
||||
}
|
||||
|
||||
function ToggleMessageFlagged(treeItem)
|
||||
@ -367,7 +367,7 @@ function ToggleMessageFlagged(treeItem)
|
||||
dump('flaggedValue is ' + flaggedValue);
|
||||
dump('\n');
|
||||
var flagged = (flaggedValue =="flagged");
|
||||
messenger.MarkMessageFlagged(tree.database, treeItem, !flagged);
|
||||
messenger.MarkMessageFlagged(tree.database, treeItem.resource, !flagged);
|
||||
}
|
||||
|
||||
//Called when the splitter in between the thread and message panes is clicked.
|
||||
|
@ -258,14 +258,25 @@ function MsgDeleteMessage(fromToolbar)
|
||||
}
|
||||
dump("tree is valid\n");
|
||||
//get the selected elements
|
||||
var messageList = tree.selectedItems;
|
||||
var nextMessage = GetNextMessageAfterDelete(messageList);
|
||||
var messageList = ConvertDOMListToResourceArray(tree.selectedItems);
|
||||
var nextMessage = GetNextMessageAfterDelete(messageList);
|
||||
//get the current folder
|
||||
messenger.DeleteMessages(tree, srcFolder, messageList);
|
||||
messenger.DeleteMessages(tree.database, srcFolder.resource, messageList);
|
||||
SelectNextMessage(nextMessage);
|
||||
}
|
||||
}
|
||||
|
||||
function ConvertDOMListToResourceArray(nodeList)
|
||||
{
|
||||
var result = Components.classes["component://netscape/supports-array"].createInstance(Components.interfaces.nsISupportsArray);
|
||||
|
||||
for (var i=0; i<nodeList.length; i++) {
|
||||
result.AppendElement(nodeList[i].resource);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function MsgDeleteFolder()
|
||||
{
|
||||
//get the selected elements
|
||||
@ -286,7 +297,8 @@ function MsgDeleteFolder()
|
||||
dump("No parenturi");
|
||||
dump("folder = " + folder.nodeName + "\n");
|
||||
dump("parent = " + parent.nodeName + "\n");
|
||||
messenger.DeleteFolders(tree.database, parent, folder);
|
||||
messenger.DeleteFolders(tree.database,
|
||||
parent.resource, folder.resource);
|
||||
}
|
||||
|
||||
|
||||
@ -347,13 +359,15 @@ function MsgCopyMessage(destFolder)
|
||||
if(tree)
|
||||
{
|
||||
//Get the selected messages to copy
|
||||
var messageList = tree.selectedItems;
|
||||
var messageList = ConvertDOMListToResourceArray(tree.selectedItems);
|
||||
//get the current folder
|
||||
|
||||
// dump('In copy messages. Num Selected Items = ' + messageList.length);
|
||||
// dump('\n');
|
||||
var srcFolder = GetThreadTreeFolder();
|
||||
messenger.CopyMessages(tree.database, srcFolder, destFolder, messageList, false);
|
||||
messenger.CopyMessages(tree.database,
|
||||
srcFolder.resource,
|
||||
destFolder.resource, messageList, false);
|
||||
}
|
||||
}
|
||||
|
||||
@ -367,11 +381,13 @@ function MsgMoveMessage(destFolder)
|
||||
if(tree)
|
||||
{
|
||||
//Get the selected messages to copy
|
||||
var messageList = tree.selectedItems;
|
||||
var messageList = ConvertDOMListToResourceArray(tree.selectedItems);
|
||||
//get the current folder
|
||||
var nextMessage = GetNextMessageAfterDelete(messageList);
|
||||
var srcFolder = GetThreadTreeFolder();
|
||||
messenger.CopyMessages(tree.database, srcFolder, destFolder, messageList, true);
|
||||
messenger.CopyMessages(tree.database,
|
||||
srcFolder.resource,
|
||||
destFolder.resource, messageList, true);
|
||||
SelectNextMessage(nextMessage);
|
||||
}
|
||||
}
|
||||
@ -660,7 +676,7 @@ function MsgEmptyTrash()
|
||||
tree.clearItemSelection();
|
||||
RefreshThreadTreeView();
|
||||
}
|
||||
messenger.EmptyTrash(tree.database, folder);
|
||||
messenger.EmptyTrash(tree.database, folder.resource);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -685,7 +701,7 @@ function MsgCompactFolder()
|
||||
folderuri = folder.getAttribute('id');
|
||||
dump(folderuri);
|
||||
dump("folder = " + folder.nodeName + "\n");
|
||||
messenger.CompactFolder(tree.database, folder);
|
||||
messenger.CompactFolder(tree.database, folder.resource);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -810,7 +826,7 @@ function MsgMarkMsgAsRead(markRead)
|
||||
dump("\MsgMarkMsgAsRead from XUL\n");
|
||||
var tree = GetThreadTree();
|
||||
//get the selected elements
|
||||
var messageList = tree.selectedItems;
|
||||
var messageList = ConvertDOMListToResourceArray(tree.selectedItems);
|
||||
messenger.MarkMessagesRead(tree.database, messageList, markRead);
|
||||
}
|
||||
|
||||
@ -823,7 +839,7 @@ function MsgMarkAllRead()
|
||||
if(selectedFolderList.length > 0)
|
||||
{
|
||||
var selectedFolder = selectedFolderList[0];
|
||||
messenger.MarkAllMessagesRead(folderTree.database, selectedFolder);
|
||||
messenger.MarkAllMessagesRead(folderTree.database, selectedFolder.resource);
|
||||
}
|
||||
else {
|
||||
dump("Nothing was selected\n");
|
||||
@ -835,7 +851,7 @@ function MsgMarkAsFlagged(markFlagged)
|
||||
dump("\MsgMarkMsgAsFlagged from XUL\n");
|
||||
var tree = GetThreadTree();
|
||||
//get the selected elements
|
||||
var messageList = tree.selectedItems;
|
||||
var messageList = ConvertDOMListToResourceArray(tree.selectedItems);
|
||||
messenger.MarkMessagesFlagged(tree.database, messageList, markFlagged);
|
||||
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
@ -24,99 +24,75 @@
|
||||
|
||||
#include "nsMessenger.h"
|
||||
|
||||
// xpcom
|
||||
#include "nsIComponentManager.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsIFileSpecWithUI.h"
|
||||
#include "nsFileStream.h"
|
||||
#include "nsIStringStream.h"
|
||||
#include "nsEscape.h"
|
||||
#include "nsXPIDLString.h"
|
||||
|
||||
// necko
|
||||
#include "nsMimeTypes.h"
|
||||
#include "nsIURL.h"
|
||||
#include "nsIStreamListener.h"
|
||||
#include "nsIStreamConverterService.h"
|
||||
#include "nsNetUtil.h"
|
||||
|
||||
// rdf
|
||||
#include "nsIRDFCompositeDataSource.h"
|
||||
#include "nsIRDFResource.h"
|
||||
#include "nsIRDFService.h"
|
||||
#include "nsRDFCID.h"
|
||||
|
||||
// gecko
|
||||
#include "nsLayoutCID.h"
|
||||
#include "nsIMarkupDocumentViewer.h"
|
||||
#include "nsIContentViewerFile.h"
|
||||
#include "nsIContentViewer.h"
|
||||
|
||||
/* rhp - for access to webshell */
|
||||
#include "nsIDOMWindow.h"
|
||||
#include "nsIBrowserWindow.h"
|
||||
#include "nsIWebShellWindow.h"
|
||||
#include "nsIScriptGlobalObject.h"
|
||||
#include "nsAppShellCIDs.h"
|
||||
#include "nsIAppShellService.h"
|
||||
#include "nsIServiceManager.h"
|
||||
#include "nsIURL.h"
|
||||
#include "nsIDOMDocument.h"
|
||||
#include "nsIDocument.h"
|
||||
#include "nsIDocumentViewer.h"
|
||||
#include "nsIMarkupDocumentViewer.h"
|
||||
#include "nsIContentViewerFile.h"
|
||||
#include "nsIDOMXULDocument.h"
|
||||
|
||||
#include "nsIMsgMailSession.h"
|
||||
#include "nsIMsgIncomingServer.h"
|
||||
#include "nsIPop3IncomingServer.h"
|
||||
#include "nsINoIncomingServer.h"
|
||||
#include "nsIMsgMessageService.h"
|
||||
#include "nsIFileSpecWithUI.h"
|
||||
#include "nsFileStream.h"
|
||||
|
||||
#include "nsIMessage.h"
|
||||
#include "nsIMsgFolder.h"
|
||||
#include "nsIPop3Service.h"
|
||||
|
||||
#include "nsIDOMXULElement.h"
|
||||
#include "nsIRDFCompositeDataSource.h"
|
||||
#include "nsIRDFResource.h"
|
||||
#include "nsIRDFService.h"
|
||||
#include "nsRDFCID.h"
|
||||
#include "nsIAppShell.h"
|
||||
#include "nsIAppShellService.h"
|
||||
#include "nsIIOService.h"
|
||||
#include "nsAppShellCIDs.h"
|
||||
#include "nsMsgRDFUtils.h"
|
||||
#include "nsMsgFolderFlags.h"
|
||||
|
||||
#include "nsICopyMsgStreamListener.h"
|
||||
#include "nsICopyMessageListener.h"
|
||||
|
||||
// mail
|
||||
#include "nsMsgUtils.h"
|
||||
#include "nsMsgBaseCID.h"
|
||||
#include "nsMsgLocalCID.h"
|
||||
#include "nsIMsgMailSession.h"
|
||||
|
||||
#include "nsIComponentManager.h"
|
||||
#include "nsIMsgFolder.h"
|
||||
#include "nsMsgFolderFlags.h"
|
||||
#include "nsIMsgIncomingServer.h"
|
||||
|
||||
#include "nsIMsgSendLater.h"
|
||||
#include "nsMsgCompCID.h"
|
||||
#include "nsIMsgSendLaterListener.h"
|
||||
#include "nsIMsgDraft.h"
|
||||
|
||||
#include "nsIMsgCopyService.h"
|
||||
#include "nsIMsgCopyServiceListener.h"
|
||||
#include "nsIMsgMessageService.h"
|
||||
#include "nsIMessage.h"
|
||||
|
||||
#include "nsMsgStatusFeedback.h"
|
||||
#include "nsMsgRDFUtils.h"
|
||||
|
||||
#include "nsIContentViewer.h"
|
||||
#include "nsIPref.h"
|
||||
#include "nsLayoutCID.h"
|
||||
#include "nsIPresContext.h"
|
||||
#include "nsIStringStream.h"
|
||||
#include "nsEscape.h"
|
||||
#include "nsIStreamListener.h"
|
||||
#include "nsIStreamConverterService.h"
|
||||
#include "nsIMsgCompose.h"
|
||||
#include "nsIMsgCompFields.h"
|
||||
#include "nsIMsgComposeService.h"
|
||||
#include "nsMsgCompFieldsFact.h"
|
||||
// compose
|
||||
#include "nsMsgCompCID.h"
|
||||
#include "nsMsgI18N.h"
|
||||
#include "nsNetUtil.h"
|
||||
#include "nsXPIDLString.h"
|
||||
|
||||
// draft/folders/sendlater/etc
|
||||
#include "nsIMsgCopyService.h"
|
||||
#include "nsIMsgCopyServiceListener.h"
|
||||
#include "nsIMsgSendLater.h"
|
||||
#include "nsIMsgSendLaterListener.h"
|
||||
#include "nsIMsgDraft.h"
|
||||
#include "nsIUrlListener.h"
|
||||
|
||||
static NS_DEFINE_CID(kIStreamConverterServiceCID, NS_STREAMCONVERTERSERVICE_CID);
|
||||
static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID);
|
||||
static NS_DEFINE_CID(kCMsgMailSessionCID, NS_MSGMAILSESSION_CID);
|
||||
static NS_DEFINE_CID(kCPop3ServiceCID, NS_POP3SERVICE_CID);
|
||||
static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID);
|
||||
static NS_DEFINE_IID(kIDocumentViewerIID, NS_IDOCUMENT_VIEWER_IID);
|
||||
static NS_DEFINE_IID(kAppShellServiceCID, NS_APPSHELL_SERVICE_CID);
|
||||
static NS_DEFINE_CID(kComponentManagerCID, NS_COMPONENTMANAGER_CID);
|
||||
static NS_DEFINE_CID(kMsgSendLaterCID, NS_MSGSENDLATER_CID);
|
||||
static NS_DEFINE_CID(kCopyMessageStreamListenerCID, NS_COPYMESSAGESTREAMLISTENER_CID);
|
||||
static NS_DEFINE_CID(kMsgDraftCID, NS_MSGDRAFT_CID);
|
||||
static NS_DEFINE_CID(kPrintPreviewContextCID, NS_PRINT_PREVIEW_CONTEXT_CID);
|
||||
static NS_DEFINE_IID(kIPresContextIID, NS_IPRESCONTEXT_IID);
|
||||
static NS_DEFINE_CID(kPrefServiceCID, NS_PREF_CID);
|
||||
static NS_DEFINE_CID(kMsgCopyServiceCID, NS_MSGCOPYSERVICE_CID);
|
||||
static NS_DEFINE_CID(kMsgComposeServiceCID, NS_MSGCOMPOSESERVICE_CID);
|
||||
static NS_DEFINE_CID(kMsgComposeCID, NS_MSGCOMPOSE_CID);
|
||||
static NS_DEFINE_CID(kMsgCompFieldsCID, NS_MSGCOMPFIELDS_CID);
|
||||
|
||||
#if defined(DEBUG_seth_) || defined(DEBUG_sspitzer_) || defined(DEBUG_jefft)
|
||||
#define DEBUG_MESSENGER
|
||||
@ -150,49 +126,6 @@ public:
|
||||
nsXPIDLCString m_templateUri;
|
||||
};
|
||||
|
||||
|
||||
|
||||
static nsresult ConvertDOMListToResourceArray(nsIDOMNodeList *nodeList, nsISupportsArray **resourceArray)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
PRUint32 listLength;
|
||||
nsIDOMNode *node;
|
||||
nsIDOMXULElement *xulElement;
|
||||
nsIRDFResource *resource;
|
||||
|
||||
if(!resourceArray)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
if(NS_FAILED(rv = nodeList->GetLength(&listLength)))
|
||||
return rv;
|
||||
|
||||
if(NS_FAILED(NS_NewISupportsArray(resourceArray)))
|
||||
{
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
for(PRUint32 i = 0; i < listLength; i++)
|
||||
{
|
||||
if(NS_FAILED(nodeList->Item(i, &node)))
|
||||
return rv;
|
||||
|
||||
if(NS_SUCCEEDED(rv = node->QueryInterface(NS_GET_IID(nsIDOMXULElement), (void**)&xulElement)))
|
||||
{
|
||||
if(NS_SUCCEEDED(rv = xulElement->GetResource(&resource)) && resource)
|
||||
{
|
||||
(*resourceArray)->AppendElement(resource);
|
||||
NS_RELEASE(resource);
|
||||
}
|
||||
NS_RELEASE(xulElement);
|
||||
}
|
||||
NS_RELEASE(node);
|
||||
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// nsMessenger
|
||||
//
|
||||
@ -217,54 +150,16 @@ nsMessenger::~nsMessenger()
|
||||
//
|
||||
NS_IMPL_ISUPPORTS(nsMessenger, NS_GET_IID(nsIMessenger))
|
||||
|
||||
//
|
||||
// nsIMsgAppCore
|
||||
//
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::Open3PaneWindow()
|
||||
{
|
||||
const char * urlstr=nsnull;
|
||||
nsresult rv = NS_OK;
|
||||
|
||||
nsCOMPtr<nsIWebShellWindow> newWindow;
|
||||
|
||||
urlstr = "resource:/res/samples/messenger.html";
|
||||
NS_WITH_SERVICE(nsIAppShellService, appShell, kAppShellServiceCID, &rv);
|
||||
|
||||
nsCOMPtr<nsIURI> url;
|
||||
NS_WITH_SERVICE(nsIIOService, pNetService, kIOServiceCID, &rv);
|
||||
|
||||
if (NS_SUCCEEDED(rv) && pNetService)
|
||||
rv = pNetService->NewURI(urlstr, nsnull, getter_AddRefs(url));
|
||||
|
||||
|
||||
if (NS_SUCCEEDED(rv))
|
||||
rv = appShell->CreateTopLevelWindow(nsnull, // parent
|
||||
url,
|
||||
PR_TRUE,
|
||||
PR_TRUE,
|
||||
NS_CHROME_ALL_CHROME,
|
||||
nsnull, // callbacks
|
||||
NS_SIZETOCONTENT, // width
|
||||
NS_SIZETOCONTENT, // height
|
||||
getter_AddRefs(newWindow)); // result widget
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsMessenger::GetNewMessages(nsIRDFCompositeDataSource *db, nsIDOMXULElement *folderElement)
|
||||
nsMessenger::GetNewMessages(nsIRDFCompositeDataSource *db,
|
||||
nsIRDFResource *folderResource)
|
||||
{
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIRDFResource> folderResource;
|
||||
nsresult rv=NS_OK;
|
||||
nsCOMPtr<nsISupportsArray> folderArray;
|
||||
|
||||
if(!folderElement || !db)
|
||||
if(!folderResource || !db)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
rv = folderElement->GetResource(getter_AddRefs(folderResource));
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
if(NS_FAILED(NS_NewISupportsArray(getter_AddRefs(folderArray))))
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
@ -412,7 +307,7 @@ nsMessenger::OpenURL(const char * url)
|
||||
//If it's not something we know about, then just load the url.
|
||||
else
|
||||
{
|
||||
nsString urlStr(unescapedUrl);
|
||||
nsAutoString urlStr(unescapedUrl);
|
||||
if (mWebShell) {
|
||||
mWebShell->LoadURL(urlStr.GetUnicode());
|
||||
}
|
||||
@ -465,7 +360,7 @@ nsMessenger::OpenAttachment(const char * url, const char * displayName,
|
||||
NS_ADDREF(aListener);
|
||||
nsCOMPtr<nsIURI> aURL;
|
||||
|
||||
nsString urlString = unescapedUrl;
|
||||
nsAutoString urlString = unescapedUrl;
|
||||
char *urlCString = urlString.ToNewCString();
|
||||
rv = CreateStartupUrl(urlCString, getter_AddRefs(aURL));
|
||||
nsCRT::free(urlCString);
|
||||
@ -599,7 +494,7 @@ nsMessenger::SaveAs(const char* url, PRBool asFile, nsIMsgIdentity* identity)
|
||||
{
|
||||
NS_ADDREF(aListener);
|
||||
nsCOMPtr<nsIURI> aURL;
|
||||
nsString urlString = url;
|
||||
nsAutoString urlString = url;
|
||||
urlString += "?header=none";
|
||||
char *urlCString = urlString.ToNewCString();
|
||||
rv = CreateStartupUrl(urlCString, getter_AddRefs(aURL));
|
||||
@ -626,8 +521,8 @@ nsMessenger::SaveAs(const char* url, PRBool asFile, nsIMsgIdentity* identity)
|
||||
goto done;
|
||||
}
|
||||
nsAutoString from, to;
|
||||
from = "message/rfc822";
|
||||
to = saveAsFileType == 1 ? "text/html" : "text/plain";
|
||||
from = MESSAGE_RFC822;
|
||||
to = saveAsFileType == 1 ? TEXT_HTML : TEXT_PLAIN;
|
||||
NS_WITH_SERVICE(nsIStreamConverterService,
|
||||
streamConverterService,
|
||||
kIStreamConverterServiceCID, &rv);
|
||||
@ -715,29 +610,16 @@ nsMessenger::DoCommand(nsIRDFCompositeDataSource* db, char *command,
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::DeleteMessages(nsIDOMXULElement *tree, nsIDOMXULElement *srcFolderElement, nsIDOMNodeList *nodeList)
|
||||
nsMessenger::DeleteMessages(nsIRDFCompositeDataSource *database,
|
||||
nsIRDFResource *srcFolderResource,
|
||||
nsISupportsArray *resourceArray)
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
if(!tree || !srcFolderElement || !nodeList)
|
||||
if(!database || !srcFolderResource || !resourceArray)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsCOMPtr<nsIRDFCompositeDataSource> database;
|
||||
nsCOMPtr<nsISupportsArray> resourceArray, folderArray;
|
||||
nsCOMPtr<nsIRDFResource> resource;
|
||||
|
||||
rv = srcFolderElement->GetResource(getter_AddRefs(resource));
|
||||
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
rv = tree->GetDatabase(getter_AddRefs(database));
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
rv =ConvertDOMListToResourceArray(nodeList, getter_AddRefs(resourceArray));
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
nsCOMPtr<nsISupportsArray> folderArray;
|
||||
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(folderArray));
|
||||
if(NS_FAILED(rv))
|
||||
@ -745,33 +627,23 @@ nsMessenger::DeleteMessages(nsIDOMXULElement *tree, nsIDOMXULElement *srcFolderE
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
}
|
||||
|
||||
folderArray->AppendElement(resource);
|
||||
folderArray->AppendElement(srcFolderResource);
|
||||
|
||||
rv = DoCommand(database, NC_RDF_DELETE, folderArray, resourceArray);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMessenger::DeleteFolders(nsIRDFCompositeDataSource *db, nsIDOMXULElement *parentFolderElement,
|
||||
nsIDOMXULElement *folderElement)
|
||||
NS_IMETHODIMP nsMessenger::DeleteFolders(nsIRDFCompositeDataSource *db,
|
||||
nsIRDFResource *parentResource,
|
||||
nsIRDFResource *deletedFolderResource)
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
if(!db || !parentFolderElement || !folderElement)
|
||||
if(!db || !parentResource || !deletedFolderResource)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsCOMPtr<nsISupportsArray> parentArray, deletedArray;
|
||||
nsCOMPtr<nsIRDFResource> parentResource, deletedFolderResource;
|
||||
|
||||
rv = parentFolderElement->GetResource(getter_AddRefs(parentResource));
|
||||
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
rv = folderElement->GetResource(getter_AddRefs(deletedFolderResource));
|
||||
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(parentArray));
|
||||
|
||||
@ -796,35 +668,24 @@ NS_IMETHODIMP nsMessenger::DeleteFolders(nsIRDFCompositeDataSource *db, nsIDOMXU
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::CopyMessages(nsIRDFCompositeDataSource *database, nsIDOMXULElement *srcFolderElement,
|
||||
nsIDOMXULElement *dstFolderElement, nsIDOMNodeList *messages, PRBool isMove)
|
||||
nsMessenger::CopyMessages(nsIRDFCompositeDataSource *database,
|
||||
nsIRDFResource *srcResource, // folder
|
||||
nsIRDFResource *dstResource,
|
||||
nsISupportsArray *argumentArray, // nsIMessages
|
||||
PRBool isMove)
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
if(!srcFolderElement || !dstFolderElement || !messages)
|
||||
if(!srcResource || !dstResource || !argumentArray)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsCOMPtr<nsIRDFResource> srcResource, dstResource;
|
||||
nsCOMPtr<nsIMsgFolder> srcFolder;
|
||||
nsCOMPtr<nsISupportsArray> argumentArray;
|
||||
nsCOMPtr<nsISupportsArray> folderArray;
|
||||
|
||||
rv = dstFolderElement->GetResource(getter_AddRefs(dstResource));
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
rv = srcFolderElement->GetResource(getter_AddRefs(srcResource));
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
|
||||
srcFolder = do_QueryInterface(srcResource);
|
||||
if(!srcFolder)
|
||||
return NS_ERROR_NO_INTERFACE;
|
||||
|
||||
rv =ConvertDOMListToResourceArray(messages, getter_AddRefs(argumentArray));
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
nsCOMPtr<nsISupports> srcFolderSupports(do_QueryInterface(srcFolder));
|
||||
if(srcFolderSupports)
|
||||
argumentArray->InsertElementAt(srcFolderSupports, 0);
|
||||
@ -842,114 +703,16 @@ nsMessenger::CopyMessages(nsIRDFCompositeDataSource *database, nsIDOMXULElement
|
||||
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::GetRDFResourceForMessage(nsIDOMXULElement *tree,
|
||||
nsIDOMNodeList *nodeList, nsISupports
|
||||
**aSupport)
|
||||
{
|
||||
nsresult rv;
|
||||
if(!tree || !nodeList)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsISupportsArray *resourceArray;
|
||||
nsIBidirectionalEnumerator *aEnumerator = nsnull;
|
||||
*aSupport = nsnull;
|
||||
nsISupports *aItem = nsnull;
|
||||
|
||||
if(NS_FAILED(rv =ConvertDOMListToResourceArray(nodeList, &resourceArray)))
|
||||
return rv;
|
||||
|
||||
rv = NS_NewISupportsArrayEnumerator(resourceArray, &aEnumerator);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
rv = aEnumerator->First();
|
||||
while (rv == NS_OK)
|
||||
{
|
||||
rv = aEnumerator->CurrentItem(&aItem);
|
||||
if (rv != NS_OK) break;
|
||||
rv = aItem->QueryInterface(NS_GET_IID(nsIMessage), (void**)aSupport);
|
||||
aItem->Release();
|
||||
if (rv == NS_OK && *aSupport) break;
|
||||
rv = aEnumerator->Next();
|
||||
}
|
||||
|
||||
aEnumerator->Release();
|
||||
NS_RELEASE(resourceArray);
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::Exit()
|
||||
nsMessenger::MarkMessageRead(nsIRDFCompositeDataSource *database,
|
||||
nsIRDFResource *messageResource, PRBool markRead)
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
/*
|
||||
* Create the Application Shell instance...
|
||||
*/
|
||||
NS_WITH_SERVICE(nsIAppShellService, appShell, kAppShellServiceCID, &rv);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
appShell->Shutdown();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::OnUnload()
|
||||
{
|
||||
// ** clean up
|
||||
// *** jt - We seem to have one extra ref count. I have no idea where it
|
||||
// came from. This could be the global object we created in commandglue.js
|
||||
// which causes us to have one more ref count. Call Release() here
|
||||
// seems the right thing to do. This gurantees the nsMessenger instance
|
||||
// gets deleted after we close down the messenger window.
|
||||
|
||||
// smfr the one extra refcount is the result of a bug 8555, which I have
|
||||
// checked in a fix for. So I'm commenting out this extra release.
|
||||
//Release();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::Close()
|
||||
{
|
||||
nsresult rv = NS_OK;
|
||||
if (mWindow)
|
||||
{
|
||||
nsCOMPtr<nsIScriptGlobalObject>
|
||||
globalScript(do_QueryInterface(mWindow));
|
||||
nsCOMPtr<nsIWebShell> webshell, rootWebshell;
|
||||
if (globalScript)
|
||||
globalScript->GetWebShell(getter_AddRefs(webshell));
|
||||
if (webshell)
|
||||
webshell->GetRootWebShell(*getter_AddRefs(rootWebshell));
|
||||
if (rootWebshell)
|
||||
{
|
||||
nsCOMPtr<nsIWebShellContainer> webshellContainer;
|
||||
nsCOMPtr<nsIWebShellWindow> webWindow;
|
||||
rootWebshell->GetContainer(*getter_AddRefs(webshellContainer));
|
||||
webWindow = do_QueryInterface(webshellContainer);
|
||||
if (webWindow)
|
||||
{
|
||||
webWindow->Show(PR_FALSE);
|
||||
webWindow->Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::MarkMessageRead(nsIRDFCompositeDataSource *database, nsIDOMXULElement *message, PRBool markRead)
|
||||
{
|
||||
if(!database || !message)
|
||||
if(!database || !messageResource)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsresult rv;
|
||||
|
||||
nsCOMPtr<nsIRDFResource> messageResource;
|
||||
rv = message->GetResource(getter_AddRefs(messageResource));
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
nsCOMPtr<nsISupportsArray> resourceArray;
|
||||
|
||||
@ -959,36 +722,21 @@ nsMessenger::MarkMessageRead(nsIRDFCompositeDataSource *database, nsIDOMXULEleme
|
||||
|
||||
resourceArray->AppendElement(messageResource);
|
||||
|
||||
rv = DoMarkMessagesRead(database, resourceArray, markRead);
|
||||
rv = MarkMessagesRead(database, resourceArray, markRead);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::MarkMessagesRead(nsIRDFCompositeDataSource *database, nsIDOMNodeList *messages, PRBool markRead)
|
||||
nsMessenger::MarkMessagesRead(nsIRDFCompositeDataSource *database,
|
||||
nsISupportsArray *resourceArray,
|
||||
PRBool markRead)
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
if(!database || !messages)
|
||||
if(!database || !resourceArray)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsCOMPtr<nsISupportsArray> resourceArray;
|
||||
|
||||
|
||||
rv =ConvertDOMListToResourceArray(messages, getter_AddRefs(resourceArray));
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
rv= DoMarkMessagesRead(database, resourceArray, markRead);
|
||||
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsMessenger::DoMarkMessagesRead(nsIRDFCompositeDataSource *database, nsISupportsArray *resourceArray, PRBool markRead)
|
||||
{
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsISupportsArray> argumentArray;
|
||||
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(argumentArray));
|
||||
@ -1007,19 +755,15 @@ nsMessenger::DoMarkMessagesRead(nsIRDFCompositeDataSource *database, nsISupports
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::MarkAllMessagesRead(nsIRDFCompositeDataSource *database, nsIDOMXULElement *folder)
|
||||
nsMessenger::MarkAllMessagesRead(nsIRDFCompositeDataSource *database,
|
||||
nsIRDFResource *folderResource)
|
||||
{
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIRDFResource> folderResource;
|
||||
nsresult rv=NS_OK;
|
||||
nsCOMPtr<nsISupportsArray> folderArray;
|
||||
|
||||
if(!folder || !database)
|
||||
if(!folderResource || !database)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
rv = folder->GetResource(getter_AddRefs(folderResource));
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
if(NS_FAILED(NS_NewISupportsArray(getter_AddRefs(folderArray))))
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
|
||||
@ -1031,18 +775,15 @@ nsMessenger::MarkAllMessagesRead(nsIRDFCompositeDataSource *database, nsIDOMXULE
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::MarkMessageFlagged(nsIRDFCompositeDataSource *database, nsIDOMXULElement *message, PRBool markFlagged)
|
||||
nsMessenger::MarkMessageFlagged(nsIRDFCompositeDataSource *database,
|
||||
nsIRDFResource *messageResource,
|
||||
PRBool markFlagged)
|
||||
{
|
||||
if(!database || !message)
|
||||
if(!database || !messageResource)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsresult rv;
|
||||
|
||||
nsCOMPtr<nsIRDFResource> messageResource;
|
||||
rv = message->GetResource(getter_AddRefs(messageResource));
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
nsCOMPtr<nsISupportsArray> resourceArray;
|
||||
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(resourceArray));
|
||||
@ -1051,36 +792,21 @@ nsMessenger::MarkMessageFlagged(nsIRDFCompositeDataSource *database, nsIDOMXULEl
|
||||
|
||||
resourceArray->AppendElement(messageResource);
|
||||
|
||||
rv = DoMarkMessagesFlagged(database, resourceArray, markFlagged);
|
||||
rv = MarkMessagesFlagged(database, resourceArray, markFlagged);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::MarkMessagesFlagged(nsIRDFCompositeDataSource *database, nsIDOMNodeList *messages, PRBool markFlagged)
|
||||
nsMessenger::MarkMessagesFlagged(nsIRDFCompositeDataSource *database,
|
||||
nsISupportsArray *resourceArray,
|
||||
PRBool markFlagged)
|
||||
{
|
||||
nsresult rv;
|
||||
|
||||
if(!database || !messages)
|
||||
if(!database || !resourceArray)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
|
||||
nsCOMPtr<nsISupportsArray> resourceArray;
|
||||
|
||||
|
||||
rv =ConvertDOMListToResourceArray(messages, getter_AddRefs(resourceArray));
|
||||
if(NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
rv= DoMarkMessagesFlagged(database, resourceArray, markFlagged);
|
||||
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsMessenger::DoMarkMessagesFlagged(nsIRDFCompositeDataSource *database, nsISupportsArray *resourceArray, PRBool markFlagged)
|
||||
{
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsISupportsArray> argumentArray;
|
||||
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(argumentArray));
|
||||
@ -1123,7 +849,7 @@ nsMessenger::NewFolder(nsIRDFCompositeDataSource *database, nsIRDFResource *pare
|
||||
NS_WITH_SERVICE(nsIRDFService, rdfService, kRDFServiceCID, &rv);
|
||||
if(NS_SUCCEEDED(rv))
|
||||
{
|
||||
nsString nameStr = name;
|
||||
nsAutoString nameStr = name;
|
||||
nsCOMPtr<nsIRDFLiteral> nameLiteral;
|
||||
|
||||
rdfService->GetLiteral(nameStr.GetUnicode(), getter_AddRefs(nameLiteral));
|
||||
@ -1160,43 +886,35 @@ nsMessenger::RenameFolder(nsIRDFCompositeDataSource* db,
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::CompactFolder(nsIRDFCompositeDataSource* db,
|
||||
nsIDOMXULElement* folder)
|
||||
nsIRDFResource* folderResource)
|
||||
{
|
||||
nsresult rv = NS_ERROR_NULL_POINTER;
|
||||
|
||||
if (!db || !folder) return rv;
|
||||
if (!db || !folderResource) return rv;
|
||||
nsCOMPtr<nsISupportsArray> folderArray;
|
||||
nsCOMPtr<nsIRDFResource> folderResource;
|
||||
|
||||
rv = folder->GetResource(getter_AddRefs(folderResource));
|
||||
if (NS_SUCCEEDED(rv))
|
||||
{
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(folderArray));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
folderArray->AppendElement(folderResource);
|
||||
rv = DoCommand(db, NC_RDF_COMPACT, folderArray, nsnull);
|
||||
}
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(folderArray));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
folderArray->AppendElement(folderResource);
|
||||
rv = DoCommand(db, NC_RDF_COMPACT, folderArray, nsnull);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMessenger::EmptyTrash(nsIRDFCompositeDataSource* db,
|
||||
nsIDOMXULElement* folder)
|
||||
nsIRDFResource* folderResource)
|
||||
{
|
||||
nsresult rv = NS_ERROR_NULL_POINTER;
|
||||
|
||||
if (!db || !folder) return rv;
|
||||
if (!db || !folderResource) return rv;
|
||||
nsCOMPtr<nsISupportsArray> folderArray;
|
||||
nsCOMPtr<nsIRDFResource> folderResource;
|
||||
|
||||
rv = folder->GetResource(getter_AddRefs(folderResource));
|
||||
if (NS_SUCCEEDED(rv))
|
||||
{
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(folderArray));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
folderArray->AppendElement(folderResource);
|
||||
rv = DoCommand(db, NC_RDF_EMPTYTRASH, folderArray, nsnull);
|
||||
}
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(folderArray));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
folderArray->AppendElement(folderResource);
|
||||
rv = DoCommand(db, NC_RDF_EMPTYTRASH, folderArray, nsnull);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
@ -47,8 +47,6 @@ protected:
|
||||
nsresult DoDelete(nsIRDFCompositeDataSource* db, nsISupportsArray *srcArray, nsISupportsArray *deletedArray);
|
||||
nsresult DoCommand(nsIRDFCompositeDataSource *db, char * command, nsISupportsArray *srcArray,
|
||||
nsISupportsArray *arguments);
|
||||
nsresult DoMarkMessagesRead(nsIRDFCompositeDataSource *database, nsISupportsArray *resourceArray, PRBool markRead);
|
||||
nsresult DoMarkMessagesFlagged(nsIRDFCompositeDataSource *database, nsISupportsArray *resourceArray, PRBool markFlagged);
|
||||
private:
|
||||
|
||||
nsString mId;
|
||||
|
Loading…
Reference in New Issue
Block a user