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.
111 lines
3.2 KiB
111 lines
3.2 KiB
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// RulesUI.h
|
|
//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Bring in only once
|
|
#pragma once
|
|
|
|
#include "rulesmgr.h"
|
|
|
|
// Rules Manager UI Page Base Class
|
|
class COERulesPageUI
|
|
{
|
|
protected:
|
|
enum
|
|
{
|
|
STATE_UNINIT = 0x00000000,
|
|
STATE_INITIALIZED = 0x00000001,
|
|
STATE_DIRTY = 0x00000002
|
|
};
|
|
|
|
protected:
|
|
UINT m_uiDlgRscId;
|
|
UINT m_uiTabLabelId;
|
|
DWORD m_dwFlags;
|
|
DWORD m_dwState;
|
|
|
|
public:
|
|
COERulesPageUI();
|
|
COERulesPageUI(UINT uiDlgRscId, UINT uiTabLabelId, DWORD dwFlags, DWORD dwState) :
|
|
m_uiDlgRscId(uiDlgRscId), m_uiTabLabelId(uiTabLabelId), m_dwFlags(dwFlags), m_dwState(dwState) {}
|
|
virtual ~COERulesPageUI() {};
|
|
|
|
virtual HRESULT HrInit(HWND hwndOwner, DWORD dwFlags) = 0;
|
|
virtual HRESULT HrCommitChanges(DWORD dwFlags, BOOL fClearDirty) = 0;
|
|
|
|
// Accessor functions
|
|
UINT UiGetDlgRscId(VOID) {return m_uiDlgRscId;}
|
|
UINT UiGetTabLabelId(VOID) {return m_uiTabLabelId;}
|
|
virtual DLGPROC DlgProcGetPageDlgProc(VOID) = 0;
|
|
BOOL FIsDirty(VOID) {return (0 != (m_dwState & STATE_DIRTY));}
|
|
virtual BOOL FGetRules(RULE_TYPE typeRule, RULENODE ** pprnode) = 0;
|
|
};
|
|
|
|
enum RULEMGR_FLAGS
|
|
{
|
|
RMF_MAIL = 0x00000000,
|
|
RMF_NEWS = 0x00000001,
|
|
RMF_JUNK = 0x00000002,
|
|
RMF_SENDERS = 0x00000003
|
|
};
|
|
|
|
// Rules Manager UI Class
|
|
class COERulesMgrUI
|
|
{
|
|
private:
|
|
enum
|
|
{
|
|
STATE_UNINIT = 0x00000000,
|
|
STATE_INITIALIZED = 0x00000001
|
|
};
|
|
|
|
enum
|
|
{
|
|
RULE_DIALOG_PAD = 0x00000004
|
|
};
|
|
|
|
enum
|
|
{
|
|
RULE_PAGE_MAIL = 0x00000000,
|
|
RULE_PAGE_NEWS = 0x00000001,
|
|
RULE_PAGE_JUNK = 0x00000002,
|
|
RULE_PAGE_SENDERS = 0x00000003,
|
|
RULE_PAGE_MAX = 0x00000004,
|
|
RULE_PAGE_MASK = 0x000000FF
|
|
};
|
|
|
|
private:
|
|
HWND m_hwndOwner;
|
|
DWORD m_dwFlags;
|
|
DWORD m_dwState;
|
|
HWND m_hwndDlg;
|
|
HWND m_hwndTab;
|
|
|
|
COERulesPageUI * m_rgRuleTab[RULE_PAGE_MAX];
|
|
|
|
public:
|
|
// Constructor/destructor
|
|
COERulesMgrUI();
|
|
~COERulesMgrUI();
|
|
|
|
// Main UI methods
|
|
HRESULT HrInit(HWND hwndOwner, DWORD dwFlags);
|
|
HRESULT HrShow(VOID);
|
|
|
|
// Dialog methods
|
|
static INT_PTR CALLBACK FOERuleMgrDlgProc(HWND hwnd, UINT uiMsg, WPARAM wParam, LPARAM lParam);
|
|
|
|
// Message handling methods
|
|
BOOL FOnInitDialog(HWND hwndDlg);
|
|
BOOL FOnCommand(UINT uiNotify, INT iCtl, HWND hwndCtl);
|
|
BOOL FOnNotify(INT iCtl, NMHDR * pnmhdr);
|
|
BOOL FOnDestroy(VOID);
|
|
BOOL FOnGetRules(RULE_TYPE typeRule, RULENODE ** pprnode);
|
|
|
|
private:
|
|
BOOL _FOnOK(VOID);
|
|
BOOL _FOnCancel(VOID);
|
|
BOOL _FInitTabCtrl(VOID);
|
|
};
|