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
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
\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
}\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
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