//------------------------------------------------------------------------ //! Create a group for each unique values within a column //! //! @param nCol The index of the column //! @return Succeeded in creating the group //------------------------------------------------------------------------ BOOL CGridListCtrlGroups::GroupByColumn(int nCol) { CWaitCursor waitCursor; SetSortArrow(-1, false); SetRedraw(FALSE); RemoveAllGroups(); EnableGroupView( GetItemCount() > 0 ); if (IsGroupViewEnabled()) { CSimpleMap<CString,CSimpleArray<int> > groups; // Loop through all rows and find possible groups for(int nRow=0; nRow<GetItemCount(); ++nRow) { CString cellText = GetItemText(nRow, nCol); int nGroupId = groups.FindKey(cellText); if (nGroupId==-1) { CSimpleArray<int> rows; groups.Add(cellText, rows); nGroupId = groups.FindKey(cellText); } groups.GetValueAt(nGroupId).Add(nRow); } // Look through all groups and assign rows to group for(int nGroupId = 0; nGroupId < groups.GetSize(); ++nGroupId) { const CSimpleArray<int>& groupRows = groups.GetValueAt(nGroupId); DWORD dwState = LVGS_NORMAL; #ifdef LVGS_COLLAPSIBLE if (IsGroupStateEnabled()) dwState = LVGS_COLLAPSIBLE; #endif VERIFY( InsertGroupHeader(nGroupId, nGroupId, groups.GetKeyAt(nGroupId), dwState) != -1); for(int groupRow = 0; groupRow < groupRows.GetSize(); ++groupRow) { VERIFY( SetRowGroupId(groupRows[groupRow], nGroupId) ); } } SetRedraw(TRUE); Invalidate(FALSE); return TRUE; } SetRedraw(TRUE); Invalidate(FALSE); return FALSE; }
void CDSMMuxerFilter::MuxStreamInfo(IBitStream* pBS, CBaseMuxerInputPin* pPin) { int len = 1; CSimpleMap<CStringA, CStringA> si; for(int i = 0; i < pPin->GetSize(); i++) { CStringA key = CStringA(CString(pPin->GetKeyAt(i))), value = UTF16To8(pPin->GetValueAt(i)); if(key.GetLength() != 4) continue; si.Add(key, value); len += 4 + value.GetLength() + 1; } if(len > 1) { MuxPacketHeader(pBS, DSMP_STREAMINFO, len); pBS->BitWrite(pPin->GetID(), 8); for(int i = 0; i < si.GetSize(); i++) { CStringA key = si.GetKeyAt(i), value = si.GetValueAt(i); pBS->ByteWrite((LPCSTR)key, 4); pBS->ByteWrite((LPCSTR)value, value.GetLength()+1); } } }
void SetEncConverter(const CStringW& strConverterName, CSilEncConverter* pEC) { int nIndex; if ((nIndex = m_mapECs.FindKey(strConverterName)) != -1) { CSilEncConverter* p = m_mapECs.GetValueAt(nIndex); m_mapECs.RemoveAt(nIndex); delete p; } m_mapECs.Add(strConverterName, pEC); }
void CPluginPropertyPage::_GetData() { CSimpleMap<int , CSimpleArray<CString>*> map; for (int nType = PLT_TOOLBAR/*1*/; nType <= PLUGIN_TYPECNT; nType++) { CSimpleArray<CString>*pAry = new CSimpleArray<CString>; map.Add( nType, pAry ); } int nIndex; for (nIndex = 0; nIndex < m_listview.GetItemCount(); nIndex++) { CString strFile; m_listview.GetItemText( nIndex, 0, strFile ); if ( FALSE == m_listview.GetCheckState( nIndex ) ) continue; int nType = int( m_listview.GetItemData( nIndex ) ); CSimpleArray<CString>* pAry = NULL; pAry = map.Lookup( nType ); if (NULL == pAry) continue; pAry->Add( strFile ); } for (nIndex = 0; nIndex < map.GetSize(); nIndex++) { CSimpleArray<CString>*pAry = NULL; pAry = map.GetValueAt( nIndex ); int nType = map.GetKeyAt( nIndex ); CString strKey; strKey.Format( _T("Plugin%02d"), nType ); CIniFileO pr( g_szIniFileName, strKey ); pr.SetValue( pAry->GetSize(), _T("Count") ); for (int nNo = 0; nNo < pAry->GetSize(); nNo++) { strKey.Format(_T("%02d"), nNo); pr.SetString( (*pAry)[nNo], strKey ); } delete pAry; } }
CSilEncConverter* GetEncConverter(const CStringW& strConverterName) { CSilEncConverter* pEC = 0; int nIndex; if ((nIndex = m_mapECs.FindKey(strConverterName)) != -1) { pEC = m_mapECs.GetValueAt(nIndex); } else { pEC = new CSilEncConverter(); SetEncConverter(strConverterName, pEC); } ATLASSERT(pEC != 0); return pEC; }
//------------------------------------------------------------------------ //! Fills the combobox with the items of the fixed item-list //! //! @param comboList List of CComboBox items //! @param nCurSel Index in the list to choose as currently selected (-1 = No selection) //------------------------------------------------------------------------ void CGridColumnTraitCombo::LoadList(const CSimpleMap<int,CString>& comboList, int nCurSel) { VERIFY(m_pComboBox!=NULL); m_pComboBox->SetRedraw(FALSE); m_pComboBox->InitStorage(comboList.GetSize(), 32); for(int i = 0; i < comboList.GetSize(); ++i) { int nIndex = m_pComboBox->AddString(comboList.GetValueAt(i)); m_pComboBox->SetItemData(nIndex, comboList.GetKeyAt(i)); } m_pComboBox->SetRedraw(TRUE); m_pComboBox->Invalidate(); m_pComboBox->UpdateWindow(); if (nCurSel!=-1) m_pComboBox->SetCurSel(nCurSel); }
void CDSMMuxerFilter::MuxFileInfo(IBitStream* pBS) { int len = 1; CSimpleMap<CStringA, CStringA> si; for (int i = 0; i < GetSize(); i++) { CStringA key = CStringA(CString(GetKeyAt(i))), value = UTF16To8(GetValueAt(i)); if (key.GetLength() != 4) { continue; } si.Add(key, value); len += 4 + value.GetLength() + 1; } MuxPacketHeader(pBS, DSMP_FILEINFO, len); pBS->BitWrite(DSMF_VERSION, 8); for (int i = 0; i < si.GetSize(); i++) { CStringA key = si.GetKeyAt(i), value = si.GetValueAt(i); pBS->ByteWrite((LPCSTR)key, 4); pBS->ByteWrite((LPCSTR)value, value.GetLength() + 1); } }