120203 r=bienvenu sr=sspitzer. fix notification to rdf/outliner so

that we notify move/rename/delete/copy folder for the parent folder
only (no need for children).
This commit is contained in:
naving%netscape.com 2002-01-23 01:40:26 +00:00
parent fb7b9b8576
commit b54db20942
4 changed files with 31 additions and 38 deletions

View File

@ -426,6 +426,7 @@ NS_IMETHODIMP nsMsgFolderDataSource::GetTargets(nsIRDFResource* source,
nsCOMPtr<nsIEnumerator> subFolders;
rv = folder->GetSubFolders(getter_AddRefs(subFolders));
rv = subFolders->First();
if(NS_SUCCEEDED(rv))
{
nsAdapterEnumerator* cursor =
@ -1321,6 +1322,7 @@ nsMsgFolderDataSource::createFolderOpenNode(nsIMsgFolder *folder, nsIRDFNode **t
// from the folder cache on startup
nsCOMPtr<nsIEnumerator> subFolders;
nsresult rv = folder->GetSubFolders(getter_AddRefs(subFolders));
rv = subFolders->First();
if (NS_FAILED(rv))
return NS_RDF_NO_VALUE;
@ -1818,6 +1820,7 @@ nsMsgFolderDataSource::createFolderChildNode(nsIMsgFolder *folder,
{
nsCOMPtr<nsIEnumerator> subFolders;
nsresult rv = folder->GetSubFolders(getter_AddRefs(subFolders));
rv = subFolders->First();
if (NS_FAILED(rv))
return NS_RDF_NO_VALUE;

View File

@ -1186,14 +1186,7 @@ NS_IMETHODIMP nsMsgFolder::RecursiveDelete(PRBool deleteStorage, nsIMsgWindow *m
child->SetParent(nsnull);
status = child->RecursiveDelete(deleteStorage,msgWindow); // recur
if (NS_SUCCEEDED(status))
{
mSubFolders->RemoveElement(supports); // unlink it from this's child list
nsCOMPtr<nsISupports> childSupports(do_QueryInterface(child));
nsCOMPtr<nsISupports> folderSupports;
rv = QueryInterface(NS_GET_IID(nsISupports), getter_AddRefs(folderSupports));
if(childSupports && NS_SUCCEEDED(rv))
NotifyItemDeleted(folderSupports, childSupports, "folderView");
}
else
{ // setting parent back if we failed for some reason
child->SetParent(this);

View File

@ -5857,15 +5857,8 @@ NS_IMETHODIMP nsImapMailFolder::RenameClient(nsIMsgWindow *msgWindow, nsIMsgFold
unusedDB->SetSummaryValid(PR_TRUE);
unusedDB->Commit(nsMsgDBCommitType::kLargeCommit);
unusedDB->Close(PR_TRUE);
nsCOMPtr<nsISupports> childSupports(do_QueryInterface(child));
nsCOMPtr<nsISupports> folderSupports;
rv = QueryInterface(NS_GET_IID(nsISupports), getter_AddRefs(folderSupports));
if(childSupports && NS_SUCCEEDED(rv))
NotifyItemAdded(folderSupports, childSupports, "folderView");
child->RenameSubFolders(msgWindow, msgFolder);
}
}
nsCOMPtr<nsIFolder> parent;
msgFolder->GetParent(getter_AddRefs(parent));
@ -5873,13 +5866,22 @@ NS_IMETHODIMP nsImapMailFolder::RenameClient(nsIMsgWindow *msgWindow, nsIMsgFold
msgFolder->SetParent(nsnull);
msgParent->PropagateDelete(msgFolder,PR_FALSE, nsnull);
nsCOMPtr<nsISupports> childSupports(do_QueryInterface(child));
nsCOMPtr<nsISupports> parentSupports;
rv = QueryInterface(NS_GET_IID(nsISupports), getter_AddRefs(parentSupports));
if(childSupports && NS_SUCCEEDED(rv))
{
NotifyItemAdded(parentSupports, childSupports, "folderView");
}
}
}
return rv;
}
NS_IMETHODIMP nsImapMailFolder::RenameSubFolders(nsIMsgWindow *msgWindow, nsIMsgFolder *oldFolder)
{
nsresult rv = NS_OK;
m_initialized = PR_TRUE;
nsCOMPtr<nsIEnumerator> aEnumerator;
oldFolder->GetSubFolders(getter_AddRefs(aEnumerator));
nsCOMPtr<nsISupports> aSupport;
@ -5956,16 +5958,11 @@ NS_IMETHODIMP nsImapMailFolder::RenameSubFolders(nsIMsgWindow *msgWindow, nsIMsg
imapFolder->SetOnlineName(onlineCName.get());
imapFolder->SetHierarchyDelimiter(hierarchyDelimiter);
imapFolder->SetBoxFlags(boxflags);
m_initialized = PR_TRUE;
PRBool changed = PR_FALSE;
msgFolder->MatchOrChangeFilterDestination(child, PR_FALSE /*caseInsensitive*/, &changed);
if (changed)
msgFolder->AlertFilterChanged(msgWindow);
nsCOMPtr <nsISupports> parentSupport = do_QueryInterface(NS_STATIC_CAST(nsIMsgImapMailFolder*, this));
nsCOMPtr <nsISupports> childSupport = do_QueryInterface(child);
if (parentSupport && childSupport)
NotifyItemAdded(parentSupport, childSupport, "folderView");
child->RenameSubFolders(msgWindow, msgFolder);
}

View File

@ -1328,18 +1328,24 @@ NS_IMETHODIMP nsMsgLocalMailFolder::Rename(const PRUnichar *aNewName, nsIMsgWind
MatchOrChangeFilterDestination(newFolder, PR_TRUE /*caseInsenstive*/, &changed);
if (changed)
AlertFilterChanged(msgWindow);
nsCOMPtr<nsISupports> newFolderSupport = do_QueryInterface(newFolder);
NotifyItemAdded(parentSupport, newFolderSupport, "folderView");
/***** jefft -
* Needs to find a way to reselect the new renamed folder and the
* message being selected.
*/
if (cnt > 0)
newFolder->RenameSubFolders(msgWindow, this);
if (parentFolder)
{
SetParent(nsnull);
parentFolder->PropagateDelete(this, PR_FALSE, msgWindow);
nsCOMPtr<nsISupports> newFolderSupports = do_QueryInterface(newFolder);
nsCOMPtr<nsISupports> parentSupports = do_QueryInterface(parentFolder);
if(newFolderSupports && parentSupports)
{
NotifyItemAdded(parentSupports, newFolderSupports, "folderView");
}
}
}
}
@ -1376,11 +1382,6 @@ NS_IMETHODIMP nsMsgLocalMailFolder::RenameSubFolders(nsIMsgWindow *msgWindow, ns
if (changed)
msgFolder->AlertFilterChanged(msgWindow);
nsCOMPtr <nsISupports> parentSupport = do_QueryInterface(NS_STATIC_CAST(nsIMsgLocalMailFolder*, this));
nsCOMPtr <nsISupports> newFolderSupport = do_QueryInterface(newFolder);
if (parentSupport && newFolderSupport)
NotifyItemAdded(parentSupport, newFolderSupport, "folderView");
newFolder->RenameSubFolders(msgWindow, msgFolder);
}
rv = aEnumerator->Next();
@ -2044,17 +2045,6 @@ nsMsgLocalMailFolder::CopyFolderLocal(nsIMsgFolder *srcFolder, PRBool isMoveFold
rv = srcFolder->MatchOrChangeFilterDestination(newMsgFolder, PR_TRUE, &changed);
if (changed)
srcFolder->AlertFilterChanged(msgWindow);
if (newMsgFolder)
{
newMsgFolder->SetName(folderName.get());
nsCOMPtr<nsISupports> supports = do_QueryInterface(newMsgFolder);
nsCOMPtr <nsISupports> parentSupports = do_QueryInterface((nsIMsgLocalMailFolder*)this);
if (supports && parentSupports)
{
NotifyItemAdded(parentSupports, supports, "folderView");
}
}
nsCOMPtr<nsIEnumerator> aEnumerator;
srcFolder->GetSubFolders(getter_AddRefs(aEnumerator));
@ -2077,6 +2067,16 @@ nsMsgLocalMailFolder::CopyFolderLocal(nsIMsgFolder *srcFolder, PRBool isMoveFold
if (isMoveFolder && NS_SUCCEEDED(copyStatus))
{
if (newMsgFolder) //notifying the "folder" that was dragged and dropped has been created.
{ //no need to do this for its subfolders - isMoveFolder will be true for "folder"
newMsgFolder->SetName(folderName.get());
nsCOMPtr<nsISupports> supports = do_QueryInterface(newMsgFolder);
nsCOMPtr <nsISupports> parentSupports = do_QueryInterface((nsIMsgLocalMailFolder*)this);
if (supports && parentSupports)
NotifyItemAdded(parentSupports, supports, "folderView");
}
nsCOMPtr <nsIFolder> parent;
nsCOMPtr<nsIMsgFolder> msgParent;
srcFolder->GetParent(getter_AddRefs(parent));