#include #include #include #include WORD OptionsDialog::performDialog(void) { ::DialogBoxParam(processInstance(),(LPSTR)"GenOptions",mhParent,(DLGPROC)DWindow::DlgProc,(LONG)((DWindow*)this)); return FALSE; } CallbackData::ReturnType OptionsDialog::initDialogHandler(CallbackData &someCallbackData) { setOptions(); return (CallbackData::ReturnType)FALSE; } CallbackData::ReturnType OptionsDialog::commandHandler(CallbackData &someCallbackData) { switch(someCallbackData.wmCommandID()) { case IDOK : if(handleApply()) endDialog(TRUE); break; case IDCANCEL : endDialog(FALSE); break; case DaysPrior : handleDaysPrior(someCallbackData); break; } return (CallbackData::ReturnType)FALSE; } void OptionsDialog::handleDaysPrior(CallbackData &someCallbackData) { String priorDays; if(EN_KILLFOCUS!=HIWORD(someCallbackData.wParam()))return; getText(DaysPrior,priorDays); setOptions(::atoi(priorDays)); } void OptionsDialog::setOptions(WORD priorDays)const { SystemTime systemTime; String strPriorDays; systemTime.daysAdd360(-((short)priorDays)); ::sprintf(strPriorDays,"%d",priorDays); SystemTime postDateTime(systemTime.year(),systemTime.month(),systemTime.day(),0,0,0); setText(DaysPrior,strPriorDays); setText(PostDate,postDateTime.toString()); } void OptionsDialog::setOptions(void)const { OptionsReg optionsReg; setOptions((WORD)optionsReg.priorDays()); setText(NewsDir,optionsReg.newsDir()); } BOOL OptionsDialog::handleApply(void)const { OptionsReg optionsReg; String priorDays; String strNewsDirectory; String strCurrentDirectory; DiskInfo diskInfo; getText(DaysPrior,priorDays); optionsReg.priorDays(::atoi((LPSTR)priorDays)); getText(NewsDir,strNewsDirectory); if(strNewsDirectory.isNull()){::MessageBox(*this,(LPSTR)"Root directory cannot be null.",(LPSTR)"NewsCrawler",MB_OK);return FALSE;} diskInfo.getCurrentDirectory(strCurrentDirectory); if(!diskInfo.setCurrentDirectory(strNewsDirectory)) { if(IDOK==::MessageBox(*this,(LPSTR)"Directory does not exist, create?","NewsCrawler",MB_OKCANCEL)) { if(!diskInfo.createDirectory(strNewsDirectory)) { ::MessageBox(*this,(LPSTR)"Create directory!","NewsCrawler",MB_OK); return FALSE; } } else return FALSE; } optionsReg.newsDir(strNewsDirectory); diskInfo.setCurrentDirectory(strCurrentDirectory); return TRUE; }