Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

165 lines
3.4 KiB

#include "headers.hxx"
#include "AnalisysPage.hpp"
#include "resource.h"
#include "common.hpp"
#include "AnalisysResults.hpp"
#include "CSVDSReader.hpp"
#include "Analisys.hpp"
#include "global.hpp"
#include "constants.hpp"
AnalisysPage::AnalisysPage
(
const CSVDSReader& csvReader409_,
const CSVDSReader& csvReaderIntl_,
const String& ldapPrefix_,
const String& rootContainerDn_,
AnalisysResults& res,
const String& reportName_
)
:
csvReader409(csvReader409_),
csvReaderIntl(csvReaderIntl_),
ldapPrefix(ldapPrefix_),
rootContainerDn(rootContainerDn_),
results(res),
reportName(reportName_),
WizardPage
(
IDD_ANALISYS,
IDS_ANALISYS_PAGE_TITLE,
IDS_ANALISYS_PAGE_SUBTITLE,
true
)
{
LOG_CTOR(AnalisysPage);
}
AnalisysPage::~AnalisysPage()
{
LOG_DTOR(AnalisysPage);
}
long WINAPI startAnalisys(long arg)
{
LOG_FUNCTION(startAnalisys);
AnalisysPage *page=(AnalisysPage *)arg;
Analisys analisys(
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=analisys.run();
CoUninitialize();
page->FinishProgress();
return 0;
}
// WizardPage overrides
bool
AnalisysPage::OnSetActive()
{
LOG_FUNCTION(AnalisysPage::OnSetActive);
Win::PropSheet_SetWizButtons(Win::GetParent(hwnd), 0);
pos=0;
HANDLE hA=CreateThread(
NULL,0,
(LPTHREAD_START_ROUTINE) startAnalisys,
this,
0, 0
);
CloseHandle(hA);
return true;
}
void
AnalisysPage::OnInit()
{
LOG_FUNCTION(AnalisysPage::OnInit);
HWND prog=GetDlgItem(hwnd,IDC_PROGRESS_ANALISYS);
// calculate the # of locales
for(long t=0;LOCALEIDS[t]!=0;t++)
{
//empty
}
SendMessage(prog,PBM_SETRANGE,0,MAKELPARAM(0,t));
};
bool
AnalisysPage::OnWizBack()
{
LOG_FUNCTION(AnalisysPage::OnWizBack);
GetWizard().SetNextPageID(hwnd,IDD_WELCOME);
return true;
}
bool
AnalisysPage::OnWizNext()
{
LOG_FUNCTION(AnalisysPage::OnWizNext);
if (FAILED(hrError))
{
GetWizard().SetNextPageID(hwnd,IDD_FINISH);
}
else
{
GetWizard().SetNextPageID(hwnd,IDD_UPDATES_REQUIRED);
}
return true;
}
void AnalisysPage::StepProgress()
{
LOG_FUNCTION(AnalisysPage::StepProgress);
HWND prog=GetDlgItem(hwnd,IDC_PROGRESS_ANALISYS);
SendMessage(prog,PBM_SETPOS,pos++,0);
}
void AnalisysPage::FinishProgress()
{
LOG_FUNCTION(AnalisysPage::FinishProgress);
Win::PropSheet_SetWizButtons(Win::GetParent(hwnd),PSWIZB_NEXT);
String result;
if (FAILED(hrError))
{
result=String::format(IDS_IDC_ANALISYS_RESULT_INCOMPLETE);
error=String::format(IDS_ANALISYS_ERROR,error.c_str());
}
else
{
result=String::format(IDS_IDC_ANALISYS_RESULT_COMPLETE);
}
Win::SetDlgItemText(hwnd,IDC_ANALISYS_RESULT,result);
HWND text=GetDlgItem(hwnd,IDC_ANALISYS_RESULT);
Win::ShowWindow(text,SW_SHOW);
}