#ifndef Geheimnis_H
#define Geheimnis_H

#include <Knopf.h>
#include <Fenster.h>
#include <TextFeld.h>
#include <Schrift.h>
#include <Bildschirm.h>
#include "..\..\Aktionen\AktionsThread.h"

using namespace Framework;

class GeheimnisÄndern
{
private:
	Knopf *geheimnisÄndern;
	Fenster *fenster;
	TextFeld *name;
	TextFeld *passwort;
	TextFeld *geheimnis;
	TextFeld *nGeheimnis;
	Knopf *weiter;
	TextFeld *nachricht;
	int ref;
	void zeigeNachricht( const char *txt );

public:
	// Konstruktor
	GeheimnisÄndern( Schrift *zSchrift, Fenster *zVorLoginFenster );
	// Destruktor
	~GeheimnisÄndern();
	// Knopfdruck
	void druckFremdKnopf(); // Ein anderer Knopf wurde gedrückt
	bool geheimnisÄndernME( void *obj, MausEreignis me ); // MausEreignis im Knopf geheimnisÄndern
	bool nameTE( void *obj, TastaturEreignis te ); // Tastaturereignis im Textfeld name
	bool passwortTE( void *obj, TastaturEreignis te ); // Tastaturereignis im Textfeld passwort
	bool geheimnisTE( void *obj, TastaturEreignis te ); // Tastaturereignis im Textfeld geheimnis
	bool nGeheimnisTE( void *obj, TastaturEreignis te ); // Tastaturereignis im Textfeld nGeheimnis
	bool weiterME( void *obj, MausEreignis me ); // MausEreignis im Knopf weiter
	void setResult( bool ret ); // Setzt den Returnwert
	// Reference Counting
	GeheimnisÄndern *getThis();
	GeheimnisÄndern *release();
};

class GeheimnisVergessen
{
private:
	Knopf *geheimnisVergessen;
	Fenster *fenster;
	TextFeld *name;
	TextFeld *passwort;
	Knopf *weiter;
	TextFeld *nachricht;
	int ref;
	void zeigeNachricht( const char *txt );

public:
	// Konstruktor
	GeheimnisVergessen( Schrift *zSchrift, Fenster *zVorLoginFenster );
	// Destruktor
	~GeheimnisVergessen();
	// Knopfdruck
	void druckFremdKnopf(); // Ein anderer Knopf wurde gedrückt
	bool geheimnisVergessenME( void *obj, MausEreignis me ); // MausEreignis im Knopf geheimnisVergessen
	bool nameTE( void *obj, TastaturEreignis te ); // Tastaturereignis im Textfeld name
	bool passwortTE( void *obj, TastaturEreignis te ); // Tastaturereignis im Textfeld passwort
	bool weiterME( void *obj, MausEreignis me ); // MausEreignis im Knopf weiter
	void setResult( bool ret ); // Setzt den Returnwert
	// Reference Counting
	GeheimnisVergessen *getThis();
	GeheimnisVergessen *release();
};

// messages
bool geheimnisÄndernGeheimnisÄndernME( void *p, void *obj, MausEreignis me );
bool geheimnisÄndernNameTE( void *p, void *obj, TastaturEreignis te );
bool geheimnisÄndernPasswortTE( void *p, void *obj, TastaturEreignis te );
bool geheimnisÄndernGeheimnisTE( void *p, void *obj, TastaturEreignis te );
bool geheimnisÄndernNGeheimnisTE( void *p, void *obj, TastaturEreignis te );
bool geheimnisÄndernWeiterME( void *p, void *obj, MausEreignis me );

bool geheimnisVergessenGeheimnisVergessenME( void *p, void *obj, MausEreignis me );
bool geheimnisVergessenNameTE( void *p, void *obj, TastaturEreignis te );
bool geheimnisVergessenPasswortTE( void *p, void *obj, TastaturEreignis te );
bool geheimnisVergessenWeiterME( void *p, void *obj, MausEreignis me );

#endif