#include "..\..\Global\Variablen.h" #include "Passwort.h" #include "..\..\Global\Initialisierung.h" #include #include // Inhalt der PasswortÄndern Klasse aus Passwort.h // Konstruktor PasswortÄndern::PasswortÄndern( Schrift *zSchrift, Fenster *zVorLoginFenster ) { Punkt bildschirmmitte = Bildschirmmitte(); passwortÄndern = initKnopf( 10, 170, 130, 30, zSchrift, Knopf::Style::Sichtbar, "Passwort ändern" ); passwortÄndern->setMausEreignisParameter( this ); passwortÄndern->setMausEreignis( passwortÄndernPasswortÄndernME ); initToolTip( passwortÄndern, "Account Passwort ändern.", zSchrift->getThis(), hauptScreen ); zVorLoginFenster->addMember( passwortÄndern ); fenster = initFenster( bildschirmmitte.x - 125, bildschirmmitte.y - 115, 250, 230, zSchrift, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "Passwort ändern" ); name = initTextFeld( 20, 20, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Name" ); name->setTastaturEreignisParameter( this ); name->setTastaturEreignis( passwortÄndernNameTE ); initToolTip( name, "Account Name.", zSchrift->getThis(), hauptScreen ); fenster->addMember( name ); passwort = initTextFeld( 20, 50, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Passwort" ); passwort->setTastaturEreignisParameter( this ); passwort->setTastaturEreignis( passwortÄndernPasswortTE ); initToolTip( passwort, "Account Passwort.", zSchrift->getThis(), hauptScreen ); fenster->addMember( passwort ); neuPasswort = initTextFeld( 20, 80, 208, 20, zSchrift, TextFeld::Style::TextFeld, "neues Passwort" ); neuPasswort->setTastaturEreignisParameter( this ); neuPasswort->setTastaturEreignis( passwortÄndernNeuPasswortTE ); initToolTip( neuPasswort, "Neues Account Passwort.", zSchrift->getThis(), hauptScreen ); fenster->addMember( neuPasswort ); neuPasswort2 = initTextFeld( 20, 110, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Passwort wiederholen" ); neuPasswort2->setTastaturEreignisParameter( this ); neuPasswort2->setTastaturEreignis( passwortÄndernNeuPasswort2TE ); initToolTip( neuPasswort2, "Neues Passwort Wiederhohlen.", zSchrift->getThis(), hauptScreen ); fenster->addMember( neuPasswort2 ); geheimnis = initTextFeld( 20, 140, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Geheimis" ); geheimnis->setTastaturEreignisParameter( this ); geheimnis->setTastaturEreignis( passwortÄndernGeheimnisTE ); initToolTip( geheimnis, "Account Geheimnis.", zSchrift->getThis(), hauptScreen ); fenster->addMember( geheimnis ); weiter = initKnopf( 74, 170, 100, 20, zSchrift, Knopf::Style::Sichtbar, "weiter" ); weiter->setMausEreignisParameter( this ); weiter->setMausEreignis( passwortÄndernWeiterME ); nachricht = initTextFeld( 0, 5, 255, 150, zSchrift, TextFeld::Style::HCenter | TextFeld::Style::Mehrzeilig, "" ); fenster->addMember( nachricht ); fenster->addMember( weiter ); zVorLoginFenster->addMember( fenster ); ref = 1; } // Destruktor PasswortÄndern::~PasswortÄndern() { if( passwortÄndern ) passwortÄndern = passwortÄndern->release(); if( fenster ) fenster = fenster->release(); if( name ) name = name->release(); if( passwort ) passwort = passwort->release(); if( neuPasswort ) neuPasswort = neuPasswort->release(); if( neuPasswort2 ) neuPasswort2 = neuPasswort2->release(); if( geheimnis ) geheimnis = geheimnis->release(); if( weiter ) weiter = weiter->release(); if( nachricht ) nachricht = nachricht->release(); } // Privat void PasswortÄndern::zeigeNachricht( const char *txt ) { Punkt bildschirmmitte = Bildschirmmitte(); name->löscheStyle( TextFeld::Style::Sichtbar ); passwort->löscheStyle( TextFeld::Style::Sichtbar ); neuPasswort->löscheStyle( TextFeld::Style::Sichtbar ); neuPasswort2->löscheStyle( TextFeld::Style::Sichtbar ); geheimnis->löscheStyle( TextFeld::Style::Sichtbar ); fenster->setGröße( 250, 150 ); fenster->setPosition( bildschirmmitte.x - 125, bildschirmmitte.y - 75 ); weiter->setPosition( 139, 100 ); weiter->setText( "Ok" ); nachricht->setText( txt ); if( nachricht->zText()->getLänge() > 30 ) { int pos = -1; bool set = 0; int lastp = 0; for( int i = 20; i < nachricht->zText()->getLänge(); ) { char *tmp = &nachricht->zText()->getText()[ i ]; while( *tmp != ' ' && i < nachricht->zText()->getLänge() ) { tmp++; i++; if( i - 30 >= lastp ) { if( set ) { lastp = pos; set = 0; nachricht->zText()->getText()[ pos ] = '\n'; } else lastp += 5; } } if( i < nachricht->zText()->getLänge() ) { pos = i; set = 1; tmp++; i++; } } } nachricht->addStyle( TextFeld::Style::Sichtbar ); } // Knopfdruck void PasswortÄndern::druckFremdKnopf() // Ein anderer Knopf wurde gedrückt { fenster->löscheStyle( Fenster::Style::Sichtbar ); registerKlient->trenne(); passwortÄndern->setLinienRahmenBreite( 2 ); passwortÄndern->setAlphaFeldFarbe( 0x5500FF00 ); passwortÄndern->setAlphaFeldStärke( -5 ); } bool PasswortÄndern::passwortÄndernME( void *obj, MausEreignis me ) // MausEreignis im Knopf passwortVergessen { if( me.id == ME_RLinks ) { vorLogin->setPasswortÄndern(); passwortÄndern->setLinienRahmenBreite( 3 ); passwortÄndern->setAlphaFeldFarbe( 0xFF000000 ); passwortÄndern->setAlphaFeldStärke( 20 ); Punkt bildschirmmitte = Bildschirmmitte(); fenster->setGröße( 255, 230 ); fenster->setPosition( bildschirmmitte.x - 125, bildschirmmitte.y - 115 ); fenster->addStyle( Fenster::Style::Sichtbar ); nachricht->löscheStyle( TextFeld::Style::Sichtbar ); weiter->setText( "weiter" ); weiter->setPosition( 75, 170 ); name->addStyle( TextFeld::Style::Sichtbar ); passwort->addStyle( TextFeld::Style::Sichtbar ); neuPasswort->addStyle( TextFeld::Style::Sichtbar ); neuPasswort2->addStyle( TextFeld::Style::Sichtbar ); geheimnis->addStyle( TextFeld::Style::Sichtbar ); name->addStyle( TextFeld::Style::Fokus ); name->setAuswahl( name->zText()->getLänge(), 0 ); } return 1; } bool PasswortÄndern::nameTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld name { if( te.id == TE_Press && te.taste == T_Enter ) return 0; if( te.id == TE_Release && ( te.taste == T_Enter || te.taste == T_Tab ) ) { name->löscheStyle( TextFeld::Style::Fokus ); passwort->addStyle( TextFeld::Style::Fokus ); passwort->setAuswahl( passwort->zText()->getLänge(), 0 ); } if( name->zText()->getLänge() >= 25 && istSchreibbar( te.taste ) ) return 0; return 1; } bool PasswortÄndern::passwortTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld passwort { if( te.id == TE_Press && te.taste == T_Enter ) return 0; if( te.id == TE_Press ) passwort->setSchowChar( '*' ); if( te.id == TE_Release && ( te.taste == T_Enter || te.taste == T_Tab ) ) { passwort->löscheStyle( TextFeld::Style::Fokus ); neuPasswort->addStyle( TextFeld::Style::Fokus ); neuPasswort->setAuswahl( neuPasswort->zText()->getLänge(), 0 ); } if( passwort->zText()->getLänge() >= 25 && istSchreibbar( te.taste ) ) return 0; return 1; } bool PasswortÄndern::neuPasswortTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld neuPasswort { if( te.id == TE_Press && te.taste == T_Enter ) return 0; if( te.id == TE_Press ) neuPasswort->setSchowChar( '*' ); if( te.id == TE_Release && ( te.taste == T_Enter || te.taste == T_Tab ) ) { neuPasswort->löscheStyle( TextFeld::Style::Fokus ); neuPasswort2->addStyle( TextFeld::Style::Fokus ); neuPasswort2->setAuswahl( neuPasswort2->zText()->getLänge(), 0 ); } if( neuPasswort->zText()->getLänge() >= 25 && istSchreibbar( te.taste ) ) return 0; return 1; } bool PasswortÄndern::neuPasswort2TE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld neuPasswort2 { if( te.id == TE_Press && te.taste == T_Enter ) return 0; if( te.id == TE_Press ) neuPasswort2->setSchowChar( '*' ); if( te.id == TE_Release && ( te.taste == T_Enter || te.taste == T_Tab ) ) { neuPasswort2->löscheStyle( TextFeld::Style::Fokus ); geheimnis->addStyle( TextFeld::Style::Fokus ); geheimnis->setAuswahl( geheimnis->zText()->getLänge(), 0 ); } if( neuPasswort2->zText()->getLänge() >= 25 && istSchreibbar( te.taste ) ) return 0; return 1; } bool PasswortÄndern::geheimnisTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld geheimnis { if( te.id == TE_Press && te.taste == T_Enter ) return 0; if( te.id == TE_Press ) geheimnis->setSchowChar( '*' ); if( te.id == TE_Release && te.taste == T_Enter ) { geheimnis->löscheStyle( TextFeld::Style::Fokus ); MausEreignis me; me.id = ME_RLinks; weiterME( 0, me ); } if( geheimnis->zText()->getLänge() >= 50 && istSchreibbar( te.taste ) ) return 0; return 1; } bool PasswortÄndern::weiterME( void *obj, MausEreignis me ) // MausEreignis im Knopf weiter { if( me.id == ME_RLinks ) { if( weiter->zText()->istGleich( "weiter" ) ) { if( name->zText()->getLänge() == 0 ) zeigeNachricht( "Bitte gebe deinen Accountnamen ein." ); if( passwort->zText()->getLänge() == 0 ) zeigeNachricht( "Bitte gebe dein Accountpasswort ein." ); if( neuPasswort->zText()->getLänge() == 0 ) zeigeNachricht( "Bitte gebe ein neues Passwort ein." ); if( geheimnis->zText()->getLänge() == 0 ) zeigeNachricht( "Bitte gebe dein Accountgeheimnis ein." ); if( !neuPasswort2->zText()->istGleich( neuPasswort->zText()->getText() ) ) zeigeNachricht( "Das wiederhohlte Passwort stimmt nicht mit dem neuen Passwort überein." ); if( weiter->zText()->istGleich( "Ok" ) ) return 1; new AktionsThread( 13, name->zText()->getText(), passwort->zText()->getText(), geheimnis->zText()->getText(), neuPasswort->zText()->getText(), 0 ); } else { Punkt bildschirmmitte = Bildschirmmitte(); fenster->setGröße( 255, 230 ); fenster->setPosition( bildschirmmitte.x - 125, bildschirmmitte.y - 115 ); fenster->addStyle( Fenster::Style::Sichtbar ); nachricht->löscheStyle( TextFeld::Style::Sichtbar ); weiter->setText( "weiter" ); weiter->setPosition( 75, 170 ); name->addStyle( TextFeld::Style::Sichtbar ); passwort->addStyle( TextFeld::Style::Sichtbar ); neuPasswort->addStyle( TextFeld::Style::Sichtbar ); neuPasswort2->addStyle( TextFeld::Style::Sichtbar ); geheimnis->addStyle( TextFeld::Style::Sichtbar ); name->addStyle( TextFeld::Style::Fokus ); name->setAuswahl( name->zText()->getLänge(), 0 ); } } return 1; } void PasswortÄndern::setResult( bool ret ) // Setzt den Returnwert { if( ret ) zeigeNachricht( "Passwort erfolgreich geändert." ); else if( registerKlient->getLetzterFehler() ) zeigeNachricht( registerKlient->getLetzterFehler() ); else zeigeNachricht( "Es ist ein Unbekannter Fehler aufgetreten." ); } // Reference Counting PasswortÄndern *PasswortÄndern::getThis() { ref++; return this; } PasswortÄndern *PasswortÄndern::release() { ref--; if( !ref ) delete this; return 0; } // Inhalt der PasswortVergessen Klasse aus Passwort.h // Konstruktor PasswortVergessen::PasswortVergessen( Schrift *zSchrift, Fenster *zVorLoginFenster ) { Punkt bildschirmmitte = Bildschirmmitte(); passwortVergessen = initKnopf( 10, 330, 130, 30, zSchrift, Knopf::Style::Sichtbar, "Passwort vergessen" ); passwortVergessen->setMausEreignisParameter( this ); passwortVergessen->setMausEreignis( passwortVergessenPasswortVergessenME ); initToolTip( passwortVergessen, "Account Passwort per E-Mail senden.", zSchrift->getThis(), hauptScreen ); zVorLoginFenster->addMember( passwortVergessen ); fenster = initFenster( bildschirmmitte.x - 125, bildschirmmitte.y - 70, 250, 140, zSchrift, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "Passwort vergessen" ); name = initTextFeld( 20, 20, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Name" ); name->setTastaturEreignisParameter( this ); name->setTastaturEreignis( passwortVergessenNameTE ); initToolTip( name, "Account Name.", zSchrift->getThis(), hauptScreen ); fenster->addMember( name ); geheimnis = initTextFeld( 20, 50, 208, 20, zSchrift, TextFeld::Style::TextFeld, "Geheimis" ); geheimnis->setTastaturEreignisParameter( this ); geheimnis->setTastaturEreignis( passwortVergessenGeheimnisTE ); initToolTip( geheimnis, "Account geheimnis.", zSchrift->getThis(), hauptScreen ); fenster->addMember( geheimnis ); weiter = initKnopf( 74, 80, 100, 20, zSchrift, Knopf::Style::Sichtbar, "weiter" ); weiter->setMausEreignisParameter( this ); weiter->setMausEreignis( passwortVergessenWeiterME ); nachricht = initTextFeld( 0, 5, 255, 150, zSchrift, TextFeld::Style::HCenter | TextFeld::Style::Mehrzeilig, "" ); fenster->addMember( nachricht ); fenster->addMember( weiter ); zVorLoginFenster->addMember( fenster ); ref = 1; } // Destruktor PasswortVergessen::~PasswortVergessen() { if( passwortVergessen ) passwortVergessen = passwortVergessen->release(); if( fenster ) fenster = fenster->release(); if( name ) name = name->release(); if( geheimnis ) geheimnis = geheimnis->release(); if( weiter ) weiter = weiter->release(); if( nachricht ) nachricht = nachricht->release(); } // Privat void PasswortVergessen::zeigeNachricht( const char *txt ) { Punkt bildschirmmitte = Bildschirmmitte(); name->löscheStyle( TextFeld::Style::Sichtbar ); geheimnis->löscheStyle( TextFeld::Style::Sichtbar ); fenster->setGröße( 250, 150 ); fenster->setPosition( bildschirmmitte.x - 125, bildschirmmitte.y - 75 ); weiter->setPosition( 139, 100 ); weiter->setText( "Ok" ); nachricht->setText( txt ); if( nachricht->zText()->getLänge() > 30 ) { int pos = -1; bool set = 0; int lastp = 0; for( int i = 20; i < nachricht->zText()->getLänge(); ) { char *tmp = &nachricht->zText()->getText()[ i ]; while( *tmp != ' ' && i < nachricht->zText()->getLänge() ) { tmp++; i++; if( i - 30 >= lastp ) { if( set ) { lastp = pos; set = 0; nachricht->zText()->getText()[ pos ] = '\n'; } else lastp += 5; } } if( i < nachricht->zText()->getLänge() ) { pos = i; set = 1; tmp++; i++; } } } nachricht->addStyle( TextFeld::Style::Sichtbar ); } // Knopfdruck void PasswortVergessen::druckFremdKnopf() // Ein anderer Knopf wurde gedrückt { fenster->löscheStyle( Fenster::Style::Sichtbar ); registerKlient->trenne(); passwortVergessen->setLinienRahmenBreite( 2 ); passwortVergessen->setAlphaFeldFarbe( 0x5500FF00 ); passwortVergessen->setAlphaFeldStärke( -5 ); } bool PasswortVergessen::passwortVergessenME( void *obj, MausEreignis me ) // MausEreignis im Knopf passwortVergessen { if( me.id == ME_RLinks ) { vorLogin->setPasswortVergessen(); passwortVergessen->setLinienRahmenBreite( 3 ); passwortVergessen->setAlphaFeldFarbe( 0xFF000000 ); passwortVergessen->setAlphaFeldStärke( 20 ); Punkt bildschirmmitte = Bildschirmmitte(); fenster->setGröße( 255, 140 ); fenster->setPosition( bildschirmmitte.x - 125, bildschirmmitte.y - 70 ); fenster->addStyle( Fenster::Style::Sichtbar ); nachricht->löscheStyle( TextFeld::Style::Sichtbar ); weiter->setText( "weiter" ); weiter->setPosition( 75, 80 ); name->addStyle( TextFeld::Style::Sichtbar ); geheimnis->addStyle( TextFeld::Style::Sichtbar ); name->addStyle( TextFeld::Style::Fokus ); name->setAuswahl( name->zText()->getLänge(), 0 ); } return 1; } bool PasswortVergessen::nameTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld name { if( te.id == TE_Press && te.taste == T_Enter ) return 0; if( te.id == TE_Release && ( te.taste == T_Enter || te.taste == T_Tab ) ) { name->löscheStyle( TextFeld::Style::Fokus ); geheimnis->addStyle( TextFeld::Style::Fokus ); geheimnis->setAuswahl( geheimnis->zText()->getLänge(), 0 ); } if( name->zText()->getLänge() >= 25 && istSchreibbar( te.taste ) ) return 0; return 1; } bool PasswortVergessen::geheimnisTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld geheimnis { if( te.id == TE_Press && te.taste == T_Enter ) return 0; if( te.id == TE_Press ) geheimnis->setSchowChar( '*' ); if( te.id == TE_Release && te.taste == T_Enter ) { geheimnis->löscheStyle( TextFeld::Style::Fokus ); MausEreignis me; me.id = ME_RLinks; weiterME( 0, me ); } if( geheimnis->zText()->getLänge() >= 50 && istSchreibbar( te.taste ) ) return 0; return 1; } bool PasswortVergessen::weiterME( void *obj, MausEreignis me ) // MausEreignis im Knopf weiter { if( me.id == ME_RLinks ) { if( weiter->zText()->istGleich( "weiter" ) ) { if( name->zText()->getLänge() == 0 ) zeigeNachricht( "Bitte gebe deinen Accountnamen ein." ); if( geheimnis->zText()->getLänge() == 0 ) zeigeNachricht( "Bitte gebe dein Accountgeheimnis ein." ); if( weiter->zText()->istGleich( "Ok" ) ) return 1; new AktionsThread( 14, name->zText()->getText(), geheimnis->zText()->getText(), 0, 0, 0 ); } else { Punkt bildschirmmitte = Bildschirmmitte(); fenster->setGröße( 255, 140 ); fenster->setPosition( bildschirmmitte.x - 125, bildschirmmitte.y - 70 ); fenster->addStyle( Fenster::Style::Sichtbar ); nachricht->löscheStyle( TextFeld::Style::Sichtbar ); weiter->setText( "weiter" ); weiter->setPosition( 75, 80 ); name->addStyle( TextFeld::Style::Sichtbar ); geheimnis->addStyle( TextFeld::Style::Sichtbar ); name->addStyle( TextFeld::Style::Fokus ); name->setAuswahl( name->zText()->getLänge(), 0 ); } } return 1; } void PasswortVergessen::setResult( bool ret ) // Setzt den Returnwert { if( ret ) zeigeNachricht( "Dir wurde eine E-Mail mit deinem Accountpasswort gesendet." ); else if( registerKlient->getLetzterFehler() ) zeigeNachricht( registerKlient->getLetzterFehler() ); else zeigeNachricht( "Es ist ein Unbekannter Fehler aufgetreten." ); } // Reference Counting PasswortVergessen *PasswortVergessen::getThis() { ref++; return this; } PasswortVergessen *PasswortVergessen::release() { ref--; if( !ref ) delete this; return 0; } // messages bool passwortÄndernPasswortÄndernME( void *p, void *obj, MausEreignis me ) { if( !p ) return 0; return ( (PasswortÄndern*)p )->passwortÄndernME( obj, me ); } bool passwortÄndernNameTE( void *p, void *obj, TastaturEreignis te ) { if( !p ) return 0; return ( (PasswortÄndern*)p )->nameTE( obj, te ); } bool passwortÄndernPasswortTE( void *p, void *obj, TastaturEreignis te ) { if( !p ) return 0; return ( (PasswortÄndern*)p )->passwortTE( obj, te ); } bool passwortÄndernNeuPasswortTE( void *p, void *obj, TastaturEreignis te ) { if( !p ) return 0; return ( (PasswortÄndern*)p )->neuPasswortTE( obj, te ); } bool passwortÄndernNeuPasswort2TE( void *p, void *obj, TastaturEreignis te ) { if( !p ) return 0; return ( (PasswortÄndern*)p )->neuPasswort2TE( obj, te ); } bool passwortÄndernGeheimnisTE( void *p, void *obj, TastaturEreignis te ) { if( !p ) return 0; return ( (PasswortÄndern*)p )->geheimnisTE( obj, te ); } bool passwortÄndernWeiterME( void *p, void *obj, MausEreignis me ) { if( !p ) return 0; return ( (PasswortÄndern*)p )->weiterME( obj, me ); } bool passwortVergessenPasswortVergessenME( void *p, void *obj, MausEreignis me ) { if( !p ) return 0; return ( (PasswortVergessen*)p )->passwortVergessenME( obj, me ); } bool passwortVergessenNameTE( void *p, void *obj, TastaturEreignis te ) { if( !p ) return 0; return ( (PasswortVergessen*)p )->nameTE( obj, te ); } bool passwortVergessenGeheimnisTE( void *p, void *obj, TastaturEreignis te ) { if( !p ) return 0; return ( (PasswortVergessen*)p )->geheimnisTE( obj, te ); } bool passwortVergessenWeiterME( void *p, void *obj, MausEreignis me ) { if( !p ) return 0; return ( (PasswortVergessen*)p )->weiterME( obj, me ); }