
/* Generated by Interface Builder */

#import "PosView.h"
#import "dpsclient/wraps.h"

@implementation PosView

- neuePos: (int) neuerWert : (int) neuerMaxWert;
{
	aktuellerWert = neuerWert;
	maxWert = neuerMaxWert;
	[self display];
	NXPing();
	return self;
}

void gibZeitAus(DPSTimedEntry number, double now, char *data)
{
	time_t aktuelleZeit;
	
	aktuelleZeit = time(NULL) - ((PosView *) data)->startzeit;
	((PosView *) data)->Mins = (int) aktuelleZeit / 60;
	((PosView *) data)->Seks = (int) aktuelleZeit % 60;
	[(id) data display];
	NXPing();
}

- anfangPause
{
	pauseStart = time(NULL);
	PauseModus = YES;
	PauseMins = Mins;
	PauseSeks = Seks;
	return self;
}

- endePause
{
	startzeit += time(NULL) - pauseStart;
	PauseModus = NO;
	return self;
}

- starteZeit
{
	startzeit = time(NULL);
	meiner = DPSAddTimedEntry(1.0, (DPSTimedEntryProc)
		gibZeitAus, self, 10);
	return self;
}

- stoppeZeit
{
	if (meiner)
	{
		DPSRemoveTimedEntry (meiner);
		meiner = NULL;
		Mins = Seks = -1;
		[self display];
		NXPing();
	}
	PauseModus = NO;
	return self;
}

- initFrame:(const NXRect *)frameRect
{
	[super initFrame:frameRect];
	[self setFlipped:YES];

	aktuellerWert = 0;
	maxWert = 100; //Test
	Mins = Seks = -1;
	PauseModus = 0;
	
	meinRechteck.origin.x = 0.0;
	meinRechteck.origin.y = 0.0;
	meinRechteck.size.height = frameRect->size.height;

	Schrift = [Font newFont:"Helvetica-Bold" size:18.0 style:0 
			      matrix:NX_FLIPPEDMATRIX];
	
	return self;
}

- drawSelf: (NXRect *) rects : (int) count;
{
	char temp[10];

  PSsetgray (0.5);
  NXRectFill (&bounds);
	PSsetgray (0.25);
	if (maxWert != 0)
	{
		meinRechteck.size.width =
			(bounds.size.width / (float) maxWert) * (float) aktuellerWert;
		NXRectFill(&meinRechteck);

		[Schrift set];
		if (Mins != -1)
		{
			if (PauseModus == YES)
				sprintf(temp, "%d:%02d", PauseMins, PauseSeks);
			else				
				sprintf(temp, "%d:%02d", Mins,Seks);
			PSsetgray (1.0);
			PSmoveto((bounds.size.width - [Schrift getWidthOf:temp])/2.0,
							20.0);
			PSshow(temp);
		}
	}
	return self;
}

@end
