void CRepositoryBrowser::Refresh() { BeginWaitCursor(); if (m_nExternalOvl >= 0) SYS_IMAGE_LIST().SetOverlayImage(m_nExternalOvl, OVERLAY_EXTERNAL); m_RepoTree.DeleteAllItems(); m_RepoList.DeleteAllItems(); m_TreeRoot.m_ShadowTree.clear(); m_TreeRoot.m_sName = ""; m_TreeRoot.m_bFolder = true; TVINSERTSTRUCT tvinsert = {0}; tvinsert.hParent = TVI_ROOT; tvinsert.hInsertAfter = TVI_ROOT; tvinsert.itemex.mask = TVIF_DI_SETITEM | TVIF_PARAM | TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_STATE; tvinsert.itemex.pszText = L"/"; tvinsert.itemex.lParam = (LPARAM)&m_TreeRoot; tvinsert.itemex.iImage = m_nIconFolder; tvinsert.itemex.iSelectedImage = m_nOpenIconFolder; m_TreeRoot.m_hTree= m_RepoTree.InsertItem(&tvinsert); ReadTree(&m_TreeRoot); m_RepoTree.Expand(m_TreeRoot.m_hTree, TVE_EXPAND); FillListCtrlForShadowTree(&m_TreeRoot); m_RepoTree.SelectItem(m_TreeRoot.m_hTree); EndWaitCursor(); }
void CRepositoryBrowser::OnOK() { if (GetFocus() == &m_RepoList && (GetKeyState(VK_MENU) & 0x8000) == 0) { // list control has focus: 'enter' the folder if (m_RepoList.GetSelectedCount() != 1) return; POSITION pos = m_RepoList.GetFirstSelectedItemPosition(); if (pos) { CShadowFilesTree *item = (CShadowFilesTree *)m_RepoList.GetItemData(m_RepoList.GetNextSelectedItem(pos)); if (item->m_bFolder) { FillListCtrlForShadowTree(item); m_RepoTree.SelectItem(item->m_hTree); } else OpenFile(item->GetFullName(), OPEN, item->m_bSubmodule, item->m_hash); } return; } SaveDividerPosition(); CResizableStandAloneDialog::OnOK(); }
void CBrowseRefsDlg::FillListCtrlForTreeNode(HTREEITEM treeNode) { m_ListRefLeafs.DeleteAllItems(); CShadowTree* pTree=(CShadowTree*)(m_RefTreeCtrl.GetItemData(treeNode)); if(pTree==NULL) { ASSERT(FALSE); return; } FillListCtrlForShadowTree(pTree,L"",true); }
void CBrowseRefsDlg::FillListCtrlForTreeNode(HTREEITEM treeNode) { m_ListRefLeafs.DeleteAllItems(); CShadowTree* pTree=(CShadowTree*)(m_RefTreeCtrl.GetItemData(treeNode)); if(pTree==NULL) { ASSERT(FALSE); return; } FillListCtrlForShadowTree(pTree,L"",true); m_ColumnManager.SetVisible(eCol_Upstream, pTree->IsFrom(L"refs/heads")); }
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); } }
void CRepositoryBrowser::FillListCtrlForTreeNode(HTREEITEM treeNode) { m_RepoList.DeleteAllItems(); CShadowFilesTree* pTree = (CShadowFilesTree*)(m_RepoTree.GetItemData(treeNode)); if (pTree == NULL) { ASSERT(FALSE); return; } CString url = _T("/") + pTree->GetFullName(); GetDlgItem(IDC_REPOBROWSER_URL)->SetWindowText(url); FillListCtrlForShadowTree(pTree); }
void CRepositoryBrowser::OnNMDblclk_RepoList(NMHDR *pNMHDR, LRESULT *pResult) { *pResult = 0; LPNMITEMACTIVATE pNmItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR); if (pNmItemActivate->iItem < 0) return; CShadowFilesTree * pItem = (CShadowFilesTree *)m_RepoList.GetItemData(pNmItemActivate->iItem); if (pItem == NULL) return; if (!pItem->m_bFolder) { OpenFile(pItem->GetFullName(), OPEN, pItem->m_bSubmodule, pItem->m_hash); return; } else { FillListCtrlForShadowTree(pItem); m_RepoTree.SelectItem(pItem->m_hTree); } }