More work on reorganizing mailnews frontend so standalone msg window will work. Also

fixes some bugs from the last time.  r=sspitzer
This commit is contained in:
putterman%netscape.com 2000-04-14 14:07:23 +00:00
parent c4b40329c0
commit 1e6f1a5f07
10 changed files with 259 additions and 379 deletions

View File

@ -21,6 +21,9 @@
* Alec Flett <alecf@netscape.com>
*/
var accountManagerProgID = "component://netscape/messenger/account-manager";
var messengerMigratorProgID = "component://netscape/messenger/migrator";
// returns the first account with an invalid server or identity
function getFirstInvalidAccount(accounts)
@ -50,3 +53,59 @@ function getFirstInvalidAccount(accounts)
return null;
}
function verifyAccounts() {
var openWizard = false;
var prefillAccount;
try {
var am = Components.classes[accountManagerProgID].getService(Components.interfaces.nsIMsgAccountManager);
var accounts = am.accounts;
// as long as we have some accounts, we're fine.
var accountCount = accounts.Count();
if (accountCount > 0) {
prefillAccount = getFirstInvalidAccount(accounts);
dump("prefillAccount = " + prefillAccount + "\n");
} else {
try {
messengerMigrator = Components.classes[messengerMigratorProgID].getService(Components.interfaces.nsIMessengerMigrator);
dump("attempt to UpgradePrefs. If that fails, open the account wizard.\n");
messengerMigrator.UpgradePrefs();
}
catch (ex) {
// upgrade prefs failed, so open account wizard
openWizard = true;
}
}
if (openWizard || prefillAccount) {
MsgAccountWizard(prefillAccount);
}
}
catch (ex) {
dump("error verifying accounts " + ex + "\n");
return;
}
}
// we do this from a timer because if this is called from the onload=
// handler, then the parent window doesn't appear until after the wizard
// has closed, and this is confusing to the user
function MsgAccountWizard()
{
setTimeout("msgOpenAccountWizard();", 0);
}
function msgOpenAccountWizard()
{
window.openDialog("chrome://messenger/content/AccountWizard.xul",
"AccountWizard", "chrome,modal");
}
function MsgAccountManager()
{
window.openDialog("chrome://messenger/content/AccountManager.xul",
"AccountManager", "chrome,modal");
}

View File

@ -63,24 +63,6 @@ interface nsIMessenger : nsISupports {
in boolean isMove);
void OpenURL(in string url);
void MarkMessagesRead(in nsIRDFCompositeDataSource database,
in nsISupportsArray messages,
in boolean markRead);
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 nsISupportsArray messages,
in boolean markFlagged);
void MarkMessageFlagged(in nsIRDFCompositeDataSource database,
in nsIRDFResource message,
in boolean markFlagged);
void markThreadRead(in nsIRDFCompositeDataSource database,
in nsIMsgFolder folder,
in nsIMsgThread thread);
void RenameFolder(in nsIRDFCompositeDataSource db,
in nsIRDFResource folder, in wstring name);
void CompactFolder(in nsIRDFCompositeDataSource db,

View File

@ -452,7 +452,13 @@ function ToggleMessageRead(treeItem)
var tree = GetThreadTree();
var isUnread = treeItem.getAttribute('IsUnread');
var unread = (isUnread == "true");
messenger.MarkMessageRead(tree.database, treeItem.resource, unread);
var messageResource = RDF.GetResource(treeItem.getAttribute('id'));
var message = messageResource.QueryInterface(Components.interfaces.nsIMessage);
var messageArray = new Array(1);
messageArray[0] = message;
MarkMessagesRead(tree.database, messageArray, unread);
}
function ToggleMessageFlagged(treeItem)
@ -460,10 +466,15 @@ function ToggleMessageFlagged(treeItem)
var tree = GetThreadTree();
var flaggedValue = treeItem.getAttribute('Flagged');
dump('flaggedValue is ' + flaggedValue);
dump('\n');
var flagged = (flaggedValue =="flagged");
messenger.MarkMessageFlagged(tree.database, treeItem.resource, !flagged);
var messageResource = RDF.GetResource(treeItem.getAttribute('id'));
var message = messageResource.QueryInterface(Components.interfaces.nsIMessage);
var messageArray = new Array(1);
messageArray[0] = message;
MarkMessagesFlagged(tree.database, messageArray, !flagged);
}
//Called when the splitter in between the thread and message panes is clicked.

