/************************************************************************************
 * AboutBox.c
 *
 * from HexEdit, a simple hex editor
 * copyright 1993, Jim Bumgardner
 *
 ************************************************************************************/

#include "HexEdit.h"

pascal	Boolean MyAboutFilter ( DialogPtr, EventRecord *, short *);
long	gStartTime;

#define AboutDLOG		130
#define AutoCloseTime	10*60		//LR :double display time

void HexEditAboutBox( void )	//LR 960606 :fix warnings
{
	GrafPtr			savePort;
	DialogPtr		dp;
	short			itemHit;
	VersRecHndl		vr;
	StringPtr		myVersStr;
	ModalFilterUPP filterUPP = NewModalFilterProc( MyAboutFilter );	//LR :see below
	
	if ((vr = (VersRecHndl) GetResource('vers',1)) != NULL) {
		HLock((Handle) vr);
		myVersStr = (StringPtr) (((unsigned long) &(**vr).shortVersion[1]) + 
						  ((**vr).shortVersion[0]));
	}
	else
		myVersStr = "\p???";

	ParamText(myVersStr,"\p","\p","\p");
	
	GetPort(&savePort);
	dp = GetNewDialog(AboutDLOG, NULL, (WindowPtr) -1L);
	gStartTime = TickCount();

	ModalDialog( filterUPP, &itemHit );		//LR :Universal Headers (& PPC) compliant

	DisposeDialog(dp);
	SetPort(savePort);
	if (vr)
	{
		HUnlock((Handle) vr);
		ReleaseResource((Handle) vr);
	}
}

pascal Boolean MyAboutFilter(DialogPtr dp, EventRecord *ep, short *itemHit)
{
#pragma unused (itemHit)	//LR :fix warnings

	switch (ep->what) {
	  case mouseDown:		// For About Box - trap all events.
	  case keyDown:
	  case autoKey:
	  	return true;
		break;
	  case updateEvt:
	  	SetPort(dp);
	  	TextFont(1);
	  	TextSize(9);
		break;
	  case nullEvent:
	  	if (TickCount() - gStartTime > AutoCloseTime)
	  		return true;
	  default:
	  	break;
	}
	return false;
}
