Bestätigung.cpp 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414
  1. #include "..\..\Global\Variablen.h"
  2. #include "Bestätigung.h"
  3. #include "..\..\Global\Initialisierung.h"
  4. #include <Punkt.h>
  5. #include <Text.h>
  6. // Inhalt der Bestätigung Klasse aus Bestätigung.h
  7. // Konstruktor
  8. Bestätigung::Bestätigung( Schrift *zSchrift, Fenster *zVorLoginFenster )
  9. {
  10. Punkt bildschirmGröße = BildschirmGröße();
  11. bestätigung = initKnopf( 10, 450, 130, 30, zSchrift, Knopf::Style::Sichtbar, "Bestätigung" );
  12. bestätigung->setMausEreignisParameter( this );
  13. bestätigung->setMausEreignis( bestätigungBestätigungME );
  14. initToolTip( bestätigung, "Account aktivieren oder remove.", zSchrift->getThis(), hauptScreen );
  15. zVorLoginFenster->addMember( bestätigung );
  16. 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" );
  17. name = initTextFeld( 24, 20, 200, 20, zSchrift, TextFeld::Style::TextFeld, "Name" );
  18. name->setTastaturEreignisParameter( this );
  19. name->setTastaturEreignis( bestätigungNameTE );
  20. initToolTip( name, "Account Name.", zSchrift->getThis(), hauptScreen );
  21. fenster->addMember( name );
  22. passwort = initTextFeld( 24, 50, 200, 20, zSchrift, TextFeld::Style::TextFeld, "Passwort" );
  23. passwort->setTastaturEreignisParameter( this );
  24. passwort->setTastaturEreignis( bestätigungPasswortTE );
  25. initToolTip( passwort, "Account Passwort.", zSchrift->getThis(), hauptScreen );
  26. fenster->addMember( passwort );
  27. weiter = initKnopf( 74, 80, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Weiter" );
  28. weiter->setMausEreignisParameter( this );
  29. weiter->setMausEreignis( bestätigungWeiterME );
  30. fenster->addMember( weiter );
  31. nachricht = initTextFeld( 0, 5, 250, 150, zSchrift, TextFeld::Style::Mehrzeilig | TextFeld::Style::HCenter, "" );
  32. fenster->addMember( nachricht );
  33. schlüssel = initTextFeld( 24, 55, 200, 20, zSchrift, TextFeld::Style::TextFeld & ~TextFeld::Style::Sichtbar, "Schlüssel" );
  34. schlüssel->setTastaturEreignisParameter( this );
  35. schlüssel->setTastaturEreignis( bestätigungSchlüsselTE );
  36. initToolTip( schlüssel, "Zugeschickter Schlüssel.", zSchrift->getThis(), hauptScreen );
  37. fenster->addMember( schlüssel );
  38. später = initKnopf( 20, 85, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Später" );
  39. später->setMausEreignisParameter( this );
  40. später->setMausEreignis( bestätigungSpäterME );
  41. initToolTip( später, "Vorgang später fortsetzen.", zSchrift->getThis(), hauptScreen );
  42. fenster->addMember( später );
  43. abbruch = initKnopf( 20, 115, 100, 20, zSchrift, Knopf::Style::Sichtbar, "Abbrechen" );
  44. abbruch->setMausEreignisParameter( this );
  45. abbruch->setMausEreignis( bestätigungAbbruchME );
  46. initToolTip( abbruch, "Vorgang abbrechen.", zSchrift->getThis(), hauptScreen );
  47. fenster->addMember( abbruch );
  48. neuSenden = initKnopf( 129, 115, 100, 20, zSchrift, Knopf::Style::Sichtbar, "neu senden" );
  49. neuSenden->setMausEreignisParameter( this );
  50. neuSenden->setMausEreignis( bestätigungNeuSendenME );
  51. initToolTip( neuSenden, "E-Mail erneut senden.", zSchrift->getThis(), hauptScreen );
  52. fenster->addMember( neuSenden );
  53. zVorLoginFenster->addMember( fenster );
  54. ref = 1;
  55. }
  56. // Destruktor
  57. Bestätigung::~Bestätigung()
  58. {
  59. if( bestätigung )
  60. bestätigung = bestätigung->release();
  61. if( fenster )
  62. fenster = fenster->release();
  63. if( name )
  64. name = name->release();
  65. if( passwort )
  66. passwort = passwort->release();
  67. if( weiter )
  68. weiter = weiter->release();
  69. if( nachricht )
  70. nachricht = nachricht->release();
  71. if( schlüssel )
  72. schlüssel = schlüssel->release();
  73. if( später )
  74. später = später->release();
  75. if( abbruch )
  76. abbruch = abbruch->release();
  77. if( neuSenden )
  78. neuSenden = neuSenden->release();
  79. }
  80. // Privat
  81. void Bestätigung::zeigeNachricht( const char *txt )
  82. {
  83. Punkt bildschirmmitte = Bildschirmmitte();
  84. name->removeStyle( TextFeld::Style::Sichtbar );
  85. passwort->removeStyle( TextFeld::Style::Sichtbar );
  86. schlüssel->removeStyle( TextFeld::Style::Sichtbar );
  87. später->removeStyle( Knopf::Style::Sichtbar );
  88. abbruch->removeStyle( Knopf::Style::Sichtbar );
  89. neuSenden->removeStyle( Knopf::Style::Sichtbar );
  90. fenster->setSize( 250, 150 );
  91. fenster->setPosition( bildschirmmitte.x - 125, bildschirmmitte.y - 75 );
  92. weiter->setPosition( 139, 100 );
  93. weiter->setText( "Ok" );
  94. nachricht->setText( txt );
  95. if( nachricht->zText()->getLength() > 30 )
  96. {
  97. int pos = -1;
  98. bool set = 0;
  99. int lastp = 0;
  100. for( int i = 20; i < nachricht->zText()->getLength(); )
  101. {
  102. char *tmp = &nachricht->zText()->getText()[ i ];
  103. while( *tmp != ' ' && i < nachricht->zText()->getLength() )
  104. {
  105. tmp++;
  106. i++;
  107. if( i - 30 >= lastp )
  108. {
  109. if( set )
  110. {
  111. lastp = pos;
  112. set = 0;
  113. nachricht->zText()->getText()[ pos ] = '\n';
  114. }
  115. else
  116. lastp += 5;
  117. }
  118. }
  119. if( i < nachricht->zText()->getLength() )
  120. {
  121. pos = i;
  122. set = 1;
  123. tmp++;
  124. i++;
  125. }
  126. }
  127. }
  128. nachricht->addStyle( TextFeld::Style::Sichtbar );
  129. }
  130. // Knopfdruck
  131. void Bestätigung::druckFremdKnopf() // Ein anderer Bereich des Programms wurde ausgewählt
  132. {
  133. fenster->removeStyle( Fenster::Style::Sichtbar );
  134. registerKlient->trenne();
  135. bestätigung->setLinienRahmenBreite( 2 );
  136. bestätigung->setAlphaFeldFarbe( 0x5500FF00 );
  137. bestätigung->setAlphaFeldStrength( -5 );
  138. }
  139. bool Bestätigung::bestätigungME( void *obj, MausEreignis me ) // MausEreignis im Knopf bestärigung
  140. {
  141. if( me.id == ME_RLinks )
  142. {
  143. vorLogin->setBestätigung();
  144. bestätigung->setLinienRahmenBreite( 3 );
  145. bestätigung->setAlphaFeldFarbe( 0xFF000000 );
  146. bestätigung->setAlphaFeldStrength( 20 );
  147. Punkt bildschirmGröße = BildschirmGröße();
  148. nachricht->removeStyle( TextFeld::Style::Sichtbar );
  149. schlüssel->removeStyle( TextFeld::Style::Sichtbar );
  150. später->removeStyle( Knopf::Style::Sichtbar );
  151. abbruch->removeStyle( Knopf::Style::Sichtbar );
  152. neuSenden->removeStyle( Knopf::Style::Sichtbar );
  153. fenster->setTitel( "Vorgang Bestätigen" );
  154. fenster->setSize( 250, 140 );
  155. fenster->setPosition( bildschirmGröße.x / 2 - 125, bildschirmGröße.y / 2 - 70 );
  156. fenster->addStyle( Fenster::Style::Sichtbar );
  157. weiter->setText( "Weiter" );
  158. weiter->setPosition( 74, 80 );
  159. name->addStyle( TextFeld::Style::Sichtbar );
  160. passwort->addStyle( TextFeld::Style::Sichtbar );
  161. name->addStyle( TextFeld::Style::Fokus );
  162. name->setAuswahl( name->zText()->getLength(), 0 );
  163. }
  164. return 1;
  165. }
  166. bool Bestätigung::nameTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld name
  167. {
  168. if( te.id == TE_Press && te.taste == T_Enter )
  169. return 0;
  170. if( te.id == TE_Release && ( te.taste == T_Enter || te.taste == T_Tab ) )
  171. {
  172. name->removeStyle( TextFeld::Style::Fokus );
  173. passwort->addStyle( TextFeld::Style::Fokus );
  174. passwort->setAuswahl( passwort->zText()->getLength(), 0 );
  175. }
  176. if( bestätigung->zText()->getLength() >= 25 && istSchreibbar( te.taste ) )
  177. return 0;
  178. return 1;
  179. }
  180. bool Bestätigung::passwortTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld passwort
  181. {
  182. if( te.id == TE_Press && te.taste == T_Enter )
  183. return 0;
  184. if( te.id == TE_Press )
  185. passwort->setSchowChar( '*' );
  186. if( te.id == TE_Release && te.taste == T_Enter )
  187. {
  188. passwort->removeStyle( TextFeld::Style::Fokus );
  189. MausEreignis me;
  190. me.id = ME_RLinks;
  191. weiterME( 0, me );
  192. }
  193. if( passwort->zText()->getLength() >= 25 && istSchreibbar( te.taste ) )
  194. return 0;
  195. return 1;
  196. }
  197. bool Bestätigung::weiterME( void *obj, MausEreignis me ) // MausEreignis im Knopf weiter
  198. {
  199. if( me.id == ME_RLinks )
  200. {
  201. if( weiter->zText()->istGleich( "Weiter" ) )
  202. {
  203. if( name->zText()->getLength() <= 0 )
  204. zeigeNachricht( "Bitte gebe deinen Accountnamen ein." );
  205. if( passwort->zText()->getLength() == 0 )
  206. zeigeNachricht( "Bitte gebe dein Accountpasswort ein." );
  207. if( weiter->zText()->istGleich( "Ok" ) )
  208. return 1;
  209. new AktionsThread( 6, name->zText()->getText(), passwort->zText()->getText(), 0, 0, 0 );
  210. }
  211. else if( weiter->zText()->istGleich( "Fertig" ) )
  212. {
  213. if( schlüssel->zText()->getLength() <= 0 )
  214. {
  215. zeigeNachricht( "Bitte gebe den dir zugesendeten Schlüssel ein." );
  216. return 1;
  217. }
  218. new AktionsThread( 7, schlüssel->zText()->getText(), 0, 0, 0, 0 );
  219. }
  220. else
  221. {
  222. if( fenster->zTitel()->istGleich( "Vorgang Bestätigen" ) )
  223. {
  224. MausEreignis me;
  225. me.id = ME_RLinks;
  226. bestätigungME( 0, me );
  227. }
  228. else
  229. {
  230. nachricht->setText( "Dir wurde eine E-Mail mit einem\nSchlüssel gesendet, den du hier\neingeben musst." );
  231. schlüssel->addStyle( TextFeld::Style::Sichtbar );
  232. fenster->setSize( 250, 170 );
  233. Punkt bildschirmGröße = BildschirmGröße();
  234. fenster->setPosition( bildschirmGröße.x / 2 - 125, bildschirmGröße.y / 2 - 85 );
  235. später->addStyle( Knopf::Style::Sichtbar );
  236. weiter->setText( "Fertig" );
  237. weiter->setPosition( 129, 85 );
  238. abbruch->addStyle( Knopf::Style::Sichtbar );
  239. neuSenden->addStyle( Knopf::Style::Sichtbar );
  240. }
  241. }
  242. }
  243. return 1;
  244. }
  245. bool Bestätigung::schlüsselTE( void *obj, TastaturEreignis te ) // Tastaturereignis im Textfeld schlüssel
  246. {
  247. if( te.id == TE_Press && te.taste == T_Enter )
  248. return 0;
  249. if( te.id == TE_Release && te.taste == T_Enter )
  250. {
  251. schlüssel->removeStyle( TextFeld::Style::Fokus );
  252. MausEreignis me;
  253. me.id = ME_RLinks;
  254. weiterME( 0, me );
  255. }
  256. if( schlüssel->zText()->getLength() >= 20 && istSchreibbar( te.taste ) )
  257. return 0;
  258. return 1;
  259. }
  260. bool Bestätigung::späterME( void *obj, MausEreignis me ) // MausEreignis im Knopf später
  261. {
  262. if( me.id == ME_RLinks )
  263. {
  264. registerKlient->später();
  265. MausEreignis me;
  266. me.id = ME_RLinks;
  267. bestätigungME( 0, me );
  268. }
  269. return 1;
  270. }
  271. bool Bestätigung::abbruchME( void *obj, MausEreignis me ) // MausEreignis im Knopf abbruch
  272. {
  273. if( me.id == ME_RLinks )
  274. {
  275. registerKlient->abbrechen();
  276. MausEreignis me;
  277. me.id = ME_RLinks;
  278. bestätigungME( 0, me );
  279. }
  280. return 1;
  281. }
  282. bool Bestätigung::neuSendenME( void *obj, MausEreignis me ) // MausEreignis im Knopf neuSenden
  283. {
  284. if( me.id == ME_RLinks )
  285. registerKlient->eMailErneutSenden();
  286. return 1;
  287. }
  288. void Bestätigung::setWeiterResult( int ret ) // setzt den Returnwert des Weiter drückens
  289. {
  290. if( !ret )
  291. {
  292. if( registerKlient->getLetzterFehler() )
  293. zeigeNachricht( registerKlient->getLetzterFehler() );
  294. else
  295. zeigeNachricht( "Es ist ein unbekannter Fehler aufgetreten." );
  296. return;
  297. }
  298. name->removeStyle( TextFeld::Style::Sichtbar );
  299. passwort->removeStyle( TextFeld::Style::Sichtbar );
  300. if( ret == 1 )
  301. fenster->setTitel( "Account aktivieren" );
  302. else
  303. fenster->setTitel( "Account remove" );
  304. fenster->setSize( 250, 170 );
  305. Punkt bildschirmGröße = BildschirmGröße();
  306. fenster->setPosition( bildschirmGröße.x / 2 - 125, bildschirmGröße.y / 2 - 85 );
  307. nachricht->setText( "Dir wurde eine E-Mail mit einem\nSchlüssel gesendet, den du hier\neingeben musst." );
  308. nachricht->addStyle( TextFeld::Style::Sichtbar );
  309. schlüssel->addStyle( TextFeld::Style::Sichtbar );
  310. später->addStyle( Knopf::Style::Sichtbar );
  311. weiter->setText( "Fertig" );
  312. weiter->setPosition( 129, 85 );
  313. abbruch->addStyle( Knopf::Style::Sichtbar );
  314. neuSenden->addStyle( Knopf::Style::Sichtbar );
  315. }
  316. void Bestätigung::setFertigResult( bool ret ) // setzt den Returnwert des Fertig drükens
  317. {
  318. if( ret )
  319. {
  320. fenster->setTitel( "Vorgang Bestätigen" );
  321. zeigeNachricht( "Der Vorgang wurde erfolgreich abgeschlossen." );
  322. }
  323. else
  324. zeigeNachricht( "Du hast nicht den richtigen Schlüssel eingegeben." );
  325. }
  326. // Reference Counting
  327. Bestätigung *Bestätigung::getThis()
  328. {
  329. ref++;
  330. return this;
  331. }
  332. Bestätigung *Bestätigung::release()
  333. {
  334. ref--;
  335. if( !ref )
  336. delete this;
  337. return 0;
  338. }
  339. // messages
  340. bool bestätigungBestätigungME( void *p, void *obj, MausEreignis me )
  341. {
  342. if( !p )
  343. return 0;
  344. return ( (Bestätigung*)p )->bestätigungME( obj, me );
  345. }
  346. bool bestätigungNameTE( void *p, void *obj, TastaturEreignis te )
  347. {
  348. if( !p )
  349. return 0;
  350. return ( (Bestätigung*)p )->nameTE( obj, te );
  351. }
  352. bool bestätigungPasswortTE( void *p, void *obj, TastaturEreignis te )
  353. {
  354. if( !p )
  355. return 0;
  356. return ( (Bestätigung*)p )->passwortTE( obj, te );
  357. }
  358. bool bestätigungWeiterME( void *p, void *obj, MausEreignis me )
  359. {
  360. if( !p )
  361. return 0;
  362. return ( (Bestätigung*)p )->weiterME( obj, me );
  363. }
  364. bool bestätigungSchlüsselTE( void *p, void *obj, TastaturEreignis te )
  365. {
  366. if( !p )
  367. return 0;
  368. return ( (Bestätigung*)p )->schlüsselTE( obj, te );
  369. }
  370. bool bestätigungSpäterME( void *p, void *obj, MausEreignis me )
  371. {
  372. if( !p )
  373. return 0;
  374. return ( (Bestätigung*)p )->späterME( obj, me );
  375. }
  376. bool bestätigungAbbruchME( void *p, void *obj, MausEreignis me )
  377. {
  378. if( !p )
  379. return 0;
  380. return ( (Bestätigung*)p )->abbruchME( obj, me );
  381. }
  382. bool bestätigungNeuSendenME( void *p, void *obj, MausEreignis me )
  383. {
  384. if( !p )
  385. return 0;
  386. return ( (Bestätigung*)p )->neuSendenME( obj, me );
  387. }