#include "Frage.h" #include #include #include "../../../Initialisierung/Initialisierung.h" // Konstructor // tr: Ein Zeiger auf die zu verwendende Schrift // frage: Die Frage die an den Benutzer gestellt werden soll // left: Die linke Antwort // right: Die rechte Antwort // leftAk: Ein Zeiger auf eine Funktion die beim wählen der Linken Antwort aufgerufen wird // rightAk: Ein Zeiger auf eine Funktion die beim wählen der Rechten Antwort aufgerufen wird // abbruchAk: Ein Zeiger auf eine Funktion die beim Schließen des Fensters aufgerufen wird // maxSize: Die Bildschirmgröße in Pixeln Frage::Frage( TextRenderer *tr, UIInit &uiFactory, char *frage, char *left, char *right, std::function< void() > leftAk, std::function< void() > rightAk, std::function< void() > abbruchAk, Punkt maxSize ) : Dialog( tr ) { Text *tmp = new Text( frage ); tr->setSchriftSize( 12 ); tr->textFormatieren( tmp, 300 ); int br = tr->getTextBreite( tmp->getText() ); int hö = tr->getTextHeight( tmp->getText() ); setSize( br + 12, hö + 63 ); setPosition( maxSize / 2 - getSize() / 2 ); TextFeld *text = initTextFeld( 5, 5, br, hö, uiFactory, TextFeld::Style::Text, tmp->getText() ); addMember( text ); tmp->release(); Knopf *r = initKnopf( br - 94, hö + 22, 100, 20, uiFactory, Knopf::Style::Normal, right ); addMember( r ); Knopf *l = initKnopf( br - 199, hö + 22, 100, 20, uiFactory, Knopf::Style::Normal, left ); addMember( l ); bool *verl = &verlassen; r->setMausEreignis( [verl, rightAk]( void *param, void *obj, MausEreignis me ) -> bool { if( me.id == ME_RLinks && !me.verarbeitet && !*verl ) { *verl = 1; if( rightAk ) rightAk(); } return 1; } ); l->setMausEreignis( [verl, leftAk]( void *param, void *obj, MausEreignis me ) -> bool { if( me.id == ME_RLinks && !me.verarbeitet && !*verl ) { *verl = 1; if( leftAk ) leftAk(); } return 1; } ); setClosingMe( [verl, abbruchAk]( void *param, void *obj, MausEreignis me ) -> bool { if( me.id == ME_RLinks && !me.verarbeitet && !*verl ) { *verl = 1; if( abbruchAk ) abbruchAk(); } return 1; } ); } Frage::~Frage() {}