UIDialog.cpp 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #include "UIDialog.h"
  2. #include "Button.h"
  3. #include "Font.h"
  4. #include "TextField.h"
  5. #include "UIInitialization.h"
  6. using namespace Framework;
  7. UIDialog::UIDialog(Font* schrift)
  8. : Window()
  9. {
  10. addStyle(Window::Style::normal | Window::Style::BodyHintergrund
  11. | Window::Style::TitelHintergrund
  12. | Window::Style::ClosingHintergrund);
  13. setKBgFarbe(0xFF000000);
  14. setTBgFarbe(0xFF000000);
  15. setSBgFarbe(0xFF000000);
  16. setMouseEvent(_ret1ME);
  17. setKeyboardEvent(_ret1TE);
  18. setRBreite(1);
  19. setRFarbe(0xFFFFFFFF);
  20. setTitel("");
  21. setTFontZ(schrift);
  22. setTSFarbe(0xFFFFFFFF);
  23. zTTextField()->setSize(0, 20);
  24. zTTextField()->addStyle(TextField::Style::Sichtbar | TextField::Style::Center
  25. | TextField::Style::Border);
  26. setTRFarbe(0xFF00FF00);
  27. setTRBreite(1);
  28. setTAfFarbe(0x1000FF00);
  29. setTAfStrength(-15);
  30. setSKAfFarbe(0xFF00FF00);
  31. setSKAfStrength(30);
  32. setClosingMe([this](void* p, void* o, MouseEvent me) {
  33. if (me.id == ME_RLinks) removeStyle(Window::Style::Sichtbar);
  34. return 1;
  35. });
  36. }
  37. UIDialog::~UIDialog() {}
  38. void UIDialog::adjustSize()
  39. {
  40. Punkt max = Punkt(0, 0);
  41. for (Drawable* z : getMembers())
  42. {
  43. if (z->hatStyle(Drawable::Style::Sichtbar))
  44. {
  45. max.x = MAX(max.x, z->getX() + z->getBreite() + 5);
  46. max.y = MAX(max.y, z->getY() + z->getHeight() + 5);
  47. }
  48. }
  49. setSize(
  50. max
  51. + Punkt(hatStyle(Window::Style::Border) ? getRBreite() * 2 : 0,
  52. (hatStyle(Window::Style::Border) ? getRBreite() * 2 : 0)
  53. + (hatStyle(Window::Style::Titel) ? zTTextField()->getHeight()
  54. : 0)));
  55. }
  56. // Adds a drawing to the window
  57. // obj: the drawing
  58. void UIDialog::addMember(Drawable* obj)
  59. {
  60. Window::addMember(obj);
  61. adjustSize();
  62. }
  63. // Removes a drawing from the window
  64. // zObj: the drawing (without increased reference counter)
  65. void UIDialog::removeMember(Drawable* zObj)
  66. {
  67. Window::removeMember(zObj);
  68. adjustSize();
  69. }
  70. // Removes all drawings from the window
  71. void UIDialog::removeAll()
  72. {
  73. Window::removeAll();
  74. adjustSize();
  75. }
  76. UIMessageDialog::UIMessageDialog(
  77. const char* titel, const char* message, Font* schrift)
  78. : UIDialog(schrift)
  79. {
  80. setTitel(titel);
  81. UIInit init = defaultUI(schrift, 0);
  82. TextField* msg = init.createTextField(init.initParam);
  83. msg->setStyle(TextField::Style::Text);
  84. msg->setText(message);
  85. msg->setPosition(5, 5);
  86. TextRenderer tr(dynamic_cast<Font*>(schrift->getThis()));
  87. tr.textFormatieren(msg->zText(), 590);
  88. int br = tr.getTextBreite(message);
  89. int hoe = tr.getTextHeight(message);
  90. msg->setSize(br, hoe);
  91. Button* ok = init.createButton(init.initParam);
  92. ok->setText("Ok");
  93. ok->setMouseEvent([this](void* p, void* o, MouseEvent me) {
  94. if (me.id == ME_RLinks) removeStyle(Window::Style::Sichtbar);
  95. return 1;
  96. });
  97. ok->setPosition(br - 100, hoe + 5);
  98. ok->setSize(100, 20);
  99. addMember(ok);
  100. addMember(msg);
  101. setSize(br + 10, hoe + 55);
  102. }
  103. UIMessageDialog::~UIMessageDialog() {}