#include "headers.hxx" #include "AnalysisPage.hpp" #include "resource.h" #include "common.hpp" #include "AnalysisResults.hpp" #include "CSVDSReader.hpp" #include "Analysis.hpp" #include "global.hpp" #include "constants.hpp" AnalysisPage::AnalysisPage ( const CSVDSReader& csvReader409_, const CSVDSReader& csvReaderIntl_, const String& ldapPrefix_, const String& rootContainerDn_, AnalysisResults& res, const String& reportName_ ) : csvReader409(csvReader409_), csvReaderIntl(csvReaderIntl_), ldapPrefix(ldapPrefix_), rootContainerDn(rootContainerDn_), results(res), reportName(reportName_), WizardPage ( IDD_ANALYSIS, IDS_ANALYSIS_PAGE_TITLE, IDS_ANALYSIS_PAGE_SUBTITLE, true ) { LOG_CTOR(AnalysisPage); } AnalysisPage::~AnalysisPage() { LOG_DTOR(AnalysisPage); } long WINAPI startAnalysis(long arg) { LOG_FUNCTION(startAnalysis); AnalysisPage *page=(AnalysisPage *)arg; Analysis analysis( page->csvReader409, page->csvReaderIntl, page->ldapPrefix, page->rootContainerDn, page->results, &page->reportName, page ); // CoInitialize must be called per thread HRESULT hr = ::CoInitialize(0); ASSERT(SUCCEEDED(hr)); hrError=analysis.run(); CoUninitialize(); page->FinishProgress(); return 0; } // WizardPage overrides bool AnalysisPage::OnSetActive() { LOG_FUNCTION(AnalysisPage::OnSetActive); Win::PropSheet_SetWizButtons(Win::GetParent(hwnd), 0); pos=0; HANDLE hA=CreateThread( NULL,0, (LPTHREAD_START_ROUTINE) startAnalysis, this, 0, 0 ); CloseHandle(hA); return true; } void AnalysisPage::OnInit() { LOG_FUNCTION(AnalysisPage::OnInit); HWND prog=GetDlgItem(hwnd,IDC_PROGRESS_ANALYSIS); // calculate the # of locales for(long t=0;LOCALEIDS[t]!=0;t++) { //empty } SendMessage(prog,PBM_SETRANGE,0,MAKELPARAM(0,t)); }; bool AnalysisPage::OnWizBack() { LOG_FUNCTION(AnalysisPage::OnWizBack); GetWizard().SetNextPageID(hwnd,IDD_WELCOME); return true; } bool AnalysisPage::OnWizNext() { LOG_FUNCTION(AnalysisPage::OnWizNext); if (FAILED(hrError)) { GetWizard().SetNextPageID(hwnd,IDD_FINISH); } else { GetWizard().SetNextPageID(hwnd,IDD_UPDATES_REQUIRED); } return true; } void AnalysisPage::StepProgress() { LOG_FUNCTION(AnalysisPage::StepProgress); HWND prog=GetDlgItem(hwnd,IDC_PROGRESS_ANALYSIS); SendMessage(prog,PBM_SETPOS,pos++,0); } void AnalysisPage::FinishProgress() { LOG_FUNCTION(AnalysisPage::FinishProgress); Win::PropSheet_SetWizButtons(Win::GetParent(hwnd),PSWIZB_NEXT); String result; if (FAILED(hrError)) { result=String::format(IDS_IDC_ANALYSIS_RESULT_INCOMPLETE); error=String::format(IDS_ANALYSIS_ERROR,error.c_str()); } else { result=String::format(IDS_IDC_ANALYSIS_RESULT_COMPLETE); } Win::SetDlgItemText(hwnd,IDC_ANALYSIS_RESULT,result); HWND text=GetDlgItem(hwnd,IDC_ANALYSIS_RESULT); Win::ShowWindow(text,SW_SHOW); }