home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 6
/
AACD06.ISO
/
AACD
/
Online
/
Dial
/
source
/
Extern.c
< prev
next >
Wrap
C/C++ Source or Header
|
2000-01-23
|
12KB
|
420 lines
#include <utility/hooks.h>
#include <libraries/mui.h>
#include "GUI.h"
#include "listhooks.h"
#include "extern.h"
#include "main.h"
extern int CBCchanged;
/* ///------------------------------ "Func_CY_DialMode" ------------------------------ */
APTR Func_CY_DialMode(struct Hook *a0, APTR a2, APTR a1)
{
struct ObjApp *App =a0->h_Data;
LONG DialMode;
if (DoMethod(App->GR_Settings,MUIM_Group_InitChange))
{
get(App->CY_DialMode, MUIA_Cycle_Active, &DialMode);
if (DialMode==0)
{
DoMethod(App->GR_Settings,OM_REMMEMBER,App->LA_device);
DoMethod(App->GR_Settings,OM_REMMEMBER,App->GR_device);
DoMethod(App->GR_Settings,OM_REMMEMBER,App->LA_HangUp);
DoMethod(App->GR_Settings,OM_REMMEMBER,App->SL_HangUp);
DoMethod(App->GR_Settings,OM_REMMEMBER,App->GR_voice);
DoMethod(App->GR_Settings,OM_REMMEMBER,App->STR_voice);
DoMethod(App->GR_Settings,OM_ADDMEMBER,App->LA_Length);
DoMethod(App->GR_Settings,OM_ADDMEMBER,App->SL_Length);
DoMethod(App->GR_Settings,OM_ADDMEMBER,App->LA_Pause);
DoMethod(App->GR_Settings,OM_ADDMEMBER,App->SL_Pause);
DoMethod(App->GR_Settings,OM_ADDMEMBER,App->LA_AudioLR);
DoMethod(App->GR_Settings,OM_ADDMEMBER,App->SL_AudioLR);
DoMethod(App->GR_Settings,OM_ADDMEMBER,App->LA_Wait);
DoMethod(App->GR_Settings,OM_ADDMEMBER,App->SL_Wait);
DoMethod(App->GR_Settings,MUIM_Group_Sort,
App->LA_DialMode, App->CY_DialMode,
App->LA_Length, App->SL_Length,
App->LA_Pause, App->SL_Pause,
App->LA_AudioLR, App->SL_AudioLR,
App->LA_Wait, App->SL_Wait,
App->obj_aux4, App->STR_system,
App->LA_DialCode, App->STR_DialCode,
App->LA_pbname, App->PA_pbname,
NULL);
DoMethod(App->WI_Settings,
MUIM_Window_SetCycleChain,
App->CY_DialMode,
App->SL_Length,
App->SL_Pause,
App->SL_AudioLR,
App->SL_Wait,
App->CH_system,
App->STR_system,
App->STR_DialCode,
App->PA_pbname,
App->BT_PrefSave,
0 );
}
else
{
DoMethod(App->GR_Settings,OM_REMMEMBER,App->LA_Length);
DoMethod(App->GR_Settings,OM_REMMEMBER,App->SL_Length);
DoMethod(App->GR_Settings,OM_REMMEMBER,App->LA_Pause);
DoMethod(App->GR_Settings,OM_REMMEMBER,App->SL_Pause);
DoMethod(App->GR_Settings,OM_REMMEMBER,App->LA_AudioLR);
DoMethod(App->GR_Settings,OM_REMMEMBER,App->SL_AudioLR);
DoMethod(App->GR_Settings,OM_REMMEMBER,App->LA_Wait);
DoMethod(App->GR_Settings,OM_REMMEMBER,App->SL_Wait);
DoMethod(App->GR_Settings,OM_ADDMEMBER,App->LA_device);
DoMethod(App->GR_Settings,OM_ADDMEMBER,App->GR_device);
DoMethod(App->GR_Settings,OM_ADDMEMBER,App->LA_HangUp);
DoMethod(App->GR_Settings,OM_ADDMEMBER,App->SL_HangUp);
DoMethod(App->GR_Settings,OM_ADDMEMBER,App->GR_voice);
DoMethod(App->GR_Settings,OM_ADDMEMBER,App->STR_voice);
DoMethod(App->GR_Settings,MUIM_Group_Sort,
App->LA_DialMode, App->CY_DialMode,
App->LA_device, App->GR_device,
App->LA_HangUp, App->SL_HangUp,
App->GR_voice, App->STR_voice,
App->obj_aux4, App->STR_system,
App->LA_DialCode, App->STR_DialCode,
App->LA_pbname, App->PA_pbname,
NULL);
DoMethod(App->WI_Settings,
MUIM_Window_SetCycleChain,
App->CY_DialMode,
App->STR_device,
App->STR_unit,
App->SL_HangUp,
App->CH_voice,
App->STR_voice,
App->CH_system,
App->STR_system,
App->STR_DialCode,
App->PA_pbname,
App->BT_PrefSave,
0 );
}
DoMethod(App->GR_Settings,MUIM_Group_ExitChange);
}
}
/* /// ----------------------------------------------------------------- */
/* ///------------------------------ "Func_BT_Remove" ------------------------------ */
APTR Func_BT_Remove(struct Hook *a0, APTR a2, APTR a1)
{
struct ObjApp *App =a0->h_Data;
char buf[12];
LONG entries;
get(App->LV_set,MUIA_List_Entries, &entries);
sprintf(buf,"%d",entries);
set(App->TX_NumEntries, MUIA_Text_Contents, buf);
}
/* /// ----------------------------------------------------------------- */
/* ///------------------------------ "Func_BT_CBC_Add" ------------------------------ */
APTR Func_BT_CBC_Add(struct Hook *a0, APTR a2, APTR a1)
{
struct ObjApp *App =a0->h_Data;
struct CallByCallEntry LE;
memset(&LE,0,sizeof(struct CallByCallEntry));
DoMethod(App->LV_CallByCall,MUIM_List_InsertSingle,&LE,MUIV_List_Insert_Bottom);
set(App->LV_CallByCall,MUIA_List_Active,MUIV_List_Active_Bottom);
set(App->WI_CallByCall, MUIA_Window_ActiveObject, App->STR_CBC_Pattern);
}
/* /// ----------------------------------------------------------------- */
/* ///------------------------------ "Func_STR_CBC_Pattern" ------------------------------ */
APTR Func_STR_CBC_Pattern(struct Hook *a0, APTR a2, APTR a1)
{
struct ObjApp *App =a0->h_Data;
LONG i;
struct CallByCallEntry *LE;
char *pattern;
/* get selected ListEntry */
get(App->LV_CallByCall, MUIA_List_Active, &i);
DoMethod(App->LV_CallByCall,MUIM_List_GetEntry,i,&LE);
if (!LE) return;
get(App->STR_CBC_Pattern, MUIA_String_Contents, &pattern);
if (strcmp(LE->Pattern,pattern)!=0)
{
/* change name */
strcpy(LE->Pattern,pattern);
/* redraw it */
DoMethod(App->LV_CallByCall,MUIM_List_Redraw,MUIV_List_Redraw_Active);
DoMethod(App->LV_CallByCall,MUIM_List_Sort);
CBCchanged=1;
}
}
/* /// ----------------------------------------------------------------- */
/* ///------------------------------ "Func_STR_CBC_Number" ------------------------------ */
APTR Func_STR_CBC_Number(struct Hook *a0, APTR a2, APTR a1)
{
struct ObjApp *App =a0->h_Data;
LONG i;
struct CallByCallEntry *LE;
char *number;
char buf[256];
/* get selected ListEntry */
get(App->LV_CallByCall, MUIA_List_Active, &i);
DoMethod(App->LV_CallByCall,MUIM_List_GetEntry,i,&LE);
if (!LE) return;
get(App->STR_CBC_Number, MUIA_String_Contents, &number);
if (strcmp(LE->Number,number)!=0)
{
/* change number */
strcpy(LE->Number,number);
/* redraw it */
DoMethod(App->LV_CallByCall,MUIM_List_Redraw,MUIV_List_Redraw_Active);
Get_CBC_Name(App, LE->Number, buf, 255);
set(App->TX_CBC_Name, MUIA_Text_Contents, buf);
CBCchanged=1;
}
}
/* /// ----------------------------------------------------------------- */
/* ///------------------------------ "Func_LV_CallByCall" ------------------------------ */
APTR Func_LV_CallByCall(struct Hook *a0, APTR a2, APTR a1)
{
struct ObjApp *App =a0->h_Data;
LONG i;
struct CallByCallEntry *LE;
struct Object *Obj;
char buf[256];
/* fill in Name and Number string gadgets,
when user selects entry in listview */
get(App->LV_CallByCall, MUIA_List_Active, &i);
DoMethod(App->LV_CallByCall,MUIM_List_GetEntry,i,&LE);
set(App->STR_CBC_Pattern, MUIA_String_Contents, LE->Pattern);
set(App->STR_CBC_Number, MUIA_String_Contents, LE->Number);
Get_CBC_Name(App, LE->Number, buf, 255);
set(App->TX_CBC_Name, MUIA_Text_Contents, buf);
}
/* /// ----------------------------------------------------------------- */
/* ///------------------------------ "Func_CBC_Load" ------------------------------ */
APTR Func_CBC_Load(struct Hook *a0, APTR a2, APTR a1)
{
struct ObjApp *App =a0->h_Data;
LoadCallByCallBook(App);
}
/* /// ----------------------------------------------------------------- */
/* ///------------------------------ "Func_CBC_Save" ------------------------------ */
APTR Func_CBC_Save(struct Hook *a0, APTR a2, APTR a1)
{
struct ObjApp *App =a0->h_Data;
SaveCallByCallBook(App);
}
/* /// ----------------------------------------------------------------- */
/* /// "Func_PO_CBC_ObjStr" */
APTR Func_PO_CBC_ObjStr( struct Hook *a0, Object *pop, Object *str )
{
struct CBCEntry *CBCE;
DoMethod(pop,MUIM_List_GetEntry,MUIV_List_GetEntry_Active,&CBCE);
if (strncmp(CBCE->Provider, "---", 3)!=0)
set(str,MUIA_String_Contents,CBCE->Number);
else
set(str,MUIA_String_Contents,"");
}
/* /// */
/* /// "Func_PO_CBC_Window" */
APTR Func_PO_CBC_Window( struct Hook *a0, Object *pop, Object *win )
{
set(win,MUIA_Window_DefaultObject,pop);
}
/* /// */
/* ///------------------------------ "Func_PO_CBC_Cons" ------------------------------ */
APTR Func_PO_CBC_Cons( struct Hook *a0, APTR a2, APTR a1 )
{
struct CBCEntry *CBCE = (struct CBCEntry*)malloc(sizeof(struct CBCEntry));
memcpy(CBCE, a1, sizeof(struct CBCEntry));
return CBCE;
}
/* /// ----------------------------------------------------------------- */
/* ///------------------------------ "Func_PO_CBC_Des" ------------------------------ */
APTR Func_PO_CBC_Des( struct Hook *a0, APTR a2, APTR a1 )
{
struct CBCEntry * CBCE = (struct CBCEntry*)a1;
free(CBCE);
}
/* /// ----------------------------------------------------------------- */
/* ///------------------------------ "Func_PO_CBC_Dspl" ------------------------------ */
APTR Func_PO_CBC_Dspl( struct Hook *a0, APTR a2, APTR a1 )
{
struct ObjApp *App =a0->h_Data;
struct CBCEntry * CBCE = (struct CBCEntry*)a1;
APTR *vec = a2;
if (CBCE)
{
if (strncmp(CBCE->Provider, "---", 3)==0)
{
*vec++="\eE";
*vec="\eE";
}
else
{
*vec++=CBCE->Provider;
*vec=CBCE->Number;
}
}
else
{
*vec++="Provider";
*vec="Number";
}
return NULL;
}
/* /// ----------------------------------------------------------------- */
/* /// "InsertCBC" */
int InsertCBC(struct ObjApp *App, char *number, int len)
/*
Arguments: App - Pointer to ObjectApp structure
number - string with number, CallByCall number will be
inserted into this string according to the
CallByCall settings
len - total size of number string
the number will be truncated, if it's to long!
*/
{
char buf[256];
int i;
LONG l;
get(App->MN_CBC_active, MUIA_Menuitem_Checked, &l);
if (!l) return 0;
for (i=0;;i++)
{
struct CallByCallEntry *LE;
DoMethod(App->LV_CallByCall,MUIM_List_GetEntry,i,&LE);
if (!LE) break;
if (strncmp(LE->Pattern, number, strlen(LE->Pattern))==0)
{
strncpy(buf, LE->Number, len);
strcat(buf, " ");
strncat(buf, number, len-strlen(LE->Number)-1);
strcpy(number, buf);
return 1;
}
}
return 0;
}
/* /// */
/* /// "Load_CBC_list" */
#define CUTNEWLINE(str) if (str[strlen(str)-1]=='\n') str[strlen(str)-1]='\0'
#define CBCDAT_NAME "PROGDIR:data/CallByCall.dat"
int Load_CBC_list(struct ObjApp *App)
{
BPTR f;
char line[256];
char number[32];
char name[256];
int i;
f=Open(CBCDAT_NAME, MODE_OLDFILE);
if (!f) return 0;
if (!FGets(f, line, 255)) { Close(f); return 0; }
if (strncmp(line, "Dial CallByCall Database",24)) { Close(f); return 0; }
while (FGets(f, line, 255))
{
struct CBCEntry CBCE;
CUTNEWLINE(line);
strcpy(number, "\0");
strcpy(name, "\0");
for (i=0; line[i]!=0 && line[i]!=';'; i++)
strncat(number, line+i, 1);
if (line[i]==';') i++;
for (; line[i]!=0; i++)
strncat(name, line+i, 1);
strcpy(CBCE.Number, number);
strcpy(CBCE.Provider, name);
DoMethod(App->LV_PO_CBC, MUIM_List_InsertSingle, &CBCE, MUIV_List_Insert_Bottom);
}
Close(f);
return 1;
}
/* /// */
/* /// "Get_CBC_Name" */
int Get_CBC_Name(struct ObjApp* App, char *number, char *name, int len)
{
int i;
if (len<=1) return 0;
strcpy(name, "\0");
for (i=0;;i++)
{
struct CBCEntry *CBCE;
DoMethod(App->LV_PO_CBC,MUIM_List_GetEntry,i,&CBCE);
if (!CBCE) break;
if (strcmp(CBCE->Number, number)==0)
{
strncpy(name, CBCE->Provider, len);
return 1;
}
}
return 0;
}
/* /// */