View File

@ -79,7 +79,7 @@ function CopyMessages(compositeDataSource, srcFolder, destFolder, messages, isMo
folderArray.AppendElement(destFolderResource);
var argumentArray = Components.classes["component://netscape/supports-array"].createInstance(Components.interfaces.nsISupportsArray);
var srcFolderResource = destFolder.QueryInterface(Components.interfaces.nsIRDFResource);
var srcFolderResource = srcFolder.QueryInterface(Components.interfaces.nsIRDFResource);
argumentArray.AppendElement(srcFolderResource);
ConvertMessagesToResourceArray(messages, argumentArray);
@ -113,11 +113,10 @@ function getIdentityForServer(server)
dump("ComposeMessage folder="+folder+"\n");
try
{
server = folder.server;
if(folder)
{
// get the incoming server associated with this uri
var server = folder.server;
server = folder.server;
// if they hit new or reply and they are reading a newsgroup
// turn this into a new post or a reply to group.
@ -136,11 +135,12 @@ function getIdentityForServer(server)
newsgroup = folder.name;
}
}
identity = getIdentityForServer(server);
// dump("identity = " + identity + "\n");
}
identity = getIdentityForServer(server);
// dump("identity = " + identity + "\n");
}
catch (ex)
{
@ -302,3 +302,69 @@ function SaveAsTemplate(message, folder)
messenger.saveAs(uri, false, identity, msgWindow);
}
}
function MarkMessagesRead(compositeDataSource, messages, markRead)
{
var messageResourceArray = ConvertMessagesToResourceArray(messages, null);
var command;
if(markRead)
command = "http://home.netscape.com/NC-rdf#MarkRead";
else
command = "http://home.netscape.com/NC-rdf#MarkUnread";
DoRDFCommand(compositeDataSource, command, messageResourceArray, null);
}
function MarkMessagesFlagged(compositeDataSource, messages, markFlagged)
{
var messageResourceArray = ConvertMessagesToResourceArray(messages, null);
var command;
if(markFlagged)
command = "http://home.netscape.com/NC-rdf#MarkFlagged";
else
command = "http://home.netscape.com/NC-rdf#MarkUnflagged";
DoRDFCommand(compositeDataSource, command, messageResourceArray, null);
}
function MarkAllMessagesRead(compositeDataSource, folder)
{
var folderResource = folder.QueryInterface(Components.interfaces.nsIRDFResource);
var folderResourceArray = Components.classes["component://netscape/supports-array"].createInstance(Components.interfaces.nsISupportsArray);
folderResourceArray.AppendElement(folderResource);
DoRDFCommand(compositeDataSource, "http://home.netscape.com/NC-rdf#MarkAllMessagesRead", folderResourceArray, null);
}
function MarkThreadAsRead(compositeDataSource, message)
{
if(message)
{
var folder = message.GetMsgFolder();
if(folder)
{
var thread = folder.getThreadForMessage(message);
if(thread)
{
var folderResource = folder.QueryInterface(Components.interfaces.nsIRDFResource);
var folderResourceArray = Components.classes["component://netscape/supports-array"].createInstance(Components.interfaces.nsISupportsArray);
folderResourceArray.AppendElement(folderResource);
var argumentArray = Components.classes["component://netscape/supports-array"].createInstance(Components.interfaces.nsISupportsArray);
argumentArray.AppendElement(thread);
DoRDFCommand(compositeDataSource, "http://home.netscape.com/NC-rdf#MarkThreadRead", folderResourceArray, argumentArray);
}
}
}
}

View File

