#ifndef Passwort_H
#define Passwort_H

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

using namespace Framework;

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

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

class PasswortVergessen
{
private:
	Knopf *passwortVergessen;
	Fenster *fenster;
	TextFeld *name;
	TextFeld *geheimnis;
	Knopf *weiter;
	TextFeld *nachricht;
	int ref;
	void zeigeNachricht( const char *txt );

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

// messages
bool passwortÄndernPasswortÄndernME( void *p, void *obj, MausEreignis me );
bool passwortÄndernNameTE( void *p, void *obj, TastaturEreignis te );
bool passwortÄndernPasswortTE( void *p, void *obj, TastaturEreignis te );
bool passwortÄndernNeuPasswortTE( void *p, void *obj, TastaturEreignis te );
bool passwortÄndernNeuPasswort2TE( void *p, void *obj, TastaturEreignis te );
bool passwortÄndernGeheimnisTE( void *p, void *obj, TastaturEreignis te );
bool passwortÄndernWeiterME( void *p, void *obj, MausEreignis me );

bool passwortVergessenPasswortVergessenME( void *p, void *obj, MausEreignis me );
bool passwortVergessenNameTE( void *p, void *obj, TastaturEreignis te );
bool passwortVergessenGeheimnisTE( void *p, void *obj, TastaturEreignis te );
bool passwortVergessenWeiterME( void *p, void *obj, MausEreignis me );

#endif