173 lines
5.3 KiB
C++
173 lines
5.3 KiB
C++
#include <vidcap/entrydlg.hpp>
|
|
#include <vidcap/opendir.hpp>
|
|
#include <common/opndlgex.hpp>
|
|
#include <common/profile.hpp>
|
|
#include <common/control.hpp>
|
|
|
|
WORD EntryDialog::perform()
|
|
{
|
|
WORD resultCode(::DialogBoxParam(processInstance(),(LPSTR)"SETTINGS",mhParent,(DLGPROC)DWindow::DlgProc,(LONG)((DWindow*)this)));
|
|
return resultCode;
|
|
}
|
|
|
|
CallbackData::ReturnType EntryDialog::initDialogHandler(CallbackData &/*someCallbackData*/)
|
|
{
|
|
mPreviewRate=new Control(getItem(SETTINGS_PREVIEW_RATE),SETTINGS_PREVIEW_RATE,false);
|
|
mPreviewRate.disposition(PointerDisposition::Delete);
|
|
setPreviewRates();
|
|
getParams();
|
|
return (CallbackData::ReturnType)FALSE;
|
|
}
|
|
|
|
CallbackData::ReturnType EntryDialog::dialogCodeHandler(CallbackData &/*someCallbackData*/)
|
|
{
|
|
return (CallbackData::ReturnType)DLGC_WANTALLKEYS;
|
|
}
|
|
|
|
CallbackData::ReturnType EntryDialog::commandHandler(CallbackData &someCallbackData)
|
|
{
|
|
switch(someCallbackData.wmCommandID())
|
|
{
|
|
case IDOK :
|
|
setParams();
|
|
endDialog(true);
|
|
break;
|
|
case IDCANCEL :
|
|
endDialog(false);
|
|
break;
|
|
case SETTINGS_PREVIEW_640x480 :
|
|
if(BN_CLICKED==someCallbackData.wmCommandCommand())
|
|
sendMessage(SETTINGS_PREVIEW_320x240,BM_SETCHECK,0,0L);
|
|
break;
|
|
case SETTINGS_PREVIEW_320x240 :
|
|
if(BN_CLICKED==someCallbackData.wmCommandCommand())
|
|
sendMessage(SETTINGS_PREVIEW_640x480,BM_SETCHECK,0,0L);
|
|
break;
|
|
case SETTINGS_CAPTURE_320x240 :
|
|
if(BN_CLICKED==someCallbackData.wmCommandCommand())
|
|
sendMessage(SETTINGS_CAPTURE_640x480,BM_SETCHECK,0,0L);
|
|
break;
|
|
case SETTINGS_CAPTURE_640x480 :
|
|
if(BN_CLICKED==someCallbackData.wmCommandCommand())
|
|
sendMessage(SETTINGS_CAPTURE_320x240,BM_SETCHECK,0,0L);
|
|
break;
|
|
case SETTINGS_BROWSE :
|
|
handleBrowse();
|
|
break;
|
|
}
|
|
return (CallbackData::ReturnType)FALSE;
|
|
}
|
|
|
|
void EntryDialog::handleBrowse(void)
|
|
{
|
|
OpenDirectory openDir;
|
|
String strDirectory;
|
|
String strFileName;
|
|
|
|
if(openDir.getOpenDirectory(*this,"Choose Path",".",strDirectory))
|
|
{
|
|
Profile profile;
|
|
getText(SETTINGS_CAPTUREFILE,strFileName);
|
|
profile.makeFileName(strFileName,strFileName);
|
|
if(!(strDirectory[(DWORD)strDirectory.length()-1]=='\\'))strDirectory+="\\";
|
|
setText(SETTINGS_CAPTUREFILE,strDirectory+strFileName);
|
|
}
|
|
}
|
|
|
|
void EntryDialog::getParams()
|
|
{
|
|
selectPreviewRate(mVidReg.getPreviewRate());
|
|
setText(SETTINGS_CAPTUREFILE,mVidReg.getCaptureFile());
|
|
if(mVidReg.getSequencing())sendMessage(SETTINGS_USESEQUENCING,BM_SETCHECK,true,0);
|
|
if(320==mVidReg.getPreviewWidth())sendMessage(SETTINGS_PREVIEW_320x240,BM_SETCHECK,true,0);
|
|
else sendMessage(SETTINGS_PREVIEW_640x480,BM_SETCHECK,true,0);
|
|
if(320==mVidReg.getCaptureWidth())sendMessage(SETTINGS_CAPTURE_320x240,BM_SETCHECK,true,0);
|
|
else sendMessage(SETTINGS_CAPTURE_640x480,BM_SETCHECK,true,0);
|
|
}
|
|
|
|
void EntryDialog::setParams(void)
|
|
{
|
|
String strCaptureFile;
|
|
|
|
getText(SETTINGS_CAPTUREFILE,strCaptureFile);
|
|
if(!verifyCaptureFile(strCaptureFile))return;
|
|
if(!strCaptureFile.isNull())mVidReg.setCaptureFile(strCaptureFile);
|
|
mVidReg.setPreviewRate(getPreviewRate());
|
|
if(sendMessage(SETTINGS_USESEQUENCING,BM_GETCHECK,0,0L))mVidReg.setSequencing(true);
|
|
else mVidReg.setSequencing(false);
|
|
if(sendMessage(SETTINGS_PREVIEW_320x240,BM_GETCHECK,0,0L))
|
|
{
|
|
mVidReg.setPreviewWidth(320);
|
|
mVidReg.setPreviewHeight(240);
|
|
}
|
|
else
|
|
{
|
|
mVidReg.setPreviewWidth(640);
|
|
mVidReg.setPreviewHeight(480);
|
|
}
|
|
if(sendMessage(SETTINGS_CAPTURE_320x240,BM_GETCHECK,0,0L))
|
|
{
|
|
mVidReg.setCaptureWidth(320);
|
|
mVidReg.setCaptureHeight(240);
|
|
}
|
|
else
|
|
{
|
|
mVidReg.setCaptureWidth(640);
|
|
mVidReg.setCaptureHeight(480);
|
|
}
|
|
}
|
|
|
|
bool EntryDialog::verifyCaptureFile(const String &strCaptureFile)
|
|
{
|
|
Profile profile;
|
|
DiskInfo diskInfo;
|
|
String strDirectory;
|
|
|
|
strDirectory=strCaptureFile;
|
|
profile.makeDirectoryName(strDirectory);
|
|
if(profile.verifyDirectory(strDirectory))return true;
|
|
if(IDCANCEL==::MessageBox(*this,strDirectory,"Create Dirctory",MB_OKCANCEL))return false;
|
|
if(!diskInfo.createDirectory(strDirectory))return false;
|
|
return true;
|
|
}
|
|
|
|
void EntryDialog::selectPreviewRate(DWORD previewRate)
|
|
{
|
|
String strPreviewRate;
|
|
int entries=mPreviewRate->sendMessage(CB_GETCOUNT,0,0L);
|
|
bool itemSelected=false;
|
|
for(int index=0;index<entries;index++)
|
|
{
|
|
mPreviewRate->sendMessage(CB_GETLBTEXT,index,(LPARAM)(LPSTR)strPreviewRate);
|
|
if(previewRate==strPreviewRate.toInt())
|
|
{
|
|
mPreviewRate->sendMessage(CB_SETCURSEL,index,0L);
|
|
itemSelected=true;
|
|
break;
|
|
}
|
|
}
|
|
if(!itemSelected)mPreviewRate->sendMessage(CB_SETCURSEL,0,0L);
|
|
}
|
|
|
|
DWORD EntryDialog::getPreviewRate(void)
|
|
{
|
|
String strPreviewRate;
|
|
int index=mPreviewRate->sendMessage(CB_GETCURSEL,0,0L);
|
|
mPreviewRate->sendMessage(CB_GETLBTEXT,index,(LPARAM)(LPSTR)strPreviewRate);
|
|
if(strPreviewRate.isNull())return 0;
|
|
return strPreviewRate.toInt();
|
|
}
|
|
|
|
void EntryDialog::setPreviewRates(void)
|
|
{
|
|
mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"25");
|
|
mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"50");
|
|
mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"100");
|
|
mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"150");
|
|
mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"200");
|
|
mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"250");
|
|
mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"500");
|
|
mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"1000");
|
|
mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"15000");
|
|
mPreviewRate->sendMessage(CB_INSERTSTRING,-1,(LPARAM)"30000");
|
|
} |