mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-24 11:27:49 +00:00
expose the message filter's parent list through a scriptable interface, and move more private enums into a public interface
This commit is contained in:
parent
d24004123e
commit
c5e4184a9f
@ -34,6 +34,9 @@ interface nsIMsgFilter : nsISupports {
|
||||
attribute boolean enabled;
|
||||
attribute string filterName;
|
||||
attribute string filterDesc;
|
||||
|
||||
readonly attribute nsIMsgFilterList filterList; // owning filter list
|
||||
|
||||
void AddTerm(in nsMsgSearchAttribValue attrib,
|
||||
in nsMsgSearchOpValue op,
|
||||
in nsIMsgSearchValue value,
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
*
|
||||
* The contents of this file are subject to the Netscape Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
@ -34,10 +34,26 @@ interface nsIOFileStream;
|
||||
//
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
typedef long nsMsgFilterFileAttribValue;
|
||||
|
||||
[scriptable, uuid(08ecbcb4-0493-11d3-a50a-0060b0fc04b7)]
|
||||
interface nsIMsgFilterList : nsISupports {
|
||||
|
||||
const nsMsgFilterFileAttribValue attribNone = 0;
|
||||
const nsMsgFilterFileAttribValue attribVersion = 1;
|
||||
const nsMsgFilterFileAttribValue attribLogging = 2;
|
||||
const nsMsgFilterFileAttribValue attribName = 3;
|
||||
const nsMsgFilterFileAttribValue attribEnabled = 4;
|
||||
const nsMsgFilterFileAttribValue attribDescription = 5;
|
||||
const nsMsgFilterFileAttribValue attribType = 6;
|
||||
const nsMsgFilterFileAttribValue attribScriptFile = 7;
|
||||
const nsMsgFilterFileAttribValue attribAction = 8;
|
||||
const nsMsgFilterFileAttribValue attribActionValue = 9;
|
||||
const nsMsgFilterFileAttribValue attribCondition = 10;
|
||||
|
||||
attribute nsIMsgFolder folder;
|
||||
readonly attribute short version;
|
||||
|
||||
readonly attribute unsigned long filterCount;
|
||||
nsIMsgFilter GetFilterAt(in unsigned long filterIndex);
|
||||
/* these methods don't delete filters - they just change the list.
|
||||
@ -45,26 +61,30 @@ interface nsIMsgFilterList : nsISupports {
|
||||
* call MSG_DestroyFilter to delete a filter.
|
||||
*/
|
||||
|
||||
void SetFilterAt(in unsigned long filterIndex, in nsIMsgFilter filter);
|
||||
void RemoveFilterAt(in unsigned long filterIndex);
|
||||
void MoveFilterAt(in unsigned long filterIndex,
|
||||
void setFilterAt(in unsigned long filterIndex, in nsIMsgFilter filter);
|
||||
void removeFilterAt(in unsigned long filterIndex);
|
||||
void moveFilterAt(in unsigned long filterIndex,
|
||||
in nsMsgFilterMotionValue motion);
|
||||
void InsertFilterAt(in unsigned long filterIndex, in nsIMsgFilter filter);
|
||||
void insertFilterAt(in unsigned long filterIndex, in nsIMsgFilter filter);
|
||||
|
||||
attribute boolean loggingEnabled;
|
||||
|
||||
nsIMsgFilter CreateFilter(in string name);
|
||||
nsIMsgFilter createFilter(in string name);
|
||||
|
||||
void SaveToFile(in nsIOFileStream stream);
|
||||
void saveToFile(in nsIOFileStream stream);
|
||||
|
||||
void ApplyFiltersToHdr(in nsMsgFilterTypeType filterType,
|
||||
void applyFiltersToHdr(in nsMsgFilterTypeType filterType,
|
||||
in nsIMsgDBHdr msgHdr,
|
||||
in nsIMsgFolder folder,
|
||||
in nsIMsgDatabase db,
|
||||
in string headers,
|
||||
in unsigned long headersSize,
|
||||
in nsIMsgFilterHitNotify listener);
|
||||
|
||||
|
||||
// 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 writeBoolAttr(in nsMsgFilterFileAttribValue attrib, in boolean value);
|
||||
};
|
||||
|
||||
|
||||
|
@ -21,12 +21,12 @@
|
||||
* Pierre Phaneuf <pp@ludusdesign.com>
|
||||
*/
|
||||
|
||||
// this file implements the nsMsgFilterList interface
|
||||
// this file implements the nsMsgFilter interface
|
||||
|
||||
#include "msgCore.h"
|
||||
#include "nsMsgBaseCID.h"
|
||||
#include "nsIMsgHdr.h"
|
||||
#include "nsMsgFilterList.h"
|
||||
#include "nsMsgFilterList.h" // for kFileVersion
|
||||
#include "nsMsgFilter.h"
|
||||
#include "nsMsgUtils.h"
|
||||
#include "nsFileStream.h"
|
||||
@ -48,9 +48,9 @@ nsMsgRuleAction::~nsMsgRuleAction()
|
||||
}
|
||||
|
||||
|
||||
nsMsgFilter::nsMsgFilter()
|
||||
nsMsgFilter::nsMsgFilter() :
|
||||
m_filterList(nsnull)
|
||||
{
|
||||
m_filterList = nsnull;
|
||||
NS_INIT_REFCNT();
|
||||
}
|
||||
|
||||
@ -307,11 +307,22 @@ NS_IMETHODIMP nsMsgFilter::MatchHdr(nsIMsgDBHdr *msgHdr, nsIMsgFolder *folder, n
|
||||
pResult);
|
||||
}
|
||||
|
||||
void nsMsgFilter::SetFilterList(nsMsgFilterList *filterList)
|
||||
void
|
||||
nsMsgFilter::SetFilterList(nsIMsgFilterList *filterList)
|
||||
{
|
||||
// hold weak ref
|
||||
m_filterList = filterList;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsMsgFilter::GetFilterList(nsIMsgFilterList **aResult)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aResult);
|
||||
*aResult = m_filterList;
|
||||
NS_IF_ADDREF(*aResult);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void nsMsgFilter::SetFilterScript(nsCString *fileName)
|
||||
{
|
||||
m_scriptFileName = *fileName;
|
||||
@ -322,7 +333,7 @@ nsresult nsMsgFilter::ConvertMoveToFolderValue(nsCString &moveValue)
|
||||
|
||||
PRInt16 filterVersion = kFileVersion;
|
||||
if (m_filterList)
|
||||
filterVersion = m_filterList->GetVersion();
|
||||
m_filterList->GetVersion(&filterVersion);
|
||||
if (filterVersion <= k60Beta1Version)
|
||||
{
|
||||
nsCOMPtr <nsIMsgFolder> rootFolder;
|
||||
@ -401,12 +412,12 @@ nsresult nsMsgFilter::ConvertMoveToFolderValue(nsCString &moveValue)
|
||||
|
||||
nsresult nsMsgFilter::SaveToTextFile(nsIOFileStream *stream)
|
||||
{
|
||||
nsresult err = m_filterList->WriteStrAttr(nsMsgFilterAttribName, m_filterName);
|
||||
err = m_filterList->WriteBoolAttr(nsMsgFilterAttribEnabled, m_enabled);
|
||||
err = m_filterList->WriteStrAttr(nsMsgFilterAttribDescription, m_description);
|
||||
err = m_filterList->WriteIntAttr(nsMsgFilterAttribType, m_type);
|
||||
nsresult err = m_filterList->WriteStrAttr(nsIMsgFilterList::attribName, m_filterName);
|
||||
err = m_filterList->WriteBoolAttr(nsIMsgFilterList::attribEnabled, m_enabled);
|
||||
err = m_filterList->WriteStrAttr(nsIMsgFilterList::attribDescription, m_description);
|
||||
err = m_filterList->WriteIntAttr(nsIMsgFilterList::attribType, m_type);
|
||||
if (IsScript())
|
||||
err = m_filterList->WriteStrAttr(nsMsgFilterAttribScriptFile, m_scriptFileName);
|
||||
err = m_filterList->WriteStrAttr(nsIMsgFilterList::attribScriptFile, m_scriptFileName);
|
||||
else
|
||||
err = SaveRule();
|
||||
return err;
|
||||
@ -416,12 +427,13 @@ nsresult nsMsgFilter::SaveRule()
|
||||
{
|
||||
nsresult err = NS_OK;
|
||||
//char *relativePath = nsnull;
|
||||
nsMsgFilterList *filterList = GetFilterList();
|
||||
nsIMsgFilterList *filterList;
|
||||
GetFilterList(&filterList);
|
||||
nsCAutoString actionFilingStr;
|
||||
|
||||
GetActionFilingStr(m_action.m_type, actionFilingStr);
|
||||
|
||||
err = filterList->WriteStrAttr(nsMsgFilterAttribAction, actionFilingStr);
|
||||
err = filterList->WriteStrAttr(nsIMsgFilterList::attribAction, actionFilingStr);
|
||||
if (!NS_SUCCEEDED(err))
|
||||
return err;
|
||||
switch(m_action.m_type)
|
||||
@ -429,7 +441,7 @@ nsresult nsMsgFilter::SaveRule()
|
||||
case nsMsgFilterAction::MoveToFolder:
|
||||
{
|
||||
nsCAutoString imapTargetString(m_action.m_folderUri);
|
||||
err = filterList->WriteStrAttr(nsMsgFilterAttribActionValue, imapTargetString);
|
||||
err = filterList->WriteStrAttr(nsIMsgFilterList::attribActionValue, imapTargetString);
|
||||
}
|
||||
break;
|
||||
case nsMsgFilterAction::ChangePriority:
|
||||
@ -438,7 +450,7 @@ nsresult nsMsgFilter::SaveRule()
|
||||
NS_MsgGetUntranslatedPriorityName (m_action.m_priority, &priority);
|
||||
nsCAutoString cStr;
|
||||
cStr.AssignWithConversion(priority);
|
||||
err = filterList->WriteStrAttr(nsMsgFilterAttribActionValue, cStr);
|
||||
err = filterList->WriteStrAttr(nsIMsgFilterList::attribActionValue, cStr);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@ -475,7 +487,7 @@ nsresult nsMsgFilter::SaveRule()
|
||||
condition += ')';
|
||||
}
|
||||
if (NS_SUCCEEDED(err))
|
||||
err = filterList->WriteStrAttr(nsMsgFilterAttribCondition, condition);
|
||||
err = filterList->WriteStrAttr(nsIMsgFilterList::attribCondition, condition);
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -540,6 +552,15 @@ nsMsgRuleActionType nsMsgFilter::GetActionForFilingStr(nsCString &actionStr)
|
||||
return nsMsgFilterAction::None;
|
||||
}
|
||||
|
||||
PRInt16
|
||||
nsMsgFilter::GetVersion()
|
||||
{
|
||||
if (!m_filterList) return 0;
|
||||
PRInt16 version;
|
||||
m_filterList->GetVersion(&version);
|
||||
return version;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
void nsMsgFilter::Dump()
|
||||
{
|
||||
|
@ -57,7 +57,7 @@ public:
|
||||
void SetType(nsMsgFilterTypeType type) {m_type = type;}
|
||||
PRBool GetEnabled() {return m_enabled;}
|
||||
void SetFilterScript(nsCString *filterName) ;
|
||||
void SetFilterList(nsMsgFilterList *filterList) ;
|
||||
void SetFilterList(nsIMsgFilterList* filterList);
|
||||
PRBool IsRule()
|
||||
{return (m_type & (nsMsgFilterType::InboxRule |
|
||||
nsMsgFilterType::NewsRule)) != 0;}
|
||||
@ -69,8 +69,7 @@ public:
|
||||
nsresult SaveToTextFile(nsIOFileStream *stream);
|
||||
nsresult SaveRule();
|
||||
|
||||
PRInt16 GetVersion() {return (m_filterList) ? m_filterList->GetVersion() : 0;}
|
||||
nsMsgFilterList *GetFilterList() {return m_filterList;}
|
||||
PRInt16 GetVersion();
|
||||
void SetDontFileMe(PRBool bDontFileMe) {m_dontFileMe = bDontFileMe;}
|
||||
nsMsgSearchTermArray* GetTermList() {return &m_termList;} /* linked list of criteria terms */
|
||||
#ifdef DEBUG
|
||||
@ -90,7 +89,7 @@ protected:
|
||||
nsCString m_description;
|
||||
PRBool m_dontFileMe;
|
||||
|
||||
nsMsgFilterList *m_filterList; /* owning filter list */
|
||||
nsIMsgFilterList *m_filterList; /* owning filter list */
|
||||
nsMsgSearchTermArray m_termList; /* linked list of criteria terms */
|
||||
nsCOMPtr<nsIMsgSearchScopeTerm> m_scope; /* default for mail rules is inbox, but news rules could
|
||||
have a newsgroup - LDAP would be invalid */
|
||||
|
@ -260,23 +260,23 @@ extern "C" MSG_FolderInfo *MSG_GetFolderInfoForFilterList(nsMsgFilterList *filte
|
||||
|
||||
typedef struct
|
||||
{
|
||||
nsMsgFilterFileAttrib attrib;
|
||||
nsMsgFilterFileAttribValue attrib;
|
||||
const char *attribName;
|
||||
} FilterFileAttribEntry;
|
||||
|
||||
static FilterFileAttribEntry FilterFileAttribTable[] =
|
||||
{
|
||||
{nsMsgFilterAttribNone, ""},
|
||||
{nsMsgFilterAttribVersion, "version"},
|
||||
{nsMsgFilterAttribLogging, "logging"},
|
||||
{nsMsgFilterAttribName, "name"},
|
||||
{nsMsgFilterAttribEnabled, "enabled"},
|
||||
{nsMsgFilterAttribDescription, "description"},
|
||||
{nsMsgFilterAttribType, "type"},
|
||||
{nsMsgFilterAttribScriptFile, "scriptName"},
|
||||
{nsMsgFilterAttribAction, "action"},
|
||||
{nsMsgFilterAttribActionValue, "actionValue"},
|
||||
{nsMsgFilterAttribCondition, "condition"}
|
||||
{nsIMsgFilterList::attribNone, ""},
|
||||
{nsIMsgFilterList::attribVersion, "version"},
|
||||
{nsIMsgFilterList::attribLogging, "logging"},
|
||||
{nsIMsgFilterList::attribName, "name"},
|
||||
{nsIMsgFilterList::attribEnabled, "enabled"},
|
||||
{nsIMsgFilterList::attribDescription, "description"},
|
||||
{nsIMsgFilterList::attribType, "type"},
|
||||
{nsIMsgFilterList::attribScriptFile, "scriptName"},
|
||||
{nsIMsgFilterList::attribAction, "action"},
|
||||
{nsIMsgFilterList::attribActionValue, "actionValue"},
|
||||
{nsIMsgFilterList::attribCondition, "condition"}
|
||||
};
|
||||
|
||||
// If we want to buffer file IO, wrap it in here.
|
||||
@ -307,7 +307,7 @@ PRBool nsMsgFilterList::StrToBool(nsCString &str)
|
||||
return str.Equals("yes") ;
|
||||
}
|
||||
|
||||
char nsMsgFilterList::LoadAttrib(nsMsgFilterFileAttrib &attrib)
|
||||
char nsMsgFilterList::LoadAttrib(nsMsgFilterFileAttribValue &attrib)
|
||||
{
|
||||
char attribStr[100];
|
||||
char curChar;
|
||||
@ -333,7 +333,7 @@ char nsMsgFilterList::LoadAttrib(nsMsgFilterFileAttrib &attrib)
|
||||
return curChar;
|
||||
}
|
||||
|
||||
const char *nsMsgFilterList::GetStringForAttrib(nsMsgFilterFileAttrib attrib)
|
||||
const char *nsMsgFilterList::GetStringForAttrib(nsMsgFilterFileAttribValue attrib)
|
||||
{
|
||||
for (int tableIndex = 0; tableIndex < (int)(sizeof(FilterFileAttribTable) / sizeof(FilterFileAttribTable[0])); tableIndex++)
|
||||
{
|
||||
@ -390,7 +390,7 @@ nsresult nsMsgFilterList::LoadValue(nsCString &value)
|
||||
nsresult nsMsgFilterList::LoadTextFilters()
|
||||
{
|
||||
nsresult err = NS_OK;
|
||||
nsMsgFilterFileAttrib attrib;
|
||||
nsMsgFilterFileAttribValue attrib;
|
||||
|
||||
// We'd really like to move lot's of these into the objects that they refer to.
|
||||
m_fileStream->seek(PR_SEEK_SET, 0);
|
||||
@ -402,27 +402,27 @@ nsresult nsMsgFilterList::LoadTextFilters()
|
||||
char curChar;
|
||||
|
||||
curChar = LoadAttrib(attrib);
|
||||
if (attrib == nsMsgFilterAttribNone)
|
||||
if (attrib == nsIMsgFilterList::attribNone)
|
||||
break;
|
||||
err = LoadValue(value);
|
||||
if (err != NS_OK)
|
||||
break;
|
||||
switch(attrib)
|
||||
{
|
||||
case nsMsgFilterAttribNone:
|
||||
case nsIMsgFilterList::attribNone:
|
||||
break;
|
||||
case nsMsgFilterAttribVersion:
|
||||
case nsIMsgFilterList::attribVersion:
|
||||
m_fileVersion = value.ToInteger(&intToStringResult, 10);
|
||||
if (intToStringResult != 0)
|
||||
{
|
||||
attrib = nsMsgFilterAttribNone;
|
||||
attrib = nsIMsgFilterList::attribNone;
|
||||
NS_ASSERTION(PR_FALSE, "error parsing filter file version");
|
||||
}
|
||||
break;
|
||||
case nsMsgFilterAttribLogging:
|
||||
case nsIMsgFilterList::attribLogging:
|
||||
m_loggingEnabled = StrToBool(value);
|
||||
break;
|
||||
case nsMsgFilterAttribName:
|
||||
case nsIMsgFilterList::attribName:
|
||||
{
|
||||
nsMsgFilter *filter = new nsMsgFilter;
|
||||
if (filter == nsnull)
|
||||
@ -430,34 +430,34 @@ nsresult nsMsgFilterList::LoadTextFilters()
|
||||
err = NS_ERROR_OUT_OF_MEMORY;
|
||||
break;
|
||||
}
|
||||
filter->SetFilterList(this);
|
||||
filter->SetFilterList(NS_STATIC_CAST(nsIMsgFilterList*,this));
|
||||
filter->SetFilterName(value.GetBuffer());
|
||||
m_curFilter = filter;
|
||||
m_filters->AppendElement(filter);
|
||||
}
|
||||
break;
|
||||
case nsMsgFilterAttribEnabled:
|
||||
case nsIMsgFilterList::attribEnabled:
|
||||
if (m_curFilter)
|
||||
m_curFilter->SetEnabled(StrToBool(value));
|
||||
break;
|
||||
case nsMsgFilterAttribDescription:
|
||||
case nsIMsgFilterList::attribDescription:
|
||||
if (m_curFilter)
|
||||
m_curFilter->SetFilterDesc(value.GetBuffer());
|
||||
break;
|
||||
case nsMsgFilterAttribType:
|
||||
case nsIMsgFilterList::attribType:
|
||||
if (m_curFilter)
|
||||
{
|
||||
m_curFilter->SetType((nsMsgFilterTypeType) value.ToInteger(&intToStringResult, 10));
|
||||
}
|
||||
break;
|
||||
case nsMsgFilterAttribScriptFile:
|
||||
case nsIMsgFilterList::attribScriptFile:
|
||||
if (m_curFilter)
|
||||
m_curFilter->SetFilterScript(&value);
|
||||
break;
|
||||
case nsMsgFilterAttribAction:
|
||||
case nsIMsgFilterList::attribAction:
|
||||
m_curFilter->m_action.m_type = nsMsgFilter::GetActionForFilingStr(value);
|
||||
break;
|
||||
case nsMsgFilterAttribActionValue:
|
||||
case nsIMsgFilterList::attribActionValue:
|
||||
if (m_curFilter->m_action.m_type == nsMsgFilterAction::MoveToFolder)
|
||||
err = m_curFilter->ConvertMoveToFolderValue(value);
|
||||
else if (m_curFilter->m_action.m_type == nsMsgFilterAction::ChangePriority)
|
||||
@ -473,11 +473,11 @@ nsresult nsMsgFilterList::LoadTextFilters()
|
||||
|
||||
}
|
||||
break;
|
||||
case nsMsgFilterAttribCondition:
|
||||
case nsIMsgFilterList::attribCondition:
|
||||
err = ParseCondition(value);
|
||||
break;
|
||||
}
|
||||
} while (attrib != nsMsgFilterAttribNone);
|
||||
} while (attrib != nsIMsgFilterList::attribNone);
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -558,7 +558,7 @@ nsresult nsMsgFilterList::ParseCondition(nsCString &value)
|
||||
return err;
|
||||
}
|
||||
|
||||
nsresult nsMsgFilterList::WriteIntAttr(nsMsgFilterFileAttrib attrib, int value)
|
||||
nsresult nsMsgFilterList::WriteIntAttr(nsMsgFilterFileAttribValue attrib, int value)
|
||||
{
|
||||
const char *attribStr = GetStringForAttrib(attrib);
|
||||
if (attribStr)
|
||||
@ -572,9 +572,11 @@ nsresult nsMsgFilterList::WriteIntAttr(nsMsgFilterFileAttrib attrib, int value)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsMsgFilterList::WriteStrAttr(nsMsgFilterFileAttrib attrib, nsCString &str)
|
||||
nsresult
|
||||
nsMsgFilterList::WriteStrAttr(nsMsgFilterFileAttribValue attrib,
|
||||
const char *str)
|
||||
{
|
||||
if (!str.IsEmpty() && m_fileStream) // only proceed if we actually have a string to write out.
|
||||
if (str && str[0] && m_fileStream) // only proceed if we actually have a string to write out.
|
||||
{
|
||||
char *escapedStr = nsnull;
|
||||
if (PL_strchr(str, '"'))
|
||||
@ -594,7 +596,7 @@ nsresult nsMsgFilterList::WriteStrAttr(nsMsgFilterFileAttrib attrib, nsCString &
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult nsMsgFilterList::WriteBoolAttr(nsMsgFilterFileAttrib attrib, PRBool boolVal)
|
||||
nsresult nsMsgFilterList::WriteBoolAttr(nsMsgFilterFileAttribValue attrib, PRBool boolVal)
|
||||
{
|
||||
nsCString strToWrite((boolVal) ? "yes" : "no");
|
||||
return WriteStrAttr(attrib, strToWrite);
|
||||
@ -607,9 +609,9 @@ nsresult nsMsgFilterList::SaveTextFilters()
|
||||
PRUint32 filterCount;
|
||||
m_filters->Count(&filterCount);
|
||||
|
||||
attribStr = GetStringForAttrib(nsMsgFilterAttribVersion);
|
||||
err = WriteIntAttr(nsMsgFilterAttribVersion, kFileVersion);
|
||||
err = WriteBoolAttr(nsMsgFilterAttribLogging, m_loggingEnabled);
|
||||
attribStr = GetStringForAttrib(nsIMsgFilterList::attribVersion);
|
||||
err = WriteIntAttr(nsIMsgFilterList::attribVersion, kFileVersion);
|
||||
err = WriteBoolAttr(nsIMsgFilterList::attribLogging, m_loggingEnabled);
|
||||
for (PRUint32 i = 0; i < filterCount; i ++)
|
||||
{
|
||||
nsMsgFilter *filter;
|
||||
@ -765,6 +767,14 @@ nsresult nsMsgFilterList::MoveFilterAt(PRUint32 filterIndex,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsMsgFilterList::GetVersion(PRInt16 *aResult)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aResult);
|
||||
*aResult = m_fileVersion;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
#ifdef DEBUG
|
||||
void nsMsgFilterList::Dump()
|
||||
|
@ -45,20 +45,6 @@ class nsIMsgFilter;
|
||||
class nsIOFileStream;
|
||||
class nsMsgFilter;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
nsMsgFilterAttribNone,
|
||||
nsMsgFilterAttribVersion,
|
||||
nsMsgFilterAttribLogging,
|
||||
nsMsgFilterAttribName,
|
||||
nsMsgFilterAttribEnabled,
|
||||
nsMsgFilterAttribDescription,
|
||||
nsMsgFilterAttribType,
|
||||
nsMsgFilterAttribScriptFile,
|
||||
nsMsgFilterAttribAction,
|
||||
nsMsgFilterAttribActionValue,
|
||||
nsMsgFilterAttribCondition
|
||||
} nsMsgFilterFileAttrib;
|
||||
|
||||
class nsMsgFilterList : public nsIMsgFilterList
|
||||
{
|
||||
@ -74,12 +60,6 @@ public:
|
||||
nsresult Close();
|
||||
nsresult LoadTextFilters();
|
||||
|
||||
PRInt16 GetVersion() {return m_fileVersion;}
|
||||
|
||||
// IO routines, used by filter object filing code.
|
||||
nsresult WriteIntAttr( nsMsgFilterFileAttrib attrib, int value);
|
||||
nsresult WriteStrAttr(nsMsgFilterFileAttrib attrib, nsCString &str);
|
||||
nsresult WriteBoolAttr(nsMsgFilterFileAttrib attrib, PRBool boolVal);
|
||||
protected:
|
||||
// type-safe accessor when you really have to have an nsMsgFilter
|
||||
nsresult GetMsgFilterAt(PRUint32 filterIndex, nsMsgFilter **filter);
|
||||
@ -93,8 +73,8 @@ protected:
|
||||
PRBool IsWhitespace(char ch);
|
||||
char SkipWhitespace();
|
||||
PRBool StrToBool(nsCString &str);
|
||||
char LoadAttrib(nsMsgFilterFileAttrib &attrib);
|
||||
const char *GetStringForAttrib(nsMsgFilterFileAttrib attrib);
|
||||
char LoadAttrib(nsMsgFilterFileAttribValue &attrib);
|
||||
const char *GetStringForAttrib(nsMsgFilterFileAttribValue attrib);
|
||||
nsresult LoadValue(nsCString &value);
|
||||
nsresult ParseCondition(nsCString &value);
|
||||
PRInt16 m_fileVersion;
|
||||
|
@ -79,7 +79,9 @@ NS_IMETHODIMP nsMsgFilterService::OpenFilterList(nsFileSpec *filterFile, nsIMsgF
|
||||
if (NS_SUCCEEDED(ret))
|
||||
{
|
||||
*resultFilterList = filterList;
|
||||
if (filterList->GetVersion() != kFileVersion)
|
||||
PRInt16 version;
|
||||
filterList->GetVersion(&version);
|
||||
if (version != kFileVersion)
|
||||
{
|
||||
|
||||
SaveFilterList(filterList, filterFile);
|
||||
|
Loading…
x
Reference in New Issue
Block a user