Revision control

Copy as Markdown

Other Tools

/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "nsISupports.idl"
#include "nsMsgSearchCore.idl"
#include "nsIMsgSearchValue.idl"
interface nsIMsgDBHdr;
interface nsIMsgDatabase;
interface nsIMsgSearchScopeTerm;
[scriptable, uuid(705a2b5a-5efc-495c-897a-bef1161cd3c0)]
interface nsIMsgSearchTerm : nsISupports {
attribute nsMsgSearchAttribValue attrib;
attribute nsMsgSearchOpValue op;
attribute nsIMsgSearchValue value;
attribute boolean booleanAnd;
attribute ACString arbitraryHeader;
/**
* Not to be confused with arbitraryHeader, which is a header in the
* rfc822 message. This is a property of the nsIMsgDBHdr, and may have
* nothing to do the message headers, e.g., gloda-id.
* value.str will be compared with nsIMsgHdr::GetProperty(hdrProperty).
*/
attribute ACString hdrProperty;
/// identifier for a custom id used for this term, if any.
attribute ACString customId;
attribute boolean beginsGrouping;
attribute boolean endsGrouping;
/**
* Match the value against one of the emails found in the incoming
* 2047-encoded string.
*/
boolean matchRfc822String(in ACString aString, in string charset);
/**
* Match the current header value against the incoming 2047-encoded string.
*
* This method will first apply the nsIMimeConverter decoding to the string
* (using the supplied parameters) and will then match the value against the
* decoded result.
*/
boolean matchRfc2047String(in ACString aString, in string charset, in boolean charsetOverride);
boolean matchDate(in PRTime aTime);
boolean matchStatus(in unsigned long aStatus);
boolean matchPriority(in nsMsgPriorityValue priority);
boolean matchAge(in PRTime days);
boolean matchSize(in unsigned long size);
boolean matchJunkStatus(in string aJunkScore);
/*
* Test search term match for junkpercent
*
* @param aJunkPercent junkpercent for message (0-100, 100 is junk)
* @return true if matches
*/
boolean matchJunkPercent(in unsigned long aJunkPercent);
/*
* Test search term match for junkscoreorigin
* @param aJunkScoreOrigin Who set junk score? Possible values:
* plugin filter imapflag user whitelist
* @return true if matches
*/
boolean matchJunkScoreOrigin(in string aJunkScoreOrigin);
/**
* Test if the body of the passed in message matches "this" search term.
* @param aScopeTerm scope of search
* @param aCharset folder charset.
* @param aMsg db msg hdr of message to match.
*/
boolean matchBody(in nsIMsgSearchScopeTerm aScopeTerm,
in string aCharset,
in nsIMsgDBHdr aMsg);
/**
* Test if the arbitrary header specified by this search term
* matches the corresponding header in the passed in message.
*
* @param aScopeTerm scope of search
* @param aCharset The charset to apply to un-labeled non-UTF-8 data.
* @param aCharsetOverride If true, aCharset is used instead of any
* charset labeling other than UTF-8.
* @param aMsg The nsIMsgDBHdr of the message
* @param aHeaders A null-separated list of message headers.
* @param aForFilters Whether this is a filter or a search operation.
*/
boolean matchArbitraryHeader(in nsIMsgSearchScopeTerm aScopeTerm,
in string aCharset,
in boolean aCharsetOverride,
in nsIMsgDBHdr aMsg,
in ACString aHeaders,
in boolean aForFilters);
/**
* Compares value.str with nsIMsgHdr::GetProperty(hdrProperty).
* @param msg msg to match db hdr property of.
*
* @returns true if msg matches property, false otherwise.
*/
boolean matchHdrProperty(in nsIMsgDBHdr msg);
/**
* Compares value.status with nsIMsgHdr::GetUint32Property(hdrProperty).
* @param msg msg to match db hdr property of.
*
* @returns true if msg matches property, false otherwise.
*/
boolean matchUint32HdrProperty(in nsIMsgDBHdr msg);
/**
* Compares value.status with the folder flags of the msg's folder.
* @param msg msgHdr whose folder's flag we want to compare.
*
* @returns true if folder's flags match value.status, false otherwise.
*/
boolean matchFolderFlag(in nsIMsgDBHdr msg);
readonly attribute boolean matchAllBeforeDeciding;
readonly attribute ACString termAsString;
boolean matchKeyword(in ACString keyword); // used for tag searches
attribute boolean matchAll;
/**
* Does the message match the custom search term?
*
* @param msg message database object representing the message
*
* @return true if message matches
*/
boolean matchCustom(in nsIMsgDBHdr msg);
/**
* Returns a nsMsgSearchAttribValue value corresponding to a field string from
* the nsMsgSearchTerm.cpp::SearchAttribEntryTable table.
* Does not handle custom attributes yet.
*/
nsMsgSearchAttribValue getAttributeFromString(in string aAttribName);
};