152 lines
3.8 KiB
C
152 lines
3.8 KiB
C
/*
|
|
RECCOM.C
|
|
|
|
Sound record/playback application command manager
|
|
*/
|
|
|
|
#include <record.g>
|
|
#include <record.rsg>
|
|
#include <hwim.h>
|
|
#include <s_.rsg>
|
|
|
|
GLREF_D PR_RECENG * const receng;
|
|
GLREF_D TEXT * const DatUsedPathNamePtr;
|
|
|
|
LOCAL_C INT LaunchDial(VOID *buf,INT id,INT class)
|
|
{
|
|
DL_DATA dial_data;
|
|
|
|
dial_data.id=id;
|
|
dial_data.rbuf=buf;
|
|
dial_data.pdlg=NULL;
|
|
return(hLaunchDial(CAT_RECORD_RECORD,class,&dial_data));
|
|
}
|
|
|
|
LOCAL_C VOID RecordToNewFile(TEXT *fname,INT DefaultName)
|
|
{
|
|
INT len;
|
|
P_FPARSE crk;
|
|
RECRBUF rb;
|
|
|
|
rb.duration=((RECENG_PREFS *)p_send2(receng,O_ENG_SENSE_PREFS))->duration;
|
|
f_fparse(fname,DatUsedPathNamePtr,&rb.fname[0],&crk);
|
|
len=crk.system+crk.device+crk.path;
|
|
if (DefaultName)
|
|
len+=crk.name;
|
|
rb.fname[len]=0;
|
|
if (!LaunchDial(&rb,RECORD_NEW_DL,DefaultName?C_RECNEWDEF:C_RECNEW))
|
|
p_send3(receng,O_ENG_OPEN_FILE,NULL);
|
|
}
|
|
|
|
#pragma METHOD_CALL
|
|
|
|
METHOD INT reccom_com_file_change(PR_RECCOM *self,INT command,TEXT *newname)
|
|
{
|
|
p_send2(receng,O_ENG_SOUND_STOP);
|
|
switch (command)
|
|
{
|
|
case H_COMMAND_CREATE_FILE:
|
|
p_send3(receng,O_ENG_NEW_FILE,newname);
|
|
p_send2(receng,O_ENG_VIEW_UPDATE);
|
|
RecordToNewFile((TEXT *)p_send2(receng,O_ENG_SENSE_FILE),TRUE);
|
|
break;
|
|
case H_COMMAND_OPEN_FILE:
|
|
p_send3(receng,O_ENG_OPEN_FILE,newname);
|
|
break;
|
|
}
|
|
return(0); /* no leave() */
|
|
}
|
|
|
|
|
|
METHOD VOID reccom_com_new_file(PR_RECCOM *self)
|
|
/*
|
|
Called on selecting the New file menu command.
|
|
*/
|
|
{
|
|
TEXT fspec[4];
|
|
|
|
fspec[0]=p_send2(receng,O_ENG_DEFAULT_DISK);
|
|
fspec[1]=':';
|
|
fspec[2]=0;
|
|
RecordToNewFile(&fspec[0],FALSE);
|
|
}
|
|
|
|
METHOD VOID reccom_com_record_new(PR_RECCOM *self)
|
|
/*
|
|
Called on pressing the Record new (Tab) button.
|
|
*/
|
|
{
|
|
INT i,device;
|
|
P_INFO info;
|
|
TEXT name[32];
|
|
TEXT fspec[P_FNAMESIZE];
|
|
|
|
device=p_send2(receng,O_ENG_DEFAULT_DISK);
|
|
for (i=1;i<100;i++)
|
|
{
|
|
hAtos(&name[0],DFLT_FNAME,device,i); /* "%c:RECORD%02d" */
|
|
p_fparse(&name[0],DatUsedPathNamePtr,&fspec[0],NULL);
|
|
if (p_finfo(&fspec[0],&info))
|
|
{ /* file does not exist - so use the generated name */
|
|
RecordToNewFile(&fspec[0],TRUE);
|
|
return;
|
|
}
|
|
}
|
|
RecordToNewFile("",FALSE);
|
|
}
|
|
|
|
METHOD VOID reccom_com_open_file(PR_RECCOM *self)
|
|
/*
|
|
Called on selecting the Open file menu command.
|
|
*/
|
|
{
|
|
RECRBUF rb;
|
|
|
|
p_scpy(&rb.fname[0],(TEXT *)p_send2(receng,O_ENG_SENSE_FILE));
|
|
if (!LaunchDial(&rb,OPEN_FILE_DL,C_RECOPEN))
|
|
return;
|
|
/* rb.fname[] contains file name */
|
|
p_send3(receng,O_ENG_OPEN_FILE,&rb.fname);
|
|
}
|
|
|
|
METHOD VOID reccom_com_re_record(PR_RECCOM *self)
|
|
/*
|
|
Called on pressing the Record over (Space) button.
|
|
*/
|
|
{
|
|
TEXT *fname;
|
|
WVEFILE_INFO info;
|
|
P_INFO finfo;
|
|
RECRBUF rb;
|
|
|
|
p_send3(receng,O_ENG_FILE_INFO,&info);
|
|
fname=(TEXT *)p_send2(receng,O_ENG_SENSE_FILE);
|
|
if (!info.duration)
|
|
{ /* file does not exist? */
|
|
if (p_finfo(fname,&finfo)<0)
|
|
RecordToNewFile(fname,TRUE);
|
|
return;
|
|
}
|
|
rb.duration=info.duration;
|
|
p_scpy(&rb.fname[0],fname);
|
|
if (!LaunchDial(&rb,RE_RECORD_DL,C_RECEXIST))
|
|
return;
|
|
}
|
|
|
|
METHOD VOID reccom_com_set_repeat(PR_RECCOM *self)
|
|
{
|
|
LaunchDial(NULL,SET_REP_DL,C_SETREP);
|
|
}
|
|
|
|
METHOD VOID reccom_com_rep_alarm(PR_RECCOM *self)
|
|
{
|
|
if (!hConfirm(ADJUST_ALARM_CONFIRM))
|
|
return;
|
|
p_send4(receng,O_ENG_SET_REPEATS,0,150); /* set total time to 15 seconds */
|
|
}
|
|
|
|
METHOD VOID reccom_com_preferences(PR_RECCOM *self)
|
|
{
|
|
LaunchDial(NULL,PREFERENCES_DL,C_SETPREF);
|
|
}
|