Esempio n. 1
0
COptionsPage::COptionsPage(void):
CBetterPropPage(IDD_PAGE_OPTIONS),
m_nRecurse(BST_CHECKED),
m_nCleanup(BST_CHECKED),
m_nRecycle(BST_CHECKED),
m_fCompare(BST_UNCHECKED)
{
	m_psp.dwFlags |= PSP_PREMATURE;

#if (_MFC_VER < 0x0700)
	CWinApp* pApp = AfxGetApp();
#else
	CUpdateItApp* pApp = DYNAMIC_DOWNCAST(CUpdateItApp, AfxGetApp());
#endif   // _MFC_VER
	ASSERT_VALID(pApp);

	// initialize and validate initial input values

	m_strSource = pApp->GetConfigString(SZ_ARG_OPTIONS_SOURCE, SZ_REGK_OPTIONS, SZ_REGV_OPTIONS_SOURCE);
	m_nRecurse = pApp->GetConfigCheck(SZ_ARG_OPTIONS_RECURSE, SZ_REGK_OPTIONS, SZ_REGV_OPTIONS_RECURSE, BST_CHECKED);
	m_strExclude = pApp->GetConfigString(SZ_ARG_OPTIONS_EXCLUDE, SZ_REGK_OPTIONS, SZ_REGV_OPTIONS_EXCLUDE);
	m_strTarget = pApp->GetConfigString(SZ_ARG_OPTIONS_TARGET, SZ_REGK_OPTIONS, SZ_REGV_OPTIONS_TARGET);

	m_nCleanup = pApp->GetConfigCheck(SZ_ARG_OPTIONS_CLEANUP, SZ_REGK_OPTIONS, SZ_REGV_OPTIONS_CLEANUP, BST_CHECKED);
	if (m_nCleanup == BST_CHECKED)
	{
		m_nRecycle = pApp->GetConfigCheck(SZ_ARG_OPTIONS_RECYCLE, SZ_REGK_OPTIONS, SZ_REGV_OPTIONS_RECYCLE, BST_CHECKED);
	}
	else
	{
		m_nRecycle = BST_UNCHECKED;
	}

#if (_MFC_VER < 0x0700)
	m_timeWrite = m_strSource.IsEmpty() ? -1 : pApp->GetProfileInt(SZ_REGK_TIMES, m_strSource, -1);
#else
	CArgsParser& argsParser = pApp->m_argsParser;
	bool fHasWriteTime = false;
	if (argsParser.HasKey(SZ_ARG_OPTIONS_WRITETIME))
	{
		fHasWriteTime = argsParser.GetTimeValue(SZ_ARG_OPTIONS_WRITETIME, m_timeWrite);
	}
	if (!fHasWriteTime)
	{
		m_timeWrite = m_strSource.IsEmpty() ? -1 : pApp->GetProfileTime(SZ_REGK_TIMES, m_strSource, -1);
	}
#endif   // _MFC_VER

	m_fCompare = pApp->GetConfigCheck(SZ_ARG_OPTIONS_COMPARE, SZ_REGK_OPTIONS, SZ_REGV_OPTIONS_COMPARE, BST_UNCHECKED);

	// initial validation
	if (!::PathFileExists(m_strSource))
	{
		::GetCurrentDirectory(_MAX_PATH, m_strSource.GetBuffer(_MAX_PATH));
		m_strSource.ReleaseBuffer();
		m_strTarget = m_strSource + _T(".Update");
	}
}