home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / comm / term23_2.lha / Source_Code / termSource / ImportPanel.c < prev    next >
C/C++ Source or Header  |  1992-08-18  |  6KB  |  233 lines

  1. /*
  2. **    $Id: ImportPanel.c,v 1.6 92/08/15 20:12:48 olsen Sta Locker: olsen $
  3. **    $Revision: 1.6 $
  4. **    $Date: 92/08/15 20:12:48 $
  5. **
  6. **    Editing panel for phone unit settings
  7. **
  8. **    Copyright © 1990-1992 by Olaf `Olsen' Barthel & MXM
  9. **        All Rights Reserved
  10. */
  11.  
  12. #include "termGlobal.h"
  13.  
  14. enum    {    GAD_LIST,GAD_REPLACE,GAD_APPEND,GAD_CANCEL };
  15.  
  16. STATIC struct Gadget *
  17. CreateAllGadgets(struct List *PhoneList,struct Gadget **GadgetArray,struct Gadget **GadgetList,APTR VisualInfo,UWORD TopEdge)
  18. {
  19.     struct Gadget        *Gadget;
  20.     struct NewGadget     NewGadget;
  21.     UWORD             Counter = 0;
  22.  
  23.     SZ_SizeSetup(Screen,&UserFont,TRUE);
  24.  
  25.     memset(&NewGadget,0,sizeof(struct NewGadget));
  26.  
  27.     if(Gadget = CreateContext(GadgetList))
  28.     {
  29.         UWORD Width,ButtonWidth;
  30.  
  31.         SZ_ResetMaxWidth();
  32.  
  33.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_IMPORTPANEL_REPLACE_RATES_GAD),0,NULL);
  34.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_IMPORTPANEL_APPEND_RATES_GAD),0,NULL);
  35.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_CANCEL_GAD),0,NULL);
  36.  
  37.         ButtonWidth = SZ_ResetMaxWidth();
  38.  
  39.         Width = SZ_Width(LISTVIEW_KIND,NULL,35,NULL);
  40.  
  41.         if(3 * ButtonWidth + 2 * InterWidth > Width)
  42.             SZ_SetWidth(3 * ButtonWidth + 2 * InterWidth);
  43.         else
  44.             SZ_SetWidth(Width);
  45.  
  46.         NewGadget . ng_TextAttr        = &UserFont;
  47.         NewGadget . ng_Flags        = PLACETEXT_ABOVE|NG_HIGHLABEL;
  48.         NewGadget . ng_VisualInfo    = VisualInfo;
  49.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_NAME_LIST_GAD);
  50.         NewGadget . ng_GadgetID        = Counter;
  51.  
  52.         GadgetArray[Counter++] = Gadget = CreateGadget(LISTVIEW_KIND,Gadget,&NewGadget,
  53.             SZ_Adjust,        TRUE,
  54.             SZ_AutoWidth,        TRUE,
  55.             SZ_Lines,        8,
  56.  
  57.             GT_Underscore,        '_',
  58.             GTLV_Labels,        PhoneList,
  59.             GTLV_ShowSelected,    NULL,
  60.         TAG_DONE);
  61.  
  62.         SZ_SetWidth(ButtonWidth);
  63.  
  64.         NewGadget . ng_GadgetText    = LocaleString(MSG_IMPORTPANEL_REPLACE_RATES_GAD);
  65.         NewGadget . ng_GadgetID        = Counter;
  66.         NewGadget . ng_Flags        = 0;
  67.  
  68.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  69.             SZ_Adjust,    TRUE,
  70.             SZ_AutoWidth,    TRUE,
  71.             SZ_GroupCount,    3,
  72.  
  73.             GT_Underscore,    '_',
  74.             GA_Disabled,    TRUE,
  75.         TAG_DONE);
  76.  
  77.         NewGadget . ng_GadgetText    = LocaleString(MSG_IMPORTPANEL_APPEND_RATES_GAD);
  78.         NewGadget . ng_GadgetID        = Counter;
  79.  
  80.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  81.             SZ_Adjust,    TRUE,
  82.             SZ_AutoWidth,    TRUE,
  83.             SZ_GroupNext,    TRUE,
  84.  
  85.             GT_Underscore,    '_',
  86.             GA_Disabled,    TRUE,
  87.         TAG_DONE);
  88.  
  89.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_CANCEL_GAD);
  90.         NewGadget . ng_GadgetID        = Counter;
  91.  
  92.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  93.             SZ_Adjust,    TRUE,
  94.             SZ_AutoWidth,    TRUE,
  95.             SZ_GroupNext,    TRUE,
  96.  
  97.             GT_Underscore,    '_',
  98.         TAG_DONE);
  99.     }
  100.  
  101.     return(Gadget);
  102. }
  103.  
  104. VOID
  105. ImportPanel(struct PhoneEntry *Entry,struct List *PhoneList)
  106. {
  107.     struct Window    *PanelWindow;
  108.     struct Gadget    *GadgetList;
  109.     struct Gadget    *GadgetArray[GAD_CANCEL + 1];
  110.  
  111.     if(CreateAllGadgets(PhoneList,&GadgetArray[0],&GadgetList,VisualInfo,Screen -> WBorTop + Screen -> Font -> ta_YSize + 1))
  112.     {
  113.         if(PanelWindow = OpenWindowTags(NULL,
  114.             WA_Left,    (Screen -> Width    - SZ_GetWindowWidth())    / 2,
  115.             WA_Top,        (Screen -> Height    - SZ_GetWindowHeight())    / 2,
  116.             WA_Width,    SZ_GetWindowWidth(),
  117.             WA_Height,    SZ_GetWindowHeight(),
  118.  
  119.             WA_Activate,    TRUE,
  120.             WA_DragBar,    TRUE,
  121.             WA_DepthGadget,    TRUE,
  122.             WA_RMBTrap,    TRUE,
  123.             WA_DepthGadget,    TRUE,
  124.             WA_CloseGadget,    TRUE,
  125.             WA_CustomScreen,Screen,
  126.             WA_IDCMP,    IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY | BUTTONIDCMP | LISTVIEWIDCMP,
  127.             WA_Title,    LocaleString(MSG_IMPORTPANEL_IMPORT_RATES_TXT),
  128.         TAG_DONE))
  129.         {
  130.             struct IntuiMessage    *Massage;
  131.             ULONG             Class,Code;
  132.             struct Gadget        *Gadget;
  133.             BYTE             Terminated = FALSE;
  134.             LONG             Selected = ~0;
  135.  
  136.             PushWindow(PanelWindow);
  137.  
  138.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  139.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  140.             GT_RefreshWindow(PanelWindow,NULL);
  141.  
  142.             while(!Terminated)
  143.             {
  144.                 WaitPort(PanelWindow -> UserPort);
  145.  
  146.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  147.                 {
  148.                     Class    = Massage -> Class;
  149.                     Code    = Massage -> Code;
  150.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  151.  
  152.                     GT_ReplyIMsg(Massage);
  153.  
  154.                     if(Class == IDCMP_VANILLAKEY)
  155.                         KeySelect(GadgetArray,GAD_CANCEL,Code,PanelWindow,&Gadget,&Class,&Code);
  156.  
  157.                     if(Class == IDCMP_CLOSEWINDOW)
  158.                         Terminated = TRUE;
  159.  
  160.                     if(Class == IDCMP_GADGETUP)
  161.                     {
  162.                         switch(Gadget -> GadgetID)
  163.                         {
  164.                             case GAD_LIST:    if(Entry != Phonebook[Code])
  165.                                     {
  166.                                         if(Selected == ~0)
  167.                                         {
  168.                                             GT_SetGadgetAttrs(GadgetArray[GAD_REPLACE],PanelWindow,NULL,
  169.                                                 GA_Disabled,    FALSE,
  170.                                             TAG_DONE);
  171.  
  172.                                             GT_SetGadgetAttrs(GadgetArray[GAD_APPEND],PanelWindow,NULL,
  173.                                                 GA_Disabled,    FALSE,
  174.                                             TAG_DONE);
  175.                                         }
  176.  
  177.                                         Selected = Code;
  178.                                     }
  179.                                     else
  180.                                     {
  181.                                         if(Selected != ~0)
  182.                                         {
  183.                                             GT_SetGadgetAttrs(GadgetArray[GAD_REPLACE],PanelWindow,NULL,
  184.                                                 GA_Disabled,    TRUE,
  185.                                             TAG_DONE);
  186.  
  187.                                             GT_SetGadgetAttrs(GadgetArray[GAD_APPEND],PanelWindow,NULL,
  188.                                                 GA_Disabled,    TRUE,
  189.                                             TAG_DONE);
  190.  
  191.                                             Selected = ~0;
  192.                                         }
  193.                                     }
  194.  
  195.                                     break;
  196.  
  197.                             case GAD_APPEND:
  198.                             case GAD_REPLACE:
  199.  
  200.                                     if(Gadget -> GadgetID == GAD_REPLACE)
  201.                                     {
  202.                                         FreeTimeDateList((struct List *)&Entry -> TimeDateList);
  203.  
  204.                                         CopyTimeDateList((struct List *)&Phonebook[Selected] -> TimeDateList,(struct List *)&Entry -> TimeDateList,FALSE);
  205.                                     }
  206.                                     else
  207.                                         CopyTimeDateList((struct List *)&Phonebook[Selected] -> TimeDateList,(struct List *)&Entry -> TimeDateList,TRUE);
  208.  
  209.                                     Terminated = TRUE;
  210.  
  211.                                     break;
  212.  
  213.                             case GAD_CANCEL:Terminated = TRUE;
  214.  
  215.                                     break;
  216.  
  217.                             default:    break;
  218.                         }
  219.                     }
  220.                 }
  221.             }
  222.  
  223.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  224.  
  225.             PopWindow();
  226.  
  227.             CloseWindow(PanelWindow);
  228.         }
  229.  
  230.         FreeGadgets(GadgetList);
  231.     }
  232. }
  233.