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
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
|
|
|