#include <CrashTickPrefs.h>

struct Hook OptionsHelpHook = { {NULL}, HelpHookEntry,NULL,(APTR)HELP_OPTIONS};

#define OPTIONS_NUM  6

ULONG optflags[]={ CFG_CHECKCRC,    CFG_ALLOWREPLACE,    CFG_USEFILEBASE,
                   CFG_CHECKSEENBY, CFG_UNATTENDED,      CFG_FILENOTE      };

BOOL bools[OPTIONS_NUM];

void PartOptions(void)
{
   struct IntuiMessage *IntuiMessage;
   APTR iaddress;
   ULONG class,code,qualifier,c;

   for(c=0;c<OPTIONS_NUM;c++)
   {
      if(config.cfg_Flags & optflags[c]) bools[c]=TRUE;
      else                               bools[c]=FALSE;
   }

   parthandle = LT_CreateHandleTags(scr,LH_EditHook,     &StrEditHookNext,
                                        LH_RawKeyFilter, FALSE,
                                        LH_LocaleHook,   &LocaleHook,
                                        TAG_DONE);

   if(!parthandle)
      return;

   LT_New(parthandle,
      LA_Type,      VERTICAL_KIND,
      TAG_DONE);

      LT_New(parthandle,
         LA_Type,      VERTICAL_KIND,
         LA_LabelID,   PREFS_OPTIONS_OPTIONS,
         TAG_DONE);

         for(c=0;c<OPTIONS_NUM;c++)
            LT_New(parthandle,
               LA_Type,      CHECKBOX_KIND,
               LA_LabelID,   PREFS_OPTIONS_OPTIONS+1+c,
               LA_ID,        c+1,
               LA_BOOL,      &bools[c],
             TAG_DONE);

      LT_EndGroup(parthandle);

   LT_EndGroup(parthandle);

   partwin=LT_Build(parthandle,LAWN_IDCMP,    IDCMP_CLOSEWINDOW|IDCMP_RAWKEY,
                               LAWN_Parent,   mainwin,
                               LAWN_HelpHook, &OptionsHelpHook,
                               LAWN_Title,    getString(PREFS_BUTTON_OPTIONS),
                               WA_Flags,      WFLG_ACTIVATE|WFLG_CLOSEGADGET|WFLG_DEPTHGADGET|WFLG_DRAGBAR|WFLG_NEWLOOKMENUS,
                               TAG_END);

   if(!partwin)
   {
      LT_DeleteHandle(parthandle);
      DisplayBeep(NULL);
      return;
   }

   for(;;)
   {
      while(IntuiMessage=(struct IntuiMessage *)LT_GetIMsg(parthandle))
      {
         class=IntuiMessage->Class;
         code=IntuiMessage->Code;
         iaddress=IntuiMessage->IAddress;
         qualifier=IntuiMessage->Qualifier;

         LT_ReplyIMsg(IntuiMessage);

         switch(class)
         {
            case IDCMP_CLOSEWINDOW:   LT_DeleteHandle(parthandle);
                                      parthandle=NULL;

                                      config.cfg_Flags=0;

                                      for(c=0;c<OPTIONS_NUM;c++)
                                         if(bools[c]) config.cfg_Flags|=optflags[c];

                                      return;

            case IDCMP_GADGETUP:      config.configchanged=TRUE;
                                      break;
         }
      }
      WaitPort(partwin->UserPort);
   }
}
