Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

116 lines
5.7 KiB

////////////////////////////////////////////////////////////////////////
//
// IMsgContainer
//
// Manages internet message headers
//
////////////////////////////////////////////////////////////////////////
#ifndef _INC_IMSGCONT_H
#define _INC_IMSGCONT_H
#include "columns.h"
typedef struct tagFINDMSG FINDMSG;
// from inc\storbase.h
typedef DWORD MSGID;
// Used for MarkThread()
typedef enum {
MARK_THD_NO_SUPERPARENT = 0x0001,
MARK_THD_FOR_DL = 0x0002,
MARK_THD_NO_DL = 0x0004,
MARK_THD_AS_READ = 0x0008,
MARK_THD_AS_UNREAD = 0x0010
} MARKTHREADTYPE;
// Used in RemoveHeaders() and by the view
typedef enum {
FILTER_NONE = 0x0001, // show all (cannot be used w/ other flags)
FILTER_READ = 0x0002, // hide read messages
FILTER_NOBODY = 0x0004, // hide messages without dl'd bodies
FILTER_SHOWFILTERED = 0x0008, // display filtered messages
FILTER_SHOWDELETED = 0x0010, // display deleted messages
PRUNE_NONREPLIES = 0x0020, // hide threads that are not replies to sender
} FILTERTYPE;
// Generic flags for IMessageCont methods
// use these if there is no specific set below
#define IMC_BYMSGID 0x0000 // dwIndex is a msgid (DEFAULT)
#define IMC_BYROW 0x0001 // dwIndex specifies a row
#define IMC_COMMONFLAGS 0x0002 // the mask, state, dword, whatever is SCFS_ flags (otherwise ARF_ or MSG_)
#define IMC_CONVERTARFTOMSG 0x0004
// Used by HrGetNext
#define GNM_NEXT 0x0000 // get next (DEFAULT)
// 0x0001 reserved for IMC_BYROW
// IMC_COMMONFLAGS not accepted
#define GNM_PREV 0x0004 // get previous instead of next (can't be used with GNM_UNREAD or GNM_THREAD)
#define GNM_UNREAD 0x0008 // get next unread (can't be used with GNM_PREV)
#define GNM_THREAD 0x0010 // get next thread (can't be used with GNM_PREV)
#define GNM_SKIPMAIL 0x0020 // skip over mail messages
#define GNM_SKIPNEWS 0x0040 // skip over news messages
#define GNM_SKIPUNSENT 0x0080 // skip unsent messages
// Used by GetMsgBy
#define GETMSG_SECURE (TRUE)
#define GETMSG_INSECURE (FALSE)
// State and mask flags for SetCachedFlags
// NOTE: we list here only the flags that are easily convertable
// between ARF_ and MSG_. Our flag situation is very annoying.
#define SCFS_NOSECUI 0x0001
#define SCFS_ALLFLAGS 0x0001 // do not use explicitly
DECLARE_INTERFACE(IMsgContainer)
{
STDMETHOD_(ULONG, AddRef) (THIS) PURE;
STDMETHOD_(ULONG, Release) (THIS) PURE;
STDMETHOD(Advise) (THIS_ HWND hwndAdvise) PURE;
STDMETHOD(CollapseBranch) (THIS_ DWORD dwRow, LPDWORD pdwCount) PURE;
STDMETHOD(ExpandAllThreads) (THIS_ BOOL fExpand) PURE;
STDMETHOD(ExpandBranch) (THIS_ DWORD dwRow, LPDWORD pdwCount) PURE;
STDMETHOD_(ULONG, GetCount) (THIS) PURE;
STDMETHOD(GetDisplayInfo) (THIS_ LV_DISPINFO *plvdi, COLUMN_ID idColumn) PURE;
STDMETHOD_(int, GetIndex) (THIS_ DWORD dwMsgId, BOOL fForceUnthreadedSearch = FALSE) PURE;
STDMETHOD_(BOOL, GetMsgId) (THIS_ DWORD dwRow, LPDWORD pdwMsgId) PURE;
STDMETHOD(GetMsgByIndex) (THIS_ DWORD dwRow, LPMIMEMESSAGE *ppMsg, HWND hwnd, BOOL *pfCached, BOOL fDownload, BOOL fSecure) PURE;
STDMETHOD(GetMsgByMsgId) (THIS_ MSGID msgid, LPMIMEMESSAGE *ppMsg, HWND hwnd, BOOL *pfCached, BOOL fDownload, BOOL fSecure) PURE;
STDMETHOD(HrFindItem) (THIS_ LPCSTR szSearch, ULONG *puRow) PURE;
STDMETHOD(HrGetNext) (THIS_ DWORD dwIndex, LPDWORD pdwMsgId, DWORD dwFlags) PURE;
STDMETHOD_(BOOL, FFlagState) (THIS_ DWORD dwIndex, DWORD dwMask, DWORD dwFlags) PURE;
STDMETHOD_(BOOL, IsCollapsedThread) (THIS_ DWORD dwRow) PURE;
STDMETHOD_(BOOL, HasBody) (THIS_ DWORD dwRow) PURE;
STDMETHOD_(BOOL, HasKids) (THIS_ DWORD dwRow) PURE;
STDMETHOD_(BOOL, IsRowRead) (THIS_ DWORD dwRow) PURE;
STDMETHOD_(BOOL, IsRowOrChildUnread) (THIS_ DWORD dwRow) PURE;
STDMETHOD_(BOOL, IsRowFiltered) (THIS_ DWORD dwRow) PURE;
STDMETHOD_(void, MarkAll) (THIS_ BOOL fRead) PURE;
STDMETHOD_(void, MarkAllDL) (THIS_ BOOL fDL) PURE;
STDMETHOD_(void, MarkSelected) (THIS_ HWND hwndList, MARKTHREADTYPE mtt) PURE;
STDMETHOD_(void, MarkOne) (THIS_ BOOL fRead, DWORD dwMsgId) PURE;
STDMETHOD_(void, MarkOneRow) (THIS_ BOOL fRead, DWORD dwRow) PURE;
STDMETHOD_(void, MarkOneRowDL) (THIS_ BOOL fDL, DWORD dwRow) PURE;
STDMETHOD(MarkThread) (THIS_ DWORD mtType, DWORD dwRow) PURE;
STDMETHOD_(void, SetFilterState) (THIS_ DWORD dwFilterState) PURE;
STDMETHOD_(void, SetViewWindow) (THIS_ HWND hwnd, BOOL fNoUI) PURE;
STDMETHOD_(void, Sort) (THIS_ COLUMN_ID idSort, BOOL fReverse, BOOL fThread) PURE;
STDMETHOD(Unadvise) (THIS_ HWND hwndAdvise) PURE;
STDMETHOD(HrFindNext) (THIS_ FINDMSG *pfmsg, DWORD dwRow, BOOL fIgnoreFirst) PURE;
STDMETHOD(CreateDragObject) (THIS_ HWND hwndList, DWORD *pdwEffectOk, IDataObject **ppDataObject) PURE;
STDMETHOD(Delete) (THIS_ DWORD dwMsgId, BOOL fForce) PURE;
STDMETHOD(SetCachedFlagsBy) (THIS_ DWORD dwIndex, DWORD dwState, DWORD dwStateMask, DWORD *pdwNewFlags, DWORD dwFlags) PURE;
STDMETHOD(SetMsgViewLanguage) (THIS_ MSGID msgid, DWORD dwCodePage) PURE;
STDMETHOD(GetMsgViewLanguage) (THIS_ MSGID msgid, DWORD *pdwCodePage) PURE;
STDMETHOD_(void, SetUIMode) (THIS_ BOOL fUI) PURE;
STDMETHOD_(int, GetItemParent) (THIS_ DWORD dwRow) PURE;
STDMETHOD_(int, GetFirstChild) (THIS_ DWORD dwRow) PURE;
STDMETHOD_(int, GetEmptyFolderString) (THIS) PURE;
STDMETHOD_(BOOL, IsRowDeleted) (THIS_ DWORD dwRow) PURE;
STDMETHOD_(WORD, GetRowHighlight) (THIS_ DWORD dwRow) PURE;
STDMETHOD_(void, UpdateAdvises)(THIS_ DWORD dwMsgId) PURE;
};
#endif // _INC_IMSGCONT_H