Revision control

Copy as Markdown

Other Tools

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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 "MailNewsTypes2.idl"
interface nsIMsgFolder;
interface nsIMsgDatabase;
interface nsIMsgDBHdr;
[scriptable, uuid(6e893e59-af98-4f62-a326-0f00f32147cd)]
interface nsMsgSearchScope : nsISupports {
const nsMsgSearchScopeValue offlineMail = 0;
const nsMsgSearchScopeValue offlineMailFilter = 1;
const nsMsgSearchScopeValue onlineMail = 2;
const nsMsgSearchScopeValue onlineMailFilter = 3;
/// offline news, base table, no body or junk
const nsMsgSearchScopeValue localNews = 4;
const nsMsgSearchScopeValue news = 5;
const nsMsgSearchScopeValue newsEx = 6;
const nsMsgSearchScopeValue LDAP = 7;
const nsMsgSearchScopeValue LocalAB = 8;
const nsMsgSearchScopeValue allSearchableGroups = 9;
const nsMsgSearchScopeValue newsFilter = 10;
const nsMsgSearchScopeValue LocalABAnd = 11;
const nsMsgSearchScopeValue LDAPAnd = 12;
// IMAP and NEWS, searched using local headers
const nsMsgSearchScopeValue onlineManual = 13;
/// local news + junk
const nsMsgSearchScopeValue localNewsJunk = 14;
/// local news + body
const nsMsgSearchScopeValue localNewsBody = 15;
/// local news + junk + body
const nsMsgSearchScopeValue localNewsJunkBody = 16;
};
typedef long nsMsgSearchAttribValue;
/**
* Definitions of search attribute types. The numerical order
* from here will also be used to determine the order that the
* attributes display in the filter editor.
*/
[scriptable, uuid(a83ca7e8-4591-4111-8fb8-fd76ac73c866)]
interface nsMsgSearchAttrib : nsISupports {
const nsMsgSearchAttribValue Custom = -2; /* a custom term, see nsIMsgSearchCustomTerm */
const nsMsgSearchAttribValue Default = -1;
const nsMsgSearchAttribValue Subject = 0; /* mail and news */
const nsMsgSearchAttribValue Sender = 1;
const nsMsgSearchAttribValue Body = 2;
const nsMsgSearchAttribValue Date = 3;
const nsMsgSearchAttribValue Priority = 4; /* mail only */
const nsMsgSearchAttribValue MsgStatus = 5;
const nsMsgSearchAttribValue To = 6;
const nsMsgSearchAttribValue CC = 7;
const nsMsgSearchAttribValue ToOrCC = 8;
const nsMsgSearchAttribValue AllAddresses = 9;
const nsMsgSearchAttribValue Location = 10; /* result list only */
const nsMsgSearchAttribValue MessageKey = 11; /* message result elems */
const nsMsgSearchAttribValue AgeInDays = 12;
const nsMsgSearchAttribValue FolderInfo = 13; /* for "view thread context" from result */
const nsMsgSearchAttribValue Size = 14;
const nsMsgSearchAttribValue AnyText = 15;
const nsMsgSearchAttribValue Keywords = 16; // keywords are the internal representation of tags.
const nsMsgSearchAttribValue Name = 17;
const nsMsgSearchAttribValue DisplayName = 18;
const nsMsgSearchAttribValue Nickname = 19;
const nsMsgSearchAttribValue ScreenName = 20;
const nsMsgSearchAttribValue Email = 21;
const nsMsgSearchAttribValue AdditionalEmail = 22;
const nsMsgSearchAttribValue PhoneNumber = 23;
const nsMsgSearchAttribValue WorkPhone = 24;
const nsMsgSearchAttribValue HomePhone = 25;
const nsMsgSearchAttribValue Fax = 26;
const nsMsgSearchAttribValue Pager = 27;
const nsMsgSearchAttribValue Mobile = 28;
const nsMsgSearchAttribValue City = 29;
const nsMsgSearchAttribValue Street = 30;
const nsMsgSearchAttribValue Title = 31;
const nsMsgSearchAttribValue Organization = 32;
const nsMsgSearchAttribValue Department = 33;
// 34 - 43, reserved for ab / LDAP;
const nsMsgSearchAttribValue HasAttachmentStatus = 44;
const nsMsgSearchAttribValue JunkStatus = 45;
const nsMsgSearchAttribValue JunkPercent = 46;
const nsMsgSearchAttribValue JunkScoreOrigin = 47;
const nsMsgSearchAttribValue HdrProperty = 49; // uses nsIMsgSearchTerm::hdrProperty
const nsMsgSearchAttribValue FolderFlag = 50; // uses nsIMsgSearchTerm::status
const nsMsgSearchAttribValue Uint32HdrProperty = 51; // uses nsIMsgSearchTerm::hdrProperty
// 52 is for showing customize - in ui headers start from 53 onwards up until 99.
/** OtherHeader MUST ALWAYS BE LAST attribute since
* we can have an arbitrary # of these. The number can be changed,
* however, because we never persist AttribValues as integers.
*/
const nsMsgSearchAttribValue OtherHeader = 52;
// must be last attribute
const nsMsgSearchAttribValue kNumMsgSearchAttributes = 100;
};
typedef long nsMsgSearchOpValue;
[scriptable, uuid(9160b196-6fcb-4eba-aaaf-6c806c4ee420)]
interface nsMsgSearchOp : nsISupports {
const nsMsgSearchOpValue Contains = 0; /* for text attributes */
const nsMsgSearchOpValue DoesntContain = 1;
const nsMsgSearchOpValue Is = 2; /* is and isn't also apply to some non-text attrs */
const nsMsgSearchOpValue Isnt = 3;
const nsMsgSearchOpValue IsEmpty = 4;
const nsMsgSearchOpValue IsBefore = 5; /* for date attributes */
const nsMsgSearchOpValue IsAfter = 6;
const nsMsgSearchOpValue IsHigherThan = 7; /* for priority. Is also applies */
const nsMsgSearchOpValue IsLowerThan = 8;
const nsMsgSearchOpValue BeginsWith = 9;
const nsMsgSearchOpValue EndsWith = 10;
const nsMsgSearchOpValue SoundsLike = 11; /* for LDAP phoenetic matching */
const nsMsgSearchOpValue LdapDwim = 12; /* Do What I Mean for simple search */
const nsMsgSearchOpValue IsGreaterThan = 13;
const nsMsgSearchOpValue IsLessThan = 14;
const nsMsgSearchOpValue NameCompletion = 15; /* Name Completion operator...as the name implies =) */
const nsMsgSearchOpValue IsInAB = 16;
const nsMsgSearchOpValue IsntInAB = 17;
const nsMsgSearchOpValue IsntEmpty = 18; /* primarily for tags */
const nsMsgSearchOpValue Matches = 19; /* generic term for use by custom terms */
const nsMsgSearchOpValue DoesntMatch = 20; /* generic term for use by custom terms */
const nsMsgSearchOpValue kNumMsgSearchOperators = 21; /* must be last operator */
};
typedef long nsMsgSearchWidgetValue;
/* FEs use this to help build the search dialog box */
[scriptable,uuid(903dd2e8-304e-11d3-92e6-00a0c900d445)]
interface nsMsgSearchWidget : nsISupports {
const nsMsgSearchWidgetValue Text = 0;
const nsMsgSearchWidgetValue Date = 1;
const nsMsgSearchWidgetValue Menu = 2;
const nsMsgSearchWidgetValue Int = 3; /* added to account for age in days which requires an integer field */
const nsMsgSearchWidgetValue None = 4;
};
typedef long nsMsgSearchBooleanOperator;
[scriptable, uuid(a37f3f4a-304e-11d3-8f94-00a0c900d445)]
interface nsMsgSearchBooleanOp : nsISupports {
const nsMsgSearchBooleanOperator BooleanOR = 0;
const nsMsgSearchBooleanOperator BooleanAND = 1;
};
/* Use this to specify the value of a search term */
[ptr] native nsMsgSearchValue(nsMsgSearchValue);
%{C++
#include "nsString.h"
typedef struct nsMsgSearchValue
{
nsMsgSearchAttribValue attribute;
union
{
nsMsgPriorityValue priority;
PRTime date;
uint32_t msgStatus; /* see MSG_FLAG in msgcom.h */
uint32_t size;
nsMsgKey key;
int32_t age; /* in days */
nsIMsgFolder *folder;
uint32_t junkStatus;
uint32_t junkPercent;
} u;
// We keep two versions of the string to avoid conversion at "search time".
nsCString utf8String;
nsString utf16String;
} nsMsgSearchValue;
%}
[ptr] native nsMsgSearchTerm(nsMsgSearchTerm);
// Please note the ! at the start of this macro, which means the macro
// needs to enumerate the non-string attributes.
%{C++
#define IS_STRING_ATTRIBUTE(_a) \
(!(_a == nsMsgSearchAttrib::Priority || _a == nsMsgSearchAttrib::Date || \
_a == nsMsgSearchAttrib::MsgStatus || _a == nsMsgSearchAttrib::MessageKey || \
_a == nsMsgSearchAttrib::Size || _a == nsMsgSearchAttrib::AgeInDays || \
_a == nsMsgSearchAttrib::FolderInfo || _a == nsMsgSearchAttrib::Location || \
_a == nsMsgSearchAttrib::JunkStatus || \
_a == nsMsgSearchAttrib::FolderFlag || _a == nsMsgSearchAttrib::Uint32HdrProperty || \
_a == nsMsgSearchAttrib::JunkPercent || _a == nsMsgSearchAttrib::HasAttachmentStatus))
%}
[ptr] native nsSearchMenuItem(nsSearchMenuItem);