#include "stdafx.h"\r
#include "resource.h"\r
#include "RefLogDlg.h"\r
-\r
+#include "git.h"\r
\r
// CRefLogDlg dialog\r
\r
-IMPLEMENT_DYNAMIC(CRefLogDlg, CDialog)\r
+IMPLEMENT_DYNAMIC(CRefLogDlg, CResizableStandAloneDialog)\r
\r
CRefLogDlg::CRefLogDlg(CWnd* pParent /*=NULL*/)\r
- : CDialog(CRefLogDlg::IDD, pParent)\r
+ : CResizableStandAloneDialog(CRefLogDlg::IDD, pParent)\r
{\r
\r
}\r
}\r
\r
\r
-BEGIN_MESSAGE_MAP(CRefLogDlg, CDialog)\r
+BEGIN_MESSAGE_MAP(CRefLogDlg, CResizableStandAloneDialog)\r
ON_BN_CLICKED(IDOK, &CRefLogDlg::OnBnClickedOk)\r
+ ON_CBN_SELCHANGE(IDC_COMBOBOXEX_REF, &CRefLogDlg::OnCbnSelchangeRef)\r
+ ON_MESSAGE(MSG_REFLOG_CHANGED,OnRefLogChanged)\r
END_MESSAGE_MAP()\r
\r
+LRESULT CRefLogDlg::OnRefLogChanged(WPARAM wParam, LPARAM lParam)\r
+{\r
+ m_RefList.m_RefMap.clear();\r
+ OnCbnSelchangeRef();\r
+ return 0;\r
+}\r
+\r
+BOOL CRefLogDlg::OnInitDialog()\r
+{\r
+ CResizableStandAloneDialog::OnInitDialog();\r
+\r
+ AddAnchor(IDOK,BOTTOM_RIGHT);\r
+ AddAnchor(IDCANCEL,BOTTOM_RIGHT);\r
+ \r
+ AddAnchor(IDC_REFLOG_LIST,TOP_LEFT,BOTTOM_RIGHT);\r
+\r
+ AddOthersToAnchor();\r
+ this->EnableSaveRestore(_T("RefLogDlg"));\r
+\r
+ STRING_VECTOR list;\r
+ g_Git.GetRefList(list);\r
+\r
+ if(this->m_CurrentBranch.IsEmpty())\r
+ {\r
+ m_CurrentBranch.Format(_T("refs/heads/%s"),g_Git.GetCurrentBranch());\r
+ }\r
+\r
+ m_ChooseRef.SetMaxHistoryItems(0x7FFFFFFF);\r
+ this->m_ChooseRef.AddString(list);\r
+ \r
+\r
+ this->m_RefList.InsertRefLogColumn();\r
+ //m_RefList.m_logEntries.ParserFromRefLog(_T("master"));\r
+ \r
+ for(int i=0;i<list.size();i++)\r
+ {\r
+ if(list[i] == m_CurrentBranch)\r
+ {\r
+ m_ChooseRef.SetCurSel(i);\r
+ break;\r
+ }\r
+ }\r
+\r
+ OnCbnSelchangeRef();\r
\r
+ return TRUE;\r
+}\r
// CRefLogDlg message handlers\r
\r
void CRefLogDlg::OnBnClickedOk()\r
// TODO: Add your control notification handler code here\r
OnOK();\r
}\r
+\r
+void CRefLogDlg::OnCbnSelchangeRef()\r
+{\r
+ CString ref=m_ChooseRef.GetString();\r
+ if(m_RefList.m_RefMap.find(ref) == m_RefList.m_RefMap.end())\r
+ {\r
+ m_RefList.m_RefMap[ref].ParserFromRefLog(ref);\r
+ }\r
+ m_RefList.ClearText();\r
+\r
+ //this->m_logEntries.ParserFromLog();\r
+ m_RefList.SetRedraw(false);\r
+\r
+ CLogDataVector *plog;\r
+ plog = &m_RefList.m_RefMap[ref];\r
+\r
+ m_RefList.SetItemCountEx(plog->size());\r
+\r
+ this->m_RefList.m_arShownList.RemoveAll();\r
+\r
+ for(unsigned int i=0;i<m_RefList.m_RefMap[ref].size();i++)\r
+ {\r
+ plog->at(i).m_IsFull=TRUE;\r
+ this->m_RefList.m_arShownList.Add(&(plog->at(i)));\r
+ \r
+ }\r
+\r
+ m_RefList.SetRedraw(true);\r
+\r
+ m_RefList.Invalidate();\r
+\r
+}
\ No newline at end of file