void CTDLFindTaskExpressionListCtrl::PrepareControl(CWnd& ctrl, int nRow, int nCol)
{
	UNREFERENCED_PARAMETER(ctrl);

	if (!GetRuleCount())
		return;

	SEARCHPARAM& sp = m_aSearchParams[nRow];

	switch (nCol)
	{
	case ATTRIB:
		{
			ASSERT (&ctrl == &m_cbAttributes);
	
			m_cbAttributes.SelectAttribute(sp);
			CDialogHelper::RefreshMaxDropWidth(m_cbAttributes);
		}
		break;

	case OPERATOR:
		{
			ASSERT (&ctrl == &m_cbOperators);

			m_cbOperators.ResetContent();
			
			FIND_ATTRIBTYPE nType = sp.GetAttribType();
			
			switch (nType)
			{
			case FT_STRING:
				AddOperatorToCombo(FOP_SET);
				AddOperatorToCombo(FOP_NOT_SET);
				AddOperatorToCombo(FOP_EQUALS);
				AddOperatorToCombo(FOP_NOT_EQUALS);
				AddOperatorToCombo(FOP_INCLUDES);
				AddOperatorToCombo(FOP_NOT_INCLUDES);
				break;

			case FT_INTEGER:
			case FT_DOUBLE:
			case FT_TIME:
				AddOperatorToCombo(FOP_SET);
				AddOperatorToCombo(FOP_NOT_SET);
				AddOperatorToCombo(FOP_EQUALS);
				AddOperatorToCombo(FOP_NOT_EQUALS);
				AddOperatorToCombo(FOP_GREATER);
				AddOperatorToCombo(FOP_GREATER_OR_EQUAL);
				AddOperatorToCombo(FOP_LESS);
				AddOperatorToCombo(FOP_LESS_OR_EQUAL);
				break;

			case FT_DATE:
				AddOperatorToCombo(FOP_SET);
				AddOperatorToCombo(FOP_NOT_SET);
				// fall thru
			case FT_DATE_REL:
				AddOperatorToCombo(FOP_EQUALS);
				AddOperatorToCombo(FOP_NOT_EQUALS);
				AddOperatorToCombo(FOP_AFTER);
				AddOperatorToCombo(FOP_ON_OR_AFTER);
				AddOperatorToCombo(FOP_BEFORE);
				AddOperatorToCombo(FOP_ON_OR_BEFORE);
				break;

			case FT_BOOL:
				AddOperatorToCombo(FOP_SET);
				AddOperatorToCombo(FOP_NOT_SET);
				break;
			}
	
			CDialogHelper::SelectItemByData(m_cbOperators, (DWORD)sp.GetOperator());
		}
		break;

	case ANDOR:
		{
			ASSERT (&ctrl == &m_cbAndOr);

			if (sp.GetAnd())
				m_cbAndOr.SelectString(-1, CEnString(IDS_FP_AND));
			else
				m_cbAndOr.SelectString(-1, CEnString(IDS_FP_OR));
		}
		break;

	case VALUE:
		if (&ctrl == &m_dtcDate)
		{
			// if the rule does not yet have a date then set it now to
			// the current date because that's whats the date ctrl will default to
			if (!CDateHelper::IsDateSet(sp.ValueAsDate()))
			{
				sp.SetValue(COleDateTime::GetCurrentTime());
				SetItemText(nRow, nCol, sp.ValueAsDate().Format(VAR_DATEVALUEONLY));
			}
			else
			{
				m_dtcDate.SetTime(sp.ValueAsDouble());
			}
		}
		else if (&ctrl == &m_eTime)
		{
			m_eTime.SetTime(sp.ValueAsDouble(), (TCHAR)sp.GetFlags());
		}
		else if (&ctrl == &m_cbListValues)
		{
			m_cbListValues.ResetContent();

			TDCCUSTOMATTRIBUTEDEFINITION attribDef;

			if (CTDCCustomAttributeHelper::GetAttributeDef(sp.GetAttribute(), m_aAttribDefs, attribDef))
			{
				if (attribDef.IsList())
				{
					int nItem = attribDef.aDefaultListData.GetSize();

					while (nItem--)
						m_cbListValues.AddString(attribDef.aDefaultListData[nItem]);
					
					nItem = attribDef.aAutoListData.GetSize();

					while (nItem--)
						m_cbListValues.AddString(attribDef.aAutoListData[nItem]);
				}
			}
			else
			{
				switch (sp.GetAttribute())
				{
				case TDCA_CATEGORY: CDialogHelper::SetComboBoxItems(m_cbListValues, m_tldListContents.aCategory); break;
				case TDCA_ALLOCTO:	CDialogHelper::SetComboBoxItems(m_cbListValues, m_tldListContents.aAllocTo); break;
				case TDCA_ALLOCBY:	CDialogHelper::SetComboBoxItems(m_cbListValues, m_tldListContents.aAllocBy); break;
				case TDCA_VERSION:	CDialogHelper::SetComboBoxItems(m_cbListValues, m_tldListContents.aVersion); break;
				case TDCA_TAGS:		CDialogHelper::SetComboBoxItems(m_cbListValues, m_tldListContents.aTags); break;
				case TDCA_STATUS:	CDialogHelper::SetComboBoxItems(m_cbListValues, m_tldListContents.aStatus); break;
				}
			}

			m_cbListValues.SelectString(0, sp.ValueAsString());
		}
		else if (&ctrl == &m_cbPriority)
		{
			m_cbPriority.SetSelectedPriority(sp.ValueAsInteger());
		}
		else if (&ctrl == &m_cbRisk)
		{
			m_cbRisk.SetSelectedRisk(sp.ValueAsInteger());
		}
		break;
	}
}
void CTDLFindTaskExpressionListCtrl::PrepareControl(CWnd& ctrl, int nRow, int nCol)
{
	UNREFERENCED_PARAMETER(ctrl);

	if (!GetRuleCount())
		return;

	SEARCHPARAM& sp = m_aSearchParams[nRow];

	switch (nCol)
	{
	case ATTRIB:
		{
			ASSERT (&ctrl == &m_cbAttributes);
	
			m_cbAttributes.SelectAttribute(sp);
			CDialogHelper::RefreshMaxDropWidth(m_cbAttributes);
		}
		break;

	case OPERATOR:
		{
			ASSERT (&ctrl == &m_cbOperators);

			m_cbOperators.ResetContent();
			
			FIND_ATTRIBTYPE nType = sp.GetAttribType();
			
			switch (nType)
			{
			case FT_STRING:
				AddOperatorToCombo(FO_SET);
				AddOperatorToCombo(FO_NOT_SET);
				AddOperatorToCombo(FO_EQUALS);
				AddOperatorToCombo(FO_NOT_EQUALS);
				AddOperatorToCombo(FO_INCLUDES);
				AddOperatorToCombo(FO_NOT_INCLUDES);
				break;

			case FT_INTEGER:
			case FT_DOUBLE:
			case FT_TIME:
				AddOperatorToCombo(FO_SET);
				AddOperatorToCombo(FO_NOT_SET);
				AddOperatorToCombo(FO_EQUALS);
				AddOperatorToCombo(FO_NOT_EQUALS);
				AddOperatorToCombo(FO_GREATER);
				AddOperatorToCombo(FO_GREATER_OR_EQUAL);
				AddOperatorToCombo(FO_LESS);
				AddOperatorToCombo(FO_LESS_OR_EQUAL);
				break;

			case FT_DATE:
			case FT_DATE_REL:
				AddOperatorToCombo(FO_SET);
				AddOperatorToCombo(FO_NOT_SET);
				AddOperatorToCombo(FO_EQUALS);
				AddOperatorToCombo(FO_NOT_EQUALS);
				AddOperatorToCombo(FO_AFTER);
				AddOperatorToCombo(FO_ON_OR_AFTER);
				AddOperatorToCombo(FO_BEFORE);
				AddOperatorToCombo(FO_ON_OR_BEFORE);
				break;

			case FT_BOOL:
				AddOperatorToCombo(FO_SET);
				AddOperatorToCombo(FO_NOT_SET);
				break;
			}
	
			CDialogHelper::SelectItemByData(m_cbOperators, (DWORD)sp.GetOperator());
		}
		break;

	case ANDOR:
		{
			ASSERT (&ctrl == &m_cbAndOr);

			if (sp.GetAnd())
				m_cbAndOr.SelectString(-1, CEnString(IDS_FP_AND));
			else
				m_cbAndOr.SelectString(-1, CEnString(IDS_FP_OR));
		}
		break;

	case VALUE:
		switch (sp.GetAttribType())
		{
		case FT_DATE:
			ASSERT (&ctrl == &m_dtDate);

			// if the rule does not yet have a date then set it now to
			// the current date because that's whats the date ctrl will default to
			if (sp.ValueAsDate().m_dt <= 0)
			{
				sp.SetValue(COleDateTime::GetCurrentTime());
				SetItemText(nRow, nCol, sp.ValueAsDate().Format(VAR_DATEVALUEONLY));
			}
			else
				m_dtDate.SetTime(sp.ValueAsDouble());
			break;

		case FT_TIME:
			ASSERT (&ctrl == &m_eTime);
			m_eTime.SetTime(sp.ValueAsDouble(), (TCHAR)sp.GetFlags());
			break;
		}
		break;

	}
}