1 // RefLogDlg.cpp : implementation file
\r
5 #include "resource.h"
\r
6 #include "RefLogDlg.h"
\r
11 IMPLEMENT_DYNAMIC(CRefLogDlg, CResizableStandAloneDialog)
\r
13 CRefLogDlg::CRefLogDlg(CWnd* pParent /*=NULL*/)
\r
14 : CResizableStandAloneDialog(CRefLogDlg::IDD, pParent)
\r
19 CRefLogDlg::~CRefLogDlg()
\r
23 void CRefLogDlg::DoDataExchange(CDataExchange* pDX)
\r
25 CDialog::DoDataExchange(pDX);
\r
26 DDX_Control(pDX, IDC_COMBOBOXEX_REF, m_ChooseRef);
\r
27 DDX_Control(pDX, IDC_REFLOG_LIST, m_RefList);
\r
31 BEGIN_MESSAGE_MAP(CRefLogDlg, CResizableStandAloneDialog)
\r
32 ON_BN_CLICKED(IDOK, &CRefLogDlg::OnBnClickedOk)
\r
33 ON_CBN_SELCHANGE(IDC_COMBOBOXEX_REF, &CRefLogDlg::OnCbnSelchangeRef)
\r
34 ON_MESSAGE(MSG_REFLOG_CHANGED,OnRefLogChanged)
\r
37 LRESULT CRefLogDlg::OnRefLogChanged(WPARAM wParam, LPARAM lParam)
\r
39 m_RefList.m_RefMap.clear();
\r
40 OnCbnSelchangeRef();
\r
44 BOOL CRefLogDlg::OnInitDialog()
\r
46 CResizableStandAloneDialog::OnInitDialog();
\r
48 AddAnchor(IDOK,BOTTOM_RIGHT);
\r
49 AddAnchor(IDCANCEL,BOTTOM_RIGHT);
\r
51 AddAnchor(IDC_REFLOG_LIST,TOP_LEFT,BOTTOM_RIGHT);
\r
52 AddAnchor(IDHELP, BOTTOM_RIGHT);
\r
54 AddOthersToAnchor();
\r
55 this->EnableSaveRestore(_T("RefLogDlg"));
\r
58 g_Git.GetRefList(list);
\r
60 if(this->m_CurrentBranch.IsEmpty())
\r
62 m_CurrentBranch.Format(_T("refs/heads/%s"),g_Git.GetCurrentBranch());
\r
65 m_ChooseRef.SetMaxHistoryItems(0x7FFFFFFF);
\r
66 this->m_ChooseRef.AddString(list);
\r
69 this->m_RefList.InsertRefLogColumn();
\r
70 //m_RefList.m_logEntries.ParserFromRefLog(_T("master"));
\r
72 for(int i=0;i<list.size();i++)
\r
74 if(list[i] == m_CurrentBranch)
\r
76 m_ChooseRef.SetCurSel(i);
\r
81 OnCbnSelchangeRef();
\r
85 // CRefLogDlg message handlers
\r
87 void CRefLogDlg::OnBnClickedOk()
\r
89 // TODO: Add your control notification handler code here
\r
93 void CRefLogDlg::OnCbnSelchangeRef()
\r
95 CString ref=m_ChooseRef.GetString();
\r
96 if(m_RefList.m_RefMap.find(ref) == m_RefList.m_RefMap.end())
\r
98 m_RefList.m_RefMap[ref].m_pLogCache = &m_RefList.m_LogCache;
\r
99 m_RefList.m_RefMap[ref].ParserFromRefLog(ref);
\r
101 m_RefList.ClearText();
\r
103 //this->m_logEntries.ParserFromLog();
\r
104 m_RefList.SetRedraw(false);
\r
106 CLogDataVector *plog;
\r
107 plog = &m_RefList.m_RefMap[ref];
\r
109 m_RefList.SetItemCountEx(plog->size());
\r
111 this->m_RefList.m_arShownList.RemoveAll();
\r
113 for(unsigned int i=0;i<m_RefList.m_RefMap[ref].size();i++)
\r
115 plog->GetGitRevAt(i).m_IsFull=TRUE;
\r
116 this->m_RefList.m_arShownList.Add(&(plog->GetGitRevAt(i)));
\r
120 m_RefList.SetRedraw(true);
\r
122 m_RefList.Invalidate();
\r