int CTDLFindResultsListCtrl::AddResult(const SEARCHRESULT& result, LPCTSTR szTask, LPCTSTR szPath, const CFilteredToDoCtrl* pTDC) { int nPos = GetItemCount(); // add result int nIndex = InsertItem(nPos, szTask); SetItemText(nIndex, 1, Misc::FormatArray(result.aMatched)); SetItemText(nIndex, 2, szPath); if (m_nCurGroupID != -1) SetItemGroupId(nIndex, m_nCurGroupID); UpdateWindow(); // map identifying data FTDRESULT* pRes = new FTDRESULT(result, pTDC); SetItemData(nIndex, (DWORD)pRes); return nIndex; }
BOOL CFeedIcoItemListCtrl::GroupAllFeedsByType(int nType) { if (!IsCommonControlsEnabled()) return FALSE; SetRedraw(FALSE); RemoveAllGroups(); RemoveAllGroupData(); EnableGroupView( GetItemCount() > 0 ); if (IsGroupViewEnabled()) { // Loop through all rows and find possible groups for(int nItem = 0; nItem < GetItemCount(); nItem++ ) { CString strCatalogName = GetResString( IDS_UNKNOWN ); CRssFeed* pFeed = (CRssFeed*)GetItemData(nItem); if (pFeed == NULL) continue; if ( pFeed->m_uCatalogId != FeedCatalog::INVALID_CATALOG_ID ) { FeedCatalog & catalog = CFeedCatalogs::GetInstance()[pFeed->m_uCatalogId]; ASSERT(catalog.m_uId == pFeed->m_uCatalogId); ASSERT(catalog.IsLeaf()); FeedCatalog * catalogParent; if (catalog.m_pParent != NULL) { catalogParent = catalog.m_pParent; strCatalogName = catalogParent->m_strName; } } int nGroupId = m_mapGroups.FindKey(strCatalogName); if (nGroupId == -1) { CSimpleArray<int> nItems; m_mapGroups.Add(strCatalogName, nItems); nGroupId = m_mapGroups.FindKey(strCatalogName); } //必须添加不重复数据 if (m_mapGroups.GetValueAt(nGroupId).Find(nItem) == -1) { m_mapGroups.GetValueAt(nGroupId).Add(nItem); } } // Look through all groups and assign rows to group for(int nGroupId = 0; nGroupId < m_mapGroups.GetSize(); nGroupId++) { const CSimpleArray<int>& groupRows = m_mapGroups.GetValueAt(nGroupId); DWORD dwState = LVGS_NORMAL; #ifdef LVGS_COLLAPSIBLE if (IsGroupStateEnabled()) dwState = LVGS_COLLAPSIBLE; #endif VERIFY( InsertTypeGroup(nGroupId, nGroupId, m_mapGroups.GetKeyAt(nGroupId), dwState) != -1); for(int groupRow = 0; groupRow < groupRows.GetSize(); ++groupRow) { VERIFY( SetItemGroupId(groupRows[groupRow], nGroupId) ); } } } SetRedraw(TRUE); Invalidate(TRUE); return FALSE; }
BOOL CFeedIcoItemListCtrl::GroupFeedByType(int nIndex, int nType) { if (!IsCommonControlsEnabled()) return FALSE; SetRedraw(FALSE); EnableGroupView(TRUE); if (IsGroupViewEnabled()) { CString cellText = GetResString( IDS_UNKNOWN ); bool bNew = false;//Is new Group? CRssFeed* pFeed = (CRssFeed*)GetItemData(nIndex); if (pFeed == NULL) return FALSE; if ( pFeed->m_uCatalogId != FeedCatalog::INVALID_CATALOG_ID ) { FeedCatalog & catalog = CFeedCatalogs::GetInstance()[pFeed->m_uCatalogId]; ASSERT(catalog.m_uId == pFeed->m_uCatalogId); ASSERT(catalog.IsLeaf()); FeedCatalog * catalogParent; if (catalog.m_pParent != NULL) { catalogParent = catalog.m_pParent; cellText = catalogParent->m_strName; } } int nGroupId = m_mapGroups.FindKey(cellText); if (nGroupId == -1) { CSimpleArray<int> nItems; m_mapGroups.Add(cellText, nItems); nGroupId = m_mapGroups.FindKey(cellText); bNew = true; } //必须添加不重复数据 if (m_mapGroups.GetValueAt(nGroupId).Find(nIndex) == -1) { m_mapGroups.GetValueAt(nGroupId).Add(nIndex); } if (bNew)//new Group { DWORD dwState = LVGS_NORMAL; #ifdef LVGS_COLLAPSIBLE if (IsGroupStateEnabled()) dwState = LVGS_COLLAPSIBLE; #endif //InsertTypeGroup(nGroupId, nGroupId, cellText, dwState); VERIFY(InsertTypeGroup(nGroupId, nGroupId, cellText, dwState) != -1); } VERIFY( SetItemGroupId(nIndex, nGroupId) ); } SetRedraw(TRUE); Invalidate(TRUE); return FALSE; }