|
|
///////////////////////////////////////////////////////////////////////////////
//
// RuleUtil.h
//
///////////////////////////////////////////////////////////////////////////////
// Bring in only once
#if _MSC_VER > 1000
#pragma once
#endif
#include "oerules.h"
// Forward definitions
interface IOEMessageList; interface IMessageList; class CProgress; class CMRUList;
const DWORD RULE_DEFAULT_MAIL = 0x00000000; const DWORD RULE_DEFAULT_NEWS = 0x00000001;
const DWORD CCH_INDEX_MAX = 4; const DWORD DWORD_INDEX_MIN = 0; const DWORD DWORD_INDEX_MAX = 0x1000;
const DWORD MRDF_MAIL = 0x00000000; const DWORD MRDF_NEWS = 0x00000001; const DWORD MRDF_JUNK = 0x00000002; const DWORD MRDF_SENDERS = 0x00000003;
void DoMessageRulesDialog(HWND hwnd, DWORD dwFlags);
// For creating a rule from a message
const DWORD CRFMF_MAIL = 0x00000000; const DWORD CRFMF_NEWS = 0x00000001;
HRESULT HrCreateRuleFromMessage(HWND hwnd, DWORD dwFlags, MESSAGEINFO * pmsginfo, IMimeMessage * pMessage);
// Utility functions for the Block Sender object
const DWORD ABSF_MAIL = 0x00000001; const DWORD ABSF_NEWS = 0x00000002;
HRESULT HrBlockSendersFromFolder(HWND hwnd, DWORD dwFlags, FOLDERID idFolder, LPSTR * ppszSender, ULONG cpszSender);
const DWORD VRDF_POP3 = 0x00000001; const DWORD VRDF_NNTP = 0x00000002; const DWORD VRDF_IMAP = 0x00000004; const DWORD VRDF_HTTPMAIL = 0x00000008;
HRESULT HrDoViewsManagerDialog(HWND hwnd, DWORD dwFlags, RULEID * pridRule, BOOL * pfApplyAll);
HRESULT HrCreateRulesManager(IUnknown * pIUnkOuter, IUnknown ** ppIUnknown);
// Functions to deal with the address criteria/actions
HRESULT RuleUtil_HrBuildEmailString(LPWSTR pwszText, ULONG cchText, LPWSTR * ppwszEmail, ULONG * pcchEmail); HRESULT RuleUtil_HrParseEmailString(LPWSTR pwszEmail, ULONG cchEmail, LPWSTR * ppwszOut, ULONG * pcchOut);
// Functions to deal with the text criteria/actions
HRESULT RuleUtil_HrBuildTextString(LPTSTR pszIn, ULONG cchIn, LPTSTR * ppszText, ULONG * pcchText); HRESULT RuleUtil_HrParseTextString(LPTSTR pszText, ULONG cchText, LPTSTR * ppszOut, ULONG * pcchOut);
// Utility functions to get values with allocations
HRESULT RuleUtil_HrGetDlgString(HWND hwndDlg, UINT uiCtlId, LPTSTR *ppszText, ULONG * pcchText); HRESULT RuleUtil_HrGetRegValue(HKEY hkey, LPCSTR pszValueName, DWORD * pdwType, BYTE ** ppbData, ULONG * pcbData);
HRESULT RuleUtil_HrPickEMailNames(HWND hwndDlg, LONG lRecipType, UINT uidsWellButton, LPWSTR *ppwszAddrs); HRESULT RuleUtil_HrGetAddressesFromWAB(HWND hwndDlg, LONG lRecipType, UINT uidsWellButton, LPWSTR *ppwszAddrs);
BOOL RuleUtil_FEnDisDialogItem(HWND hwndDlg, UINT idcItem, BOOL fEnable); HRESULT RuleUtil_AppendRichEditText(HWND hwndRedit, ULONG ulStart, LPCWSTR pszText, CHARFORMAT *pchfmt); HRESULT RuleUtil_HrShowLinkedString(HWND hwndEdit, BOOL fError, BOOL fReadOnly, LPWSTR pszFmt, LPCWSTR pszData, ULONG ulStart, ULONG * pulStartLink, ULONG * pulEndLink, ULONG * pulEnd);
// Utility functions for the COECriteria object
HRESULT RuleUtil_HrDupCriteriaItem(CRIT_ITEM * pItemIn, ULONG cItemIn, CRIT_ITEM ** ppItemOut); HRESULT RuleUtil_HrFreeCriteriaItem(CRIT_ITEM * pItem, ULONG cItem);
// Utility functions for the COEActions object
HRESULT RuleUtil_HrDupActionsItem(ACT_ITEM * pItemIn, ULONG cItemIn, ACT_ITEM ** ppItemOut); HRESULT RuleUtil_HrFreeActionsItem(ACT_ITEM * pItem, ULONG cItem);
HRESULT RuleUtil_HrAddBlockSender(RULE_TYPE type, LPCSTR pszAddr); HRESULT RuleUtil_SetName(IOERule *pIRule, int idRes);
// Utility functions for merge between old and new rules design
// Migration IBA_MOVE=1000 to ACT_MOVE
#define ACT_MOVETO FLAG01
#define ACT_COPYTO FLAG02
#define ACT_FORWARDTO FLAG03
#define ACT_REPLYWITH FLAG04
#define ACT_DONTDOWNLOAD FLAG05
#define ACT_DELETEOFFSERVER FLAG06
#define ACT_ACCOUNT FLAG07
#define ACT_HIGHLIGHT FLAG08
#define ACT_FLAG FLAG09
#define ACT_READ FLAG10
#define ACT_MARKDOWNLOAD FLAG11
#define ACT_WATCH FLAG12
#define ACT_IGNORE FLAG13
HRESULT RuleUtil_HrMergeActions(ACT_ITEM * pActionsOrig, ULONG cActionsOrig, ACT_ITEM * pActionsNew, ULONG cActionsNew, ACT_ITEM ** ppActionsDest, ULONG * pcActionsDest); HRESULT RuleUtil_HrGetOldFormatString(HKEY hkeyRoot, LPCSTR pszValue, LPCSTR pszSep, LPSTR * ppszString, ULONG * pcchString);
// Functions to import/export messages
HRESULT RuleUtil_HrImportRules(HWND hwnd); HRESULT RuleUtil_HrExportRules(HWND hwnd);
const int RULE_APPLY_PARTIALS = 0x00000001; const int RULE_APPLY_SHOWUI = 0x00000002;
HRESULT RuleUtil_HrApplyRulesToFolder(DWORD dwFlags, DWORD dwDeleteFlags, IOEExecRules * pExecRules, IMessageFolder * pFolder, HWND hwndUI, CProgress * pProgress);
HRESULT RuleUtil_HrFindAction(ACT_ITEM * pActions, ULONG cActions, ACT_TYPE typeAct, ACT_ITEM ** ppActFound);
HRESULT RuleUtil_HrMapFldId(DWORD dwFlags, BYTE * pbFldIdMap, FOLDERID fldidOld, FOLDERID * pfldidNew);
HRESULT RuleUtil_HrGetUserData(DWORD dwFlags, LPSTR * ppszFirstName, LPSTR * ppszLastName, LPSTR * ppszCompanyName); HRESULT RuleUtil_HrApplyActions(HWND hwndUI, IOEExecRules * pIExecRules, MESSAGEINFO * pMsgInfo, IMessageFolder * pFolder, IMimeMessage * pIMMsg, DWORD dwDeleteFlags, ACT_ITEM * pActions, ULONG cActions, ULONG * pcInfiniteLoops, BOOL *pfDeleteOffServer);
HRESULT RuleUtil_HrCreateSendersRule(DWORD dwFlags, IOERule ** ppIRule); HRESULT RuleUtil_HrLoadSender(LPCSTR pszRegPath, DWORD dwFlags, IOERule ** ppIRule); HRESULT RuleUtil_HrMatchSender(LPCSTR pszSender, MESSAGEINFO * pMsgInfo, IMimeMessage * pIMMsg, IMimePropertySet * pIMPropSet); HRESULT RuleUtil_HrUpdateDefaultRules(RULE_TYPE typeRule);
HRESULT RuleUtil_HrGetFilterVersion(RULEID ridFilter, DWORD * pdwVersion); HRESULT RuleUtil_HrValidateRuleFolderData(RULEFOLDERDATA * prfdData);
typedef struct tagQUERYINFO { BOOL fThreaded; LPSTR pszQuery; ULONG cchQuery; } QUERYINFO, * PQUERYINFO;
HRESULT RuleUtil_HrBuildQuerysFromFilter(RULEID ridFilter, QUERYINFO * pqinfoFilter);
const int VMF_FINDER = 0x00000001;
class CViewMenu { private: struct VIEW_ITEM { RULEID ridRule; struct VIEW_ITEM * pNext; }; enum { STATE_UNINIT = 0x00000000, STATE_INIT = 0x00000001, STATE_LOADED = 0x00000002, STATE_DIRTY = 0x00000004, };
enum { CCH_FILTERTAG_MAX = 11 }; private: ULONG m_cRef; DWORD m_dwFlags; DWORD m_dwState; RULEID m_ridCurrent; CMRUList * m_pmruList; public: CViewMenu() : m_cRef(1), m_dwFlags(0), m_dwState(STATE_UNINIT), m_ridCurrent(RULEID_INVALID), m_pmruList(NULL) {} ~CViewMenu();
ULONG AddRef(VOID); ULONG Release(VOID); HRESULT HrInit(DWORD dwFlags); HRESULT HrReplaceMenu(DWORD dwFlags, HMENU hmenuView); HRESULT UpdateViewMenu(DWORD dwFlags, HMENU hmenuView, IMessageList * pMsgList);
HRESULT QueryStatus(IMessageList * pMsgList, OLECMD * prgCmds); HRESULT Exec(HWND hwndUI, DWORD nCmdID, IMessageList * pMsgList, VARIANTARG *pvaIn, VARIANTARG *pvaOut); HRESULT HrAddView(DWORD dwFlags, RULEID ridRule) {return E_NOTIMPL; }
private: VOID _AddDefaultViews(HMENU hmenuView); HRESULT _HrInsertViewMenu(HMENU hmenuView, RULEID ridFilter, DWORD dwMenuID, DWORD dwMenuIDInsert); HRESULT _HrReloadMRUViewMenu(HMENU hmenuView); HRESULT _HrAddExtraViewMenu(HMENU hmenuView, IOEMessageList * pIMsgList); VOID _AddViewToMRU(RULEID ridFilter); BOOL _FViewInMRUList(RULEID ridFilter, DWORD * pdwID); BOOL _FValiadateMRUList(VOID); };
HRESULT HrCreateViewMenu(DWORD dwFlags, CViewMenu ** ppViewMenu);
|