OSDN Git Service

Rewrite some progressdlg to share to Sync Dialog
authorFrank Li <lznuaa@gmail.com>
Wed, 22 Jul 2009 11:13:13 +0000 (19:13 +0800)
committerFrank Li <lznuaa@gmail.com>
Wed, 22 Jul 2009 11:13:13 +0000 (19:13 +0800)
Signed-off-by: Frank Li <lznuaa@gmail.com>
src/TortoiseProc/ProgressDlg.cpp
src/TortoiseProc/ProgressDlg.h

index abe8c2c..386ca0e 100644 (file)
@@ -61,10 +61,12 @@ BOOL CProgressDlg::OnInitDialog()
        {\r
                InitialText = m_PreText + _T("\r\n");\r
        }\r
+#if 0\r
        if (m_bShowCommand && (!m_GitCmd.IsEmpty() ))\r
        {\r
                InitialText += m_GitCmd+_T("\r\n\r\n");\r
        }\r
+#endif\r
        m_Log.SetWindowTextW(InitialText);\r
        m_CurrentWork.SetWindowTextW(_T(""));\r
 \r
@@ -89,37 +91,30 @@ UINT CProgressDlg::ProgressThreadEntry(LPVOID pVoid)
        return ((CProgressDlg*)pVoid)->ProgressThread();\r
 }\r
 \r
-UINT CProgressDlg::ProgressThread()\r
+//static function, Share with SyncDialog\r
+UINT CProgressDlg::RunCmdList(CWnd *pWnd,std::vector<CString> &cmdlist,bool bShowCommand,CString *pfilename,bool *bAbort)\r
 {\r
+       UINT ret=0;\r
+\r
        PROCESS_INFORMATION pi;\r
        HANDLE hRead;\r
 \r
-       this->PostMessage(MSG_PROGRESSDLG_UPDATE_UI,MSG_PROGRESSDLG_START,0);\r
-\r
-       CString *pfilename;\r
-       if(m_LogFile.IsEmpty())\r
-               pfilename=NULL;\r
-       else\r
-               pfilename=&m_LogFile;\r
+       pWnd->PostMessage(MSG_PROGRESSDLG_UPDATE_UI,MSG_PROGRESSDLG_START,0);\r
 \r
-       m_GitCmdList.push_back(m_GitCmd);\r
-\r
-       m_GitStatus =0;\r
-\r
-       for(int i=0;i<m_GitCmdList.size();i++)\r
+       for(int i=0;i<cmdlist.size();i++)\r
        {\r
-               if(m_GitCmdList[i].IsEmpty())\r
+               if(cmdlist[i].IsEmpty())\r
                        continue;\r
 \r
-               if (m_bShowCommand && m_GitCmdList[i]!= m_GitCmd)\r
+               if (bShowCommand)\r
                {\r
                        CString str;\r
-                       str+= m_GitCmdList[i]+_T("\r\n\r\n");\r
+                       str+= cmdlist[i]+_T("\r\n\r\n");\r
                        for(int j=0;j<str.GetLength();j++)\r
-                               this->PostMessage(MSG_PROGRESSDLG_UPDATE_UI,MSG_PROGRESSDLG_RUN,str[j]);\r
+                               pWnd->PostMessage(MSG_PROGRESSDLG_UPDATE_UI,MSG_PROGRESSDLG_RUN,str[j]);\r
                }\r
 \r
-               g_Git.RunAsync(this->m_GitCmdList[i],&pi, &hRead,pfilename);\r
+               g_Git.RunAsync(cmdlist[i],&pi, &hRead,pfilename);\r
 \r
                DWORD readnumber;\r
                char buffer[2];\r
@@ -127,7 +122,7 @@ UINT CProgressDlg::ProgressThread()
                while(ReadFile(hRead,buffer,1,&readnumber,NULL))\r
                {\r
                        buffer[readnumber]=0;\r
-                       this->PostMessage(MSG_PROGRESSDLG_UPDATE_UI,MSG_PROGRESSDLG_RUN,(TCHAR)buffer[0]);\r
+                       pWnd->PostMessage(MSG_PROGRESSDLG_UPDATE_UI,MSG_PROGRESSDLG_RUN,(TCHAR)buffer[0]);\r
                }\r
        \r
                CloseHandle(pi.hThread);\r
@@ -135,24 +130,41 @@ UINT CProgressDlg::ProgressThread()
                WaitForSingleObject(pi.hProcess, INFINITE);\r
                \r
                DWORD status=0;\r
-               if(!GetExitCodeProcess(pi.hProcess,&status) || m_bAbort)\r
+               if(!GetExitCodeProcess(pi.hProcess,&status) || *bAbort)\r
                {\r
                        CloseHandle(pi.hProcess);\r
 \r
                        CloseHandle(hRead);\r
 \r
-                       this->PostMessage(MSG_PROGRESSDLG_UPDATE_UI,MSG_PROGRESSDLG_FAILED,0);\r
+                       pWnd->PostMessage(MSG_PROGRESSDLG_UPDATE_UI,MSG_PROGRESSDLG_FAILED,0);\r
                        return GIT_ERROR_GET_EXIT_CODE;\r
                }\r
-               m_GitStatus |= status;\r
+               ret |= status;\r
        }\r
 \r
        CloseHandle(pi.hProcess);\r
 \r
        CloseHandle(hRead);\r
 \r
-       this->PostMessage(MSG_PROGRESSDLG_UPDATE_UI,MSG_PROGRESSDLG_END,0);\r
+       pWnd->PostMessage(MSG_PROGRESSDLG_UPDATE_UI,MSG_PROGRESSDLG_END,0);\r
+\r
+       return ret;\r
+\r
+}\r
 \r
+UINT CProgressDlg::ProgressThread()\r
+{\r
+       \r
+       m_GitCmdList.push_back(m_GitCmd);\r
+\r
+       CString *pfilename;\r
+\r
+       if(m_LogFile.IsEmpty())\r
+               pfilename=NULL;\r
+       else\r
+               pfilename=&m_LogFile;   \r
+\r
+       m_GitStatus = RunCmdList(this,m_GitCmdList,m_bShowCommand,pfilename,&m_bAbort);;\r
        return 0;\r
 }\r
 \r
@@ -195,6 +207,8 @@ LRESULT CProgressDlg::OnProgressUpdateUI(WPARAM wParam,LPARAM lParam)
 \r
        return 0;\r
 }\r
+\r
+//static function, Share with SyncDialog\r
 int CProgressDlg::FindPercentage(CString &log)\r
 {\r
        int s1=log.Find(_T('%'));\r
index 2281a0c..b5f7dc7 100644 (file)
@@ -48,7 +48,7 @@ protected:
        UINT            ProgressThread();\r
 \r
        void            ParserCmdOutput(TCHAR ch);\r
-       int                     FindPercentage(CString &log);\r
+       \r
        void        RemoveLastLine(CString &str);\r
 \r
        LRESULT CProgressDlg::OnProgressUpdateUI(WPARAM wParam,LPARAM lParam);\r
@@ -58,6 +58,11 @@ protected:
        \r
        DECLARE_MESSAGE_MAP()\r
 public:\r
+\r
+       //Share with Sync Dailog\r
+       static int      FindPercentage(CString &log);\r
+       static UINT  RunCmdList(CWnd *pWnd,std::vector<CString> &cmdlist,bool bShowCommand,CString *pfilename,bool *bAbort);\r
+\r
        afx_msg void OnBnClickedOk();\r
        afx_msg void OnBnClickedButton1();\r
 };\r