OptionsWindow.cpp 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #include "OptionsWindow.h"
  2. #include <FileSystem.h>
  3. #include "Globals.h"
  4. #include "Initialization.h"
  5. OptionsWindow::OptionsWindow(std::function<void()> onOptionsOpen)
  6. : Window(),
  7. onOptionsOpen(onOptionsOpen)
  8. {
  9. LTDBFile iconsDat;
  10. iconsDat.setFile(new Text("data/images/gui_icons.ltdb"));
  11. iconsDat.readData(0);
  12. setStyle(Style::Allowed | Style::Border | Style::BodyBAlpha | Style::Title
  13. | Style::TitleBAlpha | Style::Closable | Style::ClosingBAlpha
  14. | Style::CustomTitle | Style::ClosingBuffer | Style::CustomTitle
  15. | Style::ClosingBuffer | Style::ClosingBImage
  16. | Style::TitleBackground | Style::BodyBackground
  17. | Style::ClosingBackground | Style::MEIgnoreInside
  18. | Style::HeightChangeable | Style::WidthChangeable
  19. | Style::BodyMinWidth | Style::BodyMinHeight | Style::Movable);
  20. removeStyle(Style::Visible);
  21. setMouseEvent(Framework::_ret1ME);
  22. setKeyboardEvent(Framework::_ret1TE);
  23. setBorderWidth(1);
  24. setBorderColor(0xFF52525E);
  25. setBodyBgColor(0xA0000000);
  26. setTBgColor(0xA0000000);
  27. setCloseBgColor(0xA0000000);
  28. setTFontZ(dynamic_cast<Font*>(uiFactory.initParam.font->getThis()));
  29. zTTextField()->setSize(0, 20);
  30. zTTextField()->addStyle(TextField::Style::Center);
  31. setCloseAfStrength(10);
  32. setCloseAfColor(0x5F9C0A0A);
  33. setCloseBgImageZ(iconsDat.load(0, new Text("close.png")));
  34. setCloseClickAfColor(0xFF9C0A0A);
  35. setCloseClickAfStrength(10);
  36. optionsButton = initButton(0,
  37. 0,
  38. 20,
  39. 20,
  40. Framework::Button::Style::BImage | Framework::Button::Style::BAlpha
  41. | Framework::Button::Style::Background,
  42. "");
  43. optionsButton->setAlphaFieldColor(0x5F337AB7);
  44. optionsButton->setToolTipText(
  45. "Options", uiFactory.initParam.bildschirm, uiFactory.initParam.font);
  46. optionsButton->setBackgroundImageZ(
  47. iconsDat.load(0, new Text("options.png")));
  48. optionsButton->setMouseEvent([this](void* p, void* o, MouseEvent me) {
  49. if (me.id == ME_RLeft)
  50. {
  51. this->onOptionsOpen();
  52. }
  53. return 1;
  54. });
  55. }
  56. OptionsWindow::~OptionsWindow()
  57. {
  58. optionsButton->release();
  59. }
  60. void OptionsWindow::doMouseEvent(Framework::MouseEvent& me, bool userRet)
  61. {
  62. optionsButton->doPublicMouseEvent(me);
  63. Window::doMouseEvent(me, userRet);
  64. }
  65. bool OptionsWindow::tick(double time)
  66. {
  67. rend |= optionsButton->tick(time);
  68. return Window::tick(time);
  69. }
  70. void OptionsWindow::render(Framework::Image& rObj)
  71. {
  72. if (!hasStyle(Style::Visible)) return;
  73. int titleHeight = zTTextField()->getHeight();
  74. zTTextField()->setPosition(titleHeight, 0);
  75. int closingWidth = 0;
  76. if (hasStyle(Style::Closable)) closingWidth = titleHeight;
  77. zTTextField()->setWidth(getInnerWidth() - titleHeight - closingWidth);
  78. Window::render(rObj);
  79. optionsButton->setSize(titleHeight, titleHeight);
  80. int rbr = getBorderWidth();
  81. if (!rObj.setDrawOptions(
  82. pos.x + rbr, pos.y + rbr, gr.x - rbr * 2, titleHeight))
  83. {
  84. return;
  85. }
  86. optionsButton->render(rObj);
  87. rObj.releaseDrawOptions();
  88. }