@ -18,6 +18,17 @@
* Rights Reserved.
*/
function GetFirstSelectedMsgFolder()
{
var result = null;
var selectedFolders = GetSelectedMsgFolders();
if (selectedFolders.length > 0) {
result = selectedFolders[0];
}
return result;
}
function MsgGetMessage()
{
var folders = GetSelectedMsgFolders();
@ -42,7 +53,7 @@ function MsgCopyMessage(destFolder)
function MsgNewMessage(event)
{
var loadedFolder = GetLoadedMsgFolder();
var loadedFolder = GetFirstSelectedMsgFolder();
var messageArray = GetSelectedMessages();
if (event.shiftKey)
@ -116,6 +127,14 @@ function MsgForwardAsInline(event)
ComposeMessage(msgComposeType.ForwardInline, msgComposeFormat.Default, loadedFolder, messageArray);
}
function MsgEditMessageAsNew()
{
var loadedFolder = GetLoadedMsgFolder();
var messageArray = GetSelectedMessages();
ComposeMessage(msgComposeType.Template, msgComposeFormat.Default, loadedFolder, messageArray);
}
function MsgHome(url)
{
window.open( url, "_blank", "chrome,dependent=yes,all" );
@ -142,7 +161,6 @@ function MsgSubscribe()
catch (ex) {
useRealSubscribeDialog = false;
}
var preselectedFolder = GetFirstSelectedMsgFolder();
if (useRealSubscribeDialog) {
Subscribe(windowTitle, preselectedFolder);
@ -152,26 +170,6 @@ function MsgSubscribe()
}
}
function MsgAccountManager()
{
window.openDialog("chrome://messenger/content/AccountManager.xul",
"AccountManager", "chrome,modal");
}
// we do this from a timer because if this is called from the onload=
// handler, then the parent window doesn't appear until after the wizard
// has closed, and this is confusing to the user
function MsgAccountWizard()
{
setTimeout("msgOpenAccountWizard();", 0);
}
function msgOpenAccountWizard()
{
window.openDialog("chrome://messenger/content/AccountWizard.xul",
"AccountWizard", "chrome,modal");
}
function MsgSaveAsFile()
{
dump("\MsgSaveAsFile from XUL\n");
@ -239,3 +237,74 @@ function MsgOpenNewWindowForMessage(messageUri, folderUri)
}
function MsgMarkMsgAsRead(markRead)
{
var selectedMessages = GetSelectedMessages();
var compositeDataSource = GetCompositeDataSource("MarkMessageRead");
MarkMessagesRead(compositeDataSource, selectedMessages, markRead);
}
function MsgMarkAsFlagged(markFlagged)
{
var selectedMessages = GetSelectedMessages();
var compositeDataSource = GetCompositeDataSource("MarkMessageFlagged");
MarkMessagesFlagged(compositeDataSource, selectedMessages, markFlagged);
}
function MsgMarkAllRead()
{
var compositeDataSource = GetCompositeDataSource("MarkAllMessagesRead");
var folder = GetLoadedMsgFolder();
if(folder)
MarkAllMessagesRead(compositeDataSource, folder);
}
function MsgMarkThreadAsRead()
{
var messageList = GetSelectedMessages();
if(messageList.length == 1)
{
var message = messageList[0];
var compositeDataSource = GetCompositeDataSource("MarkThreadAsRead");
MarkThreadAsRead(compositeDataSource, message);
}
}
function MsgMarkByDate() {}
function MsgOpenAttachment() {}
function MsgUpdateMsgCount() {}
function MsgImport() {}
function MsgWorkOffline() {}
function MsgSynchronize() {}
function MsgGetSelectedMsg() {}
function MsgGetFlaggedMsg() {}
function MsgSelectThread() {}
function MsgSelectFlaggedMsg() {}
function MsgShowFolders(){}
function MsgFolderProperties() {}
function MsgShowLocationbar() {}
function MsgViewThreadsUnread() {}
function MsgViewWatchedThreadsUnread() {}
function MsgViewIgnoreThread() {}
function MsgViewAttachInline() {}
function MsgWrapLongLines() {}
function MsgIncreaseFont() {}
function MsgDecreaseFont() {}
function MsgShowImages() {}
function MsgRefresh() {}
function MsgViewPageInfo() {}
function MsgFirstUnreadMessage() {}
function MsgFirstFlaggedMessage() {}
function MsgGoBack() {}
function MsgGoForward() {}
function MsgAddSenderToAddressBook() {}
function MsgAddAllToAddressBook() {}
function MsgIgnoreThread() {}
function MsgWatchThread() {}

View File

@ -32,6 +32,7 @@ function OnLoadMessageWindow()
{
CreateMailWindowGlobals();
CreateMessageWindowGlobals();
verifyAccounts();
InitMsgWindow();

View File

@ -48,6 +48,7 @@ Rights Reserved.
<html:script src="chrome://messenger/content/commandglue.js"/>
<html:script src="chrome://messenger/content/mailWindow.js"/>
<html:script src="chrome://messenger/content/messageWindow.js"/>
<html:script src="chrome://messenger/content/accountUtils.js"/>
<broadcasterset id="broadcasterset"/>

View File

@ -144,12 +144,11 @@ var folderListener = {
if(gNextMessageAfterDelete)
{
var nextMessage = document.getElementById(gNextMessageAfterDelete);
gNextMessageAfterDelete = null;
gNextMessageAfterDelete = null;
SelectNextMessage(nextMessage);
var threadTree = GetThreadTree();
if(threadTree)
threadTree.ensureElementIsVisible(nextMessage);
}
}
}
@ -1162,17 +1161,6 @@ function GetSelectedMsgFolders()
return folderArray;
}
function GetFirstSelectedMsgFolder()
{
var result = null;
var selectedFolders = GetSelectedMsgFolders();
if (selectedFolders.length > 0) {
result = selectedFolders[0];
}
return result;
}
function GetSelectedMessages()
{
var threadTree = GetThreadTree();
@ -1199,16 +1187,19 @@ function GetLoadedMsgFolder()
{
var loadedFolder = GetThreadTreeFolder();
var folderUri = loadedFolder.getAttribute("ref");
var folderResource = RDF.GetResource(folderUri);
if(folderResource)
if(folderUri && folderUri != "" && folderUri !="null")
{
try {
var msgFolder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder);
return msgFolder;
}
catch (ex) {
dump(ex + "\n");
dump("we know about this. see bug #35591\n");
var folderResource = RDF.GetResource(folderUri);
if(folderResource)
{
try {
var msgFolder = folderResource.QueryInterface(Components.interfaces.nsIMsgFolder);
return msgFolder;
}
catch (ex) {
dump(ex + "\n");
dump("we know about this. see bug #35591\n");
}
}
}
return null;
@ -1228,11 +1219,18 @@ function GetLoadedMessage()
function GetCompositeDataSource(command)
{
if(command == "GetNewMessages" || command == "Copy" || command == "NewFolder")
if(command == "GetNewMessages" || command == "Copy" || command == "NewFolder" ||
command == "MarkAllMessagesRead")
{
var folderTree = GetFolderTree();
return folderTree.database;
}
else if(command == "MarkMessageRead" || command == "MarkMessageFlagged" ||
command == "MarkThreadAsRead")
{
var threadTree = GetThreadTree();
return threadTree.database;
}
return null;

View File

@ -283,20 +283,12 @@ function GetSelectedFolderURI()
return uri;
}
function MsgOpenAttachment() {}
function MsgSendUnsentMsg()
{
var identity = getIdentityForSelectedServer();
messenger.SendUnsentMessages(identity);
}
function MsgUpdateMsgCount() {}
function MsgRenameFolder()
{
@ -429,15 +421,6 @@ function MsgCompactFolder()
}
}
function MsgImport() {}
function MsgWorkOffline() {}
function MsgSynchronize() {}
function MsgGetSelectedMsg() {}
function MsgGetFlaggedMsg() {}
function MsgSelectThread() {}
function MsgSelectFlaggedMsg() {}
function MsgFind() {
messenger.find();
}
@ -475,18 +458,6 @@ function MsgToggleSplitter(id)
splitter.setAttribute("state", "collapsed")
}
function MsgShowFolders()
{
}
function MsgFolderProperties() {}
function MsgShowLocationbar() {}
function MsgViewThreadsUnread() {}
function MsgViewWatchedThreadsUnread() {}
function MsgViewIgnoreThread() {}
function MsgViewAllHeaders()
{
@ -507,18 +478,11 @@ function MsgViewBriefHeaders()
return true;
}
function MsgViewAttachInline() {}
function MsgWrapLongLines() {}
function MsgIncreaseFont() {}
function MsgDecreaseFont() {}
function MsgReload()
{
ThreadPaneSelectionChange()
}
function MsgShowImages() {}
function MsgRefresh() {}
function MsgViewPageSource()
{
@ -564,9 +528,6 @@ function MsgViewPageSource()
}
}
function MsgViewPageInfo() {}
function MsgFirstUnreadMessage() {}
function MsgFirstFlaggedMessage() {}
function MsgStop() {
StopUrls();
@ -608,82 +569,6 @@ function MsgPreviousFlaggedMessage()
GoPreviousMessage(navigateFlagged, true);
}
function MsgGoBack() {}
function MsgGoForward() {}
function MsgEditMessageAsNew()
{
ComposeMessage(msgComposeType.Template, msgComposeFormat.Default);
}
function MsgAddSenderToAddressBook() {}
function MsgAddAllToAddressBook() {}
function MsgMarkMsgAsRead(markRead)
{
dump("\MsgMarkMsgAsRead from XUL\n");
var tree = GetThreadTree();
//get the selected elements
var messageList = ConvertDOMListToResourceArray(tree.selectedItems);
messenger.MarkMessagesRead(tree.database, messageList, markRead);
}
function MsgMarkThreadAsRead()
{
var tree = GetThreadTree();
var messageList = ConvertDOMListToResourceArray(tree.selectedItems);
if(messageList.Count() == 1)
{
var messageSupports = messageList.GetElementAt(0);
if(messageSupports)
{
var message = messageSupports.QueryInterface(Components.interfaces.nsIMessage);
if(message)
{
var folder = message.GetMsgFolder();
if(folder)
{
var thread = folder.getThreadForMessage(message);
if(thread)
{
messenger.markThreadRead(tree.database, folder, thread);
}
}
}
}
}
}
function MsgMarkByDate() {}
function MsgMarkAllRead()
{
var folderTree = GetFolderTree();
var selectedFolderList = folderTree.selectedItems;
if(selectedFolderList.length > 0)
{
var selectedFolder = selectedFolderList[0];
messenger.MarkAllMessagesRead(folderTree.database, selectedFolder.resource);
}
else {
dump("Nothing was selected\n");
}
}
function MsgMarkAsFlagged(markFlagged)
{
dump("\MsgMarkMsgAsFlagged from XUL\n");
var tree = GetThreadTree();
//get the selected elements
var messageList = ConvertDOMListToResourceArray(tree.selectedItems);
messenger.MarkMessagesFlagged(tree.database, messageList, markFlagged);
}
function MsgIgnoreThread() {}
function MsgWatchThread() {}
function GetMsgFolderFromUri(uri)
{
//dump("GetMsgFolderFromUri of " + uri + "\n");
@ -707,43 +592,4 @@ function GetResourceFromUri(uri)
return resource;
}
var accountManagerProgID = "component://netscape/messenger/account-manager";
var messengerMigratorProgID = "component://netscape/messenger/migrator";
function verifyAccounts() {
var openWizard = false;
var prefillAccount;
try {
var am = Components.classes[accountManagerProgID].getService(Components.interfaces.nsIMsgAccountManager);
var accounts = am.accounts;
// as long as we have some accounts, we're fine.
var accountCount = accounts.Count();
if (accountCount > 0) {
prefillAccount = getFirstInvalidAccount(accounts);
dump("prefillAccount = " + prefillAccount + "\n");
} else {
try {
messengerMigrator = Components.classes[messengerMigratorProgID].getService(Components.interfaces.nsIMessengerMigrator);
dump("attempt to UpgradePrefs. If that fails, open the account wizard.\n");
messengerMigrator.UpgradePrefs();
}
catch (ex) {
// upgrade prefs failed, so open account wizard
openWizard = true;
}
}
if (openWizard || prefillAccount) {
MsgAccountWizard(prefillAccount);
}
}
catch (ex) {
dump("error verifying accounts " + ex + "\n");
return;
}
}

