#ifndef Bestätigung_H
#define Bestätigung_H

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

using namespace Framework;

class Bestätigung
{
private:
	Knopf *bestätigung;
	Fenster *fenster;
	TextFeld *name;
	TextFeld *passwort;
	Knopf *weiter;
	TextFeld *schlüssel;
	Knopf *später;
	Knopf *abbruch;
	Knopf *neuSenden;
	TextFeld *nachricht;
	int ref;
	void zeigeNachricht( const char *txt );

public:
	// Konstruktor
	Bestätigung( Schrift *zSchrift, Fenster *zVorLoginFenster );
	// Destruktor
	~Bestätigung();
	// Knopfdruck
	void druckFremdKnopf(); // Ein anderer Bereich des Programms wurde ausgewählt
	bool bestätigungME( void *obj, MausEreignis me ); // MausEreignis im Knopf bestärigung
	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
	bool schlüsselTE( void *obj, TastaturEreignis te ); // Tastaturereignis im Textfeld schlüssel
	bool späterME( void *obj, MausEreignis me ); // MausEreignis im Knopf später
	bool abbruchME( void *obj, MausEreignis me ); // MausEreignis im Knopf abbruch
	bool neuSendenME( void *obj, MausEreignis me ); // MausEreignis im Knopf neuSenden
	void setWeiterResult( int ret ); // setzt den Returnwert des Weiter drückens
	void setFertigResult( bool ret ); // setzt den Returnwert des Fertig drükens
	// Reference Counting
	Bestätigung *getThis();
	Bestätigung *release();
};

// messages
bool bestätigungBestätigungME( void *p, void *obj, MausEreignis me );
bool bestätigungNameTE( void *p, void *obj, TastaturEreignis te );
bool bestätigungPasswortTE( void *p, void *obj, TastaturEreignis te );
bool bestätigungWeiterME( void *p, void *obj, MausEreignis me );
bool bestätigungSchlüsselTE( void *p, void *obj, TastaturEreignis te );
bool bestätigungSpäterME( void *p, void *obj, MausEreignis me );
bool bestätigungAbbruchME( void *p, void *obj, MausEreignis me );
bool bestätigungNeuSendenME( void *p, void *obj, MausEreignis me );

#endif