void Actions::_buildListOfActions()
{
	m_actions.push_back(new WindowsLPIAction(_getNewOSVersion(), _getNewRegistry(), _getNewWin32I18N(), _getNewRunner()));
	m_actions.push_back(new MSOfficeLPIAction( _getNewRegistry(), _getNewRunner()));
	m_actions.push_back(new WindowsLiveAction( _getNewRegistry(), _getNewRunner()));
	m_actions.push_back(new IELPIAction(_getNewOSVersion(), _getNewRegistry(), _getNewRunner()));
	m_actions.push_back(new IEAcceptLanguagesAction( _getNewRegistry()));
	m_actions.push_back(new ConfigureLocaleAction());
	m_actions.push_back(new ConfigureDefaultLanguageAction(_getNewOSVersion(), _getNewRegistry(), _getNewRunner()));
	m_actions.push_back(new ChromeAction( _getNewRegistry()));
	m_actions.push_back(new FirefoxAction( _getNewRegistry()));
	m_actions.push_back(new OpenOfficeAction( _getNewRegistry(), _getNewRunner()));
	m_actions.push_back(new AdobeReaderAction( _getNewRegistry(), _getNewRunner()));
	
	_checkPrerequirements();
}
void IELPIAction::CheckPrerequirements(Action * action)
{
	Prerequirements pre;
	ActionStatus status;

	if (GetStatus() == CannotBeApplied)
		status = Selected;
	else
		status = GetStatus();

	szCannotBeApplied[0] = NULL;
	pre = _checkPrerequirements();

	if (pre != PrerequirementsOk)	
	{
		switch (pre)
		{
			case UnknownIEVersion:
				_getStringFromResourceIDName(IDS_IELPIACTION_UNKNOWNIE, szCannotBeApplied);
				break;
			default:
				break;
		}
	}
	else if (action != NULL)
	{
		switch (_checkPrerequirementsDependand(action))
		{
			case AppliedInWinLPI:
				_getStringFromResourceIDName(IDS_IELPIACTION_APPLIEDINWINLPI, szCannotBeApplied);
				break;
			case NeedsWinLPI:
				_getStringFromResourceIDName(IDS_IELPIACTION_IENEEDWINLPI, szCannotBeApplied);
				break;
			case NoLangPackAvailable:
				_getStringFromResourceIDName(IDS_IELPIACTION_NOPACKAGE, szCannotBeApplied);
				break;
			default:
				break;
		}
	}

	g_log.Log(L"IELPIAction::CheckPrerequirements: %s", wcslen(szCannotBeApplied) > 0 ? szCannotBeApplied: L"Ok");

	if (wcslen(szCannotBeApplied) > 0)
	{
		status = CannotBeApplied;
	}
	else
	{
		if (_getDownloadID() != NULL)
		{
			if (_isLangPackInstalled())
			{
				status = AlreadyApplied;
			}
		}
		else
		{
			status = CannotBeApplied;
		}
	}
	SetStatus(status);
}