#ifndef Login_H
#define Login_H

#include <Knopf.h>
#include <MausEreignis.h>
#include <TastaturEreignis.h>
#include <Thread.h>
#include "..\Basic\Abschnitt.h"
#include "..\Programm.h"

class AktionThread : public Thread
{
private:
	Bildschirm *zB;
	Programm *zP;
	int ak;
	int ref;

public:
	// Konstruktor
	AktionThread( int ak, Bildschirm *zScreen, Programm *zProg );
	// Destruktor
	~AktionThread();
	// nicht constant
	virtual void thread();
	// constant

	// Reference Counting
	AktionThread *getThis();
	AktionThread *release();
};

class AdminAccount
{
private:
	Text *name;
	Text *passwort;
	int ref;

public:
	// Konstruktor
	AdminAccount( const char *name, const char *passwort );
	// Destruktor
	~AdminAccount();
	// nicht constant
	void login( const char *name, const char *passwort );
	// constant
	Text *getName() const;
	Text *zName() const;
	Text *getPasswort() const;
	Text *zPasswort() const;
	// Reference Counting
	AdminAccount *getThis();
	AdminAccount *release();
};

class Login : public Abschnitt
{
private:
	Fenster *fenster;
	Fenster *f;
	TextFeld *logout;
	TextFeld *name;
	TextFeld *passwort;
	Knopf *login;
	AdminAccount *account;
	Programm *zProg;
	Schrift *schrift;
	InitDatei *iD;
	RessourceBild *rB;
	int ref;

public:
	// Konstruktor
	Login( Schrift *s, Programm *zP, InitDatei *iDat, RessourceBild *resB, Bildschirm *b );
	// Destruktor
	~Login();
	// nicht constant
	virtual void setFenster( Fenster *f );
	virtual void setSichtbar( bool s );
	bool nameTastaturEreignis( void *obj, TastaturEreignis te );
	bool passwortTastaturEreignis( void *obj, TastaturEreignis te );
	bool loginMausEreignis( void *obj, MausEreignis me );
	// constant
	AdminAccount *getAccount() const;
	AdminAccount *zAccount() const;
	// Reference Counting
	virtual Abschnitt *getThis();
	virtual Abschnitt *release();
};

// Ereignisse
bool loginNameTastaturEreignis( void *p, void *obj, TastaturEreignis te );
bool loginPasswortTastaturEreignis( void *p, void *obj, TastaturEreignis te );
bool loginLoginMausEreignis( void *p, void *obj, MausEreignis me );

#endif