void GitCommitListDlg::DoLoadCommits(const wxString& filter) { m_dvListCtrlCommitList->DeleteAllItems(); m_stcCommitMessage->ClearAll(); m_fileListBox->Clear(); // hash @ subject @ author-name @ date wxArrayString gitList = wxStringTokenize(m_commitList, wxT("\n"), wxTOKEN_STRTOK); wxArrayString filters = wxStringTokenize(filter, " "); for(unsigned i = 0; i < gitList.GetCount(); ++i) { wxArrayString gitCommit = ::wxStringTokenize(gitList[i], "@"); if(gitCommit.GetCount() >= 4) { if(IsMatchFilter(filters, gitCommit)) { wxVector<wxVariant> cols; cols.push_back(gitCommit.Item(0)); cols.push_back(gitCommit.Item(1)); cols.push_back(gitCommit.Item(2)); cols.push_back(gitCommit.Item(3)); m_dvListCtrlCommitList->AppendItem(cols); } } } }
void CBrowseRefsDlg::FillListCtrlForShadowTree(CShadowTree* pTree, CString refNamePrefix, bool isFirstLevel) { if(pTree->IsLeaf()) { CString filter; m_ctrlFilter.GetWindowText(filter); filter.MakeLower(); bool positive = filter[0] != '!'; if (!positive) filter = filter.Mid(1); CString ref = refNamePrefix + pTree->m_csRefName; if (!(pTree->m_csRefName.IsEmpty() || pTree->m_csRefName == "refs" && pTree->m_pParent == NULL) && IsMatchFilter(pTree, ref, filter, positive)) { int indexItem = m_ListRefLeafs.InsertItem(m_ListRefLeafs.GetItemCount(), L""); m_ListRefLeafs.SetItemData(indexItem,(DWORD_PTR)pTree); m_ListRefLeafs.SetItemText(indexItem,eCol_Name, ref); m_ListRefLeafs.SetItemText(indexItem, eCol_Upstream, pTree->m_csUpstream); m_ListRefLeafs.SetItemText(indexItem, eCol_Date, pTree->m_csDate != 0 ? CLoglistUtils::FormatDateAndTime(pTree->m_csDate, m_DateFormat, true, m_bRelativeTimes) : _T("")); m_ListRefLeafs.SetItemText(indexItem,eCol_Msg, pTree->m_csSubject); m_ListRefLeafs.SetItemText(indexItem,eCol_LastAuthor, pTree->m_csAuthor); m_ListRefLeafs.SetItemText(indexItem,eCol_Hash, pTree->m_csRefHash); int pos = 0; m_ListRefLeafs.SetItemText(indexItem,eCol_Description, pTree->m_csDescription.Tokenize(_T("\n"), pos)); } } else { CString csThisName; if (!isFirstLevel && !m_bIncludeNestedRefs) return; else if (!isFirstLevel) csThisName=refNamePrefix+pTree->m_csRefName+L"/"; else m_pListCtrlRoot = pTree; for(CShadowTree::TShadowTreeMap::iterator itSubTree=pTree->m_ShadowTree.begin(); itSubTree!=pTree->m_ShadowTree.end(); ++itSubTree) { FillListCtrlForShadowTree(&itSubTree->second,csThisName,false); } } if (isFirstLevel) { CRefLeafListCompareFunc compareFunc(&m_ListRefLeafs, m_currSortCol, m_currSortDesc); m_ListRefLeafs.SortItemsEx(&CRefLeafListCompareFunc::StaticCompare, (DWORD_PTR)&compareFunc); SetSortArrow(&m_ListRefLeafs,m_currSortCol,!m_currSortDesc); } }