#include "UIDialog.h" #include "Button.h" #include "Font.h" #include "TextField.h" #include "UIInitialization.h" using namespace Framework; UIDialog::UIDialog(Font* schrift) : Window() { addStyle(Window::Style::normal | Window::Style::BodyHintergrund | Window::Style::TitelHintergrund | Window::Style::ClosingHintergrund); setKBgFarbe(0xFF000000); setTBgFarbe(0xFF000000); setSBgFarbe(0xFF000000); setMouseEvent(_ret1ME); setKeyboardEvent(_ret1TE); setRBreite(1); setRFarbe(0xFFFFFFFF); setTitel(""); setTFontZ(schrift); setTSFarbe(0xFFFFFFFF); zTTextField()->setSize(0, 20); zTTextField()->addStyle(TextField::Style::Sichtbar | TextField::Style::Center | TextField::Style::Border); setTRFarbe(0xFF00FF00); setTRBreite(1); setTAfFarbe(0x1000FF00); setTAfStrength(-15); setSKAfFarbe(0xFF00FF00); setSKAfStrength(30); setClosingMe([this](void* p, void* o, MouseEvent me) { if (me.id == ME_RLinks) removeStyle(Window::Style::Sichtbar); return 1; }); } UIDialog::~UIDialog() {} void UIDialog::adjustSize() { Punkt max = Punkt(0, 0); for (Drawable* z : getMembers()) { if (z->hatStyle(Drawable::Style::Sichtbar)) { max.x = MAX(max.x, z->getX() + z->getBreite() + 5); max.y = MAX(max.y, z->getY() + z->getHeight() + 5); } } setSize( max + Punkt(hatStyle(Window::Style::Border) ? getRBreite() * 2 : 0, (hatStyle(Window::Style::Border) ? getRBreite() * 2 : 0) + (hatStyle(Window::Style::Titel) ? zTTextField()->getHeight() : 0))); } // Adds a drawing to the window // obj: the drawing void UIDialog::addMember(Drawable* obj) { Window::addMember(obj); adjustSize(); } // Removes a drawing from the window // zObj: the drawing (without increased reference counter) void UIDialog::removeMember(Drawable* zObj) { Window::removeMember(zObj); adjustSize(); } // Removes all drawings from the window void UIDialog::removeAll() { Window::removeAll(); adjustSize(); } UIMessageDialog::UIMessageDialog( const char* titel, const char* message, Font* schrift) : UIDialog(schrift) { setTitel(titel); UIInit init = defaultUI(schrift, 0); TextField* msg = init.createTextField(init.initParam); msg->setStyle(TextField::Style::Text); msg->setText(message); msg->setPosition(5, 5); TextRenderer tr(dynamic_cast(schrift->getThis())); tr.textFormatieren(msg->zText(), 590); int br = tr.getTextBreite(message); int hoe = tr.getTextHeight(message); msg->setSize(br, hoe); Button* ok = init.createButton(init.initParam); ok->setText("Ok"); ok->setMouseEvent([this](void* p, void* o, MouseEvent me) { if (me.id == ME_RLinks) removeStyle(Window::Style::Sichtbar); return 1; }); ok->setPosition(br - 100, hoe + 5); ok->setSize(100, 20); addMember(ok); addMember(msg); setSize(br + 10, hoe + 55); } UIMessageDialog::~UIMessageDialog() {}