void CTDLFindTaskExpressionListCtrl::BuildListCtrl() { DeleteAllItems(); for (int nParam = 0; nParam < GetRuleCount(); nParam++) { const SEARCHPARAM& sp = m_aSearchParams[nParam]; // attrib CString sAttrib = m_cbAttributes.GetAttributeName(sp); int nItem = InsertItem(nParam, sAttrib); // operator CString sOp = GetOpName(sp.GetOperator()); SetItemText(nItem, OPERATOR, sOp); // value UpdateValueColumnText(nItem); // and/or (but not for last row) if (nParam < GetRuleCount() - 1) { CEnString sAndOr(sp.GetAnd() ? IDS_FP_AND : IDS_FP_OR); SetItemText(nItem, ANDOR, sAndOr); } } ValidateListData(); SetCurSel(0); }
void CTDLFindTaskExpressionListCtrl::RefreshAndOrColumnText() { for (int nParam = 0; nParam < GetRuleCount(); nParam++) { const SEARCHPARAM& sp = m_aSearchParams[nParam]; // and/or (but not for last row) if (nParam < GetRuleCount() - 1) { CEnString sAndOr(sp.GetAnd() ? IDS_FP_AND : IDS_FP_OR); SetItemText(nParam, ANDOR, sAndOr); } else { SetItemText(nParam, ANDOR, _T("")); } } }
BOOL CTDLFindTaskExpressionListCtrl::AddRule() { SEARCHPARAM sp(TDCA_TASKNAMEORCOMMENTS, FO_INCLUDES); int nRow = InsertRule(GetRuleCount(), sp); // make sure the 'and/or' text of the preceding rule is set if (nRow > 0) { SEARCHPARAM& spPrev = m_aSearchParams[nRow - 1]; CEnString sAndOr(spPrev.GetAnd() ? IDS_FP_AND : IDS_FP_OR); SetItemText(nRow - 1, ANDOR, sAndOr); } SetCurSel(nRow, ATTRIB); EnsureVisible(nRow, FALSE); return TRUE; }
int CTDLFindTaskExpressionListCtrl::InsertRule(int nRow, const SEARCHPARAM& sp) { m_aSearchParams.InsertAt(nRow, sp); CString sItem = m_cbAttributes.GetAttributeName(sp); int nNew = InsertItem(nRow, sItem); SetItemText(nNew, OPERATOR, GetOpName(sp.GetOperator())); UpdateValueColumnText(nRow); // omit and/or for last rule if (nRow < GetRuleCount() - 1) { CEnString sAndOr(sp.GetAnd() ? IDS_FP_AND : IDS_FP_OR); SetItemText(nNew, ANDOR, sAndOr); } return nNew; }