follow_slide_wrap.h 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // This file is part of Desktop App Toolkit,
  2. // a set of libraries for developing nice desktop applications.
  3. //
  4. // For license and copyright information please follow this link:
  5. // https://github.com/desktop-app/legal/blob/master/LEGAL
  6. //
  7. #pragma once
  8. #include "ui/effects/animations.h"
  9. #include "ui/wrap/wrap.h"
  10. namespace Ui {
  11. template <typename Widget = RpWidget>
  12. class FollowSlideWrap;
  13. template <>
  14. class FollowSlideWrap<RpWidget> : public Wrap<RpWidget> {
  15. using Parent = Wrap<RpWidget>;
  16. public:
  17. FollowSlideWrap(
  18. QWidget *parent,
  19. object_ptr<RpWidget> &&child);
  20. FollowSlideWrap *setDuration(crl::time duration);
  21. int naturalWidth() const override;
  22. protected:
  23. void wrappedSizeUpdated(QSize size) override;
  24. private:
  25. void updateWrappedPosition(int forHeight);
  26. Animations::Simple _animation;
  27. crl::time _duration = 0;
  28. };
  29. template <typename Widget>
  30. class FollowSlideWrap : public Wrap<Widget, FollowSlideWrap<RpWidget>> {
  31. using Parent = Wrap<Widget, FollowSlideWrap<RpWidget>>;
  32. public:
  33. FollowSlideWrap(
  34. QWidget *parent,
  35. object_ptr<Widget> &&child)
  36. : Parent(parent, std::move(child)) {
  37. }
  38. };
  39. } // namespace Ui