#include "..\..\Global\Variablen.h" #include "Passwort.h" #include "..\..\Global\Initialisierung.h" #include #include #include // Inhalt der PasswortÄndern Klasse aus Passwort.h // Konstruktor PasswortÄndern::PasswortÄndern(Fenster* zVorLoginFenster) : ReferenceCounter() { Punkt bildschirmmitte = uiFactory.initParam.bildschirm->getBackBufferSize() / 2; passwortÄndern = initKnopf(10, 170, 130, 30, Knopf::Style::Sichtbar, "Passwort ändern"); passwortÄndern->setMausEreignisParameter(this); passwortÄndern->setMausEreignis(passwortÄndernPasswortÄndernME); initToolTip(passwortÄndern, "Account Passwort ändern."); zVorLoginFenster->addMember(dynamic_cast(passwortÄndern->getThis())); fenster = initFenster(bildschirmmitte.x - 125, bildschirmmitte.y - 115, 250, 230, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "Passwort ändern"); name = initTextFeld(20, 20, 208, 20, TextFeld::Style::TextFeld, "Name"); name->setTastaturEreignisParameter(this); name->setTastaturEreignis(passwortÄndernNameTE); initToolTip(name, "Account Name."); fenster->addMember(dynamic_cast(name->getThis())); passwort = initTextFeld(20, 50, 208, 20, TextFeld::Style::TextFeld, "Passwort"); passwort->setTastaturEreignisParameter(this); passwort->setTastaturEreignis(passwortÄndernPasswortTE); initToolTip(passwort, "Account Passwort."); fenster->addMember(dynamic_cast(passwort->getThis())); neuPasswort = initTextFeld(20, 80, 208, 20, TextFeld::Style::TextFeld, "neues Passwort"); neuPasswort->setTastaturEreignisParameter(this); neuPasswort->setTastaturEreignis(passwortÄndernNeuPasswortTE); initToolTip(neuPasswort, "Neues Account Passwort."); fenster->addMember(dynamic_cast(neuPasswort->getThis())); neuPasswort2 = initTextFeld(20, 110, 208, 20, TextFeld::Style::TextFeld, "Passwort wiederholen"); neuPasswort2->setTastaturEreignisParameter(this); neuPasswort2->setTastaturEreignis(passwortÄndernNeuPasswort2TE); initToolTip(neuPasswort2, "Neues Passwort Wiederhohlen."); fenster->addMember(dynamic_cast(neuPasswort2->getThis())); geheimnis = initTextFeld(20, 140, 208, 20, TextFeld::Style::TextFeld, "Geheimis"); geheimnis->setTastaturEreignisParameter(this); geheimnis->setTastaturEreignis(passwortÄndernGeheimnisTE); initToolTip(geheimnis, "Account Geheimnis."); fenster->addMember(dynamic_cast(geheimnis->getThis())); weiter = initKnopf(74, 170, 100, 20, Knopf::Style::Sichtbar, "weiter"); weiter->setMausEreignisParameter(this); weiter->setMausEreignis(passwortÄndernWeiterME); nachricht = initTextFeld(0, 5, 255, 150, TextFeld::Style::HCenter | TextFeld::Style::Mehrzeilig, ""); fenster->addMember(dynamic_cast(nachricht->getThis())); fenster->addMember(dynamic_cast(weiter->getThis())); zVorLoginFenster->addMember(dynamic_cast(fenster->getThis())); } // Destruktor PasswortÄndern::~PasswortÄndern() { if (passwortÄndern) passwortÄndern = (Knopf*)passwortÄndern->release(); if (fenster) fenster = (Fenster*)fenster->release(); if (name) name = (TextFeld*)name->release(); if (passwort) passwort = (TextFeld*)passwort->release(); if (neuPasswort) neuPasswort = (TextFeld*)neuPasswort->release(); if (neuPasswort2) neuPasswort2 = (TextFeld*)neuPasswort2->release(); if (geheimnis) geheimnis = (TextFeld*)geheimnis->release(); if (weiter) weiter = (Knopf*)weiter->release(); if (nachricht) nachricht = (TextFeld*)nachricht->release(); } // Privat void PasswortÄndern::zeigeNachricht(const char* txt) { Punkt bildschirmmitte = uiFactory.initParam.bildschirm->getBackBufferSize() / 2; name->removeStyle(TextFeld::Style::Sichtbar); passwort->removeStyle(TextFeld::Style::Sichtbar); neuPasswort->removeStyle(TextFeld::Style::Sichtbar); neuPasswort2->removeStyle(TextFeld::Style::Sichtbar); geheimnis->removeStyle(TextFeld::Style::Sichtbar); fenster->setSize(250, 150); fenster->setPosition(bildschirmmitte.x - 125, bildschirmmitte.y - 75); weiter->setPosition(139, 100); weiter->setText("Ok"); nachricht->setText(txt); if (nachricht->zText()->getLength() > 30) { int pos = -1; bool set = 0; int lastp = 0; for (int i = 20; i < nachricht->zText()->getLength(); ) { const char* tmp = &nachricht->zText()->getText()[i]; while (*tmp != ' ' && i < nachricht->zText()->getLength()) { tmp++; i++; if (i - 30 >= lastp) { if (set) { lastp = pos; set = 0; ((char*)nachricht->zText()->getText())[pos] = '\n'; } else lastp += 5; } } if (i < nachricht->zText()->getLength()) { pos = i; set = 1; tmp++; i++; } } } nachricht->addStyle(TextFeld::Style::Sichtbar); } // Knopfdruck void PasswortÄndern::druckFremdKnopf() // Ein anderer Knopf wurde gedrückt { fenster->removeStyle(Fenster::Style::Sichtbar); passwortÄndern->setRahmenBreite(2); passwortÄndern->setAlphaFeldFarbe(0x5500FF00); passwortÄndern->setAlphaFeldStrength(-5); } bool PasswortÄndern::passwortÄndernME(void* obj, MausEreignis me) // MausEreignis im Knopf passwortVergessen { if (me.id == ME_RLinks) { vorLogin->setPasswortÄndern(); passwortÄndern->setRahmenBreite(3); passwortÄndern->setAlphaFeldFarbe(0xFF000000); passwortÄndern->setAlphaFeldStrength(20); Punkt bildschirmmitte = uiFactory.initParam.bildschirm->getBackBufferSize() / 2; fenster->setSize(255, 230); fenster->setPosition(bildschirmmitte.x - 125, bildschirmmitte.y - 115); fenster->addStyle(Fenster::Style::Sichtbar); nachricht->removeStyle(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(0, name->zText()->getLength()); } 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->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 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->removeStyle(TextFeld::Style::Fokus); neuPasswort->addStyle(TextFeld::Style::Fokus); neuPasswort->setAuswahl(0, neuPasswort->zText()->getLength()); } if (passwort->zText()->getLength() >= 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->removeStyle(TextFeld::Style::Fokus); neuPasswort2->addStyle(TextFeld::Style::Fokus); neuPasswort2->setAuswahl(0, neuPasswort2->zText()->getLength()); } if (neuPasswort->zText()->getLength() >= 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->removeStyle(TextFeld::Style::Fokus); geheimnis->addStyle(TextFeld::Style::Fokus); geheimnis->setAuswahl(0, geheimnis->zText()->getLength()); } if (neuPasswort2->zText()->getLength() >= 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->removeStyle(TextFeld::Style::Fokus); MausEreignis me; me.id = ME_RLinks; weiterME(0, me); } if (geheimnis->zText()->getLength() >= 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()->getLength() == 0) zeigeNachricht("Bitte gebe deinen Accountnamen ein."); if (passwort->zText()->getLength() == 0) zeigeNachricht("Bitte gebe dein Accountpasswort ein."); if (neuPasswort->zText()->getLength() == 0) zeigeNachricht("Bitte gebe ein neues Passwort ein."); if (geheimnis->zText()->getLength() == 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 = uiFactory.initParam.bildschirm->getBackBufferSize() / 2; fenster->setSize(255, 230); fenster->setPosition(bildschirmmitte.x - 125, bildschirmmitte.y - 115); fenster->addStyle(Fenster::Style::Sichtbar); nachricht->removeStyle(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(0, name->zText()->getLength()); } } return 1; } void PasswortÄndern::setResult(bool ret) // Setzt den Returnwert { if (ret) zeigeNachricht("Passwort erfolgreich geändert."); else if (lastError.getLength()) zeigeNachricht(lastError); else zeigeNachricht("Es ist ein Unbekannter Fehler aufgetreten."); } // Inhalt der PasswortVergessen Klasse aus Passwort.h // Konstruktor PasswortVergessen::PasswortVergessen(Fenster* zVorLoginFenster) : ReferenceCounter() { Punkt bildschirmmitte = uiFactory.initParam.bildschirm->getBackBufferSize() / 2; passwortVergessen = initKnopf(10, 330, 130, 30, Knopf::Style::Sichtbar, "Passwort vergessen"); passwortVergessen->setMausEreignisParameter(this); passwortVergessen->setMausEreignis(passwortVergessenPasswortVergessenME); initToolTip(passwortVergessen, "Account Passwort per E-Mail senden."); zVorLoginFenster->addMember(dynamic_cast(passwortVergessen->getThis())); fenster = initFenster(bildschirmmitte.x - 125, bildschirmmitte.y - 70, 250, 140, Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "Passwort vergessen"); name = initTextFeld(20, 20, 208, 20, TextFeld::Style::TextFeld, "Name"); name->setTastaturEreignisParameter(this); name->setTastaturEreignis(passwortVergessenNameTE); initToolTip(name, "Account Name."); fenster->addMember(dynamic_cast(name->getThis())); geheimnis = initTextFeld(20, 50, 208, 20, TextFeld::Style::TextFeld, "Geheimis"); geheimnis->setTastaturEreignisParameter(this); geheimnis->setTastaturEreignis(passwortVergessenGeheimnisTE); initToolTip(geheimnis, "Account geheimnis."); fenster->addMember(dynamic_cast(geheimnis->getThis())); weiter = initKnopf(74, 80, 100, 20, Knopf::Style::Sichtbar, "weiter"); weiter->setMausEreignisParameter(this); weiter->setMausEreignis(passwortVergessenWeiterME); nachricht = initTextFeld(0, 5, 255, 150, TextFeld::Style::HCenter | TextFeld::Style::Mehrzeilig, ""); fenster->addMember(dynamic_cast(nachricht->getThis())); fenster->addMember(dynamic_cast(weiter->getThis())); zVorLoginFenster->addMember(dynamic_cast(fenster->getThis())); } // Destruktor PasswortVergessen::~PasswortVergessen() { if (passwortVergessen) passwortVergessen = (Knopf*)passwortVergessen->release(); if (fenster) fenster = (Fenster*)fenster->release(); if (name) name = (TextFeld*)name->release(); if (geheimnis) geheimnis = (TextFeld*)geheimnis->release(); if (weiter) weiter = (Knopf*)weiter->release(); if (nachricht) nachricht = (TextFeld*)nachricht->release(); } // Privat void PasswortVergessen::zeigeNachricht(const char* txt) { Punkt bildschirmmitte = uiFactory.initParam.bildschirm->getBackBufferSize() / 2; name->removeStyle(TextFeld::Style::Sichtbar); geheimnis->removeStyle(TextFeld::Style::Sichtbar); fenster->setSize(250, 150); fenster->setPosition(bildschirmmitte.x - 125, bildschirmmitte.y - 75); weiter->setPosition(139, 100); weiter->setText("Ok"); nachricht->setText(txt); if (nachricht->zText()->getLength() > 30) { int pos = -1; bool set = 0; int lastp = 0; for (int i = 20; i < nachricht->zText()->getLength(); ) { const char* tmp = &nachricht->zText()->getText()[i]; while (*tmp != ' ' && i < nachricht->zText()->getLength()) { tmp++; i++; if (i - 30 >= lastp) { if (set) { lastp = pos; set = 0; ((char*)nachricht->zText()->getText())[pos] = '\n'; } else lastp += 5; } } if (i < nachricht->zText()->getLength()) { pos = i; set = 1; tmp++; i++; } } } nachricht->addStyle(TextFeld::Style::Sichtbar); } // Knopfdruck void PasswortVergessen::druckFremdKnopf() // Ein anderer Knopf wurde gedrückt { fenster->removeStyle(Fenster::Style::Sichtbar); passwortVergessen->setRahmenBreite(2); passwortVergessen->setAlphaFeldFarbe(0x5500FF00); passwortVergessen->setAlphaFeldStrength(-5); } bool PasswortVergessen::passwortVergessenME(void* obj, MausEreignis me) // MausEreignis im Knopf passwortVergessen { if (me.id == ME_RLinks) { vorLogin->setPasswortVergessen(); passwortVergessen->setRahmenBreite(3); passwortVergessen->setAlphaFeldFarbe(0xFF000000); passwortVergessen->setAlphaFeldStrength(20); Punkt bildschirmmitte = uiFactory.initParam.bildschirm->getBackBufferSize() / 2; fenster->setSize(255, 140); fenster->setPosition(bildschirmmitte.x - 125, bildschirmmitte.y - 70); fenster->addStyle(Fenster::Style::Sichtbar); nachricht->removeStyle(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(0, name->zText()->getLength()); } 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->removeStyle(TextFeld::Style::Fokus); geheimnis->addStyle(TextFeld::Style::Fokus); geheimnis->setAuswahl(0, geheimnis->zText()->getLength()); } if (name->zText()->getLength() >= 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->removeStyle(TextFeld::Style::Fokus); MausEreignis me; me.id = ME_RLinks; weiterME(0, me); } if (geheimnis->zText()->getLength() >= 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()->getLength() == 0) zeigeNachricht("Bitte gebe deinen Accountnamen ein."); if (geheimnis->zText()->getLength() == 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 = uiFactory.initParam.bildschirm->getBackBufferSize() / 2; fenster->setSize(255, 140); fenster->setPosition(bildschirmmitte.x - 125, bildschirmmitte.y - 70); fenster->addStyle(Fenster::Style::Sichtbar); nachricht->removeStyle(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(0, name->zText()->getLength()); } } return 1; } void PasswortVergessen::setResult(bool ret) // Setzt den Returnwert { if (ret) zeigeNachricht("Dir wurde eine E-Mail mit deinem Accountpasswort gesendet."); else if (lastError.getLength()) zeigeNachricht(lastError); else zeigeNachricht("Es ist ein Unbekannter Fehler aufgetreten."); } // 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); }