Changed DeleteMessage to DeleteMessages

This commit is contained in:
putterman%netscape.com 1999-05-10 23:55:41 +00:00
parent d002bba24a
commit 8942e3da0f
14 changed files with 71 additions and 35 deletions

View File

@ -1,9 +1,9 @@
/*
* DO NOT EDIT. THIS FILE IS GENERATED FROM nsIDOMMsgAppCore.idl
* DO NOT EDIT. THIS FILE IS GENERATED FROM nsIDOMMsgAppcore.idl
*/
#ifndef __gen_nsIDOMMsgAppCore_h__
#define __gen_nsIDOMMsgAppCore_h__
#ifndef __gen_nsIDOMMsgAppcore_h__
#define __gen_nsIDOMMsgAppcore_h__
#include "nsISupports.h" /* interface nsISupports */
#include "nsIDOMWindow.h" /* interface nsIDOMWindow */
@ -12,7 +12,6 @@
#include "nsIDOMXULTreeElement.h" /* interface nsIDOMXULTreeElement */
#include "nsIDOMBaseAppCore.h" /* interface nsIDOMBaseAppCore */
#include "nsIDOMNodeList.h" /* interface nsIDOMNodeList */
#include "nsrootidl.h"
#ifdef XPIDL_JS_STUBS
#include "jsapi.h"
@ -42,8 +41,8 @@ class nsIDOMMsgAppCore : public nsIDOMBaseAppCore {
/* void OpenURL (in string str); */
NS_IMETHOD OpenURL(const char *str) = 0;
/* void DeleteMessage (in nsIDOMXULTreeElement tree, in nsIDOMXULElement srcFolder, in nsIDOMNodeList node); */
NS_IMETHOD DeleteMessage(nsIDOMXULTreeElement *tree, nsIDOMXULElement *srcFolder, nsIDOMNodeList *node) = 0;
/* void DeleteMessages (in nsIDOMXULTreeElement tree, in nsIDOMXULElement srcFolder, in nsIDOMNodeList node); */
NS_IMETHOD DeleteMessages(nsIDOMXULTreeElement *tree, nsIDOMXULElement *srcFolder, nsIDOMNodeList *node) = 0;
/* void CopyMessages (in nsIDOMXULElement srcFolderElement, in nsIDOMXULElement dstFolderElement, in nsIDOMNodeList messages, in boolean isMove); */
NS_IMETHOD CopyMessages(nsIDOMXULElement *srcFolderElement, nsIDOMXULElement *dstFolderElement, nsIDOMNodeList *messages, PRBool isMove) = 0;
@ -79,4 +78,4 @@ nsresult NS_InitMsgAppCoreClass(nsIScriptContext *aContext, void **aPrototype);
#endif /* __gen_nsIDOMMsgAppCore_h__ */
#endif /* __gen_nsIDOMMsgAppcore_h__ */

View File

@ -31,7 +31,7 @@ interface nsIDOMMsgAppCore : nsIDOMBaseAppCore {
void Open3PaneWindow();
void SetWindow(in nsIDOMWindow ptr);
void OpenURL(in string str);
void DeleteMessage(in nsIDOMXULTreeElement tree, in nsIDOMXULElement srcFolder, in nsIDOMNodeList node);
void DeleteMessages(in nsIDOMXULTreeElement tree, in nsIDOMXULElement srcFolder, in nsIDOMNodeList node);
void CopyMessages(in nsIDOMXULElement srcFolderElement, in nsIDOMXULElement dstFolderElement, in nsIDOMNodeList messages,
in boolean isMove);
nsISupports GetRDFResourceForMessage(in nsIDOMXULTreeElement tree, in nsIDOMNodeList node);

View File

@ -190,8 +190,8 @@ class nsIMsgFolder : public nsIFolder {
/* void GetExpansionArray (in nsISupportsArray expansionArray); */
NS_IMETHOD GetExpansionArray(nsISupportsArray *expansionArray) = 0;
/* void DeleteMessage (in nsIMessage message); */
NS_IMETHOD DeleteMessage(nsIMessage *message) = 0;
/* void DeleteMessages (in nsISupportsArray message); */
NS_IMETHOD DeleteMessages(nsISupportsArray *message) = 0;
/* void AcquireSemaphore (in nsISupports semHolder); */
NS_IMETHOD AcquireSemaphore(nsISupports *semHolder) = 0;

View File

@ -111,7 +111,7 @@ interface nsIMsgFolder : nsIFolder {
void GetExpansionArray(in nsISupportsArray expansionArray);
void DeleteMessage(in nsIMessage message);
void DeleteMessages(in nsISupportsArray message);
void AcquireSemaphore (in nsISupports semHolder);
void ReleaseSemaphore (in nsISupports semHolder);

View File

@ -92,7 +92,12 @@ static nsresult DeleteMessage(nsIURL *aURL, nsIMsgFolder *srcFolder)
rv = GetMessage(aURL, getter_AddRefs(message));
if(NS_SUCCEEDED(rv) && srcFolder)
rv = srcFolder->DeleteMessage(message);
{
nsCOMPtr<nsISupportsArray> messageArray;
NS_NewISupportsArray(getter_AddRefs(messageArray));
messageArray->AppendElement(message);
rv = srcFolder->DeleteMessages(messageArray);
}
return rv;
}

View File

@ -300,10 +300,10 @@ MsgAppCoreOpenURL(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *
}
//
// Native method DeleteMessage
// Native method DeleteMessages
//
PR_STATIC_CALLBACK(JSBool)
MsgAppCoreDeleteMessage(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
MsgAppCoreDeleteMessages(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
{
nsIDOMMsgAppCore *nativeThis = (nsIDOMMsgAppCore*)JS_GetPrivate(cx, obj);
JSBool rBool = JS_FALSE;
@ -339,7 +339,7 @@ MsgAppCoreDeleteMessage(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j
argv[2]);
if (!rBool || NS_OK != nativeThis->DeleteMessage(tree, srcFolder, nodeList)) {
if (!rBool || NS_OK != nativeThis->DeleteMessages(tree, srcFolder, nodeList)) {
return JS_FALSE;
}
@ -348,7 +348,7 @@ MsgAppCoreDeleteMessage(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, j
*rval = JSVAL_VOID;
}
else {
JS_ReportError(cx, "Function DeleteMessage requires 2 parameters");
JS_ReportError(cx, "Function DeleteMessages requires 2 parameters");
return JS_FALSE;
}
@ -751,7 +751,7 @@ static JSFunctionSpec MsgAppCoreMethods[] =
{"Open3PaneWindow", MsgAppCoreOpen3PaneWindow, 0},
{"SetWindow", MsgAppCoreSetWindow, 1},
{"OpenURL", MsgAppCoreOpenURL, 1},
{"DeleteMessage", MsgAppCoreDeleteMessage, 3},
{"DeleteMessages", MsgAppCoreDeleteMessages, 3},
{"GetRDFResourceForMessage", MsgAppCoreGetRDFResourceForMessage, 2},
{"exit", MsgAppCoreExit, 0},
{"CopyMessages", MsgAppCoreCopyMessages, 3},

View File

@ -104,7 +104,7 @@ public:
NS_IMETHOD GetNewMessages(nsIRDFCompositeDataSource *db, nsIDOMXULElement *folderElement);
NS_IMETHOD SetWindow(nsIDOMWindow* aWin);
NS_IMETHOD OpenURL(const char * url);
NS_IMETHOD DeleteMessage(nsIDOMXULTreeElement *tree, nsIDOMXULElement *srcFolderElement, nsIDOMNodeList *nodeList);
NS_IMETHOD DeleteMessages(nsIDOMXULTreeElement *tree, nsIDOMXULElement *srcFolderElement, nsIDOMNodeList *nodeList);
NS_IMETHOD CopyMessages(nsIDOMXULElement *srcFolderElement, nsIDOMXULElement *folderElement, nsIDOMNodeList *nodeList,
PRBool isMove);
NS_IMETHOD GetRDFResourceForMessage(nsIDOMXULTreeElement *tree,
@ -538,7 +538,7 @@ nsMsgAppCore::OpenURL(const char * url)
}
NS_IMETHODIMP
nsMsgAppCore::DeleteMessage(nsIDOMXULTreeElement *tree, nsIDOMXULElement *srcFolderElement, nsIDOMNodeList *nodeList)
nsMsgAppCore::DeleteMessages(nsIDOMXULTreeElement *tree, nsIDOMXULElement *srcFolderElement, nsIDOMNodeList *nodeList)
{
nsresult rv;
nsIRDFCompositeDataSource *database;

View File

@ -741,16 +741,31 @@ nsMsgFolderDataSource::createFolderMessageNode(nsIMsgFolder *folder,
nsresult nsMsgFolderDataSource::DoDeleteFromFolder(nsIMsgFolder *folder, nsISupportsArray *arguments)
{
nsresult rv = NS_OK;
nsCOMPtr<nsISupportsArray> messageArray, folderArray;
NS_NewISupportsArray(getter_AddRefs(messageArray));
NS_NewISupportsArray(getter_AddRefs(folderArray));
PRUint32 itemCount = arguments->Count();
//Split up deleted items into different type arrays to be passed to the folder
//for deletion.
for(PRUint32 item = 0; item < itemCount; item++)
{
nsCOMPtr<nsISupports> supports = getter_AddRefs((*arguments)[item]);
nsCOMPtr<nsIMessage> deletedMessage(do_QueryInterface(supports, &rv));
if (NS_SUCCEEDED(rv))
nsCOMPtr<nsIMessage> deletedMessage(do_QueryInterface(supports));
nsCOMPtr<nsIMsgFolder> deletedFolder(do_QueryInterface(supports));
if (deletedMessage)
{
rv = folder->DeleteMessage(deletedMessage);
messageArray->AppendElement(deletedMessage);
}
else if(deletedFolder)
{
folderArray->AppendElement(deletedFolder);
}
}
if(messageArray->Count() > 0)
rv = folder->DeleteMessages(messageArray);
return rv;
}

View File

@ -237,7 +237,7 @@ public:
NS_IMETHOD GetHostName(char **hostName);
virtual nsresult GetDBFolderInfoAndDB(nsIDBFolderInfo **folderInfo, nsIMsgDatabase **db) = 0;
NS_IMETHOD DeleteMessage(nsIMessage *message) = 0;
NS_IMETHOD DeleteMessages(nsISupportsArray *messages) = 0;
NS_IMETHOD GetNewMessages();
protected:

View File

@ -1039,21 +1039,37 @@ NS_IMETHODIMP nsMsgLocalMailFolder::GetPath(nsFileSpec& aPathName)
return NS_OK;
}
NS_IMETHODIMP nsMsgLocalMailFolder::DeleteMessage(nsIMessage *message)
NS_IMETHODIMP nsMsgLocalMailFolder::DeleteMessages(nsISupportsArray *messages)
{
nsresult rv = GetDatabase();
if(NS_SUCCEEDED(rv))
{
nsCOMPtr <nsIMsgDBHdr> msgDBHdr;
nsCOMPtr<nsIDBMessage> dbMessage(do_QueryInterface(message, &rv));
PRUint32 messageCount = messages->Count();
for(PRUint32 i = 0; i < messageCount; i++)
{
nsCOMPtr<nsISupports> msgSupports = getter_AddRefs(messages->ElementAt(i));
nsCOMPtr<nsIMessage> message(do_QueryInterface(msgSupports));
if(message)
{
DeleteMessage(message);
}
}
}
return rv;
}
nsresult nsMsgLocalMailFolder::DeleteMessage(nsIMessage *message)
{
nsresult rv;
nsCOMPtr <nsIMsgDBHdr> msgDBHdr;
nsCOMPtr<nsIDBMessage> dbMessage(do_QueryInterface(message, &rv));
if(NS_SUCCEEDED(rv))
{
rv = dbMessage->GetMsgDBHdr(getter_AddRefs(msgDBHdr));
if(NS_SUCCEEDED(rv))
{
rv = dbMessage->GetMsgDBHdr(getter_AddRefs(msgDBHdr));
if(NS_SUCCEEDED(rv))
{
rv =mDatabase->DeleteHeader(msgDBHdr, nsnull, PR_TRUE, PR_TRUE);
}
rv =mDatabase->DeleteHeader(msgDBHdr, nsnull, PR_TRUE, PR_TRUE);
}
}
return rv;

View File

@ -96,7 +96,7 @@ public:
virtual nsresult GetDBFolderInfoAndDB(nsIDBFolderInfo **folderInfo, nsIMsgDatabase **db);
NS_IMETHOD DeleteMessage(nsIMessage *message);
NS_IMETHOD DeleteMessages(nsISupportsArray *messages);
NS_IMETHOD CreateMessageFromMsgDBHdr(nsIMsgDBHdr *msgDBHdr, nsIMessage **message);
NS_IMETHOD GetNewMessages();
@ -125,6 +125,7 @@ protected:
//Returns the child as well.
nsresult AddSubfolder(nsAutoString name, nsIMsgFolder **child);
nsresult DeleteMessage(nsIMessage *message);
protected:
nsNativeFileSpec *mPath;

View File

@ -978,7 +978,7 @@ NS_IMETHODIMP nsMsgNewsFolder::GetPath(nsFileSpec& aPathName)
return NS_OK;
}
NS_IMETHODIMP nsMsgNewsFolder::DeleteMessage(nsIMessage *message)
NS_IMETHODIMP nsMsgNewsFolder::DeleteMessages(nsISupportsArray *messages)
{
#if 0
nsresult rv = GetDatabase();

View File

@ -105,7 +105,7 @@ public:
virtual nsresult GetDBFolderInfoAndDB(nsIDBFolderInfo **folderInfo, nsIMsgDatabase **db);
NS_IMETHOD DeleteMessage(nsIMessage *message);
NS_IMETHOD DeleteMessages(nsISupportsArray *messages);
NS_IMETHOD CreateMessageFromMsgDBHdr(nsIMsgDBHdr *msgDBHdr, nsIMessage **message);
NS_IMETHOD GetNewMessages();

View File

@ -59,7 +59,7 @@ function MsgDeleteMessage()
var messageList = tree.getElementsByAttribute("selected", "true");
//get the current folder
var srcFolder = tree.childNodes[5];
appCore.DeleteMessage(tree, srcFolder, messageList);
appCore.DeleteMessages(tree, srcFolder, messageList);
}
}