Initial version of BrowseRefsDlg
[TortoiseGit.git] / src / TortoiseProc / RefLogDlg.cpp
blobd3bb480e219ad98cf9c05d7b97033a4c528ec524
1 // RefLogDlg.cpp : implementation file
2 //
4 #include "stdafx.h"
5 #include "resource.h"
6 #include "RefLogDlg.h"
7 #include "git.h"
9 // CRefLogDlg dialog
11 IMPLEMENT_DYNAMIC(CRefLogDlg, CResizableStandAloneDialog)
13 CRefLogDlg::CRefLogDlg(CWnd* pParent /*=NULL*/)
14 : CResizableStandAloneDialog(CRefLogDlg::IDD, pParent)
19 CRefLogDlg::~CRefLogDlg()
23 void CRefLogDlg::DoDataExchange(CDataExchange* pDX)
25 CDialog::DoDataExchange(pDX);
26 DDX_Control(pDX, IDC_COMBOBOXEX_REF, m_ChooseRef);
27 DDX_Control(pDX, IDC_REFLOG_LIST, m_RefList);
31 BEGIN_MESSAGE_MAP(CRefLogDlg, CResizableStandAloneDialog)
32 ON_BN_CLICKED(IDOK, &CRefLogDlg::OnBnClickedOk)
33 ON_CBN_SELCHANGE(IDC_COMBOBOXEX_REF, &CRefLogDlg::OnCbnSelchangeRef)
34 ON_MESSAGE(MSG_REFLOG_CHANGED,OnRefLogChanged)
35 END_MESSAGE_MAP()
37 LRESULT CRefLogDlg::OnRefLogChanged(WPARAM wParam, LPARAM lParam)
39 m_RefList.m_RefMap.clear();
40 OnCbnSelchangeRef();
41 return 0;
44 BOOL CRefLogDlg::OnInitDialog()
46 CResizableStandAloneDialog::OnInitDialog();
48 AddAnchor(IDOK,BOTTOM_RIGHT);
49 AddAnchor(IDCANCEL,BOTTOM_RIGHT);
51 AddAnchor(IDC_REFLOG_LIST,TOP_LEFT,BOTTOM_RIGHT);
53 AddOthersToAnchor();
54 this->EnableSaveRestore(_T("RefLogDlg"));
56 STRING_VECTOR list;
57 g_Git.GetRefList(list);
59 if(this->m_CurrentBranch.IsEmpty())
61 m_CurrentBranch.Format(_T("refs/heads/%s"),g_Git.GetCurrentBranch());
64 m_ChooseRef.SetMaxHistoryItems(0x7FFFFFFF);
65 this->m_ChooseRef.AddString(list);
68 this->m_RefList.InsertRefLogColumn();
69 //m_RefList.m_logEntries.ParserFromRefLog(_T("master"));
71 for(int i=0;i<list.size();i++)
73 if(list[i] == m_CurrentBranch)
75 m_ChooseRef.SetCurSel(i);
76 break;
80 OnCbnSelchangeRef();
82 return TRUE;
84 // CRefLogDlg message handlers
86 void CRefLogDlg::OnBnClickedOk()
88 // TODO: Add your control notification handler code here
89 OnOK();
92 void CRefLogDlg::OnCbnSelchangeRef()
94 CString ref=m_ChooseRef.GetString();
95 if(m_RefList.m_RefMap.find(ref) == m_RefList.m_RefMap.end())
97 m_RefList.m_RefMap[ref].ParserFromRefLog(ref);
99 m_RefList.ClearText();
101 //this->m_logEntries.ParserFromLog();
102 m_RefList.SetRedraw(false);
104 CLogDataVector *plog;
105 plog = &m_RefList.m_RefMap[ref];
107 m_RefList.SetItemCountEx(plog->size());
109 this->m_RefList.m_arShownList.RemoveAll();
111 for(unsigned int i=0;i<m_RefList.m_RefMap[ref].size();i++)
113 plog->at(i).m_IsFull=TRUE;
114 this->m_RefList.m_arShownList.Add(&(plog->at(i)));
118 m_RefList.SetRedraw(true);
120 m_RefList.Invalidate();