diff --git a/Telegram/SourceFiles/info/bot/earn/info_earn_inner_widget.cpp b/Telegram/SourceFiles/info/bot/earn/info_earn_inner_widget.cpp index f2371bd22..0ef6a9748 100644 --- a/Telegram/SourceFiles/info/bot/earn/info_earn_inner_widget.cpp +++ b/Telegram/SourceFiles/info/bot/earn/info_earn_inner_widget.cpp @@ -36,7 +36,6 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/toast/toast.h" #include "ui/vertical_list.h" #include "ui/widgets/buttons.h" -#include "ui/widgets/fields/number_input.h" #include "ui/widgets/label_with_custom_emoji.h" #include "ui/widgets/labels.h" #include "ui/widgets/slider_natural_width.h" @@ -275,40 +274,9 @@ void InnerWidget::fill() { Ui::AddSkip(container); - const auto input = [&] { - const auto &st = st::botEarnInputField; - const auto inputContainer = container->add( - Ui::CreateSkipWidget(container, st.heightMin)); - const auto currentValue = rpl::variable( - rpl::duplicate(availableBalanceValue)); - const auto input = Ui::CreateChild( - inputContainer, - st, - tr::lng_bot_earn_out_ph(), - QString::number(currentValue.current()), - currentValue.current()); - rpl::duplicate( - availableBalanceValue - ) | rpl::start_with_next([=](uint64 v) { - input->changeLimit(v); - input->setText(QString::number(v)); - }, input->lifetime()); - const auto icon = Ui::CreateSingleStarWidget( - inputContainer, - st.style.font->height); - inputContainer->sizeValue( - ) | rpl::start_with_next([=](const QSize &size) { - input->resize( - size.width() - rect::m::sum::h(st::boxRowPadding), - st.heightMin); - input->moveToLeft(st::boxRowPadding.left(), 0); - icon->moveToLeft( - st::boxRowPadding.left(), - st.textMargins.top()); - }, input->lifetime()); - Ui::ToggleChildrenVisibility(inputContainer, true); - return input; - }(); + const auto input = Ui::AddInputFieldForCredits( + container, + rpl::duplicate(availableBalanceValue)); Ui::AddSkip(container); Ui::AddSkip(container); diff --git a/Telegram/SourceFiles/ui/effects/credits_graphics.cpp b/Telegram/SourceFiles/ui/effects/credits_graphics.cpp index 23b7503ea..60af867b1 100644 --- a/Telegram/SourceFiles/ui/effects/credits_graphics.cpp +++ b/Telegram/SourceFiles/ui/effects/credits_graphics.cpp @@ -21,10 +21,16 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/empty_userpic.h" #include "ui/painter.h" #include "ui/rect.h" +#include "ui/widgets/fields/number_input.h" +#include "ui/wrap/padding_wrap.h" +#include "ui/wrap/vertical_layout.h" +#include "styles/style_channel_earn.h" #include "styles/style_credits.h" -#include "styles/style_intro.h" // introFragmentIcon. -#include "styles/style_settings.h" #include "styles/style_dialogs.h" +#include "styles/style_intro.h" // introFragmentIcon. +#include "styles/style_layers.h" +#include "styles/style_settings.h" +#include "styles/style_widgets.h" #include @@ -105,6 +111,43 @@ not_null CreateSingleStarWidget( return widget; } +not_null AddInputFieldForCredits( + not_null container, + rpl::producer value) { + const auto &st = st::botEarnInputField; + const auto inputContainer = container->add( + CreateSkipWidget(container, st.heightMin)); + const auto currentValue = rpl::variable( + rpl::duplicate(value)); + const auto input = Ui::CreateChild( + inputContainer, + st, + tr::lng_bot_earn_out_ph(), + QString::number(currentValue.current()), + currentValue.current()); + rpl::duplicate( + value + ) | rpl::start_with_next([=](uint64 v) { + input->changeLimit(v); + input->setText(QString::number(v)); + }, input->lifetime()); + const auto icon = CreateSingleStarWidget( + inputContainer, + st.style.font->height); + inputContainer->sizeValue( + ) | rpl::start_with_next([=](const QSize &size) { + input->resize( + size.width() - rect::m::sum::h(st::boxRowPadding), + st.heightMin); + input->moveToLeft(st::boxRowPadding.left(), 0); + icon->moveToLeft( + st::boxRowPadding.left(), + st.textMargins.top()); + }, input->lifetime()); + Ui::ToggleChildrenVisibility(inputContainer, true); + return input; +} + PaintRoundImageCallback GenerateCreditsPaintUserpicCallback( const Data::CreditsHistoryEntry &entry) { const auto bg = [&]() -> Ui::EmptyUserpic::BgColors { diff --git a/Telegram/SourceFiles/ui/effects/credits_graphics.h b/Telegram/SourceFiles/ui/effects/credits_graphics.h index eacc9148b..343910adf 100644 --- a/Telegram/SourceFiles/ui/effects/credits_graphics.h +++ b/Telegram/SourceFiles/ui/effects/credits_graphics.h @@ -14,7 +14,9 @@ struct CreditsHistoryEntry; } // namespace Data namespace Ui { +class MaskedInputField; class RpWidget; +class VerticalLayout; } // namespace Ui namespace Ui { @@ -25,6 +27,10 @@ namespace Ui { not_null parent, int height); +[[nodiscard]] not_null AddInputFieldForCredits( + not_null container, + rpl::producer value); + Fn GenerateCreditsPaintUserpicCallback( const Data::CreditsHistoryEntry &entry);