Files
Work/nntp/OPTNSDLG.CPP
2024-08-07 09:16:27 -04:00

94 lines
2.4 KiB
C++

#include <nntp/optnsdlg.hpp>
#include <nntp/optnsreg.hpp>
#include <common/systime.hpp>
#include <common/diskinfo.hpp>
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;
}