View File

@ -1102,159 +1102,6 @@ nsMessenger::CopyMessages(nsIRDFCompositeDataSource *database,
}
NS_IMETHODIMP
nsMessenger::MarkMessageRead(nsIRDFCompositeDataSource *database,
nsIRDFResource *messageResource, PRBool markRead)
{
if(!database || !messageResource)
return NS_ERROR_NULL_POINTER;
nsresult rv;
nsCOMPtr<nsISupportsArray> resourceArray;
rv = NS_NewISupportsArray(getter_AddRefs(resourceArray));
if(NS_FAILED(rv))
return NS_ERROR_OUT_OF_MEMORY;
resourceArray->AppendElement(messageResource);
rv = MarkMessagesRead(database, resourceArray, markRead);
return rv;
}
NS_IMETHODIMP
nsMessenger::MarkMessagesRead(nsIRDFCompositeDataSource *database,
nsISupportsArray *resourceArray,
PRBool markRead)
{
nsresult rv;
if(!database || !resourceArray)
return NS_ERROR_NULL_POINTER;
nsCOMPtr<nsISupportsArray> argumentArray;
rv = NS_NewISupportsArray(getter_AddRefs(argumentArray));
if(NS_FAILED(rv))
{
return NS_ERROR_OUT_OF_MEMORY;
}
if(markRead)
rv = DoCommand(database, NC_RDF_MARKREAD, resourceArray, argumentArray);
else
rv = DoCommand(database, NC_RDF_MARKUNREAD, resourceArray, argumentArray);
return rv;
}
NS_IMETHODIMP
nsMessenger::MarkAllMessagesRead(nsIRDFCompositeDataSource *database,
nsIRDFResource *folderResource)
{
nsresult rv=NS_OK;
nsCOMPtr<nsISupportsArray> folderArray;
if(!folderResource || !database)
return NS_ERROR_NULL_POINTER;
if(NS_FAILED(NS_NewISupportsArray(getter_AddRefs(folderArray))))
return NS_ERROR_OUT_OF_MEMORY;
folderArray->AppendElement(folderResource);
DoCommand(database, NC_RDF_MARKALLMESSAGESREAD, folderArray, nsnull);
return rv;
}
NS_IMETHODIMP
nsMessenger::MarkThreadRead(nsIRDFCompositeDataSource *database,
nsIMsgFolder *folder, nsIMsgThread *thread)
{
nsresult rv=NS_OK;
nsCOMPtr<nsISupportsArray> folderArray;
nsCOMPtr<nsISupportsArray> argumentArray;
if(!folder || !database || !thread)
return NS_ERROR_NULL_POINTER;
if(NS_FAILED(NS_NewISupportsArray(getter_AddRefs(folderArray))))
return NS_ERROR_OUT_OF_MEMORY;
if(NS_FAILED(NS_NewISupportsArray(getter_AddRefs(argumentArray))))
return NS_ERROR_OUT_OF_MEMORY;
nsCOMPtr<nsIRDFResource> folderResource = do_QueryInterface(folder);
if(folder)
{
folderArray->AppendElement(folderResource);
}
nsCOMPtr<nsISupports> threadSupports = do_QueryInterface(thread);
if(threadSupports)
argumentArray->AppendElement(threadSupports);
DoCommand(database, NC_RDF_MARKTHREADREAD, folderArray, argumentArray);
return rv;
}
NS_IMETHODIMP
nsMessenger::MarkMessageFlagged(nsIRDFCompositeDataSource *database,
nsIRDFResource *messageResource,
PRBool markFlagged)
{
if(!database || !messageResource)
return NS_ERROR_NULL_POINTER;
nsresult rv;
nsCOMPtr<nsISupportsArray> resourceArray;
rv = NS_NewISupportsArray(getter_AddRefs(resourceArray));
if(NS_FAILED(rv))
return NS_ERROR_OUT_OF_MEMORY;
resourceArray->AppendElement(messageResource);
rv = MarkMessagesFlagged(database, resourceArray, markFlagged);
return rv;
}
NS_IMETHODIMP
nsMessenger::MarkMessagesFlagged(nsIRDFCompositeDataSource *database,
nsISupportsArray *resourceArray,
PRBool markFlagged)
{
nsresult rv;
if(!database || !resourceArray)
return NS_ERROR_NULL_POINTER;
nsCOMPtr<nsISupportsArray> argumentArray;
rv = NS_NewISupportsArray(getter_AddRefs(argumentArray));
if(NS_FAILED(rv))
{
return NS_ERROR_OUT_OF_MEMORY;
}
if(markFlagged)
rv = DoCommand(database, NC_RDF_MARKFLAGGED, resourceArray, argumentArray);
else
rv = DoCommand(database, NC_RDF_MARKUNFLAGGED, resourceArray, argumentArray);
return rv;
}
NS_IMETHODIMP
nsMessenger::RenameFolder(nsIRDFCompositeDataSource* db,
nsIRDFResource* folderResource,