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(kCImapHostSessionList, NS_IIMAPHOSTSESSIONLIST_CID);
static NS_DEFINE_CID(kMsgCopyServiceCID, NS_MSGCOPYSERVICE_CID); static NS_DEFINE_CID(kMsgCopyServiceCID, NS_MSGCOPYSERVICE_CID);
static NS_DEFINE_CID(kCopyMessageStreamListenerCID, NS_COPYMESSAGESTREAMLISTENER_CID); static NS_DEFINE_CID(kCopyMessageStreamListenerCID, NS_COPYMESSAGESTREAMLISTENER_CID);
static NS_DEFINE_CID(kPrefCID, NS_PREF_CID);
#define FOUR_K 4096 #define FOUR_K 4096
#define MAILNEWS_CUSTOM_HEADERS "mailnews.customHeaders" #define MAILNEWS_CUSTOM_HEADERS "mailnews.customHeaders"
@ -2106,13 +2105,23 @@ nsImapMailFolder::DeleteSubFolders(nsISupportsArray* folders, nsIMsgWindow *msgW
deleteNoTrash = PR_TRUE; deleteNoTrash = PR_TRUE;
} }
nsXPIDLString confirmationStr; PRBool confirmDeletion = PR_TRUE;
IMAPGetStringByID(((!deleteNoTrash) ? IMAP_MOVE_FOLDER_TO_TRASH : IMAP_DELETE_NO_TRASH), nsCOMPtr<nsIPref> prefs(do_GetService(NS_PREF_CONTRACTID, &rv));
getter_Copies(confirmationStr)); 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); dialog->Confirm(nsnull, confirmationStr, &confirmed);
} }
else
confirmed = PR_TRUE;
if (confirmed) if (confirmed)
{ {
for (i = 0; i < folderCount; i++) for (i = 0; i < folderCount; i++)

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

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