OSDN Git Service

Show Progress percentage at log dialog
authorFrank Li <lznuaa@gmail.com>
Tue, 12 Jan 2010 02:44:22 +0000 (10:44 +0800)
committerFrank Li <lznuaa@gmail.com>
Tue, 12 Jan 2010 02:44:22 +0000 (10:44 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
ext/gitdll/gitdll.c
ext/gitdll/gitdll.h
src/TortoiseProc/GitLogListBase.cpp
src/TortoiseProc/LogDlg.cpp

index a9e9843..253ef79 100644 (file)
@@ -332,6 +332,14 @@ int git_get_log_firstcommit(GIT_LOG handle)
        return prepare_revision_walk(handle);\r
 }\r
 \r
+int git_get_log_estimate_commit_count(GIT_LOG handle)\r
+{\r
+       struct rev_info *p_Rev;\r
+       p_Rev=(struct rev_info *)handle;\r
+\r
+       return estimate_commit_count(p_Rev, p_Rev->commits);\r
+}\r
+\r
 int git_get_log_nextcommit(GIT_LOG handle, GIT_COMMIT *commit)\r
 {\r
        int ret =0;\r
index fd5e634..2af8830 100644 (file)
@@ -86,6 +86,7 @@ GITDLL_API int git_init();
 \r
 GITDLL_API int git_open_log(GIT_LOG * handle, char * arg);\r
 GITDLL_API int git_get_log_firstcommit(GIT_LOG handle);\r
+GITDLL_API int git_get_log_estimate_commit_count(GIT_LOG handle);\r
 \r
 /**\r
  *     Get Next Commit\r
index 188c70f..3bd3f97 100644 (file)
@@ -2085,6 +2085,7 @@ UINT CGitLogListBase::LogThread()
        InterlockedExchange(&m_bNoDispUpdates, FALSE);\r
 \r
        git_get_log_firstcommit(m_DllGitLog);\r
+       int total = git_get_log_estimate_commit_count(m_DllGitLog);\r
        GIT_COMMIT commit;\r
        t1=GetTickCount();\r
 \r
@@ -2122,9 +2123,13 @@ UINT CGitLogListBase::LogThread()
                if(t2-t1>500 )\r
                {\r
                        //update UI\r
+                       int percent=m_logEntries.size()*100/total + GITLOG_START+1;\r
+                       if(percent > 99)\r
+                               percent =99;\r
+\r
                        oldsize = m_logEntries.size();\r
                        PostMessage(LVM_SETITEMCOUNT, (WPARAM) this->m_logEntries.size(),(LPARAM) LVSICF_NOINVALIDATEALL|LVSICF_NOSCROLL);\r
-                       ::PostMessage(this->GetParent()->m_hWnd,MSG_LOAD_PERCENTAGE,(WPARAM) GITLOG_END,0);\r
+                       ::PostMessage(this->GetParent()->m_hWnd,MSG_LOAD_PERCENTAGE,(WPARAM) percent,0);\r
                }               \r
        }\r
        \r
index 41e84bf..b67f3ea 100644 (file)
@@ -379,7 +379,7 @@ LRESULT CLogDlg::OnLogListLoading(WPARAM wParam, LPARAM /*lParam*/)
                }\r
                UpdateLogInfoLabel();\r
 \r
-#if 0\r
+\r
                //if (!m_bShowedAll)\r
                DialogEnableWindow(IDC_SHOWWHOLEPROJECT, TRUE);\r
 \r
@@ -396,15 +396,15 @@ LRESULT CLogDlg::OnLogListLoading(WPARAM wParam, LPARAM /*lParam*/)
                m_LogList.GetTimeRange(begin,end);\r
                m_DateFrom.SetTime(&begin);\r
                m_DateTo.SetTime(&end);\r
-#endif\r
+\r
 \r
        }else\r
        {\r
                if(this->m_LogList.HasText())\r
                {\r
                        this->m_LogList.ClearText();\r
-                       UpdateLogInfoLabel();\r
                }\r
+               UpdateLogInfoLabel();\r
                m_LogProgress.SetPos(cur);\r
        }\r
        return 0;\r