#include "Login.h" #include #include #include #include "..\..\Global\Initialisierung.h" #include "..\..\Global\Variablen.h" // Inhalt der Login Klasse aus Login.h // Konstruktor Login::Login(Fenster* vorLoginFenster) : ReferenceCounter() { Punkt bildschirmGröße = uiFactory.initParam.bildschirm->getBackBufferSize(); login = initKnopf(10, 50, 130, 30, Knopf::Style::Sichtbar, "Login"); login->setMausEreignisParameter(this); login->setMausEreignis(loginLoginME); initToolTip(login, "Einloggen."); vorLoginFenster->addMember(dynamic_cast(login->getThis())); fenster = initFenster(bildschirmGröße.x / 2 - 125, bildschirmGröße.y / 2 - 75, 250, 150, Fenster::Style::Sichtbar | Fenster::Style::Erlaubt | Fenster::Style::Rahmen | Fenster::Style::Titel | Fenster::Style::TitelBuffered, "Login"); name = initTextFeld(20, 20, 208, 20, TextFeld::Style::TextFeld, "Name"); name->setTastaturEreignisParameter(this); name->setTastaturEreignis(loginNameTE); initToolTip(name, "Account Name."); fenster->addMember(dynamic_cast(name->getThis())); passwort = initTextFeld(20, 55, 208, 20, TextFeld::Style::TextFeld, "Passwort"); passwort->setTastaturEreignisParameter(this); passwort->setTastaturEreignis(loginPasswortTE); initToolTip(passwort, "Account Passwort."); fenster->addMember(dynamic_cast(passwort->getThis())); weiter = initKnopf(75, 90, 100, 20, Knopf::Style::Sichtbar, "Login"); weiter->setMausEreignisParameter(this); weiter->setMausEreignis(loginWeiterME); fenster->addMember(dynamic_cast(weiter->getThis())); nachricht = initTextFeld(5, 5, 238, 90, TextFeld::Style::HCenter | TextFeld::Style::Mehrzeilig, ""); fenster->addMember(dynamic_cast(nachricht->getThis())); geheimnis = initTextFeld(20, 55, 208, 20, TextFeld::Style::TextFeld, "Geheimnis"); geheimnis->removeStyle(TextFeld::Style::Sichtbar); geheimnis->setTastaturEreignisParameter(this); geheimnis->setTastaturEreignis(loginGeheimnisTE); initToolTip(geheimnis, "Account Geheimnis."); fenster->addMember(dynamic_cast(geheimnis->getThis())); abbrechen = initKnopf(10, 98, 100, 20, 0, "Abbrechen"); abbrechen->setMausEreignisParameter(this); abbrechen->setMausEreignis(loginAbbrechenME); fenster->addMember(dynamic_cast(abbrechen->getThis())); ok = initKnopf(138, 98, 100, 20, 0, "Ok"); ok->setMausEreignisParameter(this); ok->setMausEreignis(loginOkME); fenster->addMember(dynamic_cast(ok->getThis())); vorLoginFenster->addMember(dynamic_cast(fenster->getThis())); MausEreignis me; me.id = ME_RLinks; loginME(0, me); } // Destruktor Login::~Login() { if (fenster) fenster = (Fenster*)fenster->release(); if (name) name = (TextFeld*)name->release(); if (passwort) passwort = (TextFeld*)passwort->release(); if (nachricht) nachricht = (TextFeld*)nachricht->release(); if (geheimnis) geheimnis = (TextFeld*)geheimnis->release(); if (weiter) weiter = (Knopf*)weiter->release(); if (abbrechen) abbrechen = (Knopf*)abbrechen->release(); if (ok) ok = (Knopf*)ok->release(); if (login) login = (Knopf*)login->release(); } // Knopfdruck void Login::druckFremdKnopf() // Ein anderer Bereich des Programms wurde // ausgewählt { fenster->removeStyle(Fenster::Style::Sichtbar); login->setRahmenBreite(2); login->setAlphaFeldFarbe(0x5500FF00); login->setAlphaFeldStrength(-5); } bool Login::nameTE( void* obj, TastaturEreignis te) // Tastaturereignis im Textfeld name { if (te.id == TE_Press && te.virtualKey == T_Enter) return 0; if (te.id == TE_Release && (te.virtualKey == T_Enter || te.virtualKey == 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[0])) return 0; return 1; } bool Login::passwortTE( void* obj, TastaturEreignis te) // TastaturEreignis im Textfeld passwort { if (te.id == TE_Press) passwort->setSchowChar('*'); if (te.id == TE_Press && te.virtualKey == T_Enter) return 0; if (te.id == TE_Release && te.virtualKey == T_Enter) { passwort->removeStyle(TextFeld::Style::Fokus); MausEreignis me; me.id = ME_RLinks; weiterME(0, me); } if (passwort->zText()->getLength() >= 25 && istSchreibbar(te.taste[0])) return 0; return 1; } bool Login::geheimnisTE( void* obj, TastaturEreignis te) // TastaturEreignis im Textfeld geheimnis { if (te.id == TE_Press && te.virtualKey == T_Enter) return 0; if (te.id == TE_Press) geheimnis->setSchowChar('*'); if (te.id == TE_Release && te.virtualKey == T_Enter) { geheimnis->removeStyle(TextFeld::Style::Fokus); MausEreignis me; me.id = ME_RLinks; okME(0, me); } if (geheimnis->zText()->getLength() >= 50 && istSchreibbar(te.taste[0])) return 0; return 1; } bool Login::weiterME(void* obj, MausEreignis me) // MausEreignis im Knopf weiter { if (me.id == ME_RLinks) { if (name->zText()->getLength() == 0) { name->removeStyle(TextFeld::Style::Sichtbar); passwort->removeStyle(TextFeld::Style::Sichtbar); weiter->removeStyle(Knopf::Style::Sichtbar); nachricht->setText("Bitte trage deinen Accountnamen\nein."); nachricht->addStyle(TextFeld::Style::Sichtbar); ok->addStyle(Knopf::Style::Sichtbar); return 1; } if (passwort->zText()->getLength() == 0) { name->removeStyle(TextFeld::Style::Sichtbar); passwort->removeStyle(TextFeld::Style::Sichtbar); weiter->removeStyle(Knopf::Style::Sichtbar); nachricht->setText("Bitte trage dein Passwort ein."); nachricht->addStyle(TextFeld::Style::Sichtbar); ok->addStyle(Knopf::Style::Sichtbar); return 1; } new AktionsThread( 1, name->zText()->getText(), passwort->zText()->getText(), 0, 0, 0); } return 1; } bool Login::okME(void* obj, MausEreignis me) // MausEreignis im Knopf ok { if (me.id == ME_RLinks) { if (geheimnis->hatStyle(TextFeld::Style::Sichtbar)) new AktionsThread(3, name->zText()->getText(), passwort->zText()->getText(), geheimnis->zText()->getText(), 0, 0); else { nachricht->removeStyle(TextFeld::Style::Sichtbar); geheimnis->removeStyle(TextFeld::Style::Sichtbar); ok->removeStyle(Knopf::Style::Sichtbar); abbrechen->removeStyle(Knopf::Style::Sichtbar); name->addStyle(TextFeld::Style::Sichtbar); passwort->addStyle(TextFeld::Style::Sichtbar); weiter->addStyle(TextFeld::Style::Sichtbar); name->addStyle(TextFeld::Style::Fokus); name->setAuswahl(0, name->zText()->getLength()); } } return 1; } bool Login::abbrechenME( void* obj, MausEreignis me) // MausEreignis im Knopf abbrechen { if (me.id == ME_RLinks) { nachricht->removeStyle(TextFeld::Style::Sichtbar); geheimnis->removeStyle(TextFeld::Style::Sichtbar); ok->removeStyle(Knopf::Style::Sichtbar); abbrechen->removeStyle(Knopf::Style::Sichtbar); name->addStyle(TextFeld::Style::Sichtbar); passwort->addStyle(TextFeld::Style::Sichtbar); weiter->addStyle(TextFeld::Style::Sichtbar); name->addStyle(TextFeld::Style::Fokus); name->setAuswahl(0, name->zText()->getLength()); } return 1; } bool Login::loginME(void* obj, MausEreignis me) // MausEreignis im Knopf login { if (me.id == ME_RLinks) { vorLogin->setLogin(1); nachricht->removeStyle(TextFeld::Style::Sichtbar); geheimnis->removeStyle(TextFeld::Style::Sichtbar); ok->removeStyle(Knopf::Style::Sichtbar); abbrechen->removeStyle(Knopf::Style::Sichtbar); fenster->addStyle(Fenster::Style::Sichtbar); name->addStyle(TextFeld::Style::Sichtbar); passwort->addStyle(TextFeld::Style::Sichtbar); weiter->addStyle(TextFeld::Style::Sichtbar); login->setRahmenBreite(3); login->setAlphaFeldFarbe(0xFF000000); login->setAlphaFeldStrength(20); name->addStyle(TextFeld::Style::Fokus); name->setAuswahl(0, name->zText()->getLength()); } return 1; } void Login::setLoginReturn(int ret) // setzt den Returnwert vom login { if (ret == 1) new AktionsThread(2, 0, 0, 0, 0, 0); else if (ret == 2) { name->removeStyle(TextFeld::Style::Sichtbar); passwort->removeStyle(TextFeld::Style::Sichtbar); weiter->removeStyle(Knopf::Style::Sichtbar); nachricht->setText( "Der Account ist bereits online.\nGebe dein Account Geheimnis " "ein,\num den anderen Benutzer zu kicken."); nachricht->addStyle(TextFeld::Style::Sichtbar); geheimnis->addStyle(TextFeld::Style::Sichtbar); ok->addStyle(Knopf::Style::Sichtbar); abbrechen->addStyle(Knopf::Style::Sichtbar); geheimnis->addStyle(TextFeld::Style::Fokus); geheimnis->setAuswahl(0, geheimnis->zText()->getLength()); } else if (!ret && lastError.getLength()) { name->removeStyle(TextFeld::Style::Sichtbar); passwort->removeStyle(TextFeld::Style::Sichtbar); weiter->removeStyle(Knopf::Style::Sichtbar); nachricht->setText(lastError); 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); ok->addStyle(Knopf::Style::Sichtbar); } } void Login::setKickReturn(int ret) // setzt den returnwert vom kick { if (ret == 1) new AktionsThread(2, 0, 0, 0, 0, 0); else if (ret == 2) { nachricht->setText(lastError); 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++; } } } geheimnis->removeStyle(TextFeld::Style::Sichtbar); abbrechen->removeStyle(Knopf::Style::Sichtbar); } else if (!ret) { nachricht->setText( "Das Geheimnis stimmt nicht mit dem des Accounts\nüberein. Achte " "auf Groß - und Kleinschreibung."); geheimnis->removeStyle(TextFeld::Style::Sichtbar); abbrechen->removeStyle(Knopf::Style::Sichtbar); } } // Ereignisse bool loginNameTE(void* p, void* obj, TastaturEreignis te) { if (!p) return 0; return ((Login*)p)->nameTE(obj, te); } bool loginPasswortTE(void* p, void* obj, TastaturEreignis te) { if (!p) return 0; return ((Login*)p)->passwortTE(obj, te); } bool loginGeheimnisTE(void* p, void* obj, TastaturEreignis te) { if (!p) return 0; return ((Login*)p)->geheimnisTE(obj, te); } bool loginWeiterME(void* p, void* obj, MausEreignis me) { if (!p) return 0; return ((Login*)p)->weiterME(obj, me); } bool loginAbbrechenME(void* p, void* obj, MausEreignis me) { if (!p) return 0; return ((Login*)p)->abbrechenME(obj, me); } bool loginOkME(void* p, void* obj, MausEreignis me) { if (!p) return 0; return ((Login*)p)->okME(obj, me); } bool loginLoginME(void* p, void* obj, MausEreignis me) { if (!p) return 0; return ((Login*)p)->loginME(obj, me); }