mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 12:55:46 +00:00
make filtername i18n friendly (store in utf8 format)
This commit is contained in:
parent
923f1bc193
commit
d5fd2cbfab
@ -33,7 +33,7 @@ interface nsOutputStream;
|
||||
interface nsIMsgFilter : nsISupports {
|
||||
readonly attribute nsMsgFilterTypeType filterType;
|
||||
attribute boolean enabled;
|
||||
attribute string filterName;
|
||||
attribute wstring filterName;
|
||||
attribute string filterDesc;
|
||||
|
||||
readonly attribute nsIMsgFilterList filterList; // owning filter list
|
||||
|
@ -69,7 +69,7 @@ interface nsIMsgFilterList : nsISupports {
|
||||
|
||||
attribute boolean loggingEnabled;
|
||||
|
||||
nsIMsgFilter createFilter(in string name);
|
||||
nsIMsgFilter createFilter(in wstring name);
|
||||
|
||||
void saveToFile(in nsIOFileStream stream);
|
||||
|
||||
@ -88,6 +88,7 @@ interface nsIMsgFilterList : nsISupports {
|
||||
// IO routines, used by filter object filing code.
|
||||
void writeIntAttr(in nsMsgFilterFileAttribValue attrib, in long value);
|
||||
void writeStrAttr(in nsMsgFilterFileAttribValue attrib, in string value);
|
||||
void writeWstrAttr(in nsMsgFilterFileAttribValue attrib, in wstring value);
|
||||
void writeBoolAttr(in nsMsgFilterFileAttribValue attrib, in boolean value);
|
||||
};
|
||||
|
||||
|
@ -101,15 +101,15 @@ NS_IMETHODIMP nsMsgFilter::SetEnabled(PRBool enabled)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFilter::GetFilterName(char **name)
|
||||
NS_IMETHODIMP nsMsgFilter::GetFilterName(PRUnichar **name)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(name);
|
||||
|
||||
*name = m_filterName.ToNewCString();
|
||||
*name = m_filterName.ToNewUnicode();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFilter::SetFilterName(const char *name)
|
||||
NS_IMETHODIMP nsMsgFilter::SetFilterName(const PRUnichar *name)
|
||||
{
|
||||
m_filterName.Assign(name);
|
||||
return NS_OK;
|
||||
@ -273,7 +273,6 @@ nsMsgFilter::GetActionTargetFolderUri(char** aResult)
|
||||
|
||||
NS_IMETHODIMP nsMsgFilter::LogRuleHit(nsOutputStream *stream, nsIMsgDBHdr *msgHdr)
|
||||
{
|
||||
char *filterName = "";
|
||||
PRTime date;
|
||||
char dateStr[40]; /* 30 probably not enough */
|
||||
nsMsgRuleActionType actionType;
|
||||
@ -281,8 +280,9 @@ NS_IMETHODIMP nsMsgFilter::LogRuleHit(nsOutputStream *stream, nsIMsgDBHdr *msgHd
|
||||
|
||||
nsXPIDLCString author;
|
||||
nsXPIDLCString subject;
|
||||
nsXPIDLString filterName;
|
||||
|
||||
GetFilterName(&filterName);
|
||||
GetFilterName(getter_Copies(filterName));
|
||||
GetAction(&actionType);
|
||||
nsresult res;
|
||||
res = msgHdr->GetDate(&date);
|
||||
@ -294,8 +294,12 @@ NS_IMETHODIMP nsMsgFilter::LogRuleHit(nsOutputStream *stream, nsIMsgDBHdr *msgHd
|
||||
msgHdr->GetSubject(getter_Copies(subject));
|
||||
if (stream)
|
||||
{
|
||||
char *utf8name = nsAutoString(filterName).ToNewUTF8String();
|
||||
|
||||
*stream << "Applied filter \"";
|
||||
*stream << filterName;
|
||||
*stream << utf8name;
|
||||
::Recycle(utf8name);
|
||||
|
||||
*stream << "\" to message from ";
|
||||
*stream << (const char*)author;
|
||||
*stream << " - ";
|
||||
@ -315,6 +319,7 @@ NS_IMETHODIMP nsMsgFilter::LogRuleHit(nsOutputStream *stream, nsIMsgDBHdr *msgHd
|
||||
} else {
|
||||
*stream << "";
|
||||
}
|
||||
|
||||
*stream << "\n\n";
|
||||
// XP_FilePrintf(*m_logFile, "Action = %s %s\n\n", actionStr, actionValue);
|
||||
if (actionType == nsMsgFilterAction::MoveToFolder)
|
||||
@ -454,7 +459,7 @@ nsresult nsMsgFilter::ConvertMoveToFolderValue(nsCString &moveValue)
|
||||
|
||||
nsresult nsMsgFilter::SaveToTextFile(nsIOFileStream *stream)
|
||||
{
|
||||
nsresult err = m_filterList->WriteStrAttr(nsIMsgFilterList::attribName, m_filterName);
|
||||
nsresult err = m_filterList->WriteWstrAttr(nsIMsgFilterList::attribName, m_filterName.GetUnicode());
|
||||
err = m_filterList->WriteBoolAttr(nsIMsgFilterList::attribEnabled, m_enabled);
|
||||
err = m_filterList->WriteStrAttr(nsIMsgFilterList::attribDescription, m_description);
|
||||
err = m_filterList->WriteIntAttr(nsIMsgFilterList::attribType, m_type);
|
||||
|
@ -83,7 +83,7 @@ static nsMsgRuleActionType GetActionForFilingStr(nsCString &actionStr);
|
||||
protected:
|
||||
nsMsgFilterTypeType m_type;
|
||||
PRBool m_enabled;
|
||||
nsCString m_filterName;
|
||||
nsString m_filterName;
|
||||
nsCString m_scriptFileName; // iff this filter is a script.
|
||||
nsCString m_description;
|
||||
PRBool m_dontFileMe;
|
||||
|
@ -341,9 +341,10 @@ nsMsgFilterDataSource::getFilterTarget(nsIMsgFilter *aFilter,
|
||||
{
|
||||
|
||||
if (aProperty == kNC_Name.get()) {
|
||||
nsXPIDLCString filterName;
|
||||
nsXPIDLString filterName;
|
||||
aFilter->GetFilterName(getter_Copies(filterName));
|
||||
return createNode((const char*)filterName, aResult, getRDFService());
|
||||
return createNode((const PRUnichar*)filterName, aResult,
|
||||
getRDFService());
|
||||
|
||||
} else if (aProperty == kNC_Enabled.get()) {
|
||||
PRBool enabled;
|
||||
|
@ -23,6 +23,8 @@
|
||||
|
||||
// this file implements the nsMsgFilterList interface
|
||||
|
||||
#include "nsTextFormatter.h"
|
||||
|
||||
#include "msgCore.h"
|
||||
#include "nsMsgFilterList.h"
|
||||
#include "nsMsgFilter.h"
|
||||
@ -31,6 +33,13 @@
|
||||
#include "nsMsgUtils.h"
|
||||
#include "nsMsgSearchTerm.h"
|
||||
|
||||
// unicode "%s" format string
|
||||
static const PRUnichar unicodeFormatter[] = {
|
||||
(PRUnichar)'%',
|
||||
(PRUnichar)'s',
|
||||
(PRUnichar)0,
|
||||
};
|
||||
|
||||
|
||||
nsMsgFilterList::nsMsgFilterList(nsIOFileStream *fileStream)
|
||||
{
|
||||
@ -61,7 +70,7 @@ NS_IMETHODIMP nsMsgFilterList::QueryInterface(REFNSIID aIID, void** aResult)
|
||||
return NS_NOINTERFACE;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsMsgFilterList::CreateFilter(const char *name,class nsIMsgFilter **aFilter)
|
||||
NS_IMETHODIMP nsMsgFilterList::CreateFilter(const PRUnichar *name,class nsIMsgFilter **aFilter)
|
||||
{
|
||||
if (!aFilter)
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
@ -431,7 +440,11 @@ nsresult nsMsgFilterList::LoadTextFilters()
|
||||
break;
|
||||
}
|
||||
filter->SetFilterList(NS_STATIC_CAST(nsIMsgFilterList*,this));
|
||||
filter->SetFilterName(value.GetBuffer());
|
||||
|
||||
PRUnichar *unicodeString =
|
||||
nsTextFormatter::smprintf(unicodeFormatter, value.GetBuffer());
|
||||
filter->SetFilterName(unicodeString);
|
||||
nsTextFormatter::smprintf_free(unicodeString);
|
||||
m_curFilter = filter;
|
||||
m_filters->AppendElement(filter);
|
||||
}
|
||||
@ -603,6 +616,16 @@ nsresult nsMsgFilterList::WriteBoolAttr(nsMsgFilterFileAttribValue attrib, PRBoo
|
||||
return WriteStrAttr(attrib, strToWrite);
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsMsgFilterList::WriteWstrAttr(nsMsgFilterFileAttribValue attrib,
|
||||
const PRUnichar *aFilterName)
|
||||
{
|
||||
char* utf8Name = nsAutoString(aFilterName).ToNewUTF8String();
|
||||
WriteStrAttr(attrib, utf8Name);
|
||||
::Recycle(utf8Name);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsMsgFilterList::SaveTextFilters()
|
||||
{
|
||||
nsresult err = NS_OK;
|
||||
|
Loading…
Reference in New Issue
Block a user