From 9792e2e21ea065779fecb72390dfeec2fb767e1b Mon Sep 17 00:00:00 2001 From: "nhotta%netscape.com" Date: Wed, 2 Aug 2000 22:07:47 +0000 Subject: [PATCH] Changed GetCharacterSet to return a default if no folder charset is stored, bug 46542, r=bienvenu. git-svn-id: svn://10.0.0.236/trunk@75427 18797224-902f-48f8-a5cc-f745e15eee43 --- .../mailnews/db/msgdb/src/nsDBFolderInfo.cpp | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/mozilla/mailnews/db/msgdb/src/nsDBFolderInfo.cpp b/mozilla/mailnews/db/msgdb/src/nsDBFolderInfo.cpp index f8455bcc556..cac6bd17fc4 100644 --- a/mozilla/mailnews/db/msgdb/src/nsDBFolderInfo.cpp +++ b/mozilla/mailnews/db/msgdb/src/nsDBFolderInfo.cpp @@ -25,6 +25,7 @@ #include "nsDBFolderInfo.h" #include "nsMsgDatabase.h" #include "nsMsgFolderFlags.h" +#include "nsIPref.h" static const char *kDBFolderInfoScope = "ns:msg:db:row:scope:dbfolderinfo:all"; static const char *kDBFolderInfoTableKind = "ns:msg:db:table:kind:dbfolderinfo"; @@ -50,6 +51,8 @@ static const char * kVersionColumnName = "version"; static const char * kCharacterSetColumnName = "charSet"; static const char * kLocaleColumnName = "locale"; +static nsString gDefaultCharacterSet; // default charset + NS_IMPL_ADDREF(nsDBFolderInfo) NS_IMPL_RELEASE(nsDBFolderInfo) @@ -102,6 +105,23 @@ nsDBFolderInfo::nsDBFolderInfo(nsMsgDatabase *mdb) m_mdbTokensInitialized = FALSE; + // Initialize a default charset to a pref default. + if (gDefaultCharacterSet.IsEmpty()) + { + nsresult rv; + nsCOMPtr prefs = do_GetService(NS_PREF_PROGID, &rv); + if (NS_SUCCEEDED(rv)) + { + PRUnichar *prefCharset = nsnull; + rv = prefs->GetLocalizedUnicharPref("mailnews.view_default_charset", &prefCharset); + if (NS_SUCCEEDED(rv)) + { + gDefaultCharacterSet.Assign(prefCharset); + PR_Free(prefCharset); + } + } + } + if (mdb) { mdb_err err; @@ -552,7 +572,12 @@ PRBool nsDBFolderInfo::TestFlag(PRInt32 flags) NS_IMETHODIMP nsDBFolderInfo::GetCharacterSet(nsString *result) { - return GetProperty(kCharacterSetColumnName, result); + nsresult rv = GetProperty(kCharacterSetColumnName, result); + + if (NS_SUCCEEDED(rv) && result->IsEmpty()) + result->Assign(gDefaultCharacterSet.GetUnicode()); + + return rv; } NS_IMETHODIMP