/*********************************************/
/*                                           */
/*       Designer (C) Ian OConnor 1994       */
/*                                           */
/*      Designer Produced C include file     */
/*                                           */
/*********************************************/

#include <exec/types.h>
#include <exec/memory.h>
#include <dos/dosextens.h>
#include <intuition/screens.h>
#include <intuition/intuition.h>
#include <intuition/gadgetclass.h>
#include <libraries/gadtools.h>
#include <diskfont/diskfont.h>
#include <utility/utility.h>
#include <graphics/gfxbase.h>
#include <workbench/workbench.h>
#include <graphics/scale.h>
#include <clib/exec_protos.h>
#include <clib/wb_protos.h>
#include <clib/intuition_protos.h>
#include <clib/gadtools_protos.h>
#include <clib/graphics_protos.h>
#include <clib/utility_protos.h>
#include <string.h>
#include <clib/diskfont_protos.h>

#include "UserDataEditor.h"


ULONG BevelTags[] = 
	{
	(GTBB_Recessed), TRUE,
	(GT_VisualInfo), 0,
	(TAG_DONE)
	};

struct IntuiText UE_WinTexts[] =
	{
	1, 3, JAM1, 7, 4, &HBBS8066, (UBYTE *)"User Data Editor for HBBS", &UE_WinTexts[1],
	2, 1, JAM1, 8, 5, &HBBS8066, (UBYTE *)"User Data Editor for HBBS", NULL
	};

struct Window *UE_Win = NULL;
APTR UE_WinVisualInfo;
APTR UE_WinDrawInfo;
struct Gadget *UE_WinGList;
struct Gadget *UE_WinGadgets[15];
UBYTE UE_WinFirstRun = 0;

ULONG UE_WinGadgetTags[] =
	{
	(GTSC_Visible), 1,
	(GTSC_Arrows), 14,
	(TAG_END),
	(GTIN_MaxChars), 5,
	(TAG_END),
	(GTST_MaxChars), 25,
	(GT_Underscore), '_',
	(TAG_END),
	(GTST_MaxChars), 30,
	(GT_Underscore), '_',
	(TAG_END),
	(GTST_MaxChars), 30,
	(GT_Underscore), '_',
	(TAG_END),
	(GTST_MaxChars), 20,
	(GT_Underscore), '_',
	(TAG_END),
	(GTST_MaxChars), 20,
	(GT_Underscore), '_',
	(TAG_END),
	(GTST_MaxChars), 20,
	(GT_Underscore), '_',
	(TAG_END),
	(GTST_MaxChars), 40,
	(GT_Underscore), '_',
	(TAG_END),
	(GTST_MaxChars), 50,
	(GT_Underscore), '_',
	(TAG_END),
	(GT_Underscore), '_',
	(TAG_END),
	(GTST_MaxChars), 10,
	(TAG_END),
	(GTST_MaxChars), 10,
	(TAG_END),
	};

UWORD UE_WinGadgetTypes[] =
	{
	SCROLLER_KIND,
	INTEGER_KIND,
	STRING_KIND,
	STRING_KIND,
	STRING_KIND,
	STRING_KIND,
	STRING_KIND,
	STRING_KIND,
	STRING_KIND,
	STRING_KIND,
	INTEGER_KIND,
	INTEGER_KIND,
	STRING_KIND,
	STRING_KIND,
	BUTTON_KIND,
	};

struct NewGadget UE_WinNewGadgets[] =
	{
	263, 3, 294, 13, (UBYTE *)"User", &HBBS8066, UE_UserSlider, 1, NULL,  (APTR)&UE_WinGadgetTags[0],
	558, 3, 70, 13, NULL, &HBBS8066, UE_UserNum, 1, NULL,  (APTR)&UE_WinGadgetTags[5],
	118, 22, 200, 12, (UBYTE *)"_Handle", &HBBS8066, UE_Handle, 1, NULL,  (APTR)&UE_WinGadgetTags[8],
	118, 35, 200, 12, (UBYTE *)"Real _Name", &HBBS8066, UE_RealName, 1, NULL,  (APTR)&UE_WinGadgetTags[13],
	118, 48, 200, 12, (UBYTE *)"_Group", &HBBS8066, UE_Group, 1, NULL,  (APTR)&UE_WinGadgetTags[18],
	118, 61, 200, 12, (UBYTE *)"Geo _Location", &HBBS8066, UE_GeoLocation, 1, NULL,  (APTR)&UE_WinGadgetTags[23],
	118, 74, 200, 12, (UBYTE *)"_Country", &HBBS8066, UE_Country, 1, NULL,  (APTR)&UE_WinGadgetTags[28],
	118, 87, 200, 12, (UBYTE *)"_Phone Number", &HBBS8066, UE_PhoneNumber, 1, NULL,  (APTR)&UE_WinGadgetTags[33],
	118, 100, 200, 12, (UBYTE *)"C_omputer Type", &HBBS8066, UE_ComputerType, 1, NULL,  (APTR)&UE_WinGadgetTags[38],
	118, 113, 200, 12, (UBYTE *)"_Sentby", &HBBS8066, UE_Sentby, 1, NULL,  (APTR)&UE_WinGadgetTags[43],
	424, 35, 92, 12, (UBYTE *)"Calls", &HBBS8066, UE_Calls, 1, NULL,  NULL,
	424, 22, 92, 12, (UBYTE *)"_Access", &HBBS8066, UE_Access, 1, NULL,  (APTR)&UE_WinGadgetTags[48],
	424, 48, 92, 12, (UBYTE *)"Last Called", &HBBS8066, UE_LastCalled, 1, NULL,  (APTR)&UE_WinGadgetTags[51],
	424, 61, 92, 12, (UBYTE *)"Last Upload", &HBBS8066, UE_LastUpload, 1, NULL,  (APTR)&UE_WinGadgetTags[54],
	7, 130, 138, 12, (UBYTE *)"Transfer Options", &HBBS8066, UE_TransferOptions, 16, NULL,  NULL,
	};

