vertical_list.cpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. This file is part of Telegram Desktop,
  3. the official desktop application for the Telegram messaging service.
  4. For license and copyright information please follow this link:
  5. https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. */
  7. #include "ui/vertical_list.h"
  8. #include "ui/text/text_utilities.h"
  9. #include "ui/widgets/box_content_divider.h"
  10. #include "ui/widgets/labels.h"
  11. #include "ui/wrap/padding_wrap.h"
  12. #include "ui/wrap/vertical_layout.h"
  13. #include "styles/style_layers.h"
  14. namespace Ui {
  15. void AddSkip(not_null<Ui::VerticalLayout*> container) {
  16. AddSkip(container, st::defaultVerticalListSkip);
  17. }
  18. void AddSkip(not_null<Ui::VerticalLayout*> container, int skip) {
  19. container->add(object_ptr<Ui::FixedHeightWidget>(container, skip));
  20. }
  21. void AddDivider(not_null<Ui::VerticalLayout*> container) {
  22. container->add(object_ptr<Ui::BoxContentDivider>(container));
  23. }
  24. not_null<Ui::FlatLabel*> AddDividerText(
  25. not_null<Ui::VerticalLayout*> container,
  26. rpl::producer<QString> text,
  27. const style::margins &margins,
  28. RectParts parts) {
  29. return AddDividerText(
  30. container,
  31. std::move(text) | Ui::Text::ToWithEntities(),
  32. margins,
  33. parts);
  34. }
  35. not_null<Ui::FlatLabel*> AddDividerText(
  36. not_null<Ui::VerticalLayout*> container,
  37. rpl::producer<TextWithEntities> text,
  38. const style::margins &margins,
  39. RectParts parts) {
  40. auto label = object_ptr<Ui::FlatLabel>(
  41. container,
  42. std::move(text),
  43. st::boxDividerLabel);
  44. const auto result = label.data();
  45. container->add(object_ptr<Ui::DividerLabel>(
  46. container,
  47. std::move(label),
  48. margins,
  49. parts));
  50. return result;
  51. }
  52. not_null<Ui::FlatLabel*> AddSubsectionTitle(
  53. not_null<Ui::VerticalLayout*> container,
  54. rpl::producer<QString> text,
  55. style::margins addPadding,
  56. const style::FlatLabel *st) {
  57. return container->add(
  58. object_ptr<Ui::FlatLabel>(
  59. container,
  60. std::move(text),
  61. st ? *st : st::defaultSubsectionTitle),
  62. st::defaultSubsectionTitlePadding + addPadding);
  63. }
  64. } // namespace Ui