From 060fe4a35fc31cf5b2ff5f415c60bcf114ceea80 Mon Sep 17 00:00:00 2001 From: "mkaply%us.ibm.com" Date: Thu, 27 Jun 2002 22:07:10 +0000 Subject: [PATCH] #62322 r=naving, sr=bienvenu Hookup preference for displaying confirmation on deleting folders --- mailnews/imap/src/nsImapMailFolder.cpp | 19 ++++++--- mailnews/local/src/nsLocalMailFolder.cpp | 54 ++++++++++++++---------- 2 files changed, 46 insertions(+), 27 deletions(-) diff --git a/mailnews/imap/src/nsImapMailFolder.cpp b/mailnews/imap/src/nsImapMailFolder.cpp index 0abd4beafe1..0630ce0b77a 100644 --- a/mailnews/imap/src/nsImapMailFolder.cpp +++ b/mailnews/imap/src/nsImapMailFolder.cpp @@ -114,7 +114,6 @@ static NS_DEFINE_CID(kParseMailMsgStateCID, NS_PARSEMAILMSGSTATE_CID); static NS_DEFINE_CID(kCImapHostSessionList, NS_IIMAPHOSTSESSIONLIST_CID); static NS_DEFINE_CID(kMsgCopyServiceCID, NS_MSGCOPYSERVICE_CID); static NS_DEFINE_CID(kCopyMessageStreamListenerCID, NS_COPYMESSAGESTREAMLISTENER_CID); -static NS_DEFINE_CID(kPrefCID, NS_PREF_CID); #define FOUR_K 4096 #define MAILNEWS_CUSTOM_HEADERS "mailnews.customHeaders" @@ -2106,13 +2105,23 @@ nsImapMailFolder::DeleteSubFolders(nsISupportsArray* folders, nsIMsgWindow *msgW deleteNoTrash = PR_TRUE; } - nsXPIDLString confirmationStr; - IMAPGetStringByID(((!deleteNoTrash) ? IMAP_MOVE_FOLDER_TO_TRASH : IMAP_DELETE_NO_TRASH), - getter_Copies(confirmationStr)); + PRBool confirmDeletion = PR_TRUE; + nsCOMPtr prefs(do_GetService(NS_PREF_CONTRACTID, &rv)); + if (NS_SUCCEEDED(rv)) + prefs->GetBoolPref("mailnews.confirm.moveFoldersToTrash", &confirmDeletion); - if (dialog && confirmationStr) { + if (confirmDeletion) + { + nsXPIDLString confirmationStr; + IMAPGetStringByID(((!deleteNoTrash) ? IMAP_MOVE_FOLDER_TO_TRASH : IMAP_DELETE_NO_TRASH), + getter_Copies(confirmationStr)); + + if (dialog && confirmationStr) dialog->Confirm(nsnull, confirmationStr, &confirmed); } + else + confirmed = PR_TRUE; + if (confirmed) { for (i = 0; i < folderCount; i++) diff --git a/mailnews/local/src/nsLocalMailFolder.cpp b/mailnews/local/src/nsLocalMailFolder.cpp index 889e6838df1..1e0794f9cf2 100644 --- a/mailnews/local/src/nsLocalMailFolder.cpp +++ b/mailnews/local/src/nsLocalMailFolder.cpp @@ -1147,31 +1147,41 @@ NS_IMETHODIMP nsMsgLocalMailFolder::DeleteSubFolders( nsCOMPtr docShell; if (!msgWindow) return NS_ERROR_NULL_POINTER; msgWindow->GetRootDocShell(getter_AddRefs(docShell)); - if (!mMsgStringService) - mMsgStringService = do_GetService(NS_MSG_POPSTRINGSERVICE_CONTRACTID); - if (!mMsgStringService) return NS_ERROR_FAILURE; - PRUnichar *alertString = nsnull; - mMsgStringService->GetStringByID(POP3_MOVE_FOLDER_TO_TRASH, &alertString); - if (!alertString) return rv; if (docShell) { - nsCOMPtr dialog(do_GetInterface(docShell)); - if (dialog) + PRBool okToDelete = PR_FALSE; + PRBool confirmDeletion = PR_TRUE; + nsCOMPtr prefs(do_GetService(NS_PREF_CONTRACTID, &rv)); + if (NS_SUCCEEDED(rv)) + rv = prefs->GetBoolPref("mailnews.confirm.moveFoldersToTrash", &confirmDeletion); + if (confirmDeletion) { - PRBool okToDelete = PR_FALSE; - dialog->Confirm(nsnull, alertString, &okToDelete); - if (okToDelete) - { - nsCOMPtr trashFolder; - rv = GetTrashFolder(getter_AddRefs(trashFolder)); - if (NS_SUCCEEDED(rv)) - { - // we don't allow multiple folder selection so this is ok. - nsCOMPtr supports = getter_AddRefs(folders->ElementAt(0)); - nsCOMPtr folder = do_QueryInterface(supports); - if (folder) - trashFolder->CopyFolder(folder, PR_TRUE, msgWindow, nsnull); - } + if (!mMsgStringService) + mMsgStringService = do_GetService(NS_MSG_POPSTRINGSERVICE_CONTRACTID); + if (!mMsgStringService) return NS_ERROR_FAILURE; + PRUnichar *alertString = nsnull; + mMsgStringService->GetStringByID(POP3_MOVE_FOLDER_TO_TRASH, &alertString); + if (!alertString) return rv; + nsCOMPtr dialog(do_GetInterface(docShell)); + if (dialog) + { + PRBool okToDelete = PR_FALSE; + dialog->Confirm(nsnull, alertString, &okToDelete); + } + } + else + okToDelete = PR_TRUE; + if (okToDelete) + { + nsCOMPtr trashFolder; + rv = GetTrashFolder(getter_AddRefs(trashFolder)); + if (NS_SUCCEEDED(rv)) + { + // we don't allow multiple folder selection so this is ok. + nsCOMPtr supports = getter_AddRefs(folders->ElementAt(0)); + nsCOMPtr folder = do_QueryInterface(supports); + if (folder) + trashFolder->CopyFolder(folder, PR_TRUE, msgWindow, nsnull); } } }