OSDN Git Service

Enable Sync Dialog Resize
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / ProgressDlg.cpp
index ce8ff32..abe8c2c 100644 (file)
 IMPLEMENT_DYNAMIC(CProgressDlg, CResizableStandAloneDialog)\r
 \r
 CProgressDlg::CProgressDlg(CWnd* pParent /*=NULL*/)\r
-       : CResizableStandAloneDialog(CProgressDlg::IDD, pParent), m_bShowCommand(true), m_bAutoCloseOnSuccess(false), m_bAbort(false)\r
+       : CResizableStandAloneDialog(CProgressDlg::IDD, pParent), m_bShowCommand(true), m_bAutoCloseOnSuccess(false), m_bAbort(false), m_bDone(false)\r
 {\r
-\r
+       m_pThread = NULL;\r
+       m_bAltAbortPress=false;\r
 }\r
 \r
 CProgressDlg::~CProgressDlg()\r
@@ -37,6 +38,7 @@ void CProgressDlg::DoDataExchange(CDataExchange* pDX)
 BEGIN_MESSAGE_MAP(CProgressDlg, CResizableStandAloneDialog)\r
        ON_MESSAGE(MSG_PROGRESSDLG_UPDATE_UI, OnProgressUpdateUI)\r
        ON_BN_CLICKED(IDOK, &CProgressDlg::OnBnClickedOk)\r
+       ON_BN_CLICKED(IDC_PROGRESS_BUTTON1,&CProgressDlg::OnBnClickedButton1)\r
 END_MESSAGE_MAP()\r
 \r
 BOOL CProgressDlg::OnInitDialog()\r
@@ -49,7 +51,9 @@ BOOL CProgressDlg::OnInitDialog()
 \r
        AddAnchor(IDOK,BOTTOM_RIGHT);\r
        AddAnchor(IDCANCEL,BOTTOM_RIGHT);\r
+       AddAnchor(IDC_PROGRESS_BUTTON1,BOTTOM_RIGHT);\r
 \r
+       this->GetDlgItem(IDC_PROGRESS_BUTTON1)->ShowWindow(SW_HIDE);\r
        m_Animate.Open(IDR_DOWNLOAD);\r
        \r
        CString InitialText;\r
@@ -161,17 +165,26 @@ LRESULT CProgressDlg::OnProgressUpdateUI(WPARAM wParam,LPARAM lParam)
        }\r
        if(wParam == MSG_PROGRESSDLG_END || wParam == MSG_PROGRESSDLG_FAILED)\r
        {\r
+               m_bDone = true;\r
                m_Animate.Stop();\r
                m_Progress.SetPos(100);\r
                this->DialogEnableWindow(IDOK,TRUE);\r
-               if(wParam == MSG_PROGRESSDLG_END)\r
+\r
+               if(wParam == MSG_PROGRESSDLG_END && m_GitStatus == 0)\r
                {\r
                        if(m_bAutoCloseOnSuccess)\r
                                EndDialog(IDOK);\r
-                       if(m_changeAbortButtonOnSuccessTo.IsEmpty())\r
+\r
+                       if(!m_changeAbortButtonOnSuccessTo.IsEmpty())\r
                        {\r
-                               GetDlgItem(IDCANCEL)->SetWindowText(m_changeAbortButtonOnSuccessTo);\r
+                               GetDlgItem(IDC_PROGRESS_BUTTON1)->SetWindowText(m_changeAbortButtonOnSuccessTo);\r
+                               GetDlgItem(IDC_PROGRESS_BUTTON1)->ShowWindow(SW_SHOW);\r
+                               GetDlgItem(IDCANCEL)->ShowWindow(SW_HIDE);\r
+                               //Set default button is "close" rather than "push"\r
+                               this->SendMessage(WM_NEXTDLGCTL, (WPARAM)GetDlgItem(IDOK)->m_hWnd, TRUE);\r
                        }\r
+                       else\r
+                               DialogEnableWindow(IDCANCEL, FALSE);\r
                }\r
                else\r
                        DialogEnableWindow(IDCANCEL, FALSE);\r
@@ -254,7 +267,18 @@ void CProgressDlg::OnBnClickedOk()
        OnOK();\r
 }\r
 \r
+void CProgressDlg::OnBnClickedButton1()\r
+{\r
+       this->EndDialog(IDC_PROGRESS_BUTTON1);\r
+       \r
+}\r
 void CProgressDlg::OnCancel()\r
 {\r
+       if(m_bDone)\r
+       {\r
+               CResizableStandAloneDialog::OnCancel();\r
+               return;\r
+       }\r
+       \r
        m_bAbort = true;\r
 }\r