home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / comm / term23_2.lha / Source_Code / termSource / PhonePanel.c < prev    next >
C/C++ Source or Header  |  1992-08-19  |  37KB  |  1,387 lines

  1. /*
  2. **    $Id: PhonePanel.c,v 1.12 92/08/15 20:13:04 olsen Sta Locker: olsen $
  3. **    $Revision: 1.12 $
  4. **    $Date: 92/08/15 20:13:04 $
  5. **
  6. **    The phonebook and support routines
  7. **
  8. **    Copyright © 1990-1992 by Olaf `Olsen' Barthel & MXM
  9. **        All Rights Reserved
  10. */
  11.  
  12. #include "termGlobal.h"
  13.  
  14. enum    {    GAD_NAMELIST,GAD_NAME,GAD_PHONENUMBER,
  15.         GAD_NEWENTRY,GAD_DIALLIST,GAD_LOADLIST,
  16.         GAD_CLONEENTRY,GAD_CLEARLIST,GAD_SORTLIST,
  17.         GAD_REMOVEENTRY,GAD_PLAYNUMBER,GAD_SAVELIST,
  18.         GAD_COPYCONFIG,GAD_USEIT,GAD_PASSWORD,GAD_EDIT };
  19.  
  20. enum    {    EDIT_SERIAL,EDIT_MODEM,EDIT_TRANSFER,EDIT_SCREEN,EDIT_TERMINAL,
  21.         EDIT_COMMANDS,EDIT_UNITS,EDIT_MISC,EDIT_PATHS,EDIT_KEYMACROS,
  22.         EDIT_FASTMACROS,EDIT_PASSWORD,EDIT_COPY };
  23.  
  24. STATIC struct List    EditList;
  25. STATIC struct Node    EditNode[13];
  26.  
  27. STATIC UBYTE *EditName[13] =
  28. {
  29.     NULL,
  30.     NULL,
  31.     NULL,
  32.     NULL,
  33.     NULL,
  34.     NULL,
  35.     NULL,
  36.     NULL,
  37.     NULL,
  38.     NULL,
  39.     NULL,
  40.     NULL,
  41.     NULL
  42. };
  43.  
  44. STATIC struct Gadget *
  45. CreateAllGadgets(struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  46. {
  47.     struct Gadget        *Gadget;
  48.     struct NewGadget     NewGadget;
  49.     UWORD             Counter = 0;
  50.  
  51.     LocalizeString(EditName,MSG_PHONEPANEL_SERIAL_TXT,MSG_PHONEPANEL_PASSWORD_USER_TXT);
  52.  
  53.     memset(&NewGadget,0,sizeof(struct NewGadget));
  54.  
  55.     SZ_SizeSetup(Screen,&UserFont,TRUE);
  56.  
  57.     if(Gadget = CreateContext(GadgetList))
  58.     {
  59.         WORD i,Max,Len,ButtonWidth,MaxWidth,LeftEdge;
  60.  
  61.         NewList(&EditList);
  62.  
  63.         for(i = 0 ; i < 12 ; i++)
  64.         {
  65.             EditNode[i] . ln_Name = EditName[i];
  66.  
  67.             AddTail(&EditList,&EditNode[i]);
  68.         }
  69.  
  70.         SZ_ResetMaxWidth();
  71.  
  72.         for(i = MSG_PHONEPANEL_PLAY_NUMBER_GAD ; i <= MSG_PHONEPANEL_SET_PASSWORT_GAD ; i++)
  73.             SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(i),0,NULL);
  74.  
  75.         ButtonWidth = SZ_ResetMaxWidth();
  76.  
  77.         MaxWidth = 3 * ButtonWidth + 2 * INTERWIDTH;
  78.  
  79.         Max = SZ_TextWidth(LocaleString(MSG_PHONEPANEL_PHONE_NUMBER_GAD));
  80.  
  81.         if((Len = SZ_TextWidth(LocaleString(MSG_PHONEPANEL_BBS_NAME_GAD))) > Max)
  82.             Max = Len;
  83.  
  84.         if((Len = SZ_TextWidth(LocaleString(MSG_GLOBAL_NAME_LIST_GAD))) > Max)
  85.             Max = Len;
  86.  
  87.         SZ_AddLeftOffset(Max + INTERWIDTH);
  88.  
  89.         LeftEdge = SZ_GetLeftEdge();
  90.  
  91.         if(SZ_Width(LISTVIEW_KIND,NULL,35,NULL) > MaxWidth)
  92.             MaxWidth = SZ_Width(LISTVIEW_KIND,NULL,35,NULL);
  93.  
  94.         SZ_SetWidth(MaxWidth);
  95.  
  96.         NewGadget . ng_TextAttr        = &UserFont;
  97.         NewGadget . ng_VisualInfo    = VisualInfo;
  98.         NewGadget . ng_Flags        = PLACETEXT_LEFT;
  99.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_NAME_LIST_GAD);
  100.         NewGadget . ng_GadgetID        = Counter;
  101.  
  102.         GadgetArray[Counter++] = Gadget = CreateGadget(LISTVIEW_KIND,Gadget,&NewGadget,
  103.             SZ_Adjust,        TRUE,
  104.             SZ_AutoWidth,        TRUE,
  105.             SZ_Lines,        10,
  106.  
  107.             GT_Underscore,        '_',
  108.         TAG_DONE);
  109.  
  110.         SZ_SetTopEdge(SZ_GetTopEdge() - 2 * InterHeight);
  111.  
  112.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_BBS_NAME_GAD);
  113.         NewGadget . ng_GadgetID        = Counter;
  114.  
  115.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  116.             SZ_Adjust,    TRUE,
  117.             SZ_AutoWidth,    TRUE,
  118.  
  119.             GTST_MaxChars,    29,
  120.             GTST_EditHook,    &CommandHook,
  121.             GA_Disabled,    TRUE,
  122.             GA_Immediate,    TRUE,
  123.             GT_Underscore,        '_',
  124.         TAG_DONE);
  125.  
  126.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_PHONE_NUMBER_GAD);
  127.         NewGadget . ng_GadgetID        = Counter;
  128.  
  129.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  130.             SZ_Adjust,    TRUE,
  131.             SZ_AutoWidth,    TRUE,
  132.  
  133.             GTST_MaxChars,    49,
  134.             GTST_EditHook,    &CommandHook,
  135.             GA_Disabled,    TRUE,
  136.             GA_Immediate,    TRUE,
  137.             GT_Underscore,        '_',
  138.         TAG_DONE);
  139.  
  140.  
  141.         SZ_SetWidth(ButtonWidth);
  142.  
  143.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_NEW_ENTRY_GAD);
  144.         NewGadget . ng_GadgetID        = Counter;
  145.         NewGadget . ng_Flags        = PLACETEXT_IN;
  146.  
  147.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  148.             SZ_Adjust,    TRUE,
  149.             SZ_AutoWidth,    TRUE,
  150.             SZ_AlignBottom,    TRUE,
  151.             SZ_GroupCount,    3,
  152.             SZ_UseLeft,    LeftEdge,
  153.  
  154.             GT_Underscore,    '_',
  155.         TAG_DONE);
  156.  
  157.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_DIAL_LIST_GAD);
  158.         NewGadget . ng_GadgetID        = Counter;
  159.  
  160.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  161.             SZ_Adjust,    TRUE,
  162.             SZ_AutoWidth,    TRUE,
  163.             SZ_GroupNext,    TRUE,
  164.  
  165.             GT_Underscore,    '_',
  166.             GA_Disabled,    TRUE,
  167.         TAG_DONE);
  168.  
  169.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_LOAD_LIST_GAD);
  170.         NewGadget . ng_GadgetID        = Counter;
  171.  
  172.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  173.             SZ_Adjust,    TRUE,
  174.             SZ_AutoWidth,    TRUE,
  175.             SZ_GroupNext,    TRUE,
  176.  
  177.             GT_Underscore,    '_',
  178.             GA_Disabled,    (Online && ChosenEntry),
  179.         TAG_DONE);
  180.  
  181.  
  182.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_CLONE_ENTRY_GAD);
  183.         NewGadget . ng_GadgetID        = Counter;
  184.  
  185.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  186.             SZ_Adjust,    TRUE,
  187.             SZ_AutoWidth,    TRUE,
  188.             SZ_AlignBottom,    TRUE,
  189.             SZ_GroupCount,    3,
  190.             SZ_UseLeft,    LeftEdge,
  191.  
  192.             GT_Underscore,    '_',
  193.             GA_Disabled,    TRUE,
  194.         TAG_DONE);
  195.  
  196.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_CLEAR_LIST_GAD);
  197.         NewGadget . ng_GadgetID        = Counter;
  198.  
  199.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  200.             SZ_Adjust,    TRUE,
  201.             SZ_AutoWidth,    TRUE,
  202.             SZ_GroupNext,    TRUE,
  203.  
  204.             GT_Underscore,    '_',
  205.             GA_Disabled,    TRUE,
  206.         TAG_DONE);
  207.  
  208.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_SORT_LIST_GAD);
  209.         NewGadget . ng_GadgetID        = Counter;
  210.  
  211.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  212.             SZ_Adjust,    TRUE,
  213.             SZ_AutoWidth,    TRUE,
  214.             SZ_GroupNext,    TRUE,
  215.  
  216.             GT_Underscore,    '_',
  217.             GA_Disabled,    TRUE,
  218.         TAG_DONE);
  219.  
  220.  
  221.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_REMOVE_ENTRY_GAD);
  222.         NewGadget . ng_GadgetID        = Counter;
  223.  
  224.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  225.             SZ_Adjust,    TRUE,
  226.             SZ_AutoWidth,    TRUE,
  227.             SZ_AlignBottom,    TRUE,
  228.             SZ_GroupCount,    3,
  229.             SZ_UseLeft,    LeftEdge,
  230.  
  231.             GT_Underscore,    '_',
  232.             GA_Disabled,    TRUE,
  233.         TAG_DONE);
  234.  
  235.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_PLAY_NUMBER_GAD);
  236.         NewGadget . ng_GadgetID        = Counter;
  237.  
  238.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  239.             SZ_Adjust,    TRUE,
  240.             SZ_AutoWidth,    TRUE,
  241.             SZ_GroupNext,    TRUE,
  242.  
  243.             GT_Underscore,    '_',
  244.             GA_Disabled,    TRUE,
  245.         TAG_DONE);
  246.  
  247.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_SAVE_LIST_GAD);
  248.         NewGadget . ng_GadgetID        = Counter;
  249.  
  250.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  251.             SZ_Adjust,    TRUE,
  252.             SZ_AutoWidth,    TRUE,
  253.             SZ_GroupNext,    TRUE,
  254.  
  255.             GT_Underscore,    '_',
  256.             GA_Disabled,    TRUE,
  257.         TAG_DONE);
  258.  
  259.  
  260.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_COPY_CONFIG_GAD);
  261.         NewGadget . ng_GadgetID        = Counter;
  262.  
  263.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  264.             SZ_Adjust,    TRUE,
  265.             SZ_AutoWidth,    TRUE,
  266.             SZ_AlignBottom,    TRUE,
  267.             SZ_GroupCount,    3,
  268.             SZ_UseLeft,    LeftEdge,
  269.  
  270.             GT_Underscore,    '_',
  271.         TAG_DONE);
  272.  
  273.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_USE_ENTRY_GAD);
  274.         NewGadget . ng_GadgetID        = Counter;
  275.  
  276.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  277.             SZ_Adjust,    TRUE,
  278.             SZ_AutoWidth,    TRUE,
  279.             SZ_GroupNext,    TRUE,
  280.  
  281.             GT_Underscore,    '_',
  282.             GA_Disabled,    TRUE,
  283.         TAG_DONE);
  284.  
  285.         NewGadget . ng_GadgetText    = LocaleString(MSG_PHONEPANEL_SET_PASSWORT_GAD);
  286.         NewGadget . ng_GadgetID        = Counter;
  287.  
  288.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  289.             SZ_Adjust,    TRUE,
  290.             SZ_AutoWidth,    TRUE,
  291.             SZ_GroupNext,    TRUE,
  292.  
  293.             GT_Underscore,    '_',
  294.             GA_Disabled,    TRUE,
  295.         TAG_DONE);
  296.  
  297.  
  298.         NewGadget . ng_GadgetText    = "";
  299.         NewGadget . ng_GadgetID        = Counter;
  300.         NewGadget . ng_Flags        = 0;
  301.  
  302.         GadgetArray[Counter++] = Gadget = CreateGadget(LISTVIEW_KIND,Gadget,&NewGadget,
  303.             SZ_Adjust,    TRUE,
  304.             SZ_NewColumn,    TRUE,
  305.             SZ_FullHeight,    TRUE,
  306.  
  307. /*            GA_Disabled,    TRUE,*/
  308.             GTLV_Labels,    &EditList,
  309.         TAG_DONE);
  310.     }
  311.  
  312.     return(Gadget);
  313. }
  314.  
  315. BYTE
  316. PhonePanel()
  317. {
  318.     STATIC WORD     OffsetX = -1,OffsetY = -1;
  319.  
  320.     struct Window    *PanelWindow;
  321.     struct Gadget    *GadgetList = NULL;
  322.     struct Gadget    *GadgetArray[GAD_EDIT + 1];
  323.  
  324.     ULONG         Sec1,Mic1,Sec2,Mic2;
  325.     LONG         HitItem = -1;
  326.  
  327.     if(CreateAllGadgets(&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  328.     {
  329.         if(PanelWindow = OpenWindowTags(NULL,
  330.             WA_Left,    (Screen -> Width    - SZ_GetWindowWidth())    / 2,
  331.             WA_Top,        (Screen -> Height    - SZ_GetWindowHeight())    / 2,
  332.             WA_Width,    SZ_GetWindowWidth(),
  333.             WA_Height,    SZ_GetWindowHeight(),
  334.  
  335.             WA_Activate,    TRUE,
  336.             WA_DragBar,    TRUE,
  337.             WA_DepthGadget,    TRUE,
  338.             WA_RMBTrap,    TRUE,
  339.             WA_DepthGadget,    TRUE,
  340.             WA_CloseGadget,    TRUE,
  341.             WA_CustomScreen,Screen,
  342.  
  343.             WA_IDCMP,    IDCMP_GADGETDOWN | IDCMP_ACTIVEWINDOW | IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY | STRINGIDCMP | BUTTONIDCMP | LISTVIEWIDCMP,
  344.  
  345.             WA_Title,    LocaleString(MSG_PHONEPANEL_PHONEBOOK_TXT),
  346.         TAG_DONE))
  347.         {
  348.             struct IntuiMessage    *Massage;
  349.             ULONG             Class,Code;
  350.             struct Gadget        *Gadget;
  351.             BYTE             Terminated = FALSE;
  352.  
  353.             UBYTE             DummyBuffer[256],*DummyChar;
  354.  
  355.             LONG             Selected = ~0,
  356.                          Count = -1,i;
  357.             struct List        *PhoneList = NULL;
  358.             struct PhoneNode    *TempNode;
  359.  
  360.             struct FileRequest    *FileRequest;
  361.  
  362.             PushWindow(PanelWindow);
  363.  
  364.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  365.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  366.             GT_RefreshWindow(PanelWindow,NULL);
  367.  
  368.             if(Phonebook && NumPhoneEntries)
  369.             {
  370.                 if(PhoneList = CreatePhoneList())
  371.                 {
  372.                     GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  373.                         GTLV_Labels,PhoneList,
  374.                     TAG_DONE);
  375.  
  376.                     if(PhoneList -> lh_Head -> ln_Succ)
  377.                     {
  378.                         GT_SetGadgetAttrs(GadgetArray[GAD_SAVELIST],PanelWindow,NULL,
  379.                             GA_Disabled,    FALSE,
  380.                         TAG_DONE);
  381.  
  382.                         GT_SetGadgetAttrs(GadgetArray[GAD_PASSWORD],PanelWindow,NULL,
  383.                             GA_Disabled,    FALSE,
  384.                         TAG_DONE);
  385.  
  386.                         if(PhoneList -> lh_Head -> ln_Succ -> ln_Succ)
  387.                         {
  388.                             GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
  389.                                 GA_Disabled,    FALSE,
  390.                             TAG_DONE);
  391.                         }
  392.                     }
  393.                 }
  394.             }
  395.  
  396.             ActiveGadget = NULL;
  397.  
  398.             FreeDialList();
  399.  
  400.             for(i = 0 ; i < NumPhoneEntries ; i++)
  401.             {
  402.                 if(Phonebook[i] -> Count > Count)
  403.                     Count = Phonebook[i] -> Count;
  404.             }
  405.  
  406.             Count++;
  407.  
  408.             if(Count)
  409.             {
  410.                 if(!Online)
  411.                 {
  412.                     GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
  413.                         GA_Disabled,    FALSE,
  414.                     TAG_DONE);
  415.                 }
  416.  
  417.                 GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
  418.                     GA_Disabled,    FALSE,
  419.                 TAG_DONE);
  420.             }
  421.  
  422.             while(!Terminated)
  423.             {
  424.                 WaitPort(PanelWindow -> UserPort);
  425.  
  426.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  427.                 {
  428.                     Class    = Massage -> Class;
  429.                     Code    = Massage -> Code;
  430.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  431.  
  432.                     GT_ReplyIMsg(Massage);
  433.  
  434.                     if(Class == IDCMP_VANILLAKEY)
  435.                     {
  436.                         switch(Code)
  437.                         {
  438.                             case ' ':    if(Selected != -1)
  439.                                     {
  440.                                         HitItem = -1;
  441.  
  442.                                         GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  443.                                             GTLV_Labels,    ~0,
  444.                                         TAG_DONE);
  445.  
  446.                                         if(Phonebook[Selected] -> Count == -1)
  447.                                         {
  448.                                             if(!Count)
  449.                                             {
  450.                                                 if(!Online)
  451.                                                 {
  452.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
  453.                                                         GA_Disabled,    FALSE,
  454.                                                     TAG_DONE);
  455.                                                 }
  456.  
  457.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
  458.                                                     GA_Disabled,    FALSE,
  459.                                                 TAG_DONE);
  460.                                             }
  461.  
  462.                                             Phonebook[Selected] -> Count = Count++;
  463.  
  464.                                             SPrintf(Phonebook[Selected] -> Node -> LocalName,"%3ld - %s",Count,Phonebook[Selected] -> Name);
  465.                                         }
  466.                                         else
  467.                                         {
  468.                                             RemoveDialEntry(Selected);
  469.  
  470.                                             if(!(--Count))
  471.                                             {
  472.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
  473.                                                     GA_Disabled,    TRUE,
  474.                                                 TAG_DONE);
  475.  
  476.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
  477.                                                     GA_Disabled,    TRUE,
  478.                                                 TAG_DONE);
  479.                                             }
  480.                                         }
  481.  
  482.                                         GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  483.                                             GTLV_Labels,    PhoneList,
  484.                                         TAG_DONE);
  485.                                     }
  486.  
  487.                                     break;
  488.  
  489.                             default:        KeySelect(GadgetArray,GAD_PASSWORD,Code,PanelWindow,&Gadget,&Class,&Code);
  490.                                     break;
  491.                         }
  492.                                         }
  493.  
  494.                     if(Class == IDCMP_GADGETDOWN)
  495.                     {
  496.                         if((Gadget -> GadgetType & GTYP_GTYPEMASK) == GTYP_STRGADGET)
  497.                             ActiveGadget = Gadget;
  498.                     }
  499.  
  500.                     if(Class == IDCMP_ACTIVEWINDOW && ActiveGadget)
  501.                         ActivateGadget(ActiveGadget,PanelWindow,NULL);
  502.  
  503.                     if(Class == IDCMP_CLOSEWINDOW)
  504.                     {
  505.                         FreeDialList();
  506.  
  507.                         Terminated = TRUE;
  508.                     }
  509.  
  510.                     if(Class == IDCMP_GADGETUP)
  511.                     {
  512.                         switch(Gadget -> GadgetID)
  513.                         {
  514.                             case GAD_NAMELIST:
  515.  
  516.                                     if(HitItem != Code)
  517.                                     {
  518.                                         HitItem = Code;
  519.  
  520.                                         CurrentTime(&Sec1,&Mic1);
  521.  
  522.                                         GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
  523.                                             GTST_String,    Phonebook[Code] -> Name,
  524.                                             GA_Disabled,    FALSE,
  525.                                         TAG_DONE);
  526.  
  527.                                         GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
  528.                                             GTST_String,    Phonebook[Code] -> Number,
  529.                                             GA_Disabled,    FALSE,
  530.                                         TAG_DONE);
  531.  
  532.                                         GT_SetGadgetAttrs(GadgetArray[GAD_PLAYNUMBER],PanelWindow,NULL,
  533.                                             GA_Disabled,    FALSE,
  534.                                         TAG_DONE);
  535.  
  536.                                         GT_SetGadgetAttrs(GadgetArray[GAD_USEIT],PanelWindow,NULL,
  537.                                             GA_Disabled,    FALSE,
  538.                                         TAG_DONE);
  539.  
  540.                                         GT_SetGadgetAttrs(GadgetArray[GAD_REMOVEENTRY],PanelWindow,NULL,
  541.                                             GA_Disabled,    (Phonebook[Code] == ChosenEntry && Online),
  542.                                         TAG_DONE);
  543.  
  544.                                         GT_SetGadgetAttrs(GadgetArray[GAD_CLONEENTRY],PanelWindow,NULL,
  545.                                             GA_Disabled,    FALSE,
  546.                                         TAG_DONE);
  547.  
  548. /*                                        GT_SetGadgetAttrs(GadgetArray[GAD_EDIT],PanelWindow,NULL,
  549.                                             GA_Disabled,    FALSE,
  550.                                         TAG_DONE);*/
  551.  
  552.                                         Selected = Code;
  553.                                     }
  554.                                     else
  555.                                     {
  556.                                         CurrentTime(&Sec2,&Mic2);
  557.  
  558.                                         if(DoubleClick(Sec1,Mic1,Sec2,Mic2))
  559.                                         {
  560.                                             HitItem = -1;
  561.  
  562.                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  563.                                                 GTLV_Labels,    ~0,
  564.                                             TAG_DONE);
  565.  
  566.                                             if(Phonebook[Selected] -> Count == -1)
  567.                                             {
  568.                                                 if(!Count)
  569.                                                 {
  570.                                                     if(!Online)
  571.                                                     {
  572.                                                         GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
  573.                                                             GA_Disabled,    FALSE,
  574.                                                         TAG_DONE);
  575.                                                     }
  576.  
  577.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
  578.                                                         GA_Disabled,    FALSE,
  579.                                                     TAG_DONE);
  580.                                                 }
  581.  
  582.                                                 Phonebook[Selected] -> Count = Count++;
  583.  
  584.                                                 SPrintf(Phonebook[Selected] -> Node -> LocalName,"%3ld - %s",Count,Phonebook[Selected] -> Name);
  585.                                             }
  586.                                             else
  587.                                             {
  588.                                                 RemoveDialEntry(Selected);
  589.  
  590.                                                 if(!(--Count))
  591.                                                 {
  592.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
  593.                                                         GA_Disabled,    TRUE,
  594.                                                     TAG_DONE);
  595.  
  596.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
  597.                                                         GA_Disabled,    TRUE,
  598.                                                     TAG_DONE);
  599.                                                 }
  600.                                             }
  601.  
  602.                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  603.                                                 GTLV_Labels,    PhoneList,
  604.                                             TAG_DONE);
  605.                                         }
  606.  
  607.                                         Sec1 = Sec2;
  608.                                         Mic1 = Mic2;
  609.                                     }
  610.  
  611.                                     break;
  612.  
  613.                             case GAD_CLEARLIST:
  614.  
  615.                                     GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  616.                                         GTLV_Labels,    ~0,
  617.                                     TAG_DONE);
  618.  
  619.                                     Count = 0;
  620.  
  621.                                     for(i = 0 ; i < NumPhoneEntries ; i++)
  622.                                     {
  623.                                         SPrintf(Phonebook[i] -> Node -> LocalName,"      %s",Phonebook[i] -> Name);
  624.  
  625.                                         Phonebook[i] -> Count = -1;
  626.                                     }
  627.  
  628.                                     GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  629.                                         GTLV_Labels,    PhoneList,
  630.                                     TAG_DONE);
  631.  
  632.                                     GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
  633.                                         GA_Disabled,    TRUE,
  634.                                     TAG_DONE);
  635.  
  636.                                     GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
  637.                                         GA_Disabled,    TRUE,
  638.                                     TAG_DONE);
  639.  
  640.                                     break;
  641.  
  642.                             case GAD_PLAYNUMBER:
  643.  
  644.                                     if(Selected != ~0)
  645.                                     {
  646.                                         UBYTE *String = Phonebook[Selected] -> Number;
  647.  
  648.                                         ExtractString(String,DummyBuffer,FALSE);
  649.  
  650.                                         BlockWindow(PanelWindow);
  651.  
  652.                                         if(!ToneDial(DummyBuffer))
  653.                                             MyEasyRequest(NULL,LocaleString(MSG_GLOBAL_TERM_HAS_A_PROBLEM_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),LocaleString(MSG_GLOBAL_FAILED_TO_ALLOCATE_RESOURCES_FOR_PLAYING_TXT));
  654.  
  655.                                         ReleaseWindow(PanelWindow);
  656.                                     }
  657.  
  658.                                     break;
  659.  
  660.                             case GAD_USEIT:
  661.  
  662.                                     if(Selected != ~0)
  663.                                     {
  664.                                         CopyMem(&Config,&PrivateConfig,sizeof(struct Configuration));
  665.  
  666.                                         CopyMem(&Phonebook[Selected] -> Config,&Config,sizeof(struct Configuration));
  667.  
  668.                                         ConfigSetup();
  669.  
  670.                                         Terminated = TRUE;
  671.                                     }
  672.  
  673.                                     break;
  674.  
  675.                             case GAD_NEWENTRY:
  676.  
  677.                                     GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  678.                                         GTLV_Labels,    ~0,
  679.                                     TAG_DONE);
  680.  
  681.                                     if(PhoneList)
  682.                                     {
  683.                                         DeletePhoneList(PhoneList);
  684.  
  685.                                         PhoneList = NULL;
  686.                                     }
  687.  
  688.                                     if(NewPhoneEntry())
  689.                                     {
  690.                                         if(PhoneList = CreatePhoneList())
  691.                                         {
  692.                                             Selected = NumPhoneEntries - 1;
  693.  
  694.                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  695.                                                 GTLV_Labels,    PhoneList,
  696.                                                 GTLV_Selected,    Selected,
  697.                                             TAG_DONE);
  698.  
  699.                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
  700.                                                 GTST_String,    Phonebook[Selected] -> Name,
  701.                                                 GA_Disabled,    FALSE,
  702.                                             TAG_DONE);
  703.  
  704.                                             GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
  705.                                                 GTST_String,    Phonebook[Selected] -> Number,
  706.                                                 GA_Disabled,    FALSE,
  707.                                             TAG_DONE);
  708.  
  709.                                             GT_SetGadgetAttrs(GadgetArray[GAD_PLAYNUMBER],PanelWindow,NULL,
  710.                                                 GA_Disabled,    FALSE,
  711.                                             TAG_DONE);
  712.  
  713.                                             GT_SetGadgetAttrs(GadgetArray[GAD_USEIT],PanelWindow,NULL,
  714.                                                 GA_Disabled,    FALSE,
  715.                                             TAG_DONE);
  716.  
  717.                                             GT_SetGadgetAttrs(GadgetArray[GAD_REMOVEENTRY],PanelWindow,NULL,
  718.                                                 GA_Disabled,    FALSE,
  719.                                             TAG_DONE);
  720.  
  721.                                             GT_SetGadgetAttrs(GadgetArray[GAD_CLONEENTRY],PanelWindow,NULL,
  722.                                                 GA_Disabled,    FALSE,
  723.                                             TAG_DONE);
  724.  
  725. /*                                            GT_SetGadgetAttrs(GadgetArray[GAD_EDIT],PanelWindow,NULL,
  726.                                                 GA_Disabled,    FALSE,
  727.                                             TAG_DONE);*/
  728.  
  729.                                             if(NumPhoneEntries == 1)
  730.                                             {
  731.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_SAVELIST],PanelWindow,NULL,
  732.                                                     GA_Disabled,    FALSE,
  733.                                                 TAG_DONE);
  734.  
  735.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_PASSWORD],PanelWindow,NULL,
  736.                                                     GA_Disabled,    FALSE,
  737.                                                 TAG_DONE);
  738.                                             }
  739.  
  740.                                             if(NumPhoneEntries == 2)
  741.                                             {
  742.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
  743.                                                     GA_Disabled,    FALSE,
  744.                                                 TAG_DONE);
  745.                                             }
  746.  
  747.                                             ActivateGadget(GadgetArray[GAD_NAME],PanelWindow,NULL);
  748.  
  749.                                             ActiveGadget = GadgetArray[GAD_NAME];
  750.                                         }
  751.                                         else
  752.                                             goto ClearList;
  753.                                     }
  754.                                     else
  755.                                         goto ClearList;
  756.  
  757.                                     break;
  758.  
  759.                             case GAD_CLONEENTRY:
  760.  
  761.                                     if(Selected != ~0)
  762.                                     {
  763.                                         GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  764.                                             GTLV_Labels,    ~0,
  765.                                         TAG_DONE);
  766.  
  767.                                         if(PhoneList)
  768.                                         {
  769.                                             DeletePhoneList(PhoneList);
  770.  
  771.                                             PhoneList = NULL;
  772.                                         }
  773.  
  774.                                         if(NewPhoneEntry())
  775.                                         {
  776.                                             if(PhoneList = CreatePhoneList())
  777.                                             {
  778.                                                 LONG Tmp = Selected;
  779.  
  780.                                                 Selected = NumPhoneEntries - 1;
  781.  
  782.                                                 CopyMem(Phonebook[Tmp] -> Name,Phonebook[Selected] -> Name,sizeof(struct PhoneEntry) - (sizeof(struct PhoneNode) + sizeof(LONG)));
  783.  
  784.                                                 SPrintf(Phonebook[Selected] -> Node -> LocalName,"      %s",Phonebook[Selected] -> Name);
  785.  
  786.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  787.                                                     GTLV_Labels,    PhoneList,
  788.                                                     GTLV_Selected,    Selected,
  789.                                                 TAG_DONE);
  790.  
  791.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
  792.                                                     GTST_String,    Phonebook[Selected] -> Name,
  793.                                                 TAG_DONE);
  794.  
  795.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
  796.                                                     GTST_String,    Phonebook[Selected] -> Number,
  797.                                                 TAG_DONE);
  798.                                             }
  799.                                             else
  800.                                                 goto ClearList;
  801.                                         }
  802.                                         else
  803.                                             goto ClearList;
  804.                                     }
  805.  
  806.                                     break;
  807.  
  808.                             case GAD_REMOVEENTRY:
  809.  
  810.                                     if(Selected != ~0)
  811.                                     {
  812.                                         if(Phonebook[Selected] == ChosenEntry)
  813.                                             MyEasyRequest(Window,LocaleString(MSG_PHONEPANEL_PHONE_ENTRY_IN_USE_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT));
  814.                                         else
  815.                                         {
  816.                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  817.                                                 GTLV_Labels,~0,
  818.                                             TAG_DONE);
  819.  
  820.                                             if(PhoneList)
  821.                                             {
  822.                                                 DeletePhoneList(PhoneList);
  823.  
  824.                                                 PhoneList = NULL;
  825.                                             }
  826.  
  827.                                             if(Phonebook[Selected] -> Count != -1)
  828.                                             {
  829.                                                 RemoveDialEntry(Selected);
  830.  
  831.                                                 if(!(--Count))
  832.                                                 {
  833.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
  834.                                                         GA_Disabled,    TRUE,
  835.                                                     TAG_DONE);
  836.  
  837.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
  838.                                                         GA_Disabled,    TRUE,
  839.                                                     TAG_DONE);
  840.                                                 }
  841.                                             }
  842.  
  843.                                             RemPhoneEntry(Selected);
  844.  
  845.                                             if(NumPhoneEntries > 0)
  846.                                             {
  847.                                                 if(PhoneList = CreatePhoneList())
  848.                                                 {
  849.                                                     if(Selected == NumPhoneEntries)
  850.                                                         Selected--;
  851.  
  852.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  853.                                                         GTLV_Labels,    PhoneList,
  854.                                                         GTLV_Selected,    Selected,
  855.                                                     TAG_DONE);
  856.  
  857.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
  858.                                                         GTST_String,    Phonebook[Selected] -> Name,
  859.                                                     TAG_DONE);
  860.  
  861.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
  862.                                                         GTST_String,    Phonebook[Selected] -> Number,
  863.                                                     TAG_DONE);
  864.                                                 }
  865.                                                 else
  866.                                                     goto ClearList;
  867.  
  868.                                                 if(NumPhoneEntries == 1)
  869.                                                 {
  870.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
  871.                                                         GA_Disabled,    TRUE,
  872.                                                     TAG_DONE);
  873.                                                 }
  874.                                             }
  875.                                             else
  876.                                             {
  877. ClearList:                                            GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  878.                                                     GTLV_Labels,    &EmptyList,
  879.                                                 TAG_DONE);
  880.  
  881.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
  882.                                                     GTST_String,    "",
  883.                                                     GA_Disabled,    TRUE,
  884.                                                 TAG_DONE);
  885.  
  886.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
  887.                                                     GTST_String,    "",
  888.                                                     GA_Disabled,    TRUE,
  889.                                                 TAG_DONE);
  890.  
  891.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_PLAYNUMBER],PanelWindow,NULL,
  892.                                                     GA_Disabled,    TRUE,
  893.                                                 TAG_DONE);
  894.  
  895.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_USEIT],PanelWindow,NULL,
  896.                                                     GA_Disabled,    TRUE,
  897.                                                 TAG_DONE);
  898.  
  899.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_REMOVEENTRY],PanelWindow,NULL,
  900.                                                     GA_Disabled,    TRUE,
  901.                                                 TAG_DONE);
  902.  
  903.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_CLONEENTRY],PanelWindow,NULL,
  904.                                                     GA_Disabled,    TRUE,
  905.                                                 TAG_DONE);
  906.  
  907.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_SAVELIST],PanelWindow,NULL,
  908.                                                     GA_Disabled,    TRUE,
  909.                                                 TAG_DONE);
  910.  
  911.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_PASSWORD],PanelWindow,NULL,
  912.                                                     GA_Disabled,    TRUE,
  913.                                                 TAG_DONE);
  914.  
  915.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
  916.                                                     GA_Disabled,    TRUE,
  917.                                                 TAG_DONE);
  918.  
  919. /*                                                GT_SetGadgetAttrs(GadgetArray[GAD_EDIT],PanelWindow,NULL,
  920.                                                     GA_Disabled,    TRUE,
  921.                                                 TAG_DONE);*/
  922.  
  923.                                                 ActiveGadget = NULL;
  924.  
  925.                                                 Selected    = ~0;
  926.                                                 HitItem        = -1;
  927.                                             }
  928.                                         }
  929.                                     }
  930.  
  931.                                     break;
  932.  
  933.                             case GAD_NAME:
  934.  
  935.                                     if(Selected != ~0)
  936.                                     {
  937.                                         strcpy(Phonebook[Selected] -> Name,GT_STRING(GadgetArray[GAD_NAME]));
  938.  
  939.                                         GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  940.                                             GTLV_Labels,~0,
  941.                                         TAG_DONE);
  942.  
  943.                                         if(PhoneList)
  944.                                             DeletePhoneList(PhoneList);
  945.  
  946.                                         if(PhoneList = CreatePhoneList())
  947.                                         {
  948.                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  949.                                                 GTLV_Labels,    PhoneList,
  950.                                                 GTLV_Selected,    Selected,
  951.                                             TAG_DONE);
  952.                                         }
  953.                                     }
  954.  
  955.                                     break;
  956.  
  957.                             case GAD_PHONENUMBER:
  958.  
  959.                                     if(Selected != ~0)
  960.                                         strcpy(Phonebook[Selected] -> Number,GT_STRING(GadgetArray[GAD_PHONENUMBER]));
  961.  
  962.                                     break;
  963.  
  964.                             case GAD_LOADLIST:
  965.  
  966.                                     BlockWindow(PanelWindow);
  967.  
  968.                                     if(ChosenEntry)
  969.                                         MyEasyRequest(Window,LocaleString(MSG_PHONEPANEL_PHONE_ENTRY_IN_USE_LOAD_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT));
  970.                                     else
  971.                                     {
  972.                                         strcpy(DummyBuffer,LastPhone);
  973.  
  974.                                         DummyChar = PathPart(DummyBuffer);
  975.  
  976.                                         *DummyChar = 0;
  977.  
  978.                                         if(FileRequest = GetFile(LocaleString(MSG_PHONEPANEL_LOAD_PHONEBOOK_TXT),DummyBuffer,FilePart(LastPhone),DummyBuffer,"#?.prefs",FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_LOAD_TXT)))
  979.                                         {
  980.                                             if(PhoneList)
  981.                                                 DeletePhoneList(PhoneList);
  982.  
  983.                                             PhoneList = NULL;
  984.  
  985.                                             if(!LoadPhonebook(DummyBuffer))
  986.                                                 MyEasyRequest(Window,LocaleString(MSG_PHONEPANEL_COULD_NOT_LOAD_PHONEBOOK_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),DummyBuffer);
  987.                                             else
  988.                                                 strcpy(LastPhone,DummyBuffer);
  989.  
  990.                                             if(PhoneList = CreatePhoneList())
  991.                                             {
  992.                                                 GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  993.                                                     GTLV_Labels,    PhoneList,
  994.                                                 TAG_DONE);
  995.  
  996.                                                 FreeDialList();
  997.                                             }
  998.  
  999.                                             Count = 0;
  1000.  
  1001.                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
  1002.                                                 GTST_String,    "",
  1003.                                                 GA_Disabled,    TRUE,
  1004.                                             TAG_DONE);
  1005.  
  1006.                                             GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
  1007.                                                 GTST_String,    "",
  1008.                                                 GA_Disabled,    TRUE,
  1009.                                             TAG_DONE);
  1010.  
  1011.                                             GT_SetGadgetAttrs(GadgetArray[GAD_PLAYNUMBER],PanelWindow,NULL,
  1012.                                                 GA_Disabled,    TRUE,
  1013.                                             TAG_DONE);
  1014.  
  1015.                                             GT_SetGadgetAttrs(GadgetArray[GAD_USEIT],PanelWindow,NULL,
  1016.                                                 GA_Disabled,    TRUE,
  1017.                                             TAG_DONE);
  1018.  
  1019.                                             GT_SetGadgetAttrs(GadgetArray[GAD_REMOVEENTRY],PanelWindow,NULL,
  1020.                                                 GA_Disabled,    TRUE,
  1021.                                             TAG_DONE);
  1022.  
  1023.                                             GT_SetGadgetAttrs(GadgetArray[GAD_CLONEENTRY],PanelWindow,NULL,
  1024.                                                 GA_Disabled,    TRUE,
  1025.                                             TAG_DONE);
  1026.  
  1027.                                             GT_SetGadgetAttrs(GadgetArray[GAD_DIALLIST],PanelWindow,NULL,
  1028.                                                 GA_Disabled,    TRUE,
  1029.                                             TAG_DONE);
  1030.  
  1031.                                             GT_SetGadgetAttrs(GadgetArray[GAD_CLEARLIST],PanelWindow,NULL,
  1032.                                                 GA_Disabled,    TRUE,
  1033.                                             TAG_DONE);
  1034.  
  1035. /*                                            GT_SetGadgetAttrs(GadgetArray[GAD_EDIT],PanelWindow,NULL,
  1036.                                                 GA_Disabled,    TRUE,
  1037.                                             TAG_DONE);*/
  1038.  
  1039.                                             ActiveGadget = NULL;
  1040.  
  1041.                                             if(PhoneList)
  1042.                                             {
  1043.                                                 if(!PhoneList -> lh_Head -> ln_Succ)
  1044.                                                 {
  1045.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_SAVELIST],PanelWindow,NULL,
  1046.                                                         GA_Disabled,    TRUE,
  1047.                                                     TAG_DONE);
  1048.  
  1049.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_PASSWORD],PanelWindow,NULL,
  1050.                                                         GA_Disabled,    TRUE,
  1051.                                                     TAG_DONE);
  1052.  
  1053.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
  1054.                                                         GA_Disabled,    TRUE,
  1055.                                                     TAG_DONE);
  1056.                                                 }
  1057.                                                 else
  1058.                                                 {
  1059.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_SAVELIST],PanelWindow,NULL,
  1060.                                                         GA_Disabled,    FALSE,
  1061.                                                     TAG_DONE);
  1062.  
  1063.                                                     GT_SetGadgetAttrs(GadgetArray[GAD_PASSWORD],PanelWindow,NULL,
  1064.                                                         GA_Disabled,    FALSE,
  1065.                                                     TAG_DONE);
  1066.  
  1067.                                                     if(PhoneList -> lh_Head -> ln_Succ -> ln_Succ)
  1068.                                                     {
  1069.                                                         GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
  1070.                                                             GA_Disabled,    FALSE,
  1071.                                                         TAG_DONE);
  1072.                                                     }
  1073.                                                     else
  1074.                                                     {
  1075.                                                         GT_SetGadgetAttrs(GadgetArray[GAD_SORTLIST],PanelWindow,NULL,
  1076.                                                             GA_Disabled,    TRUE,
  1077.                                                         TAG_DONE);
  1078.                                                     }
  1079.                                                 }
  1080.                                             }
  1081.  
  1082.                                             Selected    = ~0;
  1083.                                             HitItem        = -1;
  1084.  
  1085.                                             FreeAslRequest(FileRequest);
  1086.                                         }
  1087.                                     }
  1088.  
  1089.                                     ReleaseWindow(PanelWindow);
  1090.  
  1091.                                     break;
  1092.  
  1093.                             case GAD_SORTLIST:
  1094.  
  1095.                                     if(NumPhoneEntries > 1)
  1096.                                     {
  1097.                                         BlockWindow(PanelWindow);
  1098.  
  1099.                                         GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  1100.                                             GTLV_Labels,    ~0,
  1101.                                         TAG_DONE);
  1102.  
  1103.                                         GT_SetGadgetAttrs(GadgetArray[GAD_NAME],PanelWindow,NULL,
  1104.                                             GTST_String,    "",
  1105.                                             GA_Disabled,    TRUE,
  1106.                                         TAG_DONE);
  1107.  
  1108.                                         GT_SetGadgetAttrs(GadgetArray[GAD_PHONENUMBER],PanelWindow,NULL,
  1109.                                             GTST_String,    "",
  1110.                                             GA_Disabled,    TRUE,
  1111.                                         TAG_DONE);
  1112.  
  1113.                                         GT_SetGadgetAttrs(GadgetArray[GAD_PLAYNUMBER],PanelWindow,NULL,
  1114.                                             GA_Disabled,    TRUE,
  1115.                                         TAG_DONE);
  1116.  
  1117.                                         GT_SetGadgetAttrs(GadgetArray[GAD_USEIT],PanelWindow,NULL,
  1118.                                             GA_Disabled,    TRUE,
  1119.                                         TAG_DONE);
  1120.  
  1121.                                         GT_SetGadgetAttrs(GadgetArray[GAD_REMOVEENTRY],PanelWindow,NULL,
  1122.                                             GA_Disabled,    TRUE,
  1123.                                         TAG_DONE);
  1124.  
  1125.                                         GT_SetGadgetAttrs(GadgetArray[GAD_CLONEENTRY],PanelWindow,NULL,
  1126.                                             GA_Disabled,    TRUE,
  1127.                                         TAG_DONE);
  1128. /*
  1129.                                         GT_SetGadgetAttrs(GadgetArray[GAD_EDIT],PanelWindow,NULL,
  1130.                                             GA_Disabled,    TRUE,
  1131.                                         TAG_DONE);*/
  1132.  
  1133.                                         ActiveGadget = NULL;
  1134.  
  1135.                                         if(PhoneList)
  1136.                                             DeletePhoneList(PhoneList);
  1137.  
  1138.                                         SortPhoneEntries();
  1139.  
  1140.                                         if(PhoneList = CreatePhoneList())
  1141.                                         {
  1142.                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  1143.                                                 GTLV_Labels,    PhoneList,
  1144.                                                 GTLV_Selected,    ~0,
  1145.                                             TAG_DONE);
  1146.                                         }
  1147.  
  1148.                                         Selected    = ~0;
  1149.                                         HitItem        = -1;
  1150.  
  1151.                                         ReleaseWindow(PanelWindow);
  1152.                                     }
  1153.  
  1154.                                     break;
  1155.  
  1156.                             case GAD_SAVELIST:
  1157.  
  1158.                                     if(NumPhoneEntries)
  1159.                                     {
  1160.                                         strcpy(DummyBuffer,LastPhone);
  1161.  
  1162.                                         DummyChar = PathPart(DummyBuffer);
  1163.  
  1164.                                         *DummyChar = 0;
  1165.  
  1166.                                         BlockWindow(PanelWindow);
  1167.  
  1168.                                         if(FileRequest = GetFile(LocaleString(MSG_PHONEPANEL_SAVE_PHONEBOOK_TXT),DummyBuffer,FilePart(LastPhone),DummyBuffer,"#?.prefs",TRUE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SAVE_TXT)))
  1169.                                         {
  1170.                                             if(!SavePhonebook(DummyBuffer))
  1171.                                                 MyEasyRequest(Window,LocaleString(MSG_PHONEPANEL_COULD_NOT_CREATE_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),DummyBuffer);
  1172.                                             else
  1173.                                                 strcpy(LastPhone,DummyBuffer);
  1174.  
  1175.                                             FreeAslRequest(FileRequest);
  1176.                                         }
  1177.  
  1178.                                         ReleaseWindow(PanelWindow);
  1179.                                     }
  1180.  
  1181.                                     break;
  1182.  
  1183.                             case GAD_COPYCONFIG:
  1184.  
  1185.                                     BlockWindow(PanelWindow);
  1186.  
  1187.                                     if(Selected == ~0)
  1188.                                         CopyPanel(NULL);
  1189.                                     else
  1190.                                         CopyPanel(&Phonebook[Selected] -> Config);
  1191.  
  1192.                                     ReleaseWindow(PanelWindow);
  1193.                                     break;
  1194.  
  1195.                             case GAD_PASSWORD:
  1196.  
  1197.                                     BlockWindow(PanelWindow);
  1198.  
  1199.                                     {
  1200.                                         struct Gadget *OldActiveGadget = ActiveGadget;
  1201.  
  1202.                                         memset(SharedBuffer,0,20);
  1203.  
  1204.                                         PhonePasswordUsed = FALSE;
  1205.  
  1206.                                         if(xpr_gets(LocaleString(MSG_PHONEPANEL_PLEASE_ENTER_PASSWORD_TXT),SharedBuffer))
  1207.                                         {
  1208.                                             if(SharedBuffer[0])
  1209.                                             {
  1210.                                                 SharedBuffer[20] = 0;
  1211.  
  1212.                                                 Encrypt(SharedBuffer,20,PhonePassword,SharedBuffer,strlen(SharedBuffer),TRUE);
  1213.  
  1214.                                                 PhonePasswordUsed = TRUE;
  1215.                                             }
  1216.                                         }
  1217.  
  1218.                                         ActiveGadget = OldActiveGadget;
  1219.                                     }
  1220.  
  1221.                                     ReleaseWindow(PanelWindow);
  1222.                                     break;
  1223.  
  1224.                             case GAD_EDIT:
  1225.  
  1226.                                     if(Selected != ~0)
  1227.                                     {
  1228.                                         BlockWindow(PanelWindow);
  1229.  
  1230.                                         switch(Code)
  1231.                                         {
  1232.                                             case EDIT_SERIAL:    SerialPanel(&Phonebook[Selected] -> Config);
  1233.                                                         break;
  1234.  
  1235.                                             case EDIT_MODEM:    ModemPanel(&Phonebook[Selected] -> Config);
  1236.                                                         break;
  1237.  
  1238.                                             case EDIT_TRANSFER:    strcpy(DummyBuffer,LastXprLibrary);
  1239.  
  1240.                                                         if(SelectProtocol(Phonebook[Selected] -> Config . Protocol,PanelWindow))
  1241.                                                             strcpy(Phonebook[Selected] -> Config . Protocol,LastXprLibrary);
  1242.  
  1243.                                                         strcpy(LastXprLibrary,DummyBuffer);
  1244.                                                         break;
  1245.  
  1246.                                             case EDIT_SCREEN:    ScreenPanel(&Phonebook[Selected] -> Config);
  1247.                                                         break;
  1248.  
  1249.                                             case EDIT_TERMINAL:    TerminalPanel(&Phonebook[Selected] -> Config);
  1250.                                                         break;
  1251.  
  1252.                                             case EDIT_COMMANDS:    CommandPanel(&Phonebook[Selected] -> Config);
  1253.                                                         break;
  1254.  
  1255.                                             case EDIT_MISC:        MiscPanel(&Phonebook[Selected] -> Config);
  1256.                                                         break;
  1257.  
  1258.                                             case EDIT_PATHS:    PathPanel(&Phonebook[Selected] -> Config);
  1259.                                                         break;
  1260.  
  1261.                                             case EDIT_UNITS:    if(Phonebook[Selected] == ChosenEntry)
  1262.                                                             MyEasyRequest(Window,LocaleString(MSG_PHONEPANEL_PHONE_ENTRY_IN_USE_EDIT_TXT),LocaleString(MSG_GLOBAL_CONTINUE_TXT),DummyBuffer);
  1263.                                                         else
  1264.                                                         {
  1265.                                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  1266.                                                                 GTLV_Labels,    ~0,
  1267.                                                             TAG_DONE);
  1268.  
  1269.                                                             RatePanel(PhoneList,Phonebook[Selected]);
  1270.  
  1271.                                                             GT_SetGadgetAttrs(GadgetArray[GAD_NAMELIST],PanelWindow,NULL,
  1272.                                                                 GTLV_Labels,    PhoneList,
  1273.                                                                 GTLV_Selected,    Selected,
  1274.                                                             TAG_DONE);
  1275.                                                         }
  1276.  
  1277.                                                         break;
  1278.  
  1279.                                             case EDIT_KEYMACROS:    strcpy(DummyBuffer,Phonebook[Selected] -> Config . MacroFile);
  1280.  
  1281.                                                         DummyChar = PathPart(DummyBuffer);
  1282.  
  1283.                                                         *DummyChar = 0;
  1284.  
  1285.                                                         if(FileRequest = GetFile(LocaleString(MSG_PHONEPANEL_SELECT_KEYBOARD_MACROS_TXT),DummyBuffer,FilePart(Phonebook[Selected] -> Config . MacroFile),DummyBuffer,"#?.prefs",FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SELECT_TXT)))
  1286.                                                         {
  1287.                                                             strcpy(Phonebook[Selected] -> Config . MacroFile,DummyBuffer);
  1288.  
  1289.                                                             FreeAslRequest(FileRequest);
  1290.                                                         }
  1291.  
  1292.                                                         break;
  1293.  
  1294.                                             case EDIT_FASTMACROS:    strcpy(DummyBuffer,Phonebook[Selected] -> Config . FastMacroFile);
  1295.  
  1296.                                                         DummyChar = PathPart(DummyBuffer);
  1297.  
  1298.                                                         *DummyChar = 0;
  1299.  
  1300.                                                         if(FileRequest = GetFile(LocaleString(MSG_PHONEPANEL_SELECT_FAST_MACROS_TXT),DummyBuffer,FilePart(Phonebook[Selected] -> Config . FastMacroFile),DummyBuffer,"#?.prefs",FALSE,FALSE,FALSE,LocaleString(MSG_GLOBAL_SELECT_TXT)))
  1301.                                                         {
  1302.                                                             strcpy(Phonebook[Selected] -> Config . FastMacroFile,DummyBuffer);
  1303.  
  1304.                                                             FreeAslRequest(FileRequest);
  1305.                                                         }
  1306.  
  1307.                                                         break;
  1308.  
  1309.                                             case EDIT_PASSWORD:    PasswordUserPanel(Phonebook[Selected]);
  1310.  
  1311.                                                         break;
  1312.                                         }
  1313.  
  1314.                                         ActiveGadget = GadgetArray[GAD_NAME];
  1315.  
  1316.                                         ReleaseWindow(PanelWindow);
  1317.                                     }
  1318.                                     else
  1319.                                     {
  1320.                                         if(Code == EDIT_COPY)
  1321.                                         {
  1322.                                             BlockWindow(PanelWindow);
  1323.  
  1324.                                             CopyPanel(NULL);
  1325.  
  1326.                                             if(!GT_DISABLED(GadgetArray[GAD_NAME]))
  1327.                                                 ActiveGadget = GadgetArray[GAD_NAME];
  1328.                                             else
  1329.                                                 ActiveGadget = NULL;
  1330.  
  1331.                                             ReleaseWindow(PanelWindow);
  1332.                                         }
  1333.                                     }
  1334.  
  1335.                                     break;
  1336.  
  1337.                             case GAD_DIALLIST:
  1338.  
  1339.                                     if(Count)
  1340.                                     {
  1341.                                         FreeDialList();
  1342.  
  1343.                                         TempNode = (struct PhoneNode *)PhoneList -> lh_Head;
  1344.  
  1345.                                         while(TempNode -> VanillaNode . ln_Succ)
  1346.                                         {
  1347.                                             if(TempNode -> Entry -> Count != -1)
  1348.                                                 SortToList(TempNode);
  1349.  
  1350.                                             TempNode = (struct PhoneNode *)TempNode -> VanillaNode . ln_Succ;
  1351.                                         }
  1352.  
  1353.                                         Terminated = TRUE;
  1354.                                     }
  1355.  
  1356.                                     break;
  1357.  
  1358.                             default:    break;
  1359.                         }
  1360.                     }
  1361.                 }
  1362.             }
  1363.  
  1364.             DeleteTone();
  1365.  
  1366.             if(PhoneList)
  1367.                 DeletePhoneList(PhoneList);
  1368.  
  1369.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  1370.  
  1371.             PopWindow();
  1372.  
  1373.             OffsetX = PanelWindow -> LeftEdge;
  1374.             OffsetY = PanelWindow -> TopEdge;
  1375.  
  1376.             CloseWindow(PanelWindow);
  1377.         }
  1378.     }
  1379.  
  1380.     FreeGadgets(GadgetList);
  1381.  
  1382.     if(DialList)
  1383.         return(TRUE);
  1384.     else
  1385.         return(FALSE);
  1386. }
  1387.