horizontal-scroll-bar.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #if defined(Hiro_HorizontalScrollBar)
  2. namespace hiro {
  3. auto pHorizontalScrollBar::construct() -> void {
  4. qtWidget = qtHorizontalScrollBar = new QtHorizontalScrollBar(*this);
  5. qtHorizontalScrollBar->setRange(0, 100);
  6. qtHorizontalScrollBar->setPageStep(101 >> 3);
  7. qtHorizontalScrollBar->connect(qtHorizontalScrollBar, SIGNAL(valueChanged(int)), SLOT(onChange()));
  8. pWidget::construct();
  9. _setState();
  10. }
  11. auto pHorizontalScrollBar::destruct() -> void {
  12. delete qtHorizontalScrollBar;
  13. qtWidget = qtHorizontalScrollBar = nullptr;
  14. }
  15. auto pHorizontalScrollBar::minimumSize() const -> Size {
  16. return {0, 15};
  17. }
  18. auto pHorizontalScrollBar::setLength(unsigned length) -> void {
  19. _setState();
  20. }
  21. auto pHorizontalScrollBar::setPosition(unsigned position) -> void {
  22. _setState();
  23. }
  24. auto pHorizontalScrollBar::_setState() -> void {
  25. signed length = state().length + (state().length == 0);
  26. qtHorizontalScrollBar->setRange(0, length - 1);
  27. qtHorizontalScrollBar->setPageStep(length >> 3);
  28. qtHorizontalScrollBar->setValue(state().position);
  29. }
  30. auto QtHorizontalScrollBar::onChange() -> void {
  31. p.state().position = value();
  32. p.self().doChange();
  33. }
  34. }
  35. #endif