gecko-dev/mailnews/public/MailNewsTypes.h

199 строки
8.2 KiB
C

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1999 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef MailNewsTypes_h__
#define MailNewsTypes_h__
#include "msgCore.h"
#include "prtypes.h"
/* MessageKey is a unique ID for a particular message in a folder. If you want
a handle to a message that will remain valid even after resorting the folder
or otherwise changing their indices, you want one of these rather than a
MSG_ViewIndex. MessageKeys don't survive local mail folder compression, however.
*/
typedef PRUint32 MessageKey;
const MessageKey MSG_MESSAGEKEYNONE = 0xffffffff;
/* XP_Index
*
* A generic index type from which other index types are derived. All XP_Index
* derived types are zero based.
*
* The following index types are currently supported:
* - MSG_ViewIndex - an index into the list of messages or folders or groups,
* where zero is the first one to show, one is the second, etc...
* - AB_SelectionIndex
* - AB_NameCompletionIndex
*/
/* I'm not sure it's correct to carry these over into Mozilla, but we can always take them out */
typedef enum _XP_IndexType
{
kViewIndex = 0,
kSelectionIndex,
kNameCompletionIndex
} XP_IndexType;
typedef uint32 XP_Index;
typedef XP_Index MSG_ViewIndex;
typedef MSG_ViewIndex MsgViewIndex;
/* XP_INDEXNONE and MSG_VIEWINDEXNONE are used to indicate an invalid or
* non-existent index.
*/
const XP_Index XP_INDEXNONE = 0xFFFFFFFF;
const MSG_ViewIndex MSG_VIEWINDEXNONE = 0xFFFFFFFF;
/* Message priorities as determined by X-Priority hdr, or Priority header? */
typedef enum
{
MSG_PriorityNotSet = 0,
MSG_NoPriority = 1,
MSG_LowestPriority,
MSG_LowPriority,
MSG_NormalPriority,
MSG_HighPriority,
MSG_HighestPriority
} MSG_PRIORITY;
// The following enums are all persistent in databases, so don't go changing the values!
enum nsMsgSortOrder
{
nsMSG_SortTypeNone = 0,
nsMSG_SortTypeAscending = 1,
nsMSG_SortTypeDescending = 2
};
// We should be using the property name we're sorting by instead of these types.
enum nsMsgSortType
{
nsMSG_SortByDate = 0x12,
nsMSG_SortBySubject = 0x13,
nsMSG_SortByAuthor = 0x14,
nsMSG_SortById = 0x15,
nsMSG_SortByThread = 0x16,
nsMSG_SortByPriority = 0x17,
nsMSG_SortByStatus = 0x18,
nsMSG_SortBySize = 0x19,
nsMSG_SortByFlagged = 0x1a,
nsMSG_SortByUnread = 0x1b,
nsMSG_SortByRecipient
};
enum nsMsgViewType
{
nsMSG_ViewAny = 0, // this view type matches any other view type,
// for the purpose of matching cached views.
// Else, it's equivalent to ViewAllThreads
nsMSG_ViewAllThreads = 1, // default view, no killed threads
nsMSG_ViewOnlyThreadsWithNew = 2,
nsMSG_ViewOnlyNewHeaders = 4,
nsMSG_ViewWatchedThreadsWithNew = 5,
nsMSG_ViewCacheless // this would be for cacheless imap
};
/* Flags about a single message. These values are used in the MSG_MessageLine
struct and in a folder's mozilla-status line. The summary file database
should use the same set of flags..
*/
#define MSG_FLAG_READ 0x0001 /* has been read */
#define MSG_FLAG_REPLIED 0x0002 /* a reply has been successfully sent */
#define MSG_FLAG_MARKED 0x0004 /* the user-provided mark */
#define MSG_FLAG_EXPUNGED 0x0008 /* already gone (when folder not
compacted.) Since actually
removing a message from a
folder is a semi-expensive
operation, we tend to delay it;
messages with this bit set will
be removed the next time folder
compaction is done. Once this
bit is set, it never gets
un-set. */
#define MSG_FLAG_HAS_RE 0x0010 /* whether subject has "Re:" on
the front. The folder summary
uniquifies all of the strings
in it, and to help this, any
string which begins with "Re:"
has that stripped first. This
bit is then set, so that when
presenting the message, we know
to put it back (since the "Re:"
is not itself stored in the
file.) */
#define MSG_FLAG_ELIDED 0x0020 /* Whether the children of this
sub-thread are folded in the
display. */
#define MSG_FLAG_EXPIRED 0x0040 /* If this flag is set, then this
is not a "real" message, but is
a dummy container representing
an expired parent in a thread. */
#define MSG_FLAG_OFFLINE 0x0080 /* db has offline news or imap article
*/
#define MSG_FLAG_WATCHED 0x0100 /* If set, then this thread is watched (in
3.0, this was MSG_FLAG_UPDATING).*/
#define MSG_FLAG_SENDER_AUTHED 0x0200 /* If set, then this message's sender
has been authenticated when sending this msg. */
#define MSG_FLAG_PARTIAL 0x0400 /* If set, then this message's body is
only the first ten lines or so of the
message, and we need to add a link to
let the user download the rest of it
from the POP server. */
#define MSG_FLAG_QUEUED 0x0800 /* If set, this message is queued for
delivery. This only ever gets set on
messages in the queue folder, but is
used to protect against the case of
other messages having made their way
in there somehow -- if some other
program put a message in the queue, we
don't want to later deliver it! */
#define MSG_FLAG_FORWARDED 0x1000 /* this message has been forwarded */
#define MSG_FLAG_PRIORITIES 0xE000 /* These are used to remember the message
priority in the mozilla status flags
so we can regenerate a priority after a
rule (or user) has changed it. They are
not returned in MSG_MessageLine.flags,
just in mozilla-status, so if you need
more non-persistent flags, you could
share these bits. But it would be wrong.
. */
#define MSG_FLAG_NEW 0x10000 /* This msg is new since the last time
the folder was closed.
*/
#define MSG_FLAG_IGNORED 0x40000 /* the thread is ignored */
#define MSG_FLAG_IMAP_DELETED 0x200000 /* message is marked deleted on the server */
#define MSG_FLAG_MDN_REPORT_NEEDED 0x400000 /* This msg required to send an MDN
* to the sender of the message
*/
#define MSG_FLAG_MDN_REPORT_SENT 0x800000 /* An MDN report message has been
* sent for this message. No more
* MDN report should be sent to the
* sender
*/
#define MSG_FLAG_TEMPLATE 0x1000000 /* this message is a template */
#define MSG_FLAG_ATTACHMENT 0x10000000 /* this message has files attached to it */
#endif