diff options
Diffstat (limited to 'NSCmpts/RunScanDisk.cpp')
| -rw-r--r-- | NSCmpts/RunScanDisk.cpp | 140 | 
1 files changed, 140 insertions, 0 deletions
| diff --git a/NSCmpts/RunScanDisk.cpp b/NSCmpts/RunScanDisk.cpp new file mode 100644 index 0000000..60a3eb7 --- /dev/null +++ b/NSCmpts/RunScanDisk.cpp @@ -0,0 +1,140 @@ +// RunScanDisk.cpp : Implementation of CRunScanDisk +#include "stdafx.h" +#include "NSCmpts.h" +#include "RunScanDisk.h" +#include "../Common/Defines.h" +#include <appmisc.h> + +///////////////////////////////////////////////////////////////////////////// +// CRunScanDisk + +STDMETHODIMP CRunScanDisk::InterfaceSupportsErrorInfo(REFIID riid) +{ +	static const IID* arr[] =  +	{ +		&IID_ISecureShutdownDOS, +	}; +	for (int i=0;i<sizeof(arr)/sizeof(arr[0]);i++) +	{ +		if (InlineIsEqualGUID(*arr[i],riid)) +			return S_OK; +	} +	return S_FALSE; +} + +////////////////////////////////////////////////////////////////////// +// This won't run under Windows NT so don't even show it + +HRESULT CRunScanDisk::FinalConstruct() +{ +	if(::GetVersion() < 0x80000000) +		return E_FAIL; +	else +		return S_OK; +} + +///////////////////////////////////////////////////////////////////////////// +// Returns text to put in Batch File + +STDMETHODIMP CRunScanDisk::GetBatchText(BSTR* psText) +{ +	// This should never be true as the object shouldn't  +	// even be creatable under WIN NT; +	// ASSERT(::GetPlatform() == VER_PLATFORM_WIN32_NT); +	ASSERT(::GetVersion() >= 0x80000000); + + +	// Format and return string with options +	string sParamNoSave;		 +	string sParamAutoFix;	 + +	if(m_Data.GetInt(_T("Auto Fix"), true)) +	{ +		sParamAutoFix.load_string(IDS_SCANDISK_AUTOFIX); +		sParamNoSave.load_string(IDS_SCANDISK_NOSAVE); + +		if(!m_Data.GetInt(_T("Save Clusters"), false)) +			sParamNoSave = _T(""); + +	} + +	string sRetVal; +	sRetVal.format(IDS_SCANDISK_BATCHTEXT, (LPCTSTR)sParamAutoFix, (LPCTSTR)sParamNoSave); + +	CComBSTR bsRet(sRetVal); +	*psText = bsRet.Detach(); + +	return S_OK; +} + +//////////////////////////////////////////////////////// +// Returns Info about our object + +STDMETHODIMP CRunScanDisk::get_Info(NightSecInfo nsItem, VARIANT* pvVal) +{ +	::VariantClear(pvVal); + +	CComBSTR bsRetVal; +	switch(nsItem) +	{ +	case nsName: +		pvVal->vt = VT_BSTR; +		bsRetVal.LoadString(IDS_SCANDISK_NAME); +		pvVal->bstrVal = bsRetVal.Detach(); +		return S_OK; +	case nsHelpText: +		pvVal->vt = VT_BSTR; +		bsRetVal.LoadString(IDS_SCANDISK_DESC); +		pvVal->bstrVal = bsRetVal.Detach(); +		return S_OK; +	} + +	::VariantClear(pvVal); +	return S_FALSE; +} + +//////////////////////////////////////////////////////// +// Called to initialize our data object + +STDMETHODIMP CRunScanDisk::SetData(IUnknown* pUnk) +{ +	return m_Data.Initialize(pUnk); +} +/////////////////////////////////////////////////////////////////////////////// +// Property Page Stuff + +// Updates all controls +bool CRunScanDisk::UpdateAutoFix() +{ +	bool bEnable = IsDlgButtonChecked(IDC_AUTOFIX) ? true : false; +	::EnableWindow(GetDlgItem(IDC_SAVE), bEnable); +	::EnableWindow(GetDlgItem(IDC_NOSAVE), bEnable); + +	return bEnable; +} + +LRESULT CRunScanDisk::OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) +{ +	// Load Auto Fix State +	CheckDlgButton(IDC_AUTOFIX, m_Data.GetInt(_T("Auto Fix"), true)); + +	// Load Save Clusters State +	bool bSave = m_Data.GetInt(_T("Save Clusters"), false) ? true : false; + +	CheckDlgButton(IDC_SAVE, bSave); +	CheckDlgButton(IDC_NOSAVE, !bSave); + +	UpdateAutoFix(); + +	return FALSE;  // return TRUE unless you set the focus to a control +	              // EXCEPTION: OCX Property Pages should return FALSE +} + +// Used to enable/disable controls +LRESULT CRunScanDisk::OnAutoFix(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) +{ +	UpdateAutoFix(); +	SetDirty(true); + +	return 0; +} | 
