From c99ac0a264105c17ed286e2cd9bcbfe8358c125f Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Sat, 7 Jan 2023 08:15:27 +0300 Subject: [PATCH] Moved creation of divider with text and lottie to single place. --- .../settings_cloud_password_manage.cpp | 50 +++---------------- .../SourceFiles/settings/settings_common.cpp | 41 +++++++++++++++ .../SourceFiles/settings/settings_common.h | 5 ++ 3 files changed, 52 insertions(+), 44 deletions(-) diff --git a/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_manage.cpp b/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_manage.cpp index 019ed3e37..7295604d2 100644 --- a/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_manage.cpp +++ b/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_manage.cpp @@ -43,49 +43,6 @@ From RecreateResetHint: namespace Settings { namespace CloudPassword { -namespace { - -void SetupTopContent( - not_null parent, - rpl::producer<> showFinished) { - const auto divider = Ui::CreateChild(parent.get()); - const auto verticalLayout = parent->add( - object_ptr(parent.get())); - - auto icon = CreateLottieIcon( - verticalLayout, - { - .name = u"cloud_password/intro"_q, - .sizeOverride = { - st::settingsFilterIconSize, - st::settingsFilterIconSize, - }, - }, - st::settingsFilterIconPadding); - std::move( - showFinished - ) | rpl::start_with_next([animate = std::move(icon.animate)] { - animate(anim::repeat::once); - }, verticalLayout->lifetime()); - verticalLayout->add(std::move(icon.widget)); - - verticalLayout->add( - object_ptr>( - verticalLayout, - object_ptr( - verticalLayout, - tr::lng_settings_cloud_password_manage_about1(), - st::settingsFilterDividerLabel)), - st::settingsFilterDividerLabelPadding); - - verticalLayout->geometryValue( - ) | rpl::start_with_next([=](const QRect &r) { - divider->setGeometry(r); - }, divider->lifetime()); - -} - -} // namespace class Manage : public TypedAbstractStep { public: @@ -164,7 +121,12 @@ void Manage::setupContent() { showOther(type); }; - SetupTopContent(content, showFinishes()); + AddDividerTextWithLottie( + content, + showFinishes(), + tr::lng_settings_cloud_password_manage_about1( + TextWithEntities::Simple), + u"cloud_password/intro"_q); AddSkip(content); AddButton( diff --git a/Telegram/SourceFiles/settings/settings_common.cpp b/Telegram/SourceFiles/settings/settings_common.cpp index 37cc9f7f6..d905e90f1 100644 --- a/Telegram/SourceFiles/settings/settings_common.cpp +++ b/Telegram/SourceFiles/settings/settings_common.cpp @@ -265,6 +265,47 @@ not_null AddSubsectionTitle( st::settingsSubsectionTitlePadding + addPadding); } +void AddDividerTextWithLottie( + not_null parent, + rpl::producer<> showFinished, + rpl::producer text, + const QString &lottie) { + const auto divider = Ui::CreateChild(parent.get()); + const auto verticalLayout = parent->add( + object_ptr(parent.get())); + + auto icon = CreateLottieIcon( + verticalLayout, + { + .name = lottie, + .sizeOverride = { + st::settingsFilterIconSize, + st::settingsFilterIconSize, + }, + }, + st::settingsFilterIconPadding); + std::move( + showFinished + ) | rpl::start_with_next([animate = std::move(icon.animate)] { + animate(anim::repeat::once); + }, verticalLayout->lifetime()); + verticalLayout->add(std::move(icon.widget)); + + verticalLayout->add( + object_ptr>( + verticalLayout, + object_ptr( + verticalLayout, + std::move(text), + st::settingsFilterDividerLabel)), + st::settingsFilterDividerLabelPadding); + + verticalLayout->geometryValue( + ) | rpl::start_with_next([=](const QRect &r) { + divider->setGeometry(r); + }, divider->lifetime()); +} + LottieIcon CreateLottieIcon( not_null parent, Lottie::IconDescriptor &&descriptor, diff --git a/Telegram/SourceFiles/settings/settings_common.h b/Telegram/SourceFiles/settings/settings_common.h index cf5b6fda2..48158a70b 100644 --- a/Telegram/SourceFiles/settings/settings_common.h +++ b/Telegram/SourceFiles/settings/settings_common.h @@ -207,6 +207,11 @@ not_null AddSubsectionTitle( rpl::producer text, style::margins addPadding = {}, const style::FlatLabel *st = nullptr); +void AddDividerTextWithLottie( + not_null parent, + rpl::producer<> showFinished, + rpl::producer text, + const QString &lottie); struct LottieIcon { object_ptr widget;