home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d8xx / d832 / term.lha / Term / term-3.1-Source.lha / PasswordUserPanel.c < prev    next >
C/C++ Source or Header  |  1993-02-18  |  5KB  |  201 lines

  1. /*
  2. **    PasswordUserPanel.c
  3. **
  4. **    Editing panel for password and user name
  5. **
  6. **    Copyright © 1990-1993 by Olaf `Olsen' Barthel & MXM
  7. **        All Rights Reserved
  8. */
  9.  
  10. #include "termGlobal.h"
  11.  
  12. enum    {    GAD_USERNAME,GAD_PASSWORD,GAD_USE,GAD_CANCEL };
  13.  
  14. STATIC struct Gadget *
  15. CreateAllGadgets(struct PhoneEntry *Entry,struct Gadget **GadgetArray,struct Gadget **GadgetList)
  16. {
  17.     struct Gadget        *Gadget;
  18.     struct NewGadget     NewGadget;
  19.     UWORD             Counter = 0;
  20.  
  21.     SZ_SizeSetup(Window -> WScreen,&UserFont,TRUE);
  22.  
  23.     memset(&NewGadget,0,sizeof(struct NewGadget));
  24.  
  25.     if(Gadget = CreateContext(GadgetList))
  26.     {
  27.         SZ_AddLeftOffset(SZ_LeftOffsetDelta(MSG_PASSWORDUSERPANEL_PASSWORD_GAD,MSG_PASSWORDUSERPANEL_USER_NAME_GAD));
  28.  
  29.         SZ_ResetMaxWidth();
  30.  
  31.         SZ_UpdateMaxWidth(STRING_KIND,NULL,30,NULL);
  32.  
  33.         SZ_SetWidth(SZ_ResetMaxWidth());
  34.  
  35.         NewGadget . ng_GadgetText    = LocaleString(MSG_PASSWORDUSERPANEL_USER_NAME_GAD);
  36.         NewGadget . ng_GadgetID        = Counter;
  37.  
  38.         GadgetArray[Counter++] = Gadget = CreateGadget(STRING_KIND,Gadget,&NewGadget,
  39.             SZ_Adjust,    TRUE,
  40.             SZ_AutoWidth,    TRUE,
  41.  
  42.             GTST_MaxChars,    99,
  43.             GTST_String,    Entry -> Header -> UserName,
  44.         TAG_DONE);
  45.  
  46.         NewGadget . ng_GadgetText    = LocaleString(MSG_PASSWORDUSERPANEL_PASSWORD_GAD);
  47.         NewGadget . ng_GadgetID        = Counter;
  48.  
  49.         GadgetArray[Counter++] = Gadget = CreateGadget(PASSWORD_KIND,Gadget,&NewGadget,
  50.             SZ_Adjust,    TRUE,
  51.             SZ_AutoWidth,    TRUE,
  52.  
  53.             GTST_MaxChars,    99,
  54.             GTST_String,    Entry -> Header -> Password,
  55.         TAG_DONE);
  56.  
  57.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_USE_GAD),0,NULL);
  58.         SZ_UpdateMaxWidth(BUTTON_KIND,LocaleString(MSG_GLOBAL_CANCEL_GAD),0,NULL);
  59.  
  60.         SZ_SetWidth(SZ_ResetMaxWidth());
  61.  
  62.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_USE_GAD);
  63.         NewGadget . ng_GadgetID        = Counter;
  64.         NewGadget . ng_Flags        = 0;
  65.  
  66.         GadgetArray[Counter++] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  67.             SZ_Adjust,    TRUE,
  68.             SZ_AutoWidth,    TRUE,
  69.             SZ_AlignExtra,    TRUE,
  70.             SZ_AlignLeft,    TRUE,
  71.             SZ_AlignBottom,    TRUE,
  72.         TAG_DONE);
  73.  
  74.         NewGadget . ng_GadgetText    = LocaleString(MSG_GLOBAL_CANCEL_GAD);
  75.         NewGadget . ng_GadgetID        = Counter;
  76.  
  77.         GadgetArray[Counter] = Gadget = CreateGadget(BUTTON_KIND,Gadget,&NewGadget,
  78.             SZ_Adjust,    TRUE,
  79.             SZ_AutoWidth,    TRUE,
  80.             SZ_AlignRight,    TRUE,
  81.         TAG_DONE);
  82.     }
  83.  
  84.     return(Gadget);
  85. }
  86.  
  87. BYTE
  88. PasswordUserPanel(struct PhoneEntry *Entry)
  89. {
  90.     struct Window    *PanelWindow;
  91.     struct Gadget    *GadgetList = NULL;
  92.     struct Gadget    *GadgetArray[GAD_CANCEL + 1];
  93.     BYTE         MadeChanges = FALSE;
  94.  
  95.     if(CreateAllGadgets(Entry,GadgetArray,&GadgetList))
  96.     {
  97.         if(PanelWindow = OpenWindowTags(NULL,
  98.             WA_Left,    GetScreenLeft(Window) + (GetScreenWidth(Window) - SZ_GetWindowWidth()) / 2,
  99.             WA_Top,        GetScreenTop(Window) + (GetScreenHeight(Window) - SZ_GetWindowHeight())    / 2,
  100.             WA_Width,    SZ_GetWindowWidth(),
  101.             WA_Height,    SZ_GetWindowHeight(),
  102.  
  103.             WA_Activate,    TRUE,
  104.             WA_DragBar,    TRUE,
  105.             WA_DepthGadget,    TRUE,
  106.             WA_RMBTrap,    TRUE,
  107.             WA_DepthGadget,    TRUE,
  108.             WA_CloseGadget,    TRUE,
  109.             WA_CustomScreen,Window -> WScreen,
  110.  
  111.             WA_IDCMP,    IDCMP_GADGETDOWN | IDCMP_ACTIVEWINDOW | IDCMP_CLOSEWINDOW | IDCMP_VANILLAKEY | IDCMP_RAWKEY | BUTTONIDCMP | STRINGIDCMP,
  112.  
  113.             WA_Title,    LocaleString(MSG_PASSWORDUSERPANEL_PASSWORD_AND_USER_NAME_TXT),
  114.         TAG_DONE))
  115.         {
  116.             struct IntuiMessage    *Massage;
  117.             ULONG             IClass,Code;
  118.             struct Gadget        *Gadget;
  119.             BYTE             Terminated = FALSE;
  120.  
  121.             GuideContext(CONTEXT_PASSWORDUSER);
  122.  
  123.             PushWindow(PanelWindow);
  124.  
  125.             AddGList(PanelWindow,GadgetList,(UWORD)-1,(UWORD)-1,NULL);
  126.             RefreshGList(GadgetList,PanelWindow,NULL,(UWORD)-1);
  127.             GT_RefreshWindow(PanelWindow,NULL);
  128.  
  129.             ActiveGadget = NULL;
  130.  
  131.             SetSignal(0,SIG_BREAK);
  132.  
  133.             while(!Terminated)
  134.             {
  135.                 if(Wait(PORTMASK(PanelWindow -> UserPort) | SIG_BREAK) & SIG_BREAK)
  136.                     break;
  137.  
  138.                 while(!Terminated && (Massage = (struct IntuiMessage *)GT_GetIMsg(PanelWindow -> UserPort)))
  139.                 {
  140.                     IClass    = Massage -> Class;
  141.                     Code    = Massage -> Code;
  142.                     Gadget    = (struct Gadget *)Massage -> IAddress;
  143.  
  144.                     GT_ReplyIMsg(Massage);
  145.  
  146.                     KeySelect(GadgetArray,GAD_CANCEL,Code,PanelWindow,&Gadget,&IClass,&Code);
  147.  
  148.                     if(IClass == IDCMP_ACTIVEWINDOW && ActiveGadget)
  149.                         ActivateGadget(ActiveGadget,PanelWindow,NULL);
  150.  
  151.                     if(IClass == IDCMP_GADGETDOWN)
  152.                     {
  153.                         if((Gadget -> GadgetType & GTYP_GTYPEMASK) == GTYP_STRGADGET)
  154.                             ActiveGadget = Gadget;
  155.                     }
  156.  
  157.                     if(IClass == IDCMP_CLOSEWINDOW)
  158.                         Terminated = TRUE;
  159.  
  160.                     if(IClass == IDCMP_GADGETUP)
  161.                     {
  162.                         switch(Gadget -> GadgetID)
  163.                         {
  164.                             case GAD_USE:
  165.  
  166.                                 Terminated = TRUE;
  167.  
  168.                                 if(strcmp(Entry -> Header -> Password,SZ_GetString(GadgetArray[GAD_PASSWORD])))
  169.                                     MadeChanges = TRUE;
  170.  
  171.                                 if(strcmp(Entry -> Header -> UserName,SZ_GetString(GadgetArray[GAD_USERNAME])))
  172.                                     MadeChanges = TRUE;
  173.  
  174.                                 strcpy(Entry -> Header -> UserName,SZ_GetString(GadgetArray[GAD_USERNAME]));
  175.                                 strcpy(Entry -> Header -> Password,SZ_GetString(GadgetArray[GAD_PASSWORD]));
  176.  
  177.                                 break;
  178.  
  179.                             case GAD_CANCEL:
  180.  
  181.                                 Terminated = TRUE;
  182.  
  183.                                 break;
  184.                         }
  185.                     }
  186.                 }
  187.             }
  188.  
  189.             RemoveGList(PanelWindow,GadgetList,(UWORD)-1);
  190.  
  191.             PopWindow();
  192.  
  193.             CloseWindow(PanelWindow);
  194.         }
  195.     }
  196.  
  197.     FreeGadgets(GadgetList);
  198.  
  199.     return(MadeChanges);
  200. }
  201.