From b23f93323193983dd9e54c868aed9616ee2a3df3 Mon Sep 17 00:00:00 2001 From: Frank Li Date: Sat, 27 Feb 2010 12:43:48 +0800 Subject: [PATCH] Fixed issue #312: The number of changed files in 'Show log' window Signed-off-by: Frank Li --- src/Git/GitStatusListCtrl.cpp | 49 +++++++++++++++++++++++++++++---------- src/Git/GitStatusListCtrl.h | 5 +++- src/Resources/TortoiseProcENG.rc | Bin 455350 -> 455424 bytes src/TortoiseProc/LogDlg.cpp | 8 ++++++- 4 files changed, 48 insertions(+), 14 deletions(-) diff --git a/src/Git/GitStatusListCtrl.cpp b/src/Git/GitStatusListCtrl.cpp index fc5775864..0fdfc32ac 100644 --- a/src/Git/GitStatusListCtrl.cpp +++ b/src/Git/GitStatusListCtrl.cpp @@ -127,6 +127,7 @@ CGitStatusListCtrl::CGitStatusListCtrl() : CListCtrl() m_FileLoaded=0; m_critSec.Init(); m_bIsRevertTheirMy = false; + this->m_nLineAdded =this->m_nLineDeleted =0; } CGitStatusListCtrl::~CGitStatusListCtrl() @@ -1122,6 +1123,8 @@ void CGitStatusListCtrl::Show(DWORD dwShow, DWORD dwCheck /*=0*/, bool bShowFold m_dwShow = dwShow; + this->BuildStatistics(); + #if 0 CWinApp * pApp = AfxGetApp(); @@ -2045,11 +2048,17 @@ bool CGitStatusListCtrl::BuildStatistics() m_nConflicted = 0; m_nTotal = 0; m_nSelected = 0; - + m_nLineAdded = 0; + m_nLineDeleted = 0; + m_nRenamed = 0; + for (int i=0; i < (int)m_arStatusArray.size(); ++i) { int status=((CTGitPath*)m_arStatusArray[i])->m_Action; + m_nLineAdded += _tstol(((CTGitPath*)m_arStatusArray[i])->m_StatAdd); + m_nLineDeleted += _tstol(((CTGitPath*)m_arStatusArray[i])->m_StatDel); + if(status&(CTGitPath::LOGACTIONS_ADDED|CTGitPath::LOGACTIONS_COPY)) m_nAdded++; @@ -2065,7 +2074,8 @@ bool CGitStatusListCtrl::BuildStatistics() if(status&(CTGitPath::LOGACTIONS_IGNORE|CTGitPath::LOGACTIONS_UNVER)) m_nUnversioned++; - + if(status&(CTGitPath::LOGACTIONS_REPLACED)) + m_nRenamed++; // } // switch (entry->status) // } // if (entry) @@ -4218,10 +4228,10 @@ void CGitStatusListCtrl::StartDiff(int fileindex) #endif } -CString CGitStatusListCtrl::GetStatisticsString() +CString CGitStatusListCtrl::GetStatisticsString(bool simple) { - CString sNormal, sAdded, sDeleted, sModified, sConflicted, sUnversioned; + CString sNormal, sAdded, sDeleted, sModified, sConflicted, sUnversioned, sRenamed; WORD langID = (WORD)(DWORD)CRegStdWORD(_T("Software\\TortoiseGit\\LanguageID"), GetUserDefaultLangID()); TCHAR buf[MAX_STATUS_STRING_LENGTH]; GitStatus::GetStatusString(AfxGetResourceHandle(), git_wc_status_normal, buf, sizeof(buf)/sizeof(TCHAR), langID); @@ -4236,15 +4246,30 @@ CString CGitStatusListCtrl::GetStatisticsString() sConflicted = buf; GitStatus::GetStatusString(AfxGetResourceHandle(), git_wc_status_unversioned, buf, sizeof(buf)/sizeof(TCHAR), langID); sUnversioned = buf; + GitStatus::GetStatusString(AfxGetResourceHandle(), git_wc_status_replaced, buf, sizeof(buf)/sizeof(TCHAR), langID); + sRenamed = buf; CString sToolTip; - sToolTip.Format(_T("%s = %d\n%s = %d\n%s = %d\n%s = %d\n%s = %d\n%s = %d"), - (LPCTSTR)sNormal, m_nNormal, - (LPCTSTR)sUnversioned, m_nUnversioned, - (LPCTSTR)sModified, m_nModified, - (LPCTSTR)sAdded, m_nAdded, - (LPCTSTR)sDeleted, m_nDeleted, - (LPCTSTR)sConflicted, m_nConflicted - ); + if(simple) + { + sToolTip.Format(_T("line: %d(+) %d(-) files: %s = %d\n%s = %d\n%s = %d\n%s = %d"), + this->m_nLineAdded,this->m_nLineDeleted, + (LPCTSTR)sModified, m_nModified, + (LPCTSTR)sAdded, m_nAdded, + (LPCTSTR)sDeleted, m_nDeleted, + (LPCTSTR)sRenamed, m_nRenamed + ); + }else + { + sToolTip.Format(_T("line: %d(+) %d(-) files: %s = %d\n%s = %d\n%s = %d\n%s = %d\n%s = %d\n%s = %d"), + this->m_nLineAdded,this->m_nLineDeleted, + (LPCTSTR)sNormal, m_nNormal, + (LPCTSTR)sUnversioned, m_nUnversioned, + (LPCTSTR)sModified, m_nModified, + (LPCTSTR)sAdded, m_nAdded, + (LPCTSTR)sDeleted, m_nDeleted, + (LPCTSTR)sConflicted, m_nConflicted + ); + } CString sStats; sStats.Format(IDS_COMMITDLG_STATISTICSFORMAT, m_nSelected, GetItemCount()); if (m_pStatLabel) diff --git a/src/Git/GitStatusListCtrl.h b/src/Git/GitStatusListCtrl.h index ffed97931..ee973b717 100644 --- a/src/Git/GitStatusListCtrl.h +++ b/src/Git/GitStatusListCtrl.h @@ -648,7 +648,7 @@ public: * Returns a String containing some statistics like number of modified, normal, deleted,... * files. */ - CString GetStatisticsString(); + CString GetStatisticsString(bool simple=false); /** * Set a static control which will be updated automatically with @@ -937,6 +937,9 @@ private: LONG m_nConflicted; LONG m_nTotal; LONG m_nSelected; + LONG m_nLineAdded; + LONG m_nLineDeleted; + LONG m_nRenamed; DWORD m_dwDefaultColumns; DWORD m_dwShow; diff --git a/src/Resources/TortoiseProcENG.rc b/src/Resources/TortoiseProcENG.rc index 2596bf14610e693768395a69be628d0e61ffb5f7..7d73f8bc0f7ae1a17f9ab52cb9ecd70a07199ae1 100644 GIT binary patch delta 441 zcwRM-PbkA-7{}lD_r7D(;#VS>G}I3Ih3&V^HkL?E3dbp$69+k>9Q>_0Y4zaA{|%Fz zl(J$Ai4?_w+CicGx%qRKJoD%9eGgCH=kt7ecb_aH&z9|}8Iyx)%*u48V^@!&!)Lq! z)RPU|ZQ+ej>oe|r%^C&w?qtpna9$0=3p1jcX%L;TL%1~?S|=s6FWPXTTk)Yy6@_4a zG2?5#Qh*hj&~i2AVQ#wMWL1pzn3uWnp^4YP;erajrRFpYyWFAscl{waJq?VDvmdTIn5~{g?Vn(RxQ;5I*8&3|=c4_}(kzcp?@`#5hHX uCt~6`A0I2FhQXAODC0sywM0r(k|KzEWm26jlEtBLQcxtt5DzCaY_4z0M3#sE delta 343 zcwTFGCcW*c^oG8v?1l_F3fsxE0|3gEGNq^sN^&Tsx@LTWiX$-aKUp%gURuWY^N7gv9L@&wQvff zA&~nNtkim=?c@moJd-CZE@3rduw*cr%(*0z6|8ys#yn=xN!ePH9YR^Auj6OsnY^M< zYVw68Y>WoeABr$bPhL=MB4`YBjtNjTj5eLjcvW=z1}#RH$rF~cup2|9pz6z%rf)dP z#xwogK}Lz@KTF&HEM){@rtN>0GJg=8ZnB$MXL^DV3(Itwz04D)#~HH-O!wQttkiyQ RFEbFc05R+KdwbcGOaZ8lblCs^ diff --git a/src/TortoiseProc/LogDlg.cpp b/src/TortoiseProc/LogDlg.cpp index 17b830706..2e88f650f 100644 --- a/src/TortoiseProc/LogDlg.cpp +++ b/src/TortoiseProc/LogDlg.cpp @@ -2562,10 +2562,16 @@ void CLogDlg::UpdateLogInfoLabel() selectedrevs = m_LogList.GetSelectedCount(); } CString sTemp; - sTemp.Format(_T("Showing %ld revision(s), from revision %s to revision %s - %ld revision(s) selected"), + sTemp.Format(_T("Showing %ld revision(s), from revision %s to revision %s - %ld revision(s) selected\n"), count - start, rev2.ToString().Left(6), rev1.ToString().Left(6), selectedrevs); + if(selectedrevs == 1) + { + CString str=m_ChangedFileListCtrl.GetStatisticsString(true); + str.Replace(_T('\n'), _T(' ')); + sTemp += str; + } m_sLogInfo = sTemp; UpdateData(FALSE); -- 2.11.4.GIT