#include "..\..\Global\Variablen.h" #include "..\..\Global\Initialisierung.h" #include "Registrierung.h" #include #include #include #include // Inhalt der Registrierung Klasse aus Registrierung.h // Konstruktor Registrierung::Registrierung(Fenster* zVorLoginFenster) : ReferenceCounter() { Punkt bildschirmGröße = uiFactory.initParam.bildschirm->getBackBufferSize(); registrierung = initKnopf(10, 90, 130, 30, Knopf::Style::Sichtbar, "Registrieren"); registrierung->setMausEreignisParameter(this); registrierung->setMausEreignis(registrierungRegistrierungME); initToolTip(registrierung, "Account erstellen."); zVorLoginFenster->addMember(dynamic_cast(registrierung->getThis())); fenster = initFenster(bildschirmGröße.x / 2 - 175, bildschirmGröße.y / 2 - 131, 350, 262, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "Account erstellen"); name = initTextFeld(74, 20, 200, 20, TextFeld::Style::TextFeld, "Account Name"); name->setTastaturEreignisParameter(this); name->setTastaturEreignis(registrierungNameTE); initToolTip(name, "Account Name."); fenster->addMember(dynamic_cast(name->getThis())); passwort = initTextFeld(74, 50, 200, 20, TextFeld::Style::TextFeld, "Account Passwort"); passwort->setTastaturEreignisParameter(this); passwort->setTastaturEreignis(registrierungPasswortTE); initToolTip(passwort, "Account Passwort."); fenster->addMember(dynamic_cast(passwort->getThis())); passwort2 = initTextFeld(74, 80, 200, 20, TextFeld::Style::TextFeld, "Passwort wiederholen"); passwort2->setTastaturEreignisParameter(this); passwort2->setTastaturEreignis(registrierungPasswort2TE); initToolTip(passwort2, "Account Passwort wiederhohlen."); fenster->addMember(dynamic_cast(passwort2->getThis())); geheimnis = initTextFeld(10, 110, 328, 20, TextFeld::Style::TextFeld, "Account Geheimnis"); geheimnis->setTastaturEreignisParameter(this); geheimnis->setTastaturEreignis(registrierungGeheimnisTE); initToolTip(geheimnis, "Gib etwas ein, was nur du jederzeit weißt.\n(zweites sicherheitspasswort Passwort)"); fenster->addMember(dynamic_cast(geheimnis->getThis())); eMail = initTextFeld(74, 140, 200, 20, TextFeld::Style::TextFeld, "E-Mail Addresse"); eMail->setTastaturEreignisParameter(this); eMail->setTastaturEreignis(registrierungEMailTE); initToolTip(eMail, "E-Mail Addresse."); fenster->addMember(dynamic_cast(eMail->getThis())); geburtsdatum = initTextFeld(40, 170, 85, 20, TextFeld::Style::Text, "Geburtsdatum:"); fenster->addMember(dynamic_cast(geburtsdatum->getThis())); text = initTextFeld(0, 5, 250, 150, TextFeld::Style::Mehrzeilig | TextFeld::Style::HCenter, ""); fenster->addMember(dynamic_cast(text->getThis())); gbdTag = initAuswahlBox(130, 167, 50, 20, AuswahlBox::Style::Sichtbar | AuswahlBox::Style::Erlaubt | AuswahlBox::Style::Rahmen | AuswahlBox::Style::MausBuffer | AuswahlBox::Style::AuswahlBuffer | AuswahlBox::Style::MaxHeight | AuswahlBox::Style::VScroll | AuswahlBox::Style::Hintergrund, {}); gbdTag->addEintrag("Tag"); for (int i = 0; i < 31; i++) { Text* txt = new Text(""); txt->append(i + 1); gbdTag->addEintrag(txt); } gbdMonat = initAuswahlBox(185, 167, 65, 20, AuswahlBox::Style::Sichtbar | AuswahlBox::Style::Erlaubt | AuswahlBox::Style::Rahmen | AuswahlBox::Style::MausBuffer | AuswahlBox::Style::AuswahlBuffer | AuswahlBox::Style::MaxHeight | AuswahlBox::Style::VScroll | AuswahlBox::Style::Hintergrund, {}); gbdMonat->addEintrag("Monat"); for (int i = 0; i < 12; i++) { Text* txt = new Text(""); txt->append(i + 1); gbdMonat->addEintrag(txt); } gbdJahr = initAuswahlBox(255, 176, 55, 20, AuswahlBox::Style::Sichtbar | AuswahlBox::Style::Erlaubt | AuswahlBox::Style::Rahmen | AuswahlBox::Style::MausBuffer | AuswahlBox::Style::AuswahlBuffer | AuswahlBox::Style::MaxHeight | AuswahlBox::Style::VScroll | AuswahlBox::Style::Hintergrund, {}); gbdJahr->addEintrag("Jahr"); for (int i = 2013; i > 1913; i--) { Text* txt = new Text(""); txt->append(i + 1); gbdJahr->addEintrag(txt); } weiter = initKnopf(124, 200, 100, 20, Knopf::Style::Sichtbar, "Weiter"); weiter->setMausEreignisParameter(this); weiter->setMausEreignis(registrierungWeiterME); fenster->addMember(dynamic_cast(weiter->getThis())); zVorLoginFenster->addMember(dynamic_cast(fenster->getThis())); fenster->addMember(dynamic_cast(gbdTag->getThis())); fenster->addMember(dynamic_cast(gbdMonat->getThis())); fenster->addMember(dynamic_cast(gbdJahr->getThis())); } // Destruktor Registrierung::~Registrierung() { if (fenster) fenster = (Fenster*)fenster->release(); if (name) name = (TextFeld*)name->release(); if (passwort) passwort = (TextFeld*)passwort->release(); if (passwort2) passwort2 = (TextFeld*)passwort2->release(); if (geheimnis) geheimnis = (TextFeld*)geheimnis->release(); if (eMail) eMail = (TextFeld*)eMail->release(); if (geburtsdatum) geburtsdatum = (TextFeld*)geburtsdatum->release(); if (gbdTag) gbdTag = (AuswahlBox*)gbdTag->release(); if (gbdMonat) gbdMonat = (AuswahlBox*)gbdMonat->release(); if (gbdJahr) gbdJahr = (AuswahlBox*)gbdJahr->release(); if (weiter) weiter = (Knopf*)weiter->release(); if (text) text = (TextFeld*)text->release(); if (registrierung) registrierung = (Knopf*)registrierung->release(); } // Privat void Registrierung::zeigeNachricht(const char* txt) { Punkt bildschirmmitte = uiFactory.initParam.bildschirm->getBackBufferSize() / 2; name->removeStyle(TextFeld::Style::Sichtbar); passwort->removeStyle(TextFeld::Style::Sichtbar); passwort2->removeStyle(TextFeld::Style::Sichtbar); geheimnis->removeStyle(TextFeld::Style::Sichtbar); eMail->removeStyle(TextFeld::Style::Sichtbar); geburtsdatum->removeStyle(TextFeld::Style::Sichtbar); gbdTag->removeStyle(TextFeld::Style::Sichtbar); gbdMonat->removeStyle(TextFeld::Style::Sichtbar); gbdJahr->removeStyle(TextFeld::Style::Sichtbar); fenster->setSize(250, 150); fenster->setPosition(bildschirmmitte.x - 125, bildschirmmitte.y - 75); weiter->setPosition(139, 100); weiter->setText("Ok"); text->setText(txt); if (text->zText()->getLength() > 30) { int pos = -1; bool set = 0; int lastp = 0; for (int i = 20; i < text->zText()->getLength(); ) { const char* tmp = &text->zText()->getText()[i]; while (*tmp != ' ' && i < text->zText()->getLength()) { tmp++; i++; if (i - 30 >= lastp) { if (set) { lastp = pos; set = 0; ((char*)text->zText()->getText())[pos] = '\n'; } else lastp += 5; } } if (i < text->zText()->getLength()) { pos = i; set = 1; tmp++; i++; } } } text->addStyle(TextFeld::Style::Sichtbar); } // Knopfdruck void Registrierung::druckFremdKnopf() // Ein anderer Knopfwurde gedrückt { fenster->removeStyle(Fenster::Style::Sichtbar); registrierung->setRahmenBreite(2); registrierung->setAlphaFeldFarbe(0x5500FF00); registrierung->setAlphaFeldStrength(-5); } bool Registrierung::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->removeStyle(TextFeld::Style::Fokus); passwort->addStyle(TextFeld::Style::Fokus); passwort->setAuswahl(0, passwort->zText()->getLength()); } if (name->zText()->getLength() >= 25 && istSchreibbar(te.taste)) return 0; return 1; } bool Registrierung::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->removeStyle(TextFeld::Style::Fokus); passwort2->addStyle(TextFeld::Style::Fokus); passwort2->setAuswahl(0, passwort2->zText()->getLength()); } if (passwort->zText()->getLength() >= 25 && istSchreibbar(te.taste)) return 0; return 1; } bool Registrierung::passwort2TE(void* obj, TastaturEreignis te) // Tastaturereignis im Textfeld passwort2 { if (te.id == TE_Press && te.taste == T_Enter) return 0; if (te.id == TE_Press) passwort2->setSchowChar('*'); if (te.id == TE_Release && (te.taste == T_Enter || te.taste == T_Tab)) { passwort2->removeStyle(TextFeld::Style::Fokus); geheimnis->addStyle(TextFeld::Style::Fokus); geheimnis->setAuswahl(0, geheimnis->zText()->getLength()); } if (passwort2->zText()->getLength() >= 25 && istSchreibbar(te.taste)) return 0; return 1; } bool Registrierung::geheimnisTE(void* obj, TastaturEreignis te) // Tastaturereignis im Textfeld geheimnis { if (te.id == TE_Press && te.taste == T_Enter) return 0; if (te.id == TE_Release && (te.taste == T_Enter || te.taste == T_Tab)) { geheimnis->removeStyle(TextFeld::Style::Fokus); eMail->addStyle(TextFeld::Style::Fokus); eMail->setAuswahl(0, eMail->zText()->getLength()); } int selCount = 0; for (int i = 0; i < geheimnis->zText()->getLength(); i++) selCount += (int)geheimnis->isCharSelected(i); if (geheimnis->zText()->getLength() - selCount >= 50 && istSchreibbar(te.taste)) return 0; return 1; } bool Registrierung::eMailTE(void* obj, TastaturEreignis te) // Tastaturereignis im Textfeld eMail { if (te.id == TE_Press && te.taste == T_Enter) return 0; if (te.id == TE_Release && (te.taste == T_Enter || te.taste == T_Tab)) { eMail->removeStyle(TextFeld::Style::Fokus); gbdTag->addStyle(AuswahlBox::Style::Fokus); } if (eMail->zText()->getLength() >= 50 && istSchreibbar(te.taste)) return 0; return 1; } bool Registrierung::weiterME(void* obj, MausEreignis me) // MausEreignis im Knopf weiter { if (me.id == ME_RLinks) { Punkt bildchirmGröße = uiFactory.initParam.bildschirm->getBackBufferSize(); if (fenster->zTitel()->istGleich("Erfolg")) { text->removeStyle(TextFeld::Style::Sichtbar); weiter->setPosition(124, 200); weiter->setText("Weiter"); fenster->setSize(350, 262); fenster->setPosition(bildchirmGröße.x / 2 - 175, bildchirmGröße.y / 2 - 131); fenster->setTitel("Account erstellen"); name->addStyle(TextFeld::Style::Sichtbar); passwort->addStyle(TextFeld::Style::Sichtbar); passwort2->addStyle(TextFeld::Style::Sichtbar); geheimnis->addStyle(TextFeld::Style::Sichtbar); eMail->addStyle(TextFeld::Style::Sichtbar); geburtsdatum->addStyle(TextFeld::Style::Sichtbar); gbdTag->addStyle(TextFeld::Style::Sichtbar); gbdMonat->addStyle(TextFeld::Style::Sichtbar); gbdJahr->addStyle(TextFeld::Style::Sichtbar); name->addStyle(TextFeld::Style::Fokus); name->setAuswahl(0, name->zText()->getLength()); } else { if (weiter->zText()->istGleich("Ok")) { text->removeStyle(TextFeld::Style::Sichtbar); weiter->setPosition(124, 200); weiter->setText("Weiter"); fenster->setSize(350, 262); fenster->setPosition(bildchirmGröße.x / 2 - 175, bildchirmGröße.y / 2 - 131); name->addStyle(TextFeld::Style::Sichtbar); passwort->addStyle(TextFeld::Style::Sichtbar); passwort2->addStyle(TextFeld::Style::Sichtbar); geheimnis->addStyle(TextFeld::Style::Sichtbar); eMail->addStyle(TextFeld::Style::Sichtbar); geburtsdatum->addStyle(TextFeld::Style::Sichtbar); gbdTag->addStyle(TextFeld::Style::Sichtbar); gbdMonat->addStyle(TextFeld::Style::Sichtbar); gbdJahr->addStyle(TextFeld::Style::Sichtbar); name->addStyle(TextFeld::Style::Fokus); name->setAuswahl(0, name->zText()->getLength()); } else if (passwort2->zText()->istGleich(passwort->zText()->getText())) { if (name->zText()->getLength() == 0 || passwort->zText()->getLength() == 0 || geheimnis->zText()->getLength() == 0 || eMail->zText()->getLength() == 0) { if (name->zText()->getLength() == 0) zeigeNachricht("Bitte gebe einen Accountnamen ein."); else if (passwort->zText()->getLength() == 0) zeigeNachricht("Bitte gebe ein Accountpasswort ein."); else if (geheimnis->zText()->getLength() == 0) zeigeNachricht("Bitte gebe ein Accountgeheimnis ein. Dieß wird benötig, wenn du deinen Accountnamen oder dein Accountpasswort vergisst."); else if (eMail->zText()->getLength() == 0) zeigeNachricht("Bitte gebe deine E-Mail Addresse ein. Diese benötigen wir, um dir den Bestätigungscode für deinen Account zu senden."); return 1; } Datum* gebDat = new Datum(); gebDat->setDatum(1, 1, 1); bool ok = 1; do { if (!gbdTag->getAuswahl() || !gbdMonat->getAuswahl() || !gbdJahr->getAuswahl()) { ok = 0; break; } int jahr = TextZuInt(gbdJahr->zEintrag(gbdJahr->getAuswahl())->zText()->getText(), 10); gebDat->setJahr(jahr); gebDat->setMonat(gbdMonat->getAuswahl()); gebDat->setTag(gbdTag->getAuswahl()); if (jahr != gebDat->getJahr() || gbdMonat->getAuswahl() != gebDat->getMonat() || gbdTag->getAuswahl() != gebDat->getTag()) { ok = 0; break; } } while (0); if (ok) new AktionsThread(15, name->zText()->getText(), passwort->zText()->getText(), geheimnis->zText()->getText(), eMail->zText()->getText(), gebDat->getThis()); else zeigeNachricht("Bitte gebe ein gültiges Geburtsdatum an."); gebDat = (Datum*)gebDat->release(); } else zeigeNachricht("Das wiederhohlte Passwort stimmt nicht mit dem Passwort überein."); } } return 1; } bool Registrierung::registrierungME(void* obj, MausEreignis me) // MausEreignis im Knopf registrierung { if (me.id == ME_RLinks) { vorLogin->setRegistrierung(); fenster->addStyle(Fenster::Style::Sichtbar); registrierung->setRahmenBreite(3); registrierung->setAlphaFeldFarbe(0xFF000000); registrierung->setAlphaFeldStrength(20); Punkt bildchirmGröße = uiFactory.initParam.bildschirm->getBackBufferSize(); text->removeStyle(TextFeld::Style::Sichtbar); weiter->setPosition(124, 200); weiter->setText("Weiter"); fenster->setSize(350, 262); fenster->setPosition(bildchirmGröße.x / 2 - 175, bildchirmGröße.y / 2 - 131); fenster->setTitel("Account erstellen"); name->addStyle(TextFeld::Style::Sichtbar); passwort->addStyle(TextFeld::Style::Sichtbar); passwort2->addStyle(TextFeld::Style::Sichtbar); geheimnis->addStyle(TextFeld::Style::Sichtbar); eMail->addStyle(TextFeld::Style::Sichtbar); geburtsdatum->addStyle(TextFeld::Style::Sichtbar); gbdTag->addStyle(TextFeld::Style::Sichtbar); gbdMonat->addStyle(TextFeld::Style::Sichtbar); gbdJahr->addStyle(TextFeld::Style::Sichtbar); name->addStyle(TextFeld::Style::Fokus); name->setAuswahl(0, name->zText()->getLength()); } return 1; } void Registrierung::setWeiterReturn(bool ret) // setzt den Weiter Returnwert { Punkt bildchirmGröße = uiFactory.initParam.bildschirm->getBackBufferSize(); if (ret) { name->removeStyle(TextFeld::Style::Sichtbar); passwort->removeStyle(TextFeld::Style::Sichtbar); passwort2->removeStyle(TextFeld::Style::Sichtbar); geheimnis->removeStyle(TextFeld::Style::Sichtbar); eMail->removeStyle(TextFeld::Style::Sichtbar); geburtsdatum->removeStyle(TextFeld::Style::Sichtbar); gbdTag->removeStyle(TextFeld::Style::Sichtbar); gbdMonat->removeStyle(TextFeld::Style::Sichtbar); gbdJahr->removeStyle(TextFeld::Style::Sichtbar); fenster->setSize(250, 200); fenster->setPosition(bildchirmGröße.x / 2 - 125, bildchirmGröße.y / 2 - 100); fenster->setTitel("Erfolg"); weiter->setPosition(20, 145); weiter->setText("Ok"); text->setText("Dir wurde eine E-Mail mit einem\naktivierungslink zugeschickt,\nden du in den nächsten 12 Stunden\nbenutzen musst."); text->addStyle(TextFeld::Style::Sichtbar); } else if (lastError.getLength()) zeigeNachricht(lastError); } // Ereignisse bool registrierungNameTE(void* p, void* obj, TastaturEreignis te) { if (!p) return 0; return ((Registrierung*)p)->nameTE(obj, te); } bool registrierungPasswortTE(void* p, void* obj, TastaturEreignis te) { if (!p) return 0; return ((Registrierung*)p)->passwortTE(obj, te); } bool registrierungPasswort2TE(void* p, void* obj, TastaturEreignis te) { if (!p) return 0; return ((Registrierung*)p)->passwort2TE(obj, te); } bool registrierungGeheimnisTE(void* p, void* obj, TastaturEreignis te) { if (!p) return 0; return ((Registrierung*)p)->geheimnisTE(obj, te); } bool registrierungEMailTE(void* p, void* obj, TastaturEreignis te) { if (!p) return 0; return ((Registrierung*)p)->eMailTE(obj, te); } bool registrierungWeiterME(void* p, void* obj, MausEreignis me) { if (!p) return 0; return ((Registrierung*)p)->weiterME(obj, me); } bool registrierungRegistrierungME(void* p, void* obj, MausEreignis me) { if (!p) return 0; return ((Registrierung*)p)->registrierungME(obj, me); }