Moved out special input for credits to td_ui.

This commit is contained in:
23rd 2024-06-23 19:44:58 +03:00 committed by John Preston
parent a84ac933dd
commit 93aebc747d
3 changed files with 54 additions and 37 deletions

View file

@ -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<uint64>(
rpl::duplicate(availableBalanceValue));
const auto input = Ui::CreateChild<Ui::NumberInput>(
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);

View file

@ -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 <QtSvg/QSvgRenderer>
@ -105,6 +111,43 @@ not_null<Ui::RpWidget*> CreateSingleStarWidget(
return widget;
}
not_null<Ui::MaskedInputField*> AddInputFieldForCredits(
not_null<Ui::VerticalLayout*> container,
rpl::producer<uint64> value) {
const auto &st = st::botEarnInputField;
const auto inputContainer = container->add(
CreateSkipWidget(container, st.heightMin));
const auto currentValue = rpl::variable<uint64>(
rpl::duplicate(value));
const auto input = Ui::CreateChild<Ui::NumberInput>(
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 {

View file

@ -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<Ui::RpWidget*> parent,
int height);
[[nodiscard]] not_null<Ui::MaskedInputField*> AddInputFieldForCredits(
not_null<Ui::VerticalLayout*> container,
rpl::producer<uint64> value);
Fn<void(Painter &, int, int, int, int)> GenerateCreditsPaintUserpicCallback(
const Data::CreditsHistoryEntry &entry);