summaryrefslogtreecommitdiff
path: root/NSCmpts/EmptyRecycleBin.h
blob: ab8cf0d315b6b772bc40a64264eb623bc7b22ca2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
// EmptyRecycleBin.h : Declaration of the CEmptyRecycleBin

#ifndef __EMPTYRECYCLEBIN_H_
#define __EMPTYRECYCLEBIN_H_

#include "resource.h"       // main symbols
#include "Shlobj.h"
#include "../Common/CmptData.h"
#include <contexthelp.h>

HRESULT InvokeMenuCommand(IContextMenu* pcm, HMENU hMenu, UINT nMenuItem, HWND hWndParent, bool bClosePrompt = false);
HRESULT InvokeMenuId(IContextMenu* pcm, int nIDCmd, HWND hWndParent);
int GetMenuIdFromString(HMENU hMenu, string sMenuItem);
int GetMenuIdFromString(HMENU hMenu, UINT nStrID);

DWORD WINAPI ClosePromptWindow( LPVOID pParam );
HWND GetTopLevel(HWND hwndChild);

#define ER_REG_RECYCLE _T("Empty Recycle Bin")
#define ER_REG_NORTON _T("Empty Norton Protected")

/////////////////////////////////////////////////////////////////////////////
// CEmptyRecycleBin
class ATL_NO_VTABLE CEmptyRecycleBin : 
	public CComObjectRootEx<CComSingleThreadModel>,
	public CComCoClass<CEmptyRecycleBin, &CLSID_EmptyRecycleBin>,
	public ISupportErrorInfo,
	public IDispatchImpl<ISecureShutdownWin, &IID_ISecureShutdownWin, &LIBID_NightSecCmpts>,
	public IPropertyPageImpl<CEmptyRecycleBin>,
	public CDialogImplEx,
	public CContextHelp<CEmptyRecycleBin>

{
public:
	CEmptyRecycleBin() : CDialogImplEx(IDD)
	{
		m_dwTitleID = IDS_TITLERecycle;
		m_dwHelpFileID = IDS_NSHELPFILE;
		m_dwDocStringID = IDS_DOCSTRINGRecycle;
	}
	~CEmptyRecycleBin()
		{ ATLTRACE(_T("Destroying EmptyRecycleBin\n")); }


DECLARE_REGISTRY_RESOURCEID(IDR_EMPTYRECYCLEBIN)

BEGIN_COM_MAP(CEmptyRecycleBin)
	COM_INTERFACE_ENTRY(ISecureShutdownWin)
	COM_INTERFACE_ENTRY(IDispatch)
	COM_INTERFACE_ENTRY(ISupportErrorInfo)
	COM_INTERFACE_ENTRY_IMPL(IPropertyPage)
END_COM_MAP()

// ISupportsErrorInfo
	STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);

// ISecureShutdownWin
public:
	STDMETHOD(get_Info)(/*[in]*/ NightSecInfo nsItem, /*[out, retval]*/ VARIANT* pvVal);
	STDMETHOD(DoShutdown)(/*[in]*/ long hParent, /*[in]*/ long lMode);
	STDMETHOD(SetData)(/*[in]*/ IUnknown* pUnk);

// Data
protected:
	CPropertyBag m_Data;

	///////////////////////////////////////////////////////////////////
// Property Sheet Stuff

public:

	enum {IDD = IDD_EMPTYRECYCLE};

BEGIN_MSG_MAP(CEmptyRecycleBin)
	MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog)
	CHAIN_MSG_MAP(IPropertyPageImpl<CEmptyRecycleBin>)
	CHAIN_MSG_MAP(CContextHelp<CEmptyRecycleBin>)
END_MSG_MAP()

BEGIN_HELP_MAP(NS_HELP_FILE)
	HELP_ID(IDC_EMPTYRECYCLE, 4020)
	HELP_ID(IDC_EMPTYNORTON, 4019)
END_HELP_MAP

// Property Sheet Messages
	LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);

	STDMETHOD(Apply)(void)
	{
		ATLTRACE(_T("CEmptyRecycleBun::Apply\n"));

		HRESULT hr;
		HRESULT hrRet = S_OK;

		// Save AutoFix State
		hr = m_Data.WriteInt(ER_REG_RECYCLE, IsDlgButtonChecked(IDC_EMPTYRECYCLE));
		if(FAILED(hr)) hrRet = hr;

		// Save Cluster State
		hr = m_Data.WriteInt(ER_REG_NORTON, IsDlgButtonChecked(IDC_EMPTYNORTON));
		if(FAILED(hr)) hrRet = hr;

		m_bDirty = FALSE;
		return hrRet;

	}

};

#endif //__EMPTYRECYCLEBIN_H_