Пример #1
0
void CuDlgMain::DisplayDifference(UINT nMask)
{
	CuDlgPageDifference* pDlgPageOtherHost = NULL;
	CuDlgPageDifference* pDlgPageVNode = NULL;
	TCITEM item;
	memset (&item, 0, sizeof (item));
	item.mask = TCIF_PARAM;
	m_cTab1.GetItem(0, &item);
	CuDlgPageDifference* pDlgPageConfig = (CuDlgPageDifference*)item.lParam;
	m_cTab1.GetItem(1, &item);
	CuDlgPageDifference* pDlgPageEnvSystem = (CuDlgPageDifference*)item.lParam;
	m_cTab1.GetItem(2, &item);
	CuDlgPageDifference* pDlgPageEnvUser = (CuDlgPageDifference*)item.lParam;
#if defined (_VIRTUAL_NODE_AVAILABLE)
	m_cTab1.GetItem(3, &item);
	pDlgPageVNode = (CuDlgPageDifference*)item.lParam;
#endif
	if (m_cTab1.GetItem(OTHER_HOST_INDEX, &item))
		pDlgPageOtherHost = (CuDlgPageDifference*)item.lParam;

	if (nMask & PARAM_GENERAL)
		m_compareParam.CleanIgnore();
	CString strValue1;
	CString strValue2;
	CaCdaDifference* pObj = NULL;
	POSITION pos = m_listDifference.GetHeadPosition();
	while (pos != NULL)
	{
		int nImage = -1;
		CaCdaDifference* pObj = m_listDifference.GetNext(pos);
		strValue1 = pObj->GetValue1();
		strValue2 = pObj->GetValue2();
		TCHAR& c = pObj->GetDifference();
		switch (c)
		{
		case _T('+'):
			nImage = 0;
			strValue2 = _T("n/a");
			break;
		case _T('-'):
			nImage = 1;
			strValue1 = _T("n/a");
			break;
		case _T('!'):
			nImage = 2;
			break;
		case _T('='):
			nImage = 3;
			break;
		default:
			break;
		}

		if (nMask & PARAM_GENERAL)
		{
			if (c != _T('=') && pObj->GetType() == CDA_GENERAL)
			{
				int nIdx = 0;
				int nCount = m_listMainParam.GetItemCount();
				nIdx = m_listMainParam.InsertItem (nCount, pObj->GetName(), nImage);
				m_listMainParam.SetItemText (nIdx, 1, strValue1);
				m_listMainParam.SetItemText (nIdx, 2, strValue2);
				if (PrecheckIgnore(pObj->GetName()))
				{
					m_listMainParam.SetCheck(nIdx, 3, TRUE);
					m_compareParam.AddIgnore(pObj->GetName());
				}
				m_listMainParam.SetItemData(nCount, (LPARAM)pObj);
			}
		}

		if (nMask & PARAM_CONFIGxENV)
		{
			switch (pObj->GetType())
			{
			case CDA_CONFIG:
				if (pDlgPageConfig)
				{
					if (!pObj->GetHost().IsEmpty())
					{
						if (pObj->GetHost().CompareNoCase(m_compareParam.GetHost1()) != 0 && 
							pObj->GetHost().CompareNoCase(m_compareParam.GetHost2()) != 0 )
							break;
					}
					CListCtrl* pListCtrl = pDlgPageConfig->GetListCtrl();
					int nIdx = 0;
					int nCount = pListCtrl->GetItemCount();
					nIdx = pListCtrl->InsertItem (nCount, pObj->GetName(), nImage);
					pListCtrl->SetItemText (nIdx, 1, strValue1);
					pListCtrl->SetItemText (nIdx, 2, strValue2);
				}
				break;
			case CDA_ENVSYSTEM:
				if (pDlgPageEnvSystem)
				{
					CListCtrl* pListCtrl = pDlgPageEnvSystem->GetListCtrl();
					int nIdx = 0;
					int nCount = pListCtrl->GetItemCount();
					nIdx = pListCtrl->InsertItem (nCount, pObj->GetName(), nImage);
					pListCtrl->SetItemText (nIdx, 1, strValue1);
					pListCtrl->SetItemText (nIdx, 2, strValue2);
				}
				break;
			case CDA_ENVUSER:
				if (pDlgPageEnvUser)
				{
					CListCtrl* pListCtrl = pDlgPageEnvUser->GetListCtrl();
					int nIdx = 0;
					int nCount = pListCtrl->GetItemCount();
					nIdx = pListCtrl->InsertItem (nCount, pObj->GetName(), nImage);
					pListCtrl->SetItemText (nIdx, 1, strValue1);
					pListCtrl->SetItemText (nIdx, 2, strValue2);
				}
				break;
			case CDA_VNODE:
#if defined (_VIRTUAL_NODE_AVAILABLE)
				if (pDlgPageVNode)
				{
					CListCtrl* pListCtrl = pDlgPageVNode->GetListCtrl();
					int nIdx = 0;
					int nCount = pListCtrl->GetItemCount();
					nIdx = pListCtrl->InsertItem (nCount, pObj->GetName(), nImage);
					pListCtrl->SetItemText (nIdx, 1, strValue1);
					pListCtrl->SetItemText (nIdx, 2, strValue2);
				}
#endif
				break;
			default:
				break;
			}
		}
	}

	//
	// Other configured host names:
	if (nMask && PARAM_OTHERHOST)
	{
		pos = m_listDifferenceOtherHost.GetHeadPosition();
		while (pos != NULL)
		{
			CaCdaDifference* pObj = m_listDifferenceOtherHost.GetNext(pos);
			strValue1 = pObj->GetValue1();
			strValue2 = pObj->GetValue2();
			TCHAR& c = pObj->GetDifference();
			int nImage = GetImageIndex(c);
			switch (c)
			{
			case _T('+'):
				strValue2 = _T("n/a");
				break;
			case _T('-'):
				strValue1 = _T("n/a");
				break;
			default:
				break;
			}

			switch (pObj->GetType())
			{
			case CDA_CONFIG:
				if (pDlgPageOtherHost)
				{
					CListCtrl* pListCtrl = pDlgPageOtherHost->GetListCtrl();
					int nIdx = 0;
					int nCount = pListCtrl->GetItemCount();
					nIdx = pListCtrl->InsertItem (nCount, pObj->GetName(), nImage);
					pListCtrl->SetItemText (nIdx, 1, strValue1);
					pListCtrl->SetItemText (nIdx, 2, strValue2);
				}
				break;
			default:
				break;
			}
		}
	}
}