Login.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391
  1. #include "..\..\Global\Variablen.h"
  2. #include "Login.h"
  3. #include "..\..\Global\Initialisierung.h"
  4. #include <Punkt.h>
  5. #include <Text.h>
  6. #include <InitDatei.h>
  7. // Inhalt der Login Klasse aus Login.h
  8. // Konstruktor
  9. Login::Login(Fenster* vorLoginFenster)
  10. : ReferenceCounter()
  11. {
  12. Punkt bildschirmGröße = uiFactory.initParam.bildschirm->getBackBufferSize();
  13. login = initKnopf(10, 50, 130, 30, Knopf::Style::Sichtbar, "Login");
  14. login->setMausEreignisParameter(this);
  15. login->setMausEreignis(loginLoginME);
  16. initToolTip(login, "Einloggen.");
  17. vorLoginFenster->addMember(dynamic_cast<Zeichnung*>(login->getThis()));
  18. 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");
  19. name = initTextFeld(20, 20, 208, 20, TextFeld::Style::TextFeld, "Name");
  20. name->setTastaturEreignisParameter(this);
  21. name->setTastaturEreignis(loginNameTE);
  22. initToolTip(name, "Account Name.");
  23. fenster->addMember(dynamic_cast<Zeichnung*>(name->getThis()));
  24. passwort = initTextFeld(20, 55, 208, 20, TextFeld::Style::TextFeld, "Passwort");
  25. passwort->setTastaturEreignisParameter(this);
  26. passwort->setTastaturEreignis(loginPasswortTE);
  27. initToolTip(passwort, "Account Passwort.");
  28. fenster->addMember(dynamic_cast<Zeichnung*>(passwort->getThis()));
  29. weiter = initKnopf(75, 90, 100, 20, Knopf::Style::Sichtbar, "Login");
  30. weiter->setMausEreignisParameter(this);
  31. weiter->setMausEreignis(loginWeiterME);
  32. fenster->addMember(dynamic_cast<Zeichnung*>(weiter->getThis()));
  33. nachricht = initTextFeld(5, 5, 238, 90, TextFeld::Style::HCenter | TextFeld::Style::Mehrzeilig, "");
  34. fenster->addMember(dynamic_cast<Zeichnung*>(nachricht->getThis()));
  35. geheimnis = initTextFeld(20, 55, 208, 20, TextFeld::Style::TextFeld, "Geheimnis");
  36. geheimnis->removeStyle(TextFeld::Style::Sichtbar);
  37. geheimnis->setTastaturEreignisParameter(this);
  38. geheimnis->setTastaturEreignis(loginGeheimnisTE);
  39. initToolTip(geheimnis, "Account Geheimnis.");
  40. fenster->addMember(dynamic_cast<Zeichnung*>(geheimnis->getThis()));
  41. abbrechen = initKnopf(10, 98, 100, 20, 0, "Abbrechen");
  42. abbrechen->setMausEreignisParameter(this);
  43. abbrechen->setMausEreignis(loginAbbrechenME);
  44. fenster->addMember(dynamic_cast<Zeichnung*>(abbrechen->getThis()));
  45. ok = initKnopf(138, 98, 100, 20, 0, "Ok");
  46. ok->setMausEreignisParameter(this);
  47. ok->setMausEreignis(loginOkME);
  48. fenster->addMember(dynamic_cast<Zeichnung*>(ok->getThis()));
  49. vorLoginFenster->addMember(dynamic_cast<Zeichnung*>(fenster->getThis()));
  50. MausEreignis me;
  51. me.id = ME_RLinks;
  52. loginME(0, me);
  53. }
  54. // Destruktor
  55. Login::~Login()
  56. {
  57. if (fenster)
  58. fenster = (Fenster*)fenster->release();
  59. if (name)
  60. name = (TextFeld*)name->release();
  61. if (passwort)
  62. passwort = (TextFeld*)passwort->release();
  63. if (nachricht)
  64. nachricht = (TextFeld*)nachricht->release();
  65. if (geheimnis)
  66. geheimnis = (TextFeld*)geheimnis->release();
  67. if (weiter)
  68. weiter = (Knopf*)weiter->release();
  69. if (abbrechen)
  70. abbrechen = (Knopf*)abbrechen->release();
  71. if (ok)
  72. ok = (Knopf*)ok->release();
  73. if (login)
  74. login = (Knopf*)login->release();
  75. }
  76. // Knopfdruck
  77. void Login::druckFremdKnopf() // Ein anderer Bereich des Programms wurde ausgewählt
  78. {
  79. fenster->removeStyle(Fenster::Style::Sichtbar);
  80. login->setRahmenBreite(2);
  81. login->setAlphaFeldFarbe(0x5500FF00);
  82. login->setAlphaFeldStrength(-5);
  83. }
  84. bool Login::nameTE(void* obj, TastaturEreignis te) // Tastaturereignis im Textfeld name
  85. {
  86. if (te.id == TE_Press && te.taste == T_Enter)
  87. return 0;
  88. if (te.id == TE_Release && (te.taste == T_Enter || te.taste == T_Tab))
  89. {
  90. name->removeStyle(TextFeld::Style::Fokus);
  91. passwort->addStyle(TextFeld::Style::Fokus);
  92. passwort->setAuswahl(0, passwort->zText()->getLength());
  93. }
  94. if (name->zText()->getLength() >= 25 && istSchreibbar(te.taste))
  95. return 0;
  96. return 1;
  97. }
  98. bool Login::passwortTE(void* obj, TastaturEreignis te) // TastaturEreignis im Textfeld passwort
  99. {
  100. if (te.id == TE_Press)
  101. passwort->setSchowChar('*');
  102. if (te.id == TE_Press && te.taste == T_Enter)
  103. return 0;
  104. if (te.id == TE_Release && te.taste == T_Enter)
  105. {
  106. passwort->removeStyle(TextFeld::Style::Fokus);
  107. MausEreignis me;
  108. me.id = ME_RLinks;
  109. weiterME(0, me);
  110. }
  111. if (passwort->zText()->getLength() >= 25 && istSchreibbar(te.taste))
  112. return 0;
  113. return 1;
  114. }
  115. bool Login::geheimnisTE(void* obj, TastaturEreignis te) // TastaturEreignis im Textfeld geheimnis
  116. {
  117. if (te.id == TE_Press && te.taste == T_Enter)
  118. return 0;
  119. if (te.id == TE_Press)
  120. geheimnis->setSchowChar('*');
  121. if (te.id == TE_Release && te.taste == T_Enter)
  122. {
  123. geheimnis->removeStyle(TextFeld::Style::Fokus);
  124. MausEreignis me;
  125. me.id = ME_RLinks;
  126. okME(0, me);
  127. }
  128. if (geheimnis->zText()->getLength() >= 50 && istSchreibbar(te.taste))
  129. return 0;
  130. return 1;
  131. }
  132. bool Login::weiterME(void* obj, MausEreignis me) // MausEreignis im Knopf weiter
  133. {
  134. if (me.id == ME_RLinks)
  135. {
  136. if (name->zText()->getLength() == 0)
  137. {
  138. name->removeStyle(TextFeld::Style::Sichtbar);
  139. passwort->removeStyle(TextFeld::Style::Sichtbar);
  140. weiter->removeStyle(Knopf::Style::Sichtbar);
  141. nachricht->setText("Bitte trage deinen Accountnamen\nein.");
  142. nachricht->addStyle(TextFeld::Style::Sichtbar);
  143. ok->addStyle(Knopf::Style::Sichtbar);
  144. return 1;
  145. }
  146. if (passwort->zText()->getLength() == 0)
  147. {
  148. name->removeStyle(TextFeld::Style::Sichtbar);
  149. passwort->removeStyle(TextFeld::Style::Sichtbar);
  150. weiter->removeStyle(Knopf::Style::Sichtbar);
  151. nachricht->setText("Bitte trage dein Passwort ein.");
  152. nachricht->addStyle(TextFeld::Style::Sichtbar);
  153. ok->addStyle(Knopf::Style::Sichtbar);
  154. return 1;
  155. }
  156. new AktionsThread(1, name->zText()->getText(), passwort->zText()->getText(), 0, 0, 0);
  157. }
  158. return 1;
  159. }
  160. bool Login::okME(void* obj, MausEreignis me) // MausEreignis im Knopf ok
  161. {
  162. if (me.id == ME_RLinks)
  163. {
  164. if (geheimnis->hatStyle(TextFeld::Style::Sichtbar))
  165. new AktionsThread(3, name->zText()->getText(), passwort->zText()->getText(), geheimnis->zText()->getText(), 0, 0);
  166. else
  167. {
  168. nachricht->removeStyle(TextFeld::Style::Sichtbar);
  169. geheimnis->removeStyle(TextFeld::Style::Sichtbar);
  170. ok->removeStyle(Knopf::Style::Sichtbar);
  171. abbrechen->removeStyle(Knopf::Style::Sichtbar);
  172. name->addStyle(TextFeld::Style::Sichtbar);
  173. passwort->addStyle(TextFeld::Style::Sichtbar);
  174. weiter->addStyle(TextFeld::Style::Sichtbar);
  175. name->addStyle(TextFeld::Style::Fokus);
  176. name->setAuswahl(0, name->zText()->getLength());
  177. }
  178. }
  179. return 1;
  180. }
  181. bool Login::abbrechenME(void* obj, MausEreignis me) // MausEreignis im Knopf abbrechen
  182. {
  183. if (me.id == ME_RLinks)
  184. {
  185. nachricht->removeStyle(TextFeld::Style::Sichtbar);
  186. geheimnis->removeStyle(TextFeld::Style::Sichtbar);
  187. ok->removeStyle(Knopf::Style::Sichtbar);
  188. abbrechen->removeStyle(Knopf::Style::Sichtbar);
  189. name->addStyle(TextFeld::Style::Sichtbar);
  190. passwort->addStyle(TextFeld::Style::Sichtbar);
  191. weiter->addStyle(TextFeld::Style::Sichtbar);
  192. name->addStyle(TextFeld::Style::Fokus);
  193. name->setAuswahl(0, name->zText()->getLength());
  194. }
  195. return 1;
  196. }
  197. bool Login::loginME(void* obj, MausEreignis me) // MausEreignis im Knopf login
  198. {
  199. if (me.id == ME_RLinks)
  200. {
  201. vorLogin->setLogin(1);
  202. nachricht->removeStyle(TextFeld::Style::Sichtbar);
  203. geheimnis->removeStyle(TextFeld::Style::Sichtbar);
  204. ok->removeStyle(Knopf::Style::Sichtbar);
  205. abbrechen->removeStyle(Knopf::Style::Sichtbar);
  206. fenster->addStyle(Fenster::Style::Sichtbar);
  207. name->addStyle(TextFeld::Style::Sichtbar);
  208. passwort->addStyle(TextFeld::Style::Sichtbar);
  209. weiter->addStyle(TextFeld::Style::Sichtbar);
  210. login->setRahmenBreite(3);
  211. login->setAlphaFeldFarbe(0xFF000000);
  212. login->setAlphaFeldStrength(20);
  213. name->addStyle(TextFeld::Style::Fokus);
  214. name->setAuswahl(0, name->zText()->getLength());
  215. }
  216. return 1;
  217. }
  218. void Login::setLoginReturn(int ret) // setzt den Returnwert vom login
  219. {
  220. if (ret == 1)
  221. new AktionsThread(2, 0, 0, 0, 0, 0);
  222. else if (ret == 2)
  223. {
  224. name->removeStyle(TextFeld::Style::Sichtbar);
  225. passwort->removeStyle(TextFeld::Style::Sichtbar);
  226. weiter->removeStyle(Knopf::Style::Sichtbar);
  227. nachricht->setText("Der Account ist bereits online.\nGebe dein Account Geheimnis ein,\num den anderen Benutzer zu kicken.");
  228. nachricht->addStyle(TextFeld::Style::Sichtbar);
  229. geheimnis->addStyle(TextFeld::Style::Sichtbar);
  230. ok->addStyle(Knopf::Style::Sichtbar);
  231. abbrechen->addStyle(Knopf::Style::Sichtbar);
  232. geheimnis->addStyle(TextFeld::Style::Fokus);
  233. geheimnis->setAuswahl(0, geheimnis->zText()->getLength());
  234. }
  235. else if (!ret && lastError.getLength())
  236. {
  237. name->removeStyle(TextFeld::Style::Sichtbar);
  238. passwort->removeStyle(TextFeld::Style::Sichtbar);
  239. weiter->removeStyle(Knopf::Style::Sichtbar);
  240. nachricht->setText(lastError);
  241. if (nachricht->zText()->getLength() > 30)
  242. {
  243. int pos = -1;
  244. bool set = 0;
  245. int lastp = 0;
  246. for (int i = 20; i < nachricht->zText()->getLength(); )
  247. {
  248. const char* tmp = &nachricht->zText()->getText()[i];
  249. while (*tmp != ' ' && i < nachricht->zText()->getLength())
  250. {
  251. tmp++;
  252. i++;
  253. if (i - 30 >= lastp)
  254. {
  255. if (set)
  256. {
  257. lastp = pos;
  258. set = 0;
  259. ((char*)nachricht->zText()->getText())[pos] = '\n';
  260. }
  261. else
  262. lastp += 5;
  263. }
  264. }
  265. if (i < nachricht->zText()->getLength())
  266. {
  267. pos = i;
  268. set = 1;
  269. tmp++;
  270. i++;
  271. }
  272. }
  273. }
  274. nachricht->addStyle(TextFeld::Style::Sichtbar);
  275. ok->addStyle(Knopf::Style::Sichtbar);
  276. }
  277. }
  278. void Login::setKickReturn(int ret) // setzt den returnwert vom kick
  279. {
  280. if (ret == 1)
  281. new AktionsThread(2, 0, 0, 0, 0, 0);
  282. else if (ret == 2)
  283. {
  284. nachricht->setText(lastError);
  285. if (nachricht->zText()->getLength() > 30)
  286. {
  287. int pos = -1;
  288. bool set = 0;
  289. int lastp = 0;
  290. for (int i = 20; i < nachricht->zText()->getLength(); )
  291. {
  292. const char* tmp = &nachricht->zText()->getText()[i];
  293. while (*tmp != ' ' && i < nachricht->zText()->getLength())
  294. {
  295. tmp++;
  296. i++;
  297. if (i - 30 >= lastp)
  298. {
  299. if (set)
  300. {
  301. lastp = pos;
  302. set = 0;
  303. ((char*)nachricht->zText()->getText())[pos] = '\n';
  304. }
  305. else
  306. lastp += 5;
  307. }
  308. }
  309. if (i < nachricht->zText()->getLength())
  310. {
  311. pos = i;
  312. set = 1;
  313. tmp++;
  314. i++;
  315. }
  316. }
  317. }
  318. geheimnis->removeStyle(TextFeld::Style::Sichtbar);
  319. abbrechen->removeStyle(Knopf::Style::Sichtbar);
  320. }
  321. else if (!ret)
  322. {
  323. nachricht->setText("Das Geheimnis stimmt nicht mit dem des Accounts\nüberein. Achte auf Groß - und Kleinschreibung.");
  324. geheimnis->removeStyle(TextFeld::Style::Sichtbar);
  325. abbrechen->removeStyle(Knopf::Style::Sichtbar);
  326. }
  327. }
  328. // Ereignisse
  329. bool loginNameTE(void* p, void* obj, TastaturEreignis te)
  330. {
  331. if (!p)
  332. return 0;
  333. return ((Login*)p)->nameTE(obj, te);
  334. }
  335. bool loginPasswortTE(void* p, void* obj, TastaturEreignis te)
  336. {
  337. if (!p)
  338. return 0;
  339. return ((Login*)p)->passwortTE(obj, te);
  340. }
  341. bool loginGeheimnisTE(void* p, void* obj, TastaturEreignis te)
  342. {
  343. if (!p)
  344. return 0;
  345. return ((Login*)p)->geheimnisTE(obj, te);
  346. }
  347. bool loginWeiterME(void* p, void* obj, MausEreignis me)
  348. {
  349. if (!p)
  350. return 0;
  351. return ((Login*)p)->weiterME(obj, me);
  352. }
  353. bool loginAbbrechenME(void* p, void* obj, MausEreignis me)
  354. {
  355. if (!p)
  356. return 0;
  357. return ((Login*)p)->abbrechenME(obj, me);
  358. }
  359. bool loginOkME(void* p, void* obj, MausEreignis me)
  360. {
  361. if (!p)
  362. return 0;
  363. return ((Login*)p)->okME(obj, me);
  364. }
  365. bool loginLoginME(void* p, void* obj, MausEreignis me)
  366. {
  367. if (!p)
  368. return 0;
  369. return ((Login*)p)->loginME(obj, me);
  370. }