89698 r=suresh sr=bienvenu; Check if the newName for folder to be renamed has hierarchyDelimiter, if

so throw an alert. Also did some clean up in nsImapStringBundle.
This commit is contained in:
naving%netscape.com 2001-08-21 20:04:00 +00:00
parent f6b9a047d4
commit a8c7eb79ae
5 changed files with 69 additions and 50 deletions

View File

@ -346,3 +346,7 @@
## @name IMAP_PFC_SENT_MAIL
## @loc None
5064=Sent Mail
## @name IMAP_SPECIAL_CHAR
## @loc None
5065= The %c character is reserved on imap server. Please choose another name.

View File

@ -2182,8 +2182,10 @@ NS_IMETHODIMP nsImapIncomingServer::GetServerRequiresPasswordForBiff(PRBool *_re
NS_IMETHODIMP nsImapIncomingServer::PromptForPassword(char ** aPassword,
nsIMsgWindow * aMsgWindow)
{
PRUnichar *passwordTemplate = IMAPGetStringByID(IMAP_ENTER_PASSWORD_PROMPT);
PRUnichar *passwordTitle = IMAPGetStringByID(IMAP_ENTER_PASSWORD_PROMPT_TITLE);
nsXPIDLString passwordTemplate;
IMAPGetStringByID(IMAP_ENTER_PASSWORD_PROMPT, getter_Copies(passwordTemplate));
nsXPIDLString passwordTitle;
IMAPGetStringByID(IMAP_ENTER_PASSWORD_PROMPT_TITLE, getter_Copies(passwordTitle));
PRUnichar *passwordText = nsnull;
nsXPIDLCString hostName;
nsXPIDLCString userName;
@ -2196,8 +2198,6 @@ NS_IMETHODIMP nsImapIncomingServer::PromptForPassword(char ** aPassword,
nsresult rv = GetPasswordWithUI(passwordText, passwordTitle, aMsgWindow,
&okayValue, aPassword);
nsTextFormatter::smprintf_free(passwordText);
nsCRT::free(passwordTemplate);
nsCRT::free(passwordTitle);
return rv;
}

View File

@ -683,7 +683,8 @@ nsImapMailFolder::AlertSpecialFolderExists(nsIMsgWindow *msgWindow)
nsresult rv = NS_OK;
nsCOMPtr<nsIDocShell> docShell;
msgWindow->GetRootDocShell(getter_AddRefs(docShell));
PRUnichar *alertString = IMAPGetStringByID(IMAP_MAILBOX_ALREADY_EXISTS);
nsXPIDLString alertString;
IMAPGetStringByID(IMAP_MAILBOX_ALREADY_EXISTS, getter_Copies(alertString));
if (!alertString) return rv;
if (docShell)
{
@ -1178,6 +1179,33 @@ NS_IMETHODIMP nsImapMailFolder::Delete ()
NS_IMETHODIMP nsImapMailFolder::Rename (const PRUnichar *newName, nsIMsgWindow *msgWindow )
{
nsresult rv = NS_ERROR_FAILURE;
nsAutoString newNameStr(newName);
if (newNameStr.FindChar(m_hierarchyDelimiter,0) != -1)
{
nsCOMPtr<nsIDocShell> docShell;
if (msgWindow)
msgWindow->GetRootDocShell(getter_AddRefs(docShell));
if (docShell)
{
nsCOMPtr<nsIStringBundle> bundle;
rv = IMAPGetStringBundle(getter_AddRefs(bundle));
if (NS_SUCCEEDED(rv) && bundle)
{
const PRUnichar *formatStrings[] =
{
(const PRUnichar*) m_hierarchyDelimiter
};
nsXPIDLString alertString;
rv = bundle->FormatStringFromID(IMAP_SPECIAL_CHAR,
formatStrings, 1,
getter_Copies(alertString));
nsCOMPtr<nsIPrompt> dialog(do_GetInterface(docShell));
if (dialog && alertString)
dialog->Alert(nsnull, alertString);
}
}
return NS_ERROR_FAILURE;
}
nsCOMPtr <nsIImapIncomingServer> incomingImapServer;
GetImapIncomingServer(getter_AddRefs(incomingImapServer));
@ -1979,8 +2007,9 @@ nsImapMailFolder::DeleteSubFolders(nsISupportsArray* folders, nsIMsgWindow *msgW
deleteNoTrash = PR_TRUE;
}
PRUnichar *confirmationStr = IMAPGetStringByID((!deleteNoTrash)
? IMAP_MOVE_FOLDER_TO_TRASH : IMAP_DELETE_NO_TRASH);
nsXPIDLString confirmationStr;
IMAPGetStringByID(((!deleteNoTrash) ? IMAP_MOVE_FOLDER_TO_TRASH : IMAP_DELETE_NO_TRASH),
getter_Copies(confirmationStr));
if (dialog && confirmationStr) {
dialog->Confirm(nsnull, confirmationStr, &confirmed);
@ -2007,10 +2036,7 @@ nsImapMailFolder::DeleteSubFolders(nsISupportsArray* folders, nsIMsgWindow *msgW
nsnull);
}
}
}
else
if (confirmationStr)
nsCRT::free(confirmationStr);
}
}
}
@ -4442,7 +4468,7 @@ NS_IMETHODIMP
nsImapMailFolder::ProgressStatus(nsIImapProtocol* aProtocol,
PRUint32 aMsgId, const PRUnichar *extraInfo)
{
PRUnichar *progressMsg = nsnull;
PRUnichar *progressMsg=nsnull;
nsCOMPtr<nsIMsgIncomingServer> server;
nsresult rv = GetServer(getter_AddRefs(server));
@ -4453,7 +4479,7 @@ nsImapMailFolder::ProgressStatus(nsIImapProtocol* aProtocol,
serverSink->GetImapStringByID(aMsgId, &progressMsg);
}
if (!progressMsg)
progressMsg = IMAPGetStringByID(aMsgId);
IMAPGetStringByID(aMsgId, &progressMsg);
if (aProtocol && progressMsg)
{

View File

@ -34,41 +34,27 @@ static NS_DEFINE_CID(kStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID);
#define IMAP_MSGS_URL "chrome://messenger/locale/imapMsgs.properties"
extern "C"
PRUnichar *
IMAPGetStringByID(PRInt32 stringID)
nsresult
IMAPGetStringByID(PRInt32 stringID, PRUnichar **aString)
{
nsresult res;
char* propertyURL = NULL;
nsString resultString; resultString.AssignWithConversion("???");
propertyURL = IMAP_MSGS_URL;
nsCOMPtr<nsIStringBundleService> sBundleService =
do_GetService(kStringBundleServiceCID, &res);
if (NS_SUCCEEDED(res) && (nsnull != sBundleService))
{
nsIStringBundle* sBundle = nsnull;
res = sBundleService->CreateBundle(propertyURL, &sBundle);
if (NS_SUCCEEDED(res))
{
PRUnichar *ptrv = nsnull;
res = sBundle->GetStringFromID(stringID, &ptrv);
NS_RELEASE(sBundle);
if (NS_FAILED(res))
{
resultString.AssignWithConversion("[StringID");
resultString.AppendInt(stringID, 10);
resultString.AppendWithConversion("?]");
return resultString.ToNewUnicode();
}
return ptrv;
}
}
return resultString.ToNewUnicode();
nsresult res=NS_OK;
nsCOMPtr <nsIStringBundle> sBundle;
res = IMAPGetStringBundle(getter_AddRefs(sBundle));
if (NS_SUCCEEDED(res) && sBundle)
res = sBundle->GetStringFromID(stringID, aString);
return res;
}
nsresult
IMAPGetStringBundle(nsIStringBundle **aBundle)
{
nsresult rv=NS_OK;
nsCOMPtr<nsIStringBundleService> stringService = do_GetService(kStringBundleServiceCID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
if (!stringService) return NS_ERROR_NULL_POINTER;
nsCOMPtr<nsIStringBundle> stringBundle;
rv = stringService->CreateBundle(IMAP_MSGS_URL, getter_AddRefs(stringBundle));
*aBundle = stringBundle;
NS_IF_ADDREF(*aBundle);
return rv;
}

View File

@ -22,9 +22,12 @@
#ifndef _nsImapStringBundle_H__
#define _nsImapStringBundle_H__
#include "nsIStringBundle.h"
NS_BEGIN_EXTERN_C
PRUnichar *IMAPGetStringByID(PRInt32 stringID);
nsresult IMAPGetStringByID(PRInt32 stringID, PRUnichar **aString);
nsresult IMAPGetStringBundle(nsIStringBundle **aBundle);
NS_END_EXTERN_C
@ -96,5 +99,5 @@ NS_END_EXTERN_C
#define IMAP_PERSONAL_FILING_CABINET 5062
#define IMAP_PFC_READ_MAIL 5063
#define IMAP_PFC_SENT_MAIL 5064
#define IMAP_SPECIAL_CHAR 5065
#endif /* _nsImapStringBundle_H__ */