Index: src/ch/StatusDlg.cpp =================================================================== diff -u -N -r2fe97a93f21771d75901d4b6559057d1ea055104 -rc9092a6f41bed1c132d5d5ddfe430e8b3ddd70ca --- src/ch/StatusDlg.cpp (.../StatusDlg.cpp) (revision 2fe97a93f21771d75901d4b6559057d1ea055104) +++ src/ch/StatusDlg.cpp (.../StatusDlg.cpp) (revision c9092a6f41bed1c132d5d5ddfe430e8b3ddd70ca) @@ -292,34 +292,46 @@ // set status of buttons pause/resume/cancel if (spSelectedTask != NULL) { - GetDlgItem(IDC_RESTART_BUTTON)->EnableWindow(true); - GetDlgItem(IDC_SHOW_LOG_BUTTON)->EnableWindow(true); - GetDlgItem(IDC_DELETE_BUTTON)->EnableWindow(true); - - if (spSelectedTask->GetTaskState() == chcore::eTaskState_Finished || spSelectedTask->GetTaskState() == chcore::eTaskState_Cancelled) + if(spSelectedTask->GetTaskState() == chcore::eTaskState_LoadError) { - GetDlgItem(IDC_CANCEL_BUTTON)->EnableWindow(false); + GetDlgItem(IDC_SHOW_LOG_BUTTON)->EnableWindow(true); GetDlgItem(IDC_PAUSE_BUTTON)->EnableWindow(false); GetDlgItem(IDC_RESUME_BUTTON)->EnableWindow(false); - } + GetDlgItem(IDC_RESTART_BUTTON)->EnableWindow(false); + GetDlgItem(IDC_CANCEL_BUTTON)->EnableWindow(false); + GetDlgItem(IDC_DELETE_BUTTON)->EnableWindow(true); + } else { - // pause/resume - if (spSelectedTask->GetTaskState() == chcore::eTaskState_Paused) + GetDlgItem(IDC_RESTART_BUTTON)->EnableWindow(true); + GetDlgItem(IDC_SHOW_LOG_BUTTON)->EnableWindow(true); + GetDlgItem(IDC_DELETE_BUTTON)->EnableWindow(true); + + if (spSelectedTask->GetTaskState() == chcore::eTaskState_Finished || spSelectedTask->GetTaskState() == chcore::eTaskState_Cancelled) { + GetDlgItem(IDC_CANCEL_BUTTON)->EnableWindow(false); GetDlgItem(IDC_PAUSE_BUTTON)->EnableWindow(false); - GetDlgItem(IDC_RESUME_BUTTON)->EnableWindow(true); + GetDlgItem(IDC_RESUME_BUTTON)->EnableWindow(false); } else { - GetDlgItem(IDC_PAUSE_BUTTON)->EnableWindow(true); - if (spSelectedTask->GetTaskState() == chcore::eTaskState_Waiting) + // pause/resume + if (spSelectedTask->GetTaskState() == chcore::eTaskState_Paused) + { + GetDlgItem(IDC_PAUSE_BUTTON)->EnableWindow(false); GetDlgItem(IDC_RESUME_BUTTON)->EnableWindow(true); + } else - GetDlgItem(IDC_RESUME_BUTTON)->EnableWindow(false); + { + GetDlgItem(IDC_PAUSE_BUTTON)->EnableWindow(true); + if (spSelectedTask->GetTaskState() == chcore::eTaskState_Waiting) + GetDlgItem(IDC_RESUME_BUTTON)->EnableWindow(true); + else + GetDlgItem(IDC_RESUME_BUTTON)->EnableWindow(false); + } + + GetDlgItem(IDC_CANCEL_BUTTON)->EnableWindow(true); } - - GetDlgItem(IDC_CANCEL_BUTTON)->EnableWindow(true); } } else @@ -455,14 +467,17 @@ if(spTask) { chcore::ETaskCurrentState eTaskState = spTask->GetTaskState(); - if(eTaskState != chcore::eTaskState_Finished && eTaskState != chcore::eTaskState_Cancelled) + switch(eTaskState) { - // ask if cancel + case chcore::eTaskState_Finished: + case chcore::eTaskState_Cancelled: + case chcore::eTaskState_LoadError: + break; // allow processing as-is + + default: + // ask to cancel if(MsgBox(IDS_CONFIRMCANCEL_STRING, MB_OKCANCEL | MB_ICONQUESTION) == IDOK) - { - // cancel spTask->CancelProcessing(); - } else return; } @@ -544,6 +559,7 @@ case chcore::eTaskState_Paused: return 2; case chcore::eTaskState_Error: + case chcore::eTaskState_LoadError: return 1; default: return 0; @@ -886,6 +902,12 @@ strStatusText += _T("/"); break; } + case chcore::eTaskState_LoadError: + { + strStatusText = GetResManager().LoadString(IDS_STATUS_LOADERROR_STRING); + strStatusText += _T("/"); + break; + } case chcore::eTaskState_Paused: { strStatusText = GetResManager().LoadString(IDS_STATUS_PAUSED_STRING);