r=naving, sr=bienvenu
Hookup preference for displaying confirmation on deleting folders
This commit is contained in:
mkaply%us.ibm.com 2002-06-27 22:07:10 +00:00
Родитель 5a22fb08ea
Коммит 060fe4a35f
2 изменённых файлов: 46 добавлений и 27 удалений

Просмотреть файл

@ -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<nsIPref> 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++)

Просмотреть файл

@ -1147,31 +1147,41 @@ NS_IMETHODIMP nsMsgLocalMailFolder::DeleteSubFolders(
nsCOMPtr<nsIDocShell> 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<nsIPrompt> dialog(do_GetInterface(docShell));
if (dialog)
PRBool okToDelete = PR_FALSE;
PRBool confirmDeletion = PR_TRUE;
nsCOMPtr<nsIPref> 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<nsIMsgFolder> trashFolder;
rv = GetTrashFolder(getter_AddRefs(trashFolder));
if (NS_SUCCEEDED(rv))
{
// we don't allow multiple folder selection so this is ok.
nsCOMPtr<nsISupports> supports = getter_AddRefs(folders->ElementAt(0));
nsCOMPtr<nsIMsgFolder> 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<nsIPrompt> dialog(do_GetInterface(docShell));
if (dialog)
{
PRBool okToDelete = PR_FALSE;
dialog->Confirm(nsnull, alertString, &okToDelete);
}
}
else
okToDelete = PR_TRUE;
if (okToDelete)
{
nsCOMPtr<nsIMsgFolder> trashFolder;
rv = GetTrashFolder(getter_AddRefs(trashFolder));
if (NS_SUCCEEDED(rv))
{
// we don't allow multiple folder selection so this is ok.
nsCOMPtr<nsISupports> supports = getter_AddRefs(folders->ElementAt(0));
nsCOMPtr<nsIMsgFolder> folder = do_QueryInterface(supports);
if (folder)
trashFolder->CopyFolder(folder, PR_TRUE, msgWindow, nsnull);
}
}
}