94 lines
2.4 KiB
C++
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;
|
|
}
|
|
|