diff --git a/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_common.cpp b/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_common.cpp index 7fba2db1e..f6b572e84 100644 --- a/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_common.cpp +++ b/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_common.cpp @@ -166,6 +166,26 @@ not_null*> AddWrappedField( text))); } +not_null AddLinkButton( + not_null*> wrap, + rpl::producer &&text) { + const auto button = Ui::CreateChild( + wrap->parentWidget(), + QString()); + std::move( + text + ) | rpl::start_with_next([=](const QString &text) { + button->setText(text); + }, button->lifetime()); + + wrap->geometryValue( + ) | rpl::start_with_next([=](QRect r) { + r.translate(wrap->entity()->pos().x(), 0); + button->moveToLeft(r.x(), r.y() + r.height() + st::passcodeTextLine); + }, button->lifetime()); + return button; +} + not_null AddError( not_null content, Ui::PasswordInput *input) { diff --git a/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_common.h b/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_common.h index d8de83d29..6d742fa43 100644 --- a/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_common.h +++ b/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_common.h @@ -15,6 +15,7 @@ template class CenterWrap; class FlatLabel; class InputField; +class LinkButton; class PasswordInput; class RoundButton; class VerticalLayout; @@ -60,6 +61,10 @@ void SetupHeader( not_null content, rpl::producer &&text); +[[nodiscard]] not_null AddLinkButton( + not_null*> wrap, + rpl::producer &&text); + void AddSkipInsteadOfField(not_null content); void AddSkipInsteadOfError(not_null content); diff --git a/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_email.cpp b/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_email.cpp index 6bdbeaf8a..a19c5dade 100644 --- a/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_email.cpp +++ b/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_email.cpp @@ -132,14 +132,9 @@ void Email::setupContent() { })); }; - const auto skip = Ui::CreateChild( - this, - tr::lng_cloud_password_skip_email(tr::now)); - wrap->geometryValue( - ) | rpl::start_with_next([=](QRect r) { - r.translate(wrap->entity()->pos().x(), 0); - skip->moveToLeft(r.x(), r.y() + r.height() + st::passcodeTextLine); - }, skip->lifetime()); + const auto skip = AddLinkButton( + wrap, + tr::lng_cloud_password_skip_email()); skip->setClickedCallback([=] { confirm(QString()); }); diff --git a/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_email_confirm.cpp b/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_email_confirm.cpp index 6aab3a73c..22219bab7 100644 --- a/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_email_confirm.cpp +++ b/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_email_confirm.cpp @@ -96,14 +96,15 @@ void EmailConfirm::setupContent() { AddSkip(content, st::settingLocalPasscodeDescriptionBottomSkip); + auto objectInput = object_ptr( + content, + st::settingLocalPasscodeInputField, + tr::lng_change_phone_code_title()); + const auto newInput = objectInput.data(); const auto wrap = content->add( - object_ptr>( + object_ptr>( content, - object_ptr( - content, - st::settingLocalPasscodeInputField, - tr::lng_change_phone_code_title()))); - const auto newInput = wrap->entity(); + std::move(objectInput))); const auto error = AddError(content, nullptr); QObject::connect(newInput, &Ui::InputField::changed, [=] { @@ -127,14 +128,7 @@ void EmailConfirm::setupContent() { } }, resendInfo->lifetime()); - const auto resend = Ui::CreateChild( - this, - tr::lng_cloud_password_resend(tr::now)); - wrap->geometryValue( - ) | rpl::start_with_next([=](QRect r) { - r.translate(wrap->entity()->pos().x(), 0); - resend->moveToLeft(r.x(), r.y() + r.height() + st::passcodeTextLine); - }, resend->lifetime()); + const auto resend = AddLinkButton(wrap, tr::lng_cloud_password_resend()); resend->setClickedCallback([=] { if (_requestLifetime) { return; diff --git a/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_hint.cpp b/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_hint.cpp index b847268a0..fe72f4295 100644 --- a/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_hint.cpp +++ b/Telegram/SourceFiles/settings/cloud_password/settings_cloud_password_hint.cpp @@ -67,15 +67,10 @@ void Hint::setupContent() { showOther(CloudPasswordEmailId()); }; - const auto skip = Ui::CreateChild( - this, - tr::lng_settings_cloud_password_skip_hint(tr::now)); - wrap->geometryValue( - ) | rpl::start_with_next([=](QRect r) { - r.translate(wrap->entity()->pos().x(), 0); - skip->moveToLeft(r.x(), r.y() + r.height() + st::passcodeTextLine); - }, skip->lifetime()); - skip->setClickedCallback([=] { + AddLinkButton( + wrap, + tr::lng_settings_cloud_password_skip_hint() + )->setClickedCallback([=] { save(QString()); });