#include "..\..\Global\Variablen.h" #include "Bestätigung.h" #include "..\..\Global\Initialisierung.h" #include #include // Inhalt der Bestätigung Klasse aus Bestätigung.h // Konstruktor Bestätigung::Bestätigung( Schrift *zSchrift, Fenster *zVorLoginFenster ) { Punkt bildschirmGröße = BildschirmGröße(); bestätigung = initKnopf( 10, 450, 130, 30, zSchrift, Knopf::Style::Sichtbar, "Bestätigung" ); bestätigung->setMausEreignisParameter( this ); bestätigung->setMausEreignis( bestätigungBestätigungME ); initToolTip( bestätigung, "Account aktivieren oder löschen.", zSchrift->getThis(), hauptScreen ); zVorLoginFenster->addMember( bestätigung ); fenster = initFenster( bildschirmGröße.x / 2 - 125, bildschirmGröße.y / 2 - 70, 250, 140, zSchrift, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "Vorgang Bestätigen" ); name = initTextFeld( 24, 20, 200, 20, zSchrift, TextFeld::Style::TextFeld, "Name" ); name->setTastaturEreignisParameter( this ); name->setTastaturEreignis( bestätigungNameTE ); initToolTip( name, "Account Name.", zSchrift->getThis(), hauptScreen ); fenster->addMember( name ); passwort = initTextFeld( 24, 50, 200, 20, zSchrift, TextFeld::Style::TextFeld, "Passwort" ); passwort->setTastaturEreignisParameter( this ); passwort->setTastaturEreignis( bestätigungPasswortTE ); initToolTip( passwort, "Account Passwort.", zSchrift->getThis(), hauptScreen ); fenster->addMember( passwort ); weiter = initKnopf( 74, 80, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Weiter" ); weiter->setMausEreignisParameter( this ); weiter->setMausEreignis( bestätigungWeiterME ); fenster->addMember( weiter ); nachricht = initTextFeld( 0, 5, 250, 150, zSchrift, TextFeld::Style::Mehrzeilig | TextFeld::Style::HCenter, "" ); fenster->addMember( nachricht ); schlüssel = initTextFeld( 24, 55, 200, 20, zSchrift, TextFeld::Style::TextFeld & ~TextFeld::Style::Sichtbar, "Schlüssel" ); schlüssel->setTastaturEreignisParameter( this ); schlüssel->setTastaturEreignis( bestätigungSchlüsselTE ); initToolTip( schlüssel, "Zugeschickter Schlüssel.", zSchrift->getThis(), hauptScreen ); fenster->addMember( schlüssel ); später = initKnopf( 20, 85, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Später" ); später->setMausEreignisParameter( this ); später->setMausEreignis( bestätigungSpäterME ); initToolTip( später, "Vorgang später fortsetzen.", zSchrift->getThis(), hauptScreen ); fenster->addMember( später ); abbruch = initKnopf( 20, 115, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Abbrechen" ); abbruch->setMausEreignisParameter( this ); abbruch->setMausEreignis( bestätigungAbbruchME ); initToolTip( abbruch, "Vorgang abbrechen.", zSchrift->getThis(), hauptScreen ); fenster->addMember( abbruch ); neuSenden = initKnopf( 129, 115, 100, 20, zSchrift, Knopf::Style::Sichtbar, "neu senden" ); neuSenden->setMausEreignisParameter( this ); neuSenden->setMausEreignis( bestätigungNeuSendenME ); initToolTip( neuSenden, "E-Mail erneut senden.", zSchrift->getThis(), hauptScreen ); fenster->addMember( neuSenden ); zVorLoginFenster->addMember( fenster ); ref = 1; } // Destruktor Bestätigung::~Bestätigung() { if( bestätigung ) bestätigung = bestätigung->release(); if( fenster ) fenster = fenster->release(); if( name ) name = name->release(); if( passwort ) passwort = passwort->release(); if( weiter ) weiter = weiter->release(); if( nachricht ) nachricht = nachricht->release(); if( schlüssel ) schlüssel = schlüssel->release(); if( später ) später = später->release(); if( abbruch ) abbruch = abbruch->release(); if( neuSenden ) neuSenden = neuSenden->release(); } // Privat void Bestätigung::zeigeNachricht( const char *txt ) { Punkt bildschirmmitte = Bildschirmmitte(); name->löscheStyle( TextFeld::Style::Sichtbar ); passwort->löscheStyle( TextFeld::Style::Sichtbar ); schlüssel->löscheStyle( TextFeld::Style::Sichtbar ); später->löscheStyle( Knopf::Style::Sichtbar ); abbruch->löscheStyle( Knopf::Style::Sichtbar ); neuSenden->löscheStyle( Knopf::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 Bestätigung::druckFremdKnopf() // Ein anderer Bereich des Programms wurde ausgewählt { fenster->löscheStyle( Fenster::Style::Sichtbar ); registerKlient->trenne(); bestätigung->setLinienRahmenBreite( 2 ); bestätigung->setAlphaFeldFarbe( 0x5500FF00 ); bestätigung->setAlphaFeldStärke( -5 ); } bool Bestätigung::bestätigungME( void *obj, MausEreignis me ) // MausEreignis im Knopf bestärigung { if( me.id == ME_RLinks ) { vorLogin->setBestätigung(); bestätigung->setLinienRahmenBreite( 3 ); bestätigung->setAlphaFeldFarbe( 0xFF000000 ); bestätigung->setAlphaFeldStärke( 20 ); Punkt bildschirmGröße = BildschirmGröße(); nachricht->löscheStyle( TextFeld::Style::Sichtbar ); schlüssel->löscheStyle( TextFeld::Style::Sichtbar ); später->löscheStyle( Knopf::Style::Sichtbar ); abbruch->löscheStyle( Knopf::Style::Sichtbar ); neuSenden->löscheStyle( Knopf::Style::Sichtbar ); fenster->setTitel( "Vorgang Bestätigen" ); fenster->setGröße( 250, 140 ); fenster->setPosition( bildschirmGröße.x / 2 - 125, bildschirmGröße.y / 2 - 70 ); fenster->addStyle( Fenster::Style::Sichtbar ); weiter->setText( "Weiter" ); weiter->setPosition( 74, 80 ); name->addStyle( TextFeld::Style::Sichtbar ); passwort->addStyle( TextFeld::Style::Sichtbar ); name->addStyle( TextFeld::Style::Fokus ); name->setAuswahl( name->zText()->getLänge(), 0 ); } return 1; } bool Bestätigung::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( bestätigung->zText()->getLänge() >= 25 && istSchreibbar( te.taste ) ) return 0; return 1; } bool Bestätigung::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 ) { passwort->löscheStyle( TextFeld::Style::Fokus ); MausEreignis me; me.id = ME_RLinks; weiterME( 0, me ); } if( passwort->zText()->getLänge() >= 25 && istSchreibbar( te.taste ) ) return 0; return 1; } bool Bestätigung::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( weiter->zText()->istGleich( "Ok" ) ) return 1; new AktionsThread( 6, name->zText()->getText(), passwort->zText()->getText(), 0, 0, 0 ); } else if( weiter->zText()->istGleich( "Fertig" ) ) { if( schlüssel->zText()->getLänge() <= 0 ) { zeigeNachricht( "Bitte gebe den dir zugesendeten Schlüssel ein." ); return 1; } new AktionsThread( 7, schlüssel->zText()->getText(), 0, 0, 0, 0 ); } else { if( fenster->zTitel()->istGleich( "Vorgang Bestätigen" ) ) { MausEreignis me; me.id = ME_RLinks; bestätigungME( 0, me ); } else { nachricht->setText( "Dir wurde eine E-Mail mit einem\nSchlüssel gesendet, den du hier\neingeben musst." ); schlüssel->addStyle( TextFeld::Style::Sichtbar ); fenster->setGröße( 250, 170 ); Punkt bildschirmGröße = BildschirmGröße(); fenster->setPosition( bildschirmGröße.x / 2 - 125, bildschirmGröße.y / 2 - 85 ); später->addStyle( Knopf::Style::Sichtbar ); weiter->setText( "Fertig" ); weiter->setPosition( 129, 85 ); abbruch->addStyle( Knopf::Style::Sichtbar ); neuSenden->addStyle( Knopf::Style::Sichtbar ); } } } return 1; } bool Bestätigung::schlüsselTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld schlüssel { if( te.id == TE_Press && te.taste == T_Enter ) return 0; if( te.id == TE_Release && te.taste == T_Enter ) { schlüssel->löscheStyle( TextFeld::Style::Fokus ); MausEreignis me; me.id = ME_RLinks; weiterME( 0, me ); } if( schlüssel->zText()->getLänge() >= 20 && istSchreibbar( te.taste ) ) return 0; return 1; } bool Bestätigung::späterME( void *obj, MausEreignis me ) // MausEreignis im Knopf später { if( me.id == ME_RLinks ) { registerKlient->später(); MausEreignis me; me.id = ME_RLinks; bestätigungME( 0, me ); } return 1; } bool Bestätigung::abbruchME( void *obj, MausEreignis me ) // MausEreignis im Knopf abbruch { if( me.id == ME_RLinks ) { registerKlient->abbrechen(); MausEreignis me; me.id = ME_RLinks; bestätigungME( 0, me ); } return 1; } bool Bestätigung::neuSendenME( void *obj, MausEreignis me ) // MausEreignis im Knopf neuSenden { if( me.id == ME_RLinks ) registerKlient->eMailErneutSenden(); return 1; } void Bestätigung::setWeiterResult( int ret ) // setzt den Returnwert des Weiter drückens { if( !ret ) { if( registerKlient->getLetzterFehler() ) zeigeNachricht( registerKlient->getLetzterFehler() ); else zeigeNachricht( "Es ist ein unbekannter Fehler aufgetreten." ); return; } name->löscheStyle( TextFeld::Style::Sichtbar ); passwort->löscheStyle( TextFeld::Style::Sichtbar ); if( ret == 1 ) fenster->setTitel( "Account aktivieren" ); else fenster->setTitel( "Account löschen" ); fenster->setGröße( 250, 170 ); Punkt bildschirmGröße = BildschirmGröße(); fenster->setPosition( bildschirmGröße.x / 2 - 125, bildschirmGröße.y / 2 - 85 ); nachricht->setText( "Dir wurde eine E-Mail mit einem\nSchlüssel gesendet, den du hier\neingeben musst." ); nachricht->addStyle( TextFeld::Style::Sichtbar ); schlüssel->addStyle( TextFeld::Style::Sichtbar ); später->addStyle( Knopf::Style::Sichtbar ); weiter->setText( "Fertig" ); weiter->setPosition( 129, 85 ); abbruch->addStyle( Knopf::Style::Sichtbar ); neuSenden->addStyle( Knopf::Style::Sichtbar ); } void Bestätigung::setFertigResult( bool ret ) // setzt den Returnwert des Fertig drükens { if( ret ) { fenster->setTitel( "Vorgang Bestätigen" ); zeigeNachricht( "Der Vorgang wurde erfolgreich abgeschlossen." ); } else zeigeNachricht( "Du hast nicht den richtigen Schlüssel eingegeben." ); } // Reference Counting Bestätigung *Bestätigung::getThis() { ref++; return this; } Bestätigung *Bestätigung::release() { ref--; if( !ref ) delete this; return 0; } // messages bool bestätigungBestätigungME( void *p, void *obj, MausEreignis me ) { if( !p ) return 0; return ( (Bestätigung*)p )->bestätigungME( obj, me ); } bool bestätigungNameTE( void *p, void *obj, TastaturEreignis te ) { if( !p ) return 0; return ( (Bestätigung*)p )->nameTE( obj, te ); } bool bestätigungPasswortTE( void *p, void *obj, TastaturEreignis te ) { if( !p ) return 0; return ( (Bestätigung*)p )->passwortTE( obj, te ); } bool bestätigungWeiterME( void *p, void *obj, MausEreignis me ) { if( !p ) return 0; return ( (Bestätigung*)p )->weiterME( obj, me ); } bool bestätigungSchlüsselTE( void *p, void *obj, TastaturEreignis te ) { if( !p ) return 0; return ( (Bestätigung*)p )->schlüsselTE( obj, te ); } bool bestätigungSpäterME( void *p, void *obj, MausEreignis me ) { if( !p ) return 0; return ( (Bestätigung*)p )->späterME( obj, me ); } bool bestätigungAbbruchME( void *p, void *obj, MausEreignis me ) { if( !p ) return 0; return ( (Bestätigung*)p )->abbruchME( obj, me ); } bool bestätigungNeuSendenME( void *p, void *obj, MausEreignis me ) { if( !p ) return 0; return ( (Bestätigung*)p )->neuSendenME( obj, me ); }