From f4f3c1e6caa58fca7c825160a122c2dcfbf12a08 Mon Sep 17 00:00:00 2001 From: "alecf%netscape.com" Date: Tue, 16 May 2000 22:43:23 +0000 Subject: [PATCH] support i18n friendly names in the datasource by doing some utf8 conversion --- .../base/search/src/nsMsgFilterDataSource.cpp | 7 ++++--- .../search/src/nsMsgFilterDelegateFactory.cpp | 19 +++++++++++++++++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/mailnews/base/search/src/nsMsgFilterDataSource.cpp b/mailnews/base/search/src/nsMsgFilterDataSource.cpp index 208f7df3e766..9efd29a20e91 100644 --- a/mailnews/base/search/src/nsMsgFilterDataSource.cpp +++ b/mailnews/base/search/src/nsMsgFilterDataSource.cpp @@ -314,9 +314,10 @@ nsMsgFilterDataSource::getFilterListTargets(nsIMsgFilterList *aFilterList, if (NS_FAILED(rv)) return rv; nsAutoString filterString(filterName); - - // XXX - convert to UTF8 :( - filterUri.AppendWithConversion(filterString); + + char *utf8Name = filterString.ToNewUTF8String(); + filterUri.Append(utf8Name); + Recycle(utf8Name); nsCOMPtr filterResource; rv = getRDFService()->GetResource(filterUri.GetBuffer(), diff --git a/mailnews/base/search/src/nsMsgFilterDelegateFactory.cpp b/mailnews/base/search/src/nsMsgFilterDelegateFactory.cpp index f94eabdb6a7c..2b30b34a2682 100644 --- a/mailnews/base/search/src/nsMsgFilterDelegateFactory.cpp +++ b/mailnews/base/search/src/nsMsgFilterDelegateFactory.cpp @@ -25,6 +25,7 @@ #include "nsCOMPtr.h" #include "nsXPIDLString.h" +#include "nsTextFormatter.h" #include "nsIRDFService.h" #include "nsIRDFResource.h" @@ -36,6 +37,14 @@ static NS_DEFINE_CID(kRDFServiceCID, NS_RDFSERVICE_CID); +// unicode "%s" format string +static const PRUnichar unicodeFormatter[] = { + (PRUnichar)'%', + (PRUnichar)'s', + (PRUnichar)0, +}; + + NS_IMPL_ISUPPORTS1(nsMsgFilterDelegateFactory, nsIRDFDelegateFactory) nsMsgFilterDelegateFactory::nsMsgFilterDelegateFactory() @@ -140,7 +149,14 @@ nsMsgFilterDelegateFactory::getFilterDelegate(nsIRDFResource *aOuter, // XXX convert from UTF8 nsAutoString filterString; - filterString.AssignWithConversion(filterName); + PRUnichar *unicodeString = + nsTextFormatter::smprintf(unicodeFormatter, filterName); + NS_ENSURE_TRUE(unicodeString, NS_ERROR_OUT_OF_MEMORY); + + filterString.Assign(unicodeString); + + nsTextFormatter::smprintf_free(unicodeString); + nsCOMPtr filter; rv = filterList->GetFilterNamed(filterString.GetUnicode(), getter_AddRefs(filter)); if (NS_FAILED(rv)) return rv; @@ -161,7 +177,6 @@ nsMsgFilterDelegateFactory::getFilterName(const char *filterTag) const char *filterNameStr = filterTag + MSGFILTER_TAG_LENGTH; - printf("GetFilterName(%s) -> %s\n", filterTag, filterNameStr); return filterNameStr; }