home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / Online / Dial / source / Extern.c < prev    next >
C/C++ Source or Header  |  2000-01-23  |  12KB  |  420 lines

  1. #include <utility/hooks.h>
  2. #include <libraries/mui.h>
  3. #include "GUI.h"
  4. #include "listhooks.h"
  5. #include "extern.h"
  6. #include "main.h"
  7.  
  8. extern int CBCchanged;
  9.  
  10. /* ///------------------------------ "Func_CY_DialMode" ------------------------------  */
  11. APTR Func_CY_DialMode(struct Hook *a0, APTR a2, APTR a1)
  12. {
  13.     struct ObjApp *App =a0->h_Data;
  14.     LONG DialMode;
  15.  
  16.     if (DoMethod(App->GR_Settings,MUIM_Group_InitChange))
  17.     {
  18.  
  19.         get(App->CY_DialMode, MUIA_Cycle_Active, &DialMode);
  20.  
  21.         if (DialMode==0)
  22.         {
  23.             DoMethod(App->GR_Settings,OM_REMMEMBER,App->LA_device);
  24.             DoMethod(App->GR_Settings,OM_REMMEMBER,App->GR_device);
  25.             DoMethod(App->GR_Settings,OM_REMMEMBER,App->LA_HangUp);
  26.             DoMethod(App->GR_Settings,OM_REMMEMBER,App->SL_HangUp);
  27.             DoMethod(App->GR_Settings,OM_REMMEMBER,App->GR_voice);
  28.             DoMethod(App->GR_Settings,OM_REMMEMBER,App->STR_voice);
  29.  
  30.             DoMethod(App->GR_Settings,OM_ADDMEMBER,App->LA_Length);
  31.             DoMethod(App->GR_Settings,OM_ADDMEMBER,App->SL_Length);
  32.             DoMethod(App->GR_Settings,OM_ADDMEMBER,App->LA_Pause);
  33.             DoMethod(App->GR_Settings,OM_ADDMEMBER,App->SL_Pause);
  34.             DoMethod(App->GR_Settings,OM_ADDMEMBER,App->LA_AudioLR);
  35.             DoMethod(App->GR_Settings,OM_ADDMEMBER,App->SL_AudioLR);
  36.             DoMethod(App->GR_Settings,OM_ADDMEMBER,App->LA_Wait);
  37.             DoMethod(App->GR_Settings,OM_ADDMEMBER,App->SL_Wait);
  38.  
  39.             DoMethod(App->GR_Settings,MUIM_Group_Sort,
  40.                 App->LA_DialMode, App->CY_DialMode,
  41.                 App->LA_Length, App->SL_Length,
  42.                 App->LA_Pause, App->SL_Pause,
  43.                 App->LA_AudioLR, App->SL_AudioLR,
  44.                 App->LA_Wait, App->SL_Wait,
  45.                 App->obj_aux4, App->STR_system,
  46.                 App->LA_DialCode, App->STR_DialCode,
  47.                 App->LA_pbname, App->PA_pbname,
  48.                 NULL);
  49.  
  50.             DoMethod(App->WI_Settings,
  51.                 MUIM_Window_SetCycleChain,
  52.                 App->CY_DialMode,
  53.                 App->SL_Length,
  54.                 App->SL_Pause,
  55.                 App->SL_AudioLR,
  56.                 App->SL_Wait,
  57.                 App->CH_system,
  58.                 App->STR_system,
  59.                 App->STR_DialCode,
  60.                 App->PA_pbname,
  61.                 App->BT_PrefSave,
  62.                 0 );
  63.         }
  64.         else
  65.         {
  66.             DoMethod(App->GR_Settings,OM_REMMEMBER,App->LA_Length);
  67.             DoMethod(App->GR_Settings,OM_REMMEMBER,App->SL_Length);
  68.             DoMethod(App->GR_Settings,OM_REMMEMBER,App->LA_Pause);
  69.             DoMethod(App->GR_Settings,OM_REMMEMBER,App->SL_Pause);
  70.             DoMethod(App->GR_Settings,OM_REMMEMBER,App->LA_AudioLR);
  71.             DoMethod(App->GR_Settings,OM_REMMEMBER,App->SL_AudioLR);
  72.             DoMethod(App->GR_Settings,OM_REMMEMBER,App->LA_Wait);
  73.             DoMethod(App->GR_Settings,OM_REMMEMBER,App->SL_Wait);
  74.             
  75.             DoMethod(App->GR_Settings,OM_ADDMEMBER,App->LA_device);
  76.             DoMethod(App->GR_Settings,OM_ADDMEMBER,App->GR_device);
  77.             DoMethod(App->GR_Settings,OM_ADDMEMBER,App->LA_HangUp);
  78.             DoMethod(App->GR_Settings,OM_ADDMEMBER,App->SL_HangUp);
  79.             DoMethod(App->GR_Settings,OM_ADDMEMBER,App->GR_voice);
  80.             DoMethod(App->GR_Settings,OM_ADDMEMBER,App->STR_voice);
  81.  
  82.             DoMethod(App->GR_Settings,MUIM_Group_Sort,
  83.                 App->LA_DialMode, App->CY_DialMode,
  84.                 App->LA_device, App->GR_device,
  85.                 App->LA_HangUp, App->SL_HangUp,
  86.                 App->GR_voice, App->STR_voice,
  87.                 App->obj_aux4, App->STR_system,
  88.                 App->LA_DialCode, App->STR_DialCode,
  89.                 App->LA_pbname, App->PA_pbname,
  90.                 NULL);
  91.  
  92.  
  93.             DoMethod(App->WI_Settings,
  94.                 MUIM_Window_SetCycleChain,
  95.                 App->CY_DialMode,
  96.                 App->STR_device,
  97.                 App->STR_unit,
  98.                 App->SL_HangUp,
  99.                 App->CH_voice,
  100.                 App->STR_voice,
  101.                 App->CH_system,
  102.                 App->STR_system,
  103.                 App->STR_DialCode,
  104.                 App->PA_pbname,
  105.                 App->BT_PrefSave,
  106.                 0 );
  107.  
  108.  
  109.         }
  110.  
  111.        DoMethod(App->GR_Settings,MUIM_Group_ExitChange);
  112.     }
  113. }
  114. /* /// ----------------------------------------------------------------- */
  115.  
  116. /* ///------------------------------ "Func_BT_Remove" ------------------------------  */
  117. APTR Func_BT_Remove(struct Hook *a0, APTR a2, APTR a1)
  118. {
  119.     struct ObjApp *App =a0->h_Data;
  120.     char buf[12];
  121.     LONG entries;
  122.  
  123.     get(App->LV_set,MUIA_List_Entries, &entries);
  124.     sprintf(buf,"%d",entries);
  125.     set(App->TX_NumEntries, MUIA_Text_Contents, buf);
  126. }
  127. /* /// ----------------------------------------------------------------- */
  128. /* ///------------------------------ "Func_BT_CBC_Add" ------------------------------  */
  129. APTR Func_BT_CBC_Add(struct Hook *a0, APTR a2, APTR a1)
  130. {
  131.     struct ObjApp *App =a0->h_Data;
  132.     struct CallByCallEntry LE;
  133.     
  134.     memset(&LE,0,sizeof(struct CallByCallEntry));
  135.     DoMethod(App->LV_CallByCall,MUIM_List_InsertSingle,&LE,MUIV_List_Insert_Bottom);
  136.     set(App->LV_CallByCall,MUIA_List_Active,MUIV_List_Active_Bottom);
  137.     set(App->WI_CallByCall, MUIA_Window_ActiveObject, App->STR_CBC_Pattern);
  138. }
  139. /* /// ----------------------------------------------------------------- */
  140.  
  141. /* ///------------------------------ "Func_STR_CBC_Pattern" ------------------------------  */
  142. APTR Func_STR_CBC_Pattern(struct Hook *a0, APTR a2, APTR a1)
  143. {
  144.     struct ObjApp *App =a0->h_Data;
  145.     LONG i;
  146.     struct CallByCallEntry *LE;
  147.     char *pattern;
  148.  
  149.         /* get selected ListEntry */
  150.     get(App->LV_CallByCall, MUIA_List_Active, &i);
  151.     DoMethod(App->LV_CallByCall,MUIM_List_GetEntry,i,&LE);
  152.  
  153.     if (!LE) return;
  154.  
  155.     get(App->STR_CBC_Pattern, MUIA_String_Contents, &pattern);
  156.  
  157.     if (strcmp(LE->Pattern,pattern)!=0)
  158.     {
  159.         /* change name */
  160.         strcpy(LE->Pattern,pattern);
  161.         /* redraw it */
  162.         DoMethod(App->LV_CallByCall,MUIM_List_Redraw,MUIV_List_Redraw_Active);
  163.         DoMethod(App->LV_CallByCall,MUIM_List_Sort);
  164.         CBCchanged=1;
  165.     }
  166. }
  167. /* /// ----------------------------------------------------------------- */
  168. /* ///------------------------------ "Func_STR_CBC_Number" ------------------------------  */
  169. APTR Func_STR_CBC_Number(struct Hook *a0, APTR a2, APTR a1)
  170. {
  171.     struct ObjApp *App =a0->h_Data;
  172.     LONG i;
  173.     struct CallByCallEntry *LE;
  174.     char *number;
  175.     char buf[256];
  176.  
  177.         /* get selected ListEntry */
  178.     get(App->LV_CallByCall, MUIA_List_Active, &i);
  179.     DoMethod(App->LV_CallByCall,MUIM_List_GetEntry,i,&LE);
  180.  
  181.     if (!LE) return;
  182.  
  183.     get(App->STR_CBC_Number, MUIA_String_Contents, &number);
  184.  
  185.     if (strcmp(LE->Number,number)!=0)
  186.     {
  187.             /* change number */
  188.         strcpy(LE->Number,number);
  189.             /* redraw it */
  190.         DoMethod(App->LV_CallByCall,MUIM_List_Redraw,MUIV_List_Redraw_Active);
  191.  
  192.         Get_CBC_Name(App, LE->Number, buf, 255);
  193.         set(App->TX_CBC_Name, MUIA_Text_Contents, buf);
  194.  
  195.         CBCchanged=1;
  196.     }
  197. }
  198. /* /// ----------------------------------------------------------------- */
  199. /* ///------------------------------ "Func_LV_CallByCall" ------------------------------  */
  200. APTR Func_LV_CallByCall(struct Hook *a0, APTR a2, APTR a1)
  201. {
  202.     struct ObjApp *App =a0->h_Data;
  203.     LONG i;
  204.     struct CallByCallEntry *LE;
  205.     struct Object *Obj;
  206.     char buf[256];
  207.  
  208.     /* fill in Name and Number string gadgets,
  209.        when user selects entry in listview */
  210.     get(App->LV_CallByCall, MUIA_List_Active, &i);
  211.     DoMethod(App->LV_CallByCall,MUIM_List_GetEntry,i,&LE);
  212.     set(App->STR_CBC_Pattern, MUIA_String_Contents, LE->Pattern);
  213.     set(App->STR_CBC_Number, MUIA_String_Contents, LE->Number);
  214.  
  215.     Get_CBC_Name(App, LE->Number, buf, 255);
  216.     set(App->TX_CBC_Name, MUIA_Text_Contents, buf);
  217.  
  218. }
  219. /* /// ----------------------------------------------------------------- */
  220.  
  221. /* ///------------------------------ "Func_CBC_Load" ------------------------------  */
  222. APTR Func_CBC_Load(struct Hook *a0, APTR a2, APTR a1)
  223. {
  224.     struct ObjApp *App =a0->h_Data;
  225.  
  226.     LoadCallByCallBook(App);
  227. }
  228. /* /// ----------------------------------------------------------------- */
  229. /* ///------------------------------ "Func_CBC_Save" ------------------------------  */
  230. APTR Func_CBC_Save(struct Hook *a0, APTR a2, APTR a1)
  231. {
  232.     struct ObjApp *App =a0->h_Data;
  233.  
  234.     SaveCallByCallBook(App);
  235. }
  236. /* /// ----------------------------------------------------------------- */
  237.  
  238. /* /// "Func_PO_CBC_ObjStr"  */
  239. APTR Func_PO_CBC_ObjStr( struct Hook *a0, Object *pop, Object *str )
  240. {
  241.     struct CBCEntry *CBCE;
  242.  
  243.     DoMethod(pop,MUIM_List_GetEntry,MUIV_List_GetEntry_Active,&CBCE);
  244.  
  245.     if (strncmp(CBCE->Provider, "---", 3)!=0)
  246.         set(str,MUIA_String_Contents,CBCE->Number);
  247.     else
  248.         set(str,MUIA_String_Contents,"");
  249.  
  250. }
  251. /* /// */
  252. /* /// "Func_PO_CBC_Window"  */
  253. APTR Func_PO_CBC_Window( struct Hook *a0, Object *pop, Object *win )
  254. {
  255.     set(win,MUIA_Window_DefaultObject,pop);
  256. }
  257. /* /// */
  258.  
  259. /* ///------------------------------ "Func_PO_CBC_Cons" ------------------------------  */
  260. APTR Func_PO_CBC_Cons( struct Hook *a0, APTR a2, APTR a1 )
  261. {
  262.     struct CBCEntry *CBCE = (struct CBCEntry*)malloc(sizeof(struct CBCEntry));
  263.  
  264.     memcpy(CBCE, a1, sizeof(struct CBCEntry));
  265.  
  266.     return CBCE;
  267. }
  268. /* /// ----------------------------------------------------------------- */
  269. /* ///------------------------------ "Func_PO_CBC_Des" ------------------------------  */
  270. APTR Func_PO_CBC_Des( struct Hook *a0, APTR a2, APTR a1 )
  271. {
  272.     struct CBCEntry * CBCE = (struct CBCEntry*)a1;
  273.     free(CBCE);
  274. }
  275. /* /// ----------------------------------------------------------------- */
  276. /* ///------------------------------ "Func_PO_CBC_Dspl" ------------------------------  */
  277. APTR Func_PO_CBC_Dspl( struct Hook *a0, APTR a2, APTR a1 )
  278. {
  279.     struct ObjApp *App =a0->h_Data;
  280.  
  281.     struct CBCEntry * CBCE = (struct CBCEntry*)a1;
  282.     APTR *vec = a2;
  283.  
  284.     if (CBCE)
  285.     {
  286.         if (strncmp(CBCE->Provider, "---", 3)==0)
  287.         {
  288.             *vec++="\eE";
  289.             *vec="\eE";
  290.         }
  291.         else
  292.         {
  293.             *vec++=CBCE->Provider;
  294.             *vec=CBCE->Number;
  295.         }
  296.     }
  297.     else
  298.     {
  299.         *vec++="Provider";
  300.         *vec="Number";
  301.     }
  302.  
  303.     return NULL;
  304. }
  305. /* /// ----------------------------------------------------------------- */
  306.  
  307. /* /// "InsertCBC"  */
  308. int InsertCBC(struct ObjApp *App, char *number, int len)
  309. /*
  310.     Arguments:  App    - Pointer to ObjectApp structure
  311.                 number - string with number, CallByCall number will be
  312.                           inserted into this string according to the
  313.                          CallByCall settings
  314.                 len       - total size of number string
  315.                          the number will be truncated, if it's to long!
  316. */
  317. {
  318.      char buf[256];
  319.     int i;
  320.     LONG l;
  321.  
  322.     get(App->MN_CBC_active, MUIA_Menuitem_Checked, &l);
  323.     if (!l) return 0;
  324.  
  325.  
  326.  
  327.     for (i=0;;i++)
  328.     {
  329.         struct CallByCallEntry *LE;
  330.  
  331.         DoMethod(App->LV_CallByCall,MUIM_List_GetEntry,i,&LE);
  332.         if (!LE) break;
  333.  
  334.         if (strncmp(LE->Pattern, number, strlen(LE->Pattern))==0)
  335.         {
  336.             strncpy(buf, LE->Number, len);
  337.             strcat(buf, " ");
  338.             strncat(buf, number, len-strlen(LE->Number)-1);
  339.  
  340.             strcpy(number, buf);
  341.             return 1;
  342.         }
  343.     }
  344.  
  345.     return 0;
  346. }
  347. /* /// */
  348.  
  349. /* /// "Load_CBC_list"  */
  350. #define  CUTNEWLINE(str) if (str[strlen(str)-1]=='\n') str[strlen(str)-1]='\0'
  351. #define CBCDAT_NAME "PROGDIR:data/CallByCall.dat"
  352.  
  353. int Load_CBC_list(struct ObjApp *App)
  354. {
  355.      BPTR f;
  356.     char line[256];
  357.     char number[32];
  358.     char name[256];
  359.     int i;
  360.  
  361.     f=Open(CBCDAT_NAME, MODE_OLDFILE);
  362.     if (!f) return 0;
  363.  
  364.     if (!FGets(f, line, 255)) { Close(f); return 0; }
  365.     if (strncmp(line, "Dial CallByCall Database",24)) { Close(f); return 0; }
  366.  
  367.     while (FGets(f, line, 255))
  368.     {
  369.         struct CBCEntry CBCE;
  370.  
  371.         CUTNEWLINE(line);
  372.  
  373.         strcpy(number, "\0");
  374.         strcpy(name, "\0");
  375.         for (i=0; line[i]!=0 && line[i]!=';'; i++)
  376.             strncat(number, line+i, 1);
  377.         if (line[i]==';') i++;
  378.         for (; line[i]!=0; i++)
  379.             strncat(name, line+i, 1);
  380.  
  381.         strcpy(CBCE.Number, number);
  382.         strcpy(CBCE.Provider, name);
  383.  
  384.         DoMethod(App->LV_PO_CBC, MUIM_List_InsertSingle, &CBCE, MUIV_List_Insert_Bottom);
  385.     }
  386.  
  387.     Close(f);
  388.  
  389.     return 1;
  390. }
  391. /* /// */
  392.  
  393. /* /// "Get_CBC_Name"  */
  394. int Get_CBC_Name(struct ObjApp* App, char *number, char *name, int len)
  395. {
  396.     int i;
  397.  
  398.     if (len<=1) return 0;
  399.     strcpy(name, "\0");
  400.  
  401.     for (i=0;;i++)
  402.     {
  403.         struct CBCEntry *CBCE;
  404.  
  405.         DoMethod(App->LV_PO_CBC,MUIM_List_GetEntry,i,&CBCE);
  406.         if (!CBCE) break;
  407.  
  408.          if (strcmp(CBCE->Number, number)==0)
  409.         {
  410.             strncpy(name, CBCE->Provider, len);
  411.             return 1;
  412.         }
  413.     }
  414.  
  415.     return 0;
  416. }
  417. /* /// */
  418.  
  419.  
  420.