#ifndef VorLogin_H
#define VorLogin_H

#include <Klient.h>
#include "Login\Login.h"
#include "Account verwalten\Bestätigung.h"
#include "Account verwalten\EMail.h"
#include "Account verwalten\Geheimnis.h"
#include "Account verwalten\Name.h"
#include "Account verwalten\Passwort.h"
#include "Account verwalten\Registrierung.h"
#include "Account verwalten\Unregistrierung.h"

class VorLogin
{
private:
	Knopf				*beenden;
	Login				*login;
	Bestätigung			*bestätigung;
	EMailÄndern			*eMailÄndern;
	EMailVergessen		*eMailVergessen;
	GeheimnisÄndern		*geheimnisÄndern;
	GeheimnisVergessen	*geheimnisVergessen;
	NameVergessen		*nameVergessen;
	PasswortÄndern		*passwortÄndern;
	PasswortVergessen	*passwortVergessen;
	Registrierung		*registrierung;
	Unregistrierung		*unregistrierung;
	Schrift				*schrift;
	Bildschirm			*bildschirm;
	Fenster             *fenster;
	int ref;

public:
	// Konstruktor 
	VorLogin( Schrift *zSchrift, Bildschirm *zBildschirm );
	// Destruktor 
	~VorLogin();
	// nicht constant
	void setSichtbar( bool s ); // Setzt die Sichtbarkeit der VorLogin Oberfräche
	void setLogin( bool knopfPress ); // macht Login Oberfläche sichtbar
	void setBestätigung(); // macht Bestätigung Oberfläche sichtbar
	void setEMailÄndern(); // macht EMailÄndern Oberfläche sichtbar
	void setEMailVergessen(); // macht EMailVergessen Oberfläche sichtbar
	void setGeheimnisÄndern(); // macht GeheimnisÄndern Oberfläche sichtbar
	void setGeheilnisVergessen(); // macht GeheimnisVergessen Oberfläche sichtbar
	void setNameVergessen(); // macht NameVergessen Oberfläche sichtbar
	void setPasswortÄndern(); // macht PasswortÄndern Oberfläche sichtbar
	void setPasswortVergessen(); // macht passwortVergessen Oberfläche sichtbar
	void setRegistrierung(); // macht Registrierung Oberfläche sichtbar
	void setUnregistrierung(); // macht Unregistrierung Oberfläche sichtbar
	// constant
	Login *getLogin() const; // gibt die Login Oberfläche zurück
	Login *zLogin() const;
	Bestätigung *getBestätigung() const; // gibt die Bestätigung Oberfläche zurück
	Bestätigung *zBestätigung() const;
	EMailÄndern *getEMailÄndern() const; // gibt die EMailÄndern Oberfläche zurück
	EMailÄndern *zEMailÄndern() const;
	EMailVergessen *getEMailVergessen() const; // gibt die EMailVergessen Oberfläche zurück
	EMailVergessen *zEMailVergessen() const;
	GeheimnisÄndern *getGeheimnisÄndern() const; // gibt die GeheimnisÄndern Oberfläche zurück
	GeheimnisÄndern *zGeheimnisÄndern() const;
	GeheimnisVergessen *getGeheimnisVergessen() const; // gibt die GeheimnisVergessen Oberfläche zurück
	GeheimnisVergessen *zGeheimnisVergessen() const;
	NameVergessen *getNameVergessen() const; // gibt die NameVergessen Oberfläche zurück
	NameVergessen *zNameVergessen() const;
	PasswortÄndern *getPasswortÄndern() const; // gibt die PasswortÄndern Oberfläche zurück
	PasswortÄndern *zPasswortÄndern() const;
	PasswortVergessen *getPasswortVergessen() const; // gibt die PasswortVergessen Oberfläche zurück
	PasswortVergessen *zPasswortVergessen() const;
	Registrierung *getRegistrierung() const; // gibt die Registrierung Oberfläche zurück
	Registrierung *zRegistrierung() const;
	Unregistrierung *getUnregistrierung() const; // gibt die Unregistrierung Oberfläche zurück
	Unregistrierung *zUnregistrierung() const;
	Fenster *zFenster() const;
	// Reference Counting
	VorLogin *getThis();
	VorLogin *release();
};

// Ereignisse
bool VorLoginBeendenME( void *p, void *obj, MausEreignis me );

#endif