common dialog localization, 38523. r=hyatt

This commit is contained in:
ben%netscape.com 2000-09-01 05:54:59 +00:00
Родитель fa34c388c4
Коммит 7df47feb54
1 изменённых файлов: 121 добавлений и 40 удалений

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

@ -33,6 +33,7 @@
#include "nsIURL.h"
#include "nsIIOService.h"
#include "nsIURL.h"
#include "nsIStringBundle.h"
static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID);
#include "nsIPref.h"
@ -152,7 +153,11 @@ static NS_DEFINE_CID( kCommonDialogsCID, NS_CommonDialog_CID );
static NS_DEFINE_CID(kWalletServiceCID, NS_WALLETSERVICE_CID);
#include "nsIWebShell.h"
static NS_DEFINE_CID(kStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID);
#define SIZE_PERSISTENCE_TIMEOUT 500 // msec
#define kWebShellLocaleProperties "chrome://global/locale/commonDialogs.properties"
const char * kPrimaryContentTypeValue = "content-primary";
@ -1765,6 +1770,8 @@ public:
protected:
nsCOMPtr<nsIDOMWindowInternal> mDOMWindow;
nsCOMPtr<nsICommonDialogs> mCommonDialogs;
nsresult GetLocaleString(const PRUnichar*, PRUnichar**);
};
static nsresult
@ -1800,15 +1807,40 @@ nsDOMWindowPrompter::Init()
return rv;
}
nsresult
nsDOMWindowPrompter::GetLocaleString(const PRUnichar* aString, PRUnichar** aResult)
{
nsresult rv;
nsCOMPtr<nsIStringBundleService> stringService = do_GetService(kStringBundleServiceCID);
nsCOMPtr<nsIStringBundle> stringBundle;
nsILocale *locale = nsnull;
rv = stringService->CreateBundle(kWebShellLocaleProperties, locale, getter_AddRefs(stringBundle));
if (NS_FAILED(rv)) return NS_ERROR_FAILURE;
rv = stringBundle->GetStringFromName(aString, aResult);
return rv;
}
NS_IMETHODIMP
nsDOMWindowPrompter::Alert(const PRUnichar* dialogTitle,
const PRUnichar* text)
{
nsresult rv;
nsAutoString title(dialogTitle);
if (title == nsnull)
title.AssignWithConversion("Alert"); // XXX i18n
rv = mCommonDialogs->Alert(mDOMWindow, title.GetUnicode(), text);
if (dialogTitle == nsnull) {
PRUnichar *title;
GetLocaleString(NS_ConvertASCIItoUCS2("Alert"), &title);
rv = mCommonDialogs->Alert(mDOMWindow, title, text);
nsCRT::free(title);
title = nsnull;
}
else {
rv = mCommonDialogs->Alert(mDOMWindow, dialogTitle, text);
}
return rv;
}
@ -1818,10 +1850,17 @@ nsDOMWindowPrompter::Confirm(const PRUnichar* dialogTitle,
PRBool *_retval)
{
nsresult rv;
nsAutoString title(dialogTitle);
if (title == nsnull)
title.AssignWithConversion("Confirm"); // XXX i18n
rv = mCommonDialogs->Confirm(mDOMWindow, title.GetUnicode(), text, _retval);
if (dialogTitle == nsnull) {
PRUnichar *title;
GetLocaleString(NS_ConvertASCIItoUCS2("Confirm"), &title);
rv = mCommonDialogs->Confirm(mDOMWindow, title, text, _retval);
nsCRT::free(title);
title = nsnull;
}
else {
rv = mCommonDialogs->Confirm(mDOMWindow, dialogTitle, text, _retval);
}
return rv;
}
@ -1832,12 +1871,19 @@ nsDOMWindowPrompter::ConfirmCheck(const PRUnichar* dialogTitle,
PRBool *checkValue,
PRBool *_retval)
{
nsresult rv;
nsAutoString title(dialogTitle);
if (title == nsnull)
title.AssignWithConversion("Confirm"); // XXX i18n
rv = mCommonDialogs->ConfirmCheck(mDOMWindow, title.GetUnicode(), text,
checkMsg, checkValue, _retval);
nsresult rv;
if (dialogTitle == nsnull) {
PRUnichar *title;
GetLocaleString(NS_ConvertASCIItoUCS2("ConfirmCheck"), &title);
rv = mCommonDialogs->ConfirmCheck(mDOMWindow, title, text, checkMsg, checkValue, _retval);
nsCRT::free(title);
title = nsnull;
}
else {
rv = mCommonDialogs->ConfirmCheck(mDOMWindow, dialogTitle, text, checkMsg, checkValue, _retval);
}
return rv;
}
@ -1850,13 +1896,21 @@ nsDOMWindowPrompter::Prompt(const PRUnichar* dialogTitle,
PRUnichar* *result,
PRBool *_retval)
{
// ignore passwordRealm here?
nsresult rv;
nsAutoString title(dialogTitle);
if (title == nsnull)
title.AssignWithConversion("Prompt"); // XXX i18n
rv = mCommonDialogs->Prompt(mDOMWindow, title.GetUnicode(), text,
defaultText, result, _retval);
if (dialogTitle == nsnull) {
PRUnichar *title;
GetLocaleString(NS_ConvertASCIItoUCS2("Prompt"), &title);
rv = mCommonDialogs->Prompt(mDOMWindow, title, text,
defaultText, result, _retval);
nsCRT::free(title);
title = nsnull;
}
else {
rv = mCommonDialogs->Prompt(mDOMWindow, dialogTitle, text,
defaultText, result, _retval);
}
return rv;
}
@ -1869,13 +1923,21 @@ nsDOMWindowPrompter::PromptUsernameAndPassword(const PRUnichar* dialogTitle,
PRUnichar* *pwd,
PRBool *_retval)
{
// ignore passwordRealm and savePassword here?
nsresult rv;
nsAutoString title(dialogTitle);
if (title == nsnull)
title.AssignWithConversion("Username and Password"); // XXX i18n
rv = mCommonDialogs->PromptUsernameAndPassword(mDOMWindow, title.GetUnicode(), text,
user, pwd, _retval);
if (dialogTitle == nsnull) {
PRUnichar *title;
GetLocaleString(NS_ConvertASCIItoUCS2("PromptUsernameAndPassword"), &title);
rv = mCommonDialogs->PromptUsernameAndPassword(mDOMWindow, title, text,
user, pwd, _retval);
nsCRT::free(title);
title = nsnull;
}
else {
rv = mCommonDialogs->PromptUsernameAndPassword(mDOMWindow, dialogTitle, text,
user, pwd, _retval);
}
return rv;
}
@ -1889,11 +1951,21 @@ nsDOMWindowPrompter::PromptPassword(const PRUnichar* dialogTitle,
{
// ignore passwordRealm and savePassword here?
nsresult rv;
nsAutoString title(dialogTitle);
if (title == nsnull)
title.AssignWithConversion("Password"); // XXX i18n
rv = mCommonDialogs->PromptPassword(mDOMWindow, title.GetUnicode(), text,
pwd, _retval);
if (dialogTitle == nsnull) {
PRUnichar *title;
GetLocaleString(NS_ConvertASCIItoUCS2("PromptPassword"), &title);
rv = mCommonDialogs->PromptPassword(mDOMWindow, title, text,
pwd, _retval);
nsCRT::free(title);
title = nsnull;
}
else {
rv = mCommonDialogs->PromptPassword(mDOMWindow, dialogTitle, text,
pwd, _retval);
}
return rv;
}
@ -1906,11 +1978,20 @@ nsDOMWindowPrompter::Select(const PRUnichar *dialogTitle,
PRBool *_retval)
{
nsresult rv;
nsAutoString title(dialogTitle);
if (title == nsnull)
title.AssignWithConversion("Select"); // XXX i18n
rv = mCommonDialogs->Select(mDOMWindow, title.GetUnicode(), inMsg,
inCount, inList, outSelection, _retval);
if (dialogTitle == nsnull) {
PRUnichar *title;
GetLocaleString(NS_ConvertASCIItoUCS2("Select"), &title);
rv = mCommonDialogs->Select(mDOMWindow, title, inMsg,
inCount, inList, outSelection, _retval);
nsCRT::free(title);
title = nsnull;
}
else {
rv = mCommonDialogs->Select(mDOMWindow, dialogTitle, inMsg,
inCount, inList, outSelection, _retval);
}
return rv;
}