зеркало из https://github.com/mozilla/pjs.git
r=naving, sr=bienvenu Hookup preference for displaying confirmation on deleting folders
This commit is contained in:
Родитель
5a22fb08ea
Коммит
060fe4a35f
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче