From c6e2c33e9c22eedc2ddb19935c764be9a4987655 Mon Sep 17 00:00:00 2001 From: "sgehani%netscape.com" Date: Tue, 21 Sep 1999 08:46:10 +0000 Subject: [PATCH] Adding i18n support to xpinstall: using StringBundleServcie. git-svn-id: svn://10.0.0.236/trunk@48559 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/xpinstall/src/nsInstall.cpp | 41 ++++++++++++++++++++ mozilla/xpinstall/src/nsInstall.h | 5 ++- mozilla/xpinstall/src/nsInstallDelete.cpp | 21 ++++++++-- mozilla/xpinstall/src/nsInstallExecute.cpp | 20 ++++++++-- mozilla/xpinstall/src/nsInstallFile.cpp | 30 +++++++++++--- mozilla/xpinstall/src/nsInstallPatch.cpp | 17 ++++++-- mozilla/xpinstall/src/nsInstallUninstall.cpp | 18 +++++++-- 7 files changed, 130 insertions(+), 22 deletions(-) diff --git a/mozilla/xpinstall/src/nsInstall.cpp b/mozilla/xpinstall/src/nsInstall.cpp index 6a125145f27..daac9b7f0dc 100644 --- a/mozilla/xpinstall/src/nsInstall.cpp +++ b/mozilla/xpinstall/src/nsInstall.cpp @@ -95,6 +95,7 @@ static NS_DEFINE_CID(kNetSupportDialogCID, NS_NETSUPPORTDIALOG_CID); static NS_DEFINE_IID(kStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID); static NS_DEFINE_IID(kIStringBundleServiceIID, NS_ISTRINGBUNDLESERVICE_IID); +#define XPINSTALL_BUNDLE_URL "chrome://xpinstall/locale/xpinstall.properties" nsInstallInfo::nsInstallInfo(nsIFileSpec* aFile, const PRUnichar* aURL, @@ -162,6 +163,20 @@ nsInstall::nsInstall() } su->Release(); + + // get the resourced xpinstall string bundle + mStringBundle = nsnull; + nsIStringBundleService *service; + rv = nsServiceManager::GetService( kStringBundleServiceCID, + nsIStringBundleService::GetIID(), + (nsISupports**) &service ); + if (NS_SUCCEEDED(rv) && service) + { + nsILocale* locale = nsnull; + rv = service->CreateBundle( XPINSTALL_BUNDLE_URL, locale, + getter_AddRefs(mStringBundle) ); + nsServiceManager::ReleaseService( kStringBundleServiceCID, service ); + } } nsInstall::~nsInstall() @@ -2208,6 +2223,32 @@ nsInstall::ExtractFileFromJar(const nsString& aJarfile, nsFileSpec* aSuggestedNa return result; } +/** + * GetResourcedString + * + * Obtains the string resource for actions and messages that are displayed + * in user interface confirmation and progress dialogs. + * + * @param aResName - property name/identifier of string resource + * @return rscdStr - corresponding resourced value in the string bundle + */ +char* +nsInstall::GetResourcedString(const nsString& aResName) +{ + nsString rscdStr = ""; + + if (mStringBundle) + { + const PRUnichar *ucResName = aResName.GetUnicode(); + PRUnichar *ucRscdStr = nsnull; + nsresult rv = mStringBundle->GetStringFromName(ucResName, &ucRscdStr); + if (NS_SUCCEEDED(rv)) + rscdStr = ucRscdStr; + } + + return rscdStr.ToNewCString(); +} + PRInt32 nsInstall::ExtractDirEntries(const nsString& directory, nsVoidArray *paths) diff --git a/mozilla/xpinstall/src/nsInstall.h b/mozilla/xpinstall/src/nsInstall.h index f813b3f1716..86ec0781651 100644 --- a/mozilla/xpinstall/src/nsInstall.h +++ b/mozilla/xpinstall/src/nsInstall.h @@ -224,6 +224,7 @@ class nsInstall void LogComment(nsString& aComment); PRInt32 ExtractFileFromJar(const nsString& aJarfile, nsFileSpec* aSuggestedName, nsFileSpec** aRealName); + char* GetResourcedString(const nsString& aResName); void AddPatch(nsHashKey *aKey, nsFileSpec* fileName); void GetPatch(nsHashKey *aKey, nsFileSpec** fileName); @@ -268,7 +269,9 @@ class nsInstall nsHashtable* mPatchList; nsIXPINotifier *mNotifier; - + + nsCOMPtr mStringBundle; + PRInt32 mLastError; void ParseFlags(int flags); diff --git a/mozilla/xpinstall/src/nsInstallDelete.cpp b/mozilla/xpinstall/src/nsInstallDelete.cpp index e858841dbfe..986c77cd113 100644 --- a/mozilla/xpinstall/src/nsInstallDelete.cpp +++ b/mozilla/xpinstall/src/nsInstallDelete.cpp @@ -137,21 +137,36 @@ void nsInstallDelete::Abort() char* nsInstallDelete::toString() { char* buffer = new char[1024]; + char* rsrcVal = nsnull; - if (buffer == nsnull) + if (buffer == nsnull || !mInstall) return nsnull; if (mDeleteStatus == DELETE_COMPONENT) { char* temp = mRegistryName.ToNewCString(); - sprintf( buffer, nsInstallResources::GetDeleteComponentString(), temp); + rsrcVal = mInstall->GetResourcedString("DeleteComponent"); + + if (rsrcVal) + { + sprintf( buffer, rsrcVal, temp); + nsCRT::free(rsrcVal); + } if (temp) delete [] temp; } else { if (mFinalFile) - sprintf( buffer, nsInstallResources::GetDeleteFileString(), mFinalFile->GetCString()); + { + rsrcVal = mInstall->GetResourcedString("DeleteComponent"); + + if (rsrcVal) + { + sprintf( buffer, rsrcVal, mFinalFile->GetCString()); + nsCRT::free(rsrcVal); + } + } } return buffer; diff --git a/mozilla/xpinstall/src/nsInstallExecute.cpp b/mozilla/xpinstall/src/nsInstallExecute.cpp index 13d66f671e6..b7d4f284518 100644 --- a/mozilla/xpinstall/src/nsInstallExecute.cpp +++ b/mozilla/xpinstall/src/nsInstallExecute.cpp @@ -104,8 +104,9 @@ void nsInstallExecute::Abort() char* nsInstallExecute::toString() { char* buffer = new char[1024]; - - if (buffer == nsnull) + char* rsrcVal = nsnull; + + if (buffer == nsnull || !mInstall) return nsnull; // if the FileSpec is NULL, just us the in jar file name. @@ -113,15 +114,26 @@ char* nsInstallExecute::toString() if (mExecutableFile == nsnull) { char *tempString = mJarLocation.ToNewCString(); + rsrcVal = mInstall->GetResourcedString("Execute"); - sprintf( buffer, nsInstallResources::GetExecuteString(), tempString); + if (rsrcVal) + { + sprintf( buffer, rsrcVal, tempString); + nsCRT::free(rsrcVal); + } if (tempString) delete [] tempString; } else { - sprintf( buffer, nsInstallResources::GetExecuteString(), mExecutableFile->GetCString()); + rsrcVal = mInstall->GetResourcedString("Execute"); + + if (rsrcVal) + { + sprintf( buffer, rsrcVal, mExecutableFile->GetCString()); + nsCRT::free(rsrcVal); + } } return buffer; } diff --git a/mozilla/xpinstall/src/nsInstallFile.cpp b/mozilla/xpinstall/src/nsInstallFile.cpp index e08d07812de..9c45868c3c4 100644 --- a/mozilla/xpinstall/src/nsInstallFile.cpp +++ b/mozilla/xpinstall/src/nsInstallFile.cpp @@ -269,23 +269,41 @@ void nsInstallFile::Abort() char* nsInstallFile::toString() { char* buffer = new char[1024]; - - if (buffer == nsnull) - return nsnull; + char* rsrcVal = ""; + if (buffer == nsnull || !mInstall) + return nsnull; + if (mFinalFile == nsnull) { - sprintf( buffer, nsInstallResources::GetInstallFileString(), nsnull); + rsrcVal = mInstall->GetResourcedString("InstallFile"); + + if (rsrcVal) + { + sprintf( buffer, rsrcVal, nsnull); + nsCRT::free(rsrcVal); + } } else if (mReplaceFile) { // we are replacing this file. + rsrcVal = mInstall->GetResourcedString("ReplaceFile"); - sprintf( buffer, nsInstallResources::GetReplaceFileString(), mFinalFile->GetCString()); + if (rsrcVal) + { + sprintf( buffer, rsrcVal, mFinalFile->GetCString()); + nsCRT::free(rsrcVal); + } } else { - sprintf( buffer, nsInstallResources::GetInstallFileString(), mFinalFile->GetCString()); + rsrcVal = mInstall->GetResourcedString("InstallFile"); + + if (rsrcVal) + { + sprintf( buffer, rsrcVal, mFinalFile->GetCString()); + nsCRT::free(rsrcVal); + } } return buffer; diff --git a/mozilla/xpinstall/src/nsInstallPatch.cpp b/mozilla/xpinstall/src/nsInstallPatch.cpp index c7a93e6ce56..5852863e595 100644 --- a/mozilla/xpinstall/src/nsInstallPatch.cpp +++ b/mozilla/xpinstall/src/nsInstallPatch.cpp @@ -319,12 +319,21 @@ void nsInstallPatch::Abort() char* nsInstallPatch::toString() { char* buffer = new char[1024]; - - if (buffer == nsnull) + char* rsrcVal = nsnull; + + if (buffer == nsnull || !mInstall) return buffer; - if (mTargetFile != nsnull) - sprintf( buffer, nsInstallResources::GetPatchFileString(), mTargetFile->GetCString()); + if (mTargetFile != nsnull) + { + rsrcVal = mInstall->GetResourcedString("Patch"); + + if (rsrcVal) + { + sprintf( buffer, rsrcVal, mTargetFile->GetCString()); + nsCRT::free(rsrcVal); + } + } return buffer; } diff --git a/mozilla/xpinstall/src/nsInstallUninstall.cpp b/mozilla/xpinstall/src/nsInstallUninstall.cpp index e56ce7cd226..8320ede3b23 100644 --- a/mozilla/xpinstall/src/nsInstallUninstall.cpp +++ b/mozilla/xpinstall/src/nsInstallUninstall.cpp @@ -95,14 +95,24 @@ void nsInstallUninstall::Abort() char* nsInstallUninstall::toString() { char* buffer = new char[1024]; - - if (buffer == nsnull) + char* rsrcVal = nsnull; + + if (buffer == nsnull || !mInstall) return buffer; char* temp = mUIName.ToNewCString(); - sprintf( buffer, nsInstallResources::GetUninstallString(), temp); - + if (temp) + { + rsrcVal = mInstall->GetResourcedString("Uninstall"); + + if (rsrcVal) + { + sprintf( buffer, rsrcVal, temp); + nsCRT::free(rsrcVal); + } + } + if (temp) delete [] temp;