/*

*/


#include "keypad.h"

#include <dos/dos.h>
#include <stdio.h>

struct IntuitionBase *IntuitionBase;
struct GfxBase *GfxBase;
struct GadToolsBase *GadToolsBase;
struct UtilityBase *UtilityBase;

extern struct Window *Project0Wnd;
extern struct Gadget *Project0Gadgets[13];
struct Gadget *G;


struct TagItem tlist[2] = { {GTIN_Number,0},{TAG_DONE,0}};

struct TagItem systaglist[2] = { {TAG_DONE,0}};

char buf1[256],buf2[256];

void GetName (char *buf)
{
	char buffer[256];
	struct Task *t;

	t=FindTask(0);

	strcpy(buf,t->tc_Node.ln_Name);
}

int mode=1;

void do_the_thing (int zahl)
{
	int wert=0;
	tlist[0].ti_Data = (ULONG)&(wert);

	GT_GetGadgetAttrsA(G,Project0Wnd,0,(struct TagItem*)&tlist);

	if (zahl>=0)	/* werte direkt reinmultiplizieren */
	{
		if (wert>999) wert=0;
		wert = (wert*10) + zahl;
		if (wert>999) wert=zahl;
		GT_SetGadgetAttrs(G,Project0Wnd,0,GTIN_Number,wert,TAG_DONE);
	}
	else		/* kommando bekommmen */
	{
		switch (zahl)
		{
			case -1:				/* EXAMPLE: */
				if (wert<100)
				{
					switch (wert)
					{
						case 1:
						     mode=1;
							SystemTagList("requestchoice VisualKeypad \"ASCII Modus aktiviert\" Verstanden",&systaglist);
							break;
						case 2:
						     mode=2;
							SystemTagList("requestchoice VisualKeypad \"IFF Bild-Modus aktiviert\" Verstanden",&systaglist);
							break;
						default:
							break;
					}	
				}
				else
				{
					GetName(buf1);	/* "KEYPAD" */
					if (mode==1)
					sprintf(buf2,"$%s %ld ASCII",buf1,wert); /* "$KEYPAD <NUMMER>" */
					else
					sprintf(buf2,"$%s %ld IFF",buf1,wert); /* "$KEYPAD <NUMMER>" */
					SystemTagList(buf2,&systaglist);
				}
				break;

			case -2:GT_SetGadgetAttrs(G,Project0Wnd,0,GTIN_Number,100,TAG_DONE);
				break;

			case -3:
				break;

			default:
				break;
		}
	}

}

int main()
{
	IntuitionBase = (struct IntuitionBase*) OpenLibrary("intuition.library",37L);
	GfxBase = (struct GfxBase*) OpenLibrary("graphics.library",37L);
	GadToolsBase = (struct GadToolsBase*) OpenLibrary("gadtools.library",37L);
	UtilityBase = (struct UtilityBase*) OpenLibrary("utility.library",37L);

	if( IntuitionBase && UtilityBase && GfxBase && GadToolsBase )
	{
		if(!SetupScreen())
		{
			if(!OpenProject0Window())
			{
				int quit;

				G = Project0Gadgets[12];
				
				SystemTagList("requestchoice VisualKeypad \"Copyright © 1994 by Daniel Balster\" \"Daniel ist c00l\"",&systaglist);
				
				do
				{
					Wait( 1L<<Project0Wnd->UserPort->mp_SigBit );
					
					quit = HandleProject0IDCMP();
					do_the_thing(quit);
				}
				while( quit!=-4 );
			}
			CloseProject0Window();
		}
		CloseDownScreen();
	}

	if( IntuitionBase ) CloseLibrary( IntuitionBase );
	if( UtilityBase ) CloseLibrary( UtilityBase );
	if( GfxBase ) CloseLibrary( GfxBase );
	if( GadToolsBase ) CloseLibrary( GadToolsBase );

	return 0;
}