struct TextAttr HBBS8066 = { (STRPTR)"HBBS.font", 8, 0, 66 };

void RendWindowUE_Win( struct Window *Win, void *vi )
{
int loop;
UWORD offx = Win->BorderLeft;
UWORD offy = Win->BorderTop;
if (Win != NULL) 
	{
	BevelTags[3] = (ULONG)vi;
	DrawBevelBoxA( Win->RPort, 2+offx,1+offy,211,17, (struct TagItem *)(&BevelTags[2]));
	DrawBevelBoxA( Win->RPort, 2+offx,19+offy,629,127, (struct TagItem *)(&BevelTags[2]));
	DrawBevelBoxA( Win->RPort, 214+offx,1+offy,417,17, (struct TagItem *)(&BevelTags[2]));
	for( loop=0; loop<2; loop++)
		if (UE_WinTexts[loop].ITextFont==NULL)
			UE_WinTexts[loop].ITextFont=Win->WScreen->Font;
	PrintIText( Win->RPort, UE_WinTexts, offx, offy);
	}
}

int OpenWindowUE_Win( void )
{
struct Screen *Scr;
UWORD offx, offy;
UWORD loop;
struct NewGadget newgad;
struct Gadget *Gad;
struct Gadget *Gad2;
APTR Cla;
if (UE_WinFirstRun == 0)
	{
	UE_WinFirstRun = 1;
	}
if (UE_Win == NULL)
	{
	Scr = LockPubScreen((UBYTE *)"CtrlScrn");
	if (NULL != Scr)
		{
		offx = Scr->WBorLeft;
		offy = Scr->WBorTop + Scr->Font->ta_YSize+1;
		if (NULL != ( UE_WinVisualInfo = GetVisualInfoA( Scr, NULL)))
			{
			if (NULL != ( UE_WinDrawInfo = GetScreenDrawInfo( Scr)))
				{
				UE_WinGList = NULL;
				Gad = CreateContext( &UE_WinGList);
				for ( loop=0 ; loop<15 ; loop++ )
					if (UE_WinGadgetTypes[loop] != 198)
						{
						CopyMem((char * )&UE_WinNewGadgets[loop], ( char * )&newgad, (long)sizeof( struct NewGadget ));
						newgad.ng_VisualInfo = UE_WinVisualInfo;
						newgad.ng_LeftEdge += offx;
						newgad.ng_TopEdge += offy;
						UE_WinGadgets[ loop ] = NULL;
						UE_WinGadgets[ newgad.ng_GadgetID - UE_WinFirstID ] = Gad = CreateGadgetA( UE_WinGadgetTypes[loop], Gad, &newgad, newgad.ng_UserData );
						}
				for ( loop=0 ; loop<15 ; loop++ )
					if (UE_WinGadgetTypes[loop] == 198)
						{
						UE_WinGadgets[ loop ] = NULL;
						Cla = NULL;
						if (Gad)
							UE_WinGadgets[ loop ] = Gad2 = (struct Gadget *) NewObjectA( (struct IClass *)Cla, UE_WinNewGadgets[ loop ].ng_GadgetText, UE_WinNewGadgets[ loop ].ng_UserData );
						}
				if (Gad != NULL)
					{
					if (NULL != (UE_Win = OpenWindowTags( NULL, (WA_Left), 1,
									(WA_Top), 11,
									(WA_Width), 636+offx,
									(WA_Height), 189+offy,
									(WA_Title), "HBBS User Data Editor",
									(WA_MinWidth), 640,
									(WA_MinHeight), 200,
									(WA_MaxWidth), 640,
									(WA_MaxHeight), 200,
									(WA_DragBar), TRUE,
									(WA_DepthGadget), TRUE,
									(WA_CloseGadget), TRUE,
									(WA_Activate), TRUE,
									(WA_Dummy+0x30), TRUE,
									(WA_SmartRefresh), TRUE,
									(WA_AutoAdjust), TRUE,
									(WA_Gadgets), UE_WinGList,
									(WA_PubScreen) , (LONG)Scr,
									(WA_IDCMP),4194940,
									(TAG_END))))
						{
						RendWindowUE_Win(UE_Win, UE_WinVisualInfo );
						GT_RefreshWindow( UE_Win, NULL);
						RefreshGList( UE_WinGList, UE_Win, NULL, ~0);
						UnlockPubScreen( NULL, Scr);
						return( 0L );
						}
					}
				FreeGadgets( UE_WinGList);
				FreeScreenDrawInfo( Scr, UE_WinDrawInfo );
				}
			FreeVisualInfo( UE_WinVisualInfo );
			}
		UnlockPubScreen( NULL, Scr);
		}
	}
else
	{
	WindowToFront(UE_Win);
	ActivateWindow(UE_Win);
	return( 0L );
	}
return( 1L );
}

void CloseWindowUE_Win( void )
{
if (UE_Win != NULL)
	{
	FreeScreenDrawInfo( UE_Win->WScreen, UE_WinDrawInfo );
	UE_WinDrawInfo = NULL;
	CloseWindow( UE_Win);
	UE_Win = NULL;
	FreeVisualInfo( UE_WinVisualInfo);
	FreeGadgets( UE_WinGList);
	}
}

int OpenDiskFonts( void )
{
	int OKSoFar = 0;
if (NULL == OpenDiskFont( &HBBS8066 ) )
	OKSoFar = 1;
return ( OKSoFar );
}

