mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 03:15:11 +00:00
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:
parent
fb7b9b8576
commit
b54db20942
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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));
|
||||
|
Loading…
Reference in New Issue
Block a user