public:\r
typedef std::map<CString,CShadowTree> TShadowTreeMap;\r
\r
- CShadowTree():m_hTree(NULL){}\r
+ CShadowTree():m_hTree(NULL),m_pParent(NULL){}\r
\r
- CShadowTree* GetNextSub(CString& nameLeft);\r
-\r
-\r
- CString m_csName;\r
- CString m_csRef;\r
+ CShadowTree* GetNextSub(CString& nameLeft, bool bCreateIfNotExist);\r
+\r
+ bool IsLeaf()const {return m_ShadowTree.empty();}\r
+ CString GetRefName()const\r
+ {\r
+ if(m_pParent==NULL)\r
+ return m_csRefName;\r
+ return m_pParent->GetRefName()+"/"+m_csRefName;\r
+ }\r
+ bool IsFrom(const wchar_t* from)const\r
+ {\r
+ return wcsncmp(GetRefName(),from,wcslen(from))==0;\r
+ }\r
+\r
+ CString m_csRefName;\r
+ CString m_csRefHash;\r
+ CString m_csDate;\r
+ CString m_csDate_Iso8601;\r
+ CString m_csAuthor;\r
+ CString m_csSubject;\r
\r
HTREEITEM m_hTree;\r
\r
TShadowTreeMap m_ShadowTree;\r
CShadowTree* m_pParent;\r
};\r
+typedef std::vector<CShadowTree*> VectorPShadowTree;\r
\r
class CBrowseRefsDlg : public CResizableStandAloneDialog\r
{\r
DECLARE_DYNAMIC(CBrowseRefsDlg)\r
\r
public:\r
- CBrowseRefsDlg(CWnd* pParent = NULL); // standard constructor\r
+ CBrowseRefsDlg(CString cmdPath, CWnd* pParent = NULL); // standard constructor\r
virtual ~CBrowseRefsDlg();\r
\r
+ enum eCmd\r
+ {\r
+ eCmd_ViewLog = WM_APP,\r
+ eCmd_AddRemote,\r
+ eCmd_ManageRemotes,\r
+ eCmd_CreateBranch,\r
+ eCmd_CreateTag,\r
+ eCmd_DeleteBranch,\r
+ eCmd_DeleteTag\r
+ };\r
+\r
+ enum eCol\r
+ {\r
+ eCol_Name,\r
+ eCol_Date,\r
+ eCol_Msg,\r
+ eCol_Hash\r
+ };\r
+\r
// Dialog Data\r
enum { IDD = IDD_DIALOG_BROWSE_REFS };\r
\r
afx_msg void OnBnClickedOk();\r
virtual BOOL OnInitDialog();\r
\r
- void Refresh();\r
+ void Refresh(bool bSelectCurHead=false);\r
+\r
+ CShadowTree& GetTreeNode(CString refName, CShadowTree* pTreePos=NULL, bool bCreateIfNotExist=false);\r
+\r
+ void FillListCtrlForTreeNode(HTREEITEM treeNode);\r
+\r
+ void FillListCtrlForShadowTree(CShadowTree* pTree, CString refNamePrefix, bool isFirstLevel);\r
\r
- CShadowTree& GetTreeNode(CString refName, CShadowTree* pTreePos=NULL);\r
+ bool SelectRef(CString refName);\r
\r
- MAP_HASH_NAME m_RefMap;\r
+ bool ConfirmDeleteRef(CString completeRefName);\r
+ bool DoDeleteRef(CString completeRefName, bool bForce);\r
+\r
+private:\r
+ CString m_cmdPath;\r
\r
CShadowTree m_TreeRoot;\r
CTreeCtrl m_RefTreeCtrl;\r
+ CListCtrl m_ListRefLeafs;\r
+ afx_msg void OnTvnSelchangedTreeRef(NMHDR *pNMHDR, LRESULT *pResult);\r
+public:\r
+\r
+ afx_msg void OnContextMenu(CWnd* pWndFrom, CPoint point);\r
+\r
+ void OnContextMenu_ListRefLeafs(CPoint point);\r
+ void OnContextMenu_RefTreeCtrl(CPoint point);\r
+\r
+ void ShowContextMenu(CPoint point, HTREEITEM hTreePos, VectorPShadowTree& selectedLeafs);\r
+ virtual BOOL PreTranslateMessage(MSG* pMsg);\r
+ afx_msg void OnLvnColumnclickListRefLeafs(NMHDR *pNMHDR, LRESULT *pResult);\r
};\r