fix269725 sr=mscott status messages don't show up in main window if you've opened up a stand-alone msg window

git-svn-id: svn://10.0.0.236/trunk@165405 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
bienvenu%nventure.com 2004-11-16 20:41:45 +00:00
parent 853f4fc94e
commit 6ef6def82d
3 changed files with 55 additions and 27 deletions

View File

@ -21,16 +21,22 @@ function DoRDFCommand(dataSource, command, srcArray, argumentArray)
{
var commandResource = RDF.GetResource(command);
if(commandResource) {
try {
dataSource.DoCommand(srcArray, commandResource, argumentArray);
}
catch(e) {
if (command == "http://home.netscape.com/NC-rdf#NewFolder") {
throw(e); // so that the dialog does not automatically close.
}
dump("Exception : In mail commands" + e + "\n");
}
try {
if (!argumentArray)
argumentArray = Components.classes["@mozilla.org/supports-array;1"]
.createInstance(Components.interfaces.nsISupportsArray);
if (argumentArray)
argumentArray.AppendElement(msgWindow);
dataSource.DoCommand(srcArray, commandResource, argumentArray);
}
catch(e) {
if (command == "http://home.netscape.com/NC-rdf#NewFolder") {
throw(e); // so that the dialog does not automatically close.
}
dump("Exception : In mail commands" + e + "\n");
}
}
}
function GetNewMessages(selectedFolders, server, compositeDataSource)
@ -627,7 +633,11 @@ function analyzeFolderForJunk()
var messages = new Array(count)
for (var i = 0; i < count; i++) {
messages[i] = view.getURIForViewIndex(i);
try
{
messages[i] = view.getURIForViewIndex(i);
}
catch (ex) {} // blow off errors here - dummy headers will fail
}
analyzeMessages(messages);
}
@ -688,9 +698,13 @@ function deleteJunkInFolder()
var clearedSelection = false;
// select the junk messages
var messageUri;
for (var i = 0; i < count; i++)
{
var messageUri = view.getURIForViewIndex(i);
try {
messageUri = view.getURIForViewIndex(i);
}
catch (ex) {continue;} // blow off errors for dummy rows
var msgHdr = messenger.messageServiceFromURI(messageUri).messageURIToMsgHdr(messageUri);
var junkScore = msgHdr.getStringProperty("junkscore");
var isJunk = ((junkScore != "") && (junkScore != "0"));

View File

@ -793,6 +793,20 @@ nsMsgFolderDataSource::DoCommand(nsISupportsArray/*<nsIRDFResource>*/* aSources,
{
nsresult rv = NS_OK;
nsCOMPtr<nsISupports> supports;
nsCOMPtr<nsIMsgWindow> window;
// callers can pass in the msgWindow as the last element of the arguments
// array. If they do, we'll use that as the msg window for progress, etc.
if (aArguments)
{
PRUint32 numArgs;
aArguments->Count(&numArgs);
if (numArgs > 1)
window = do_QueryElementAt(aArguments, numArgs - 1);
}
if (!window)
window = mWindow;
// XXX need to handle batching of command applied to all sources
PRUint32 cnt = 0;
@ -808,37 +822,37 @@ nsMsgFolderDataSource::DoCommand(nsISupportsArray/*<nsIRDFResource>*/* aSources,
{
if ((aCommand == kNC_Delete))
{
rv = DoDeleteFromFolder(folder, aArguments, mWindow, PR_FALSE);
rv = DoDeleteFromFolder(folder, aArguments, window, PR_FALSE);
}
if ((aCommand == kNC_ReallyDelete))
{
rv = DoDeleteFromFolder(folder, aArguments, mWindow, PR_TRUE);
rv = DoDeleteFromFolder(folder, aArguments, window, PR_TRUE);
}
else if((aCommand == kNC_NewFolder))
{
rv = DoNewFolder(folder, aArguments);
rv = DoNewFolder(folder, aArguments, window);
}
else if((aCommand == kNC_GetNewMessages))
{
nsCOMPtr<nsIMsgIncomingServer> server = do_QueryElementAt(aArguments, i, &rv);
NS_ENSURE_SUCCESS(rv, rv);
rv = server->GetNewMessages(folder, mWindow, nsnull);
rv = server->GetNewMessages(folder, window, nsnull);
}
else if((aCommand == kNC_Copy))
{
rv = DoCopyToFolder(folder, aArguments, mWindow, PR_FALSE);
rv = DoCopyToFolder(folder, aArguments, window, PR_FALSE);
}
else if((aCommand == kNC_Move))
{
rv = DoCopyToFolder(folder, aArguments, mWindow, PR_TRUE);
rv = DoCopyToFolder(folder, aArguments, window, PR_TRUE);
}
else if((aCommand == kNC_CopyFolder))
{
rv = DoFolderCopyToFolder(folder, aArguments, mWindow, PR_FALSE);
rv = DoFolderCopyToFolder(folder, aArguments, window, PR_FALSE);
}
else if((aCommand == kNC_MoveFolder))
{
rv = DoFolderCopyToFolder(folder, aArguments, mWindow, PR_TRUE);
rv = DoFolderCopyToFolder(folder, aArguments, window, PR_TRUE);
}
else if((aCommand == kNC_MarkAllMessagesRead))
{
@ -846,15 +860,15 @@ nsMsgFolderDataSource::DoCommand(nsISupportsArray/*<nsIRDFResource>*/* aSources,
}
else if ((aCommand == kNC_Compact))
{
rv = folder->Compact(nsnull, mWindow);
rv = folder->Compact(nsnull, window);
}
else if ((aCommand == kNC_CompactAll))
{
rv = folder->CompactAll(nsnull, mWindow, nsnull, PR_TRUE, nsnull);
rv = folder->CompactAll(nsnull, window, nsnull, PR_TRUE, nsnull);
}
else if ((aCommand == kNC_EmptyTrash))
{
rv = folder->EmptyTrash(mWindow, nsnull);
rv = folder->EmptyTrash(window, nsnull);
}
else if ((aCommand == kNC_Rename))
{
@ -864,7 +878,7 @@ nsMsgFolderDataSource::DoCommand(nsISupportsArray/*<nsIRDFResource>*/* aSources,
nsXPIDLString name;
literal->GetValue(getter_Copies(name));
rv = folder->Rename(name.get(),mWindow);
rv = folder->Rename(name.get(), window);
}
}
}
@ -2087,7 +2101,7 @@ nsresult nsMsgFolderDataSource::DoDeleteFromFolder(
return rv;
}
nsresult nsMsgFolderDataSource::DoNewFolder(nsIMsgFolder *folder, nsISupportsArray *arguments)
nsresult nsMsgFolderDataSource::DoNewFolder(nsIMsgFolder *folder, nsISupportsArray *arguments, nsIMsgWindow *window)
{
nsresult rv = NS_OK;
nsCOMPtr<nsIRDFLiteral> literal = do_QueryElementAt(arguments, 0, &rv);
@ -2096,7 +2110,7 @@ nsresult nsMsgFolderDataSource::DoNewFolder(nsIMsgFolder *folder, nsISupportsArr
nsXPIDLString name;
literal->GetValue(getter_Copies(name));
rv = folder->CreateSubfolder(name,mWindow);
rv = folder->CreateSubfolder(name, window);
}
return rv;

View File

@ -188,8 +188,8 @@ protected:
nsresult DoFolderCopyToFolder(nsIMsgFolder *dstFolder, nsISupportsArray *arguments,
nsIMsgWindow *msgWindow, PRBool isMoveFolder);
nsresult DoNewFolder(nsIMsgFolder *folder,
nsISupportsArray *arguments);
nsresult DoNewFolder(nsIMsgFolder *folder, nsISupportsArray *arguments,
nsIMsgWindow *window);
nsresult DoFolderAssert(nsIMsgFolder *folder, nsIRDFResource *property, nsIRDFNode *target);
nsresult DoFolderUnassert(nsIMsgFolder *folder, nsIRDFResource *property, nsIRDFNode *target);