Provided Info::Wrap info to premium settings.

This commit is contained in:
23rd 2022-05-23 02:49:33 +03:00
parent c310b263a6
commit 4e173c8e61
3 changed files with 36 additions and 12 deletions

View file

@ -62,6 +62,7 @@ Widget::Widget(
controller->stepDataReference() = SectionCustomTopBarData{ controller->stepDataReference() = SectionCustomTopBarData{
.backButtonEnables = _flexibleScroll.backButtonEnables.events(), .backButtonEnables = _flexibleScroll.backButtonEnables.events(),
.wrapValue = controller->wrapValue(),
}; };
// ScrollArea -> PaddingWrap -> RpWidget. // ScrollArea -> PaddingWrap -> RpWidget.

View file

@ -23,6 +23,7 @@ struct Tag;
struct SectionCustomTopBarData { struct SectionCustomTopBarData {
rpl::producer<> backButtonEnables; rpl::producer<> backButtonEnables;
rpl::producer<Info::Wrap> wrapValue;
}; };
class Memento final : public ContentMemento { class Memento final : public ContentMemento {

View file

@ -8,11 +8,12 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "settings/settings_premium.h" #include "settings/settings_premium.h"
#include "core/application.h" #include "core/application.h"
#include "info/info_wrap_widget.h" // Info::Wrap.
#include "info/settings/info_settings_widget.h" // SectionCustomTopBarData. #include "info/settings/info_settings_widget.h" // SectionCustomTopBarData.
#include "lang/lang_keys.h" #include "lang/lang_keys.h"
#include "main/main_session.h"
#include "settings/settings_common.h" #include "settings/settings_common.h"
#include "settings/settings_premium.h" #include "settings/settings_premium.h"
#include "core/application.h"
#include "ui/abstract_button.h" #include "ui/abstract_button.h"
#include "ui/basic_click_handlers.h" #include "ui/basic_click_handlers.h"
#include "ui/effects/gradient.h" #include "ui/effects/gradient.h"
@ -22,12 +23,13 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/widgets/labels.h" #include "ui/widgets/labels.h"
#include "ui/wrap/fade_wrap.h" #include "ui/wrap/fade_wrap.h"
#include "ui/wrap/padding_wrap.h" #include "ui/wrap/padding_wrap.h"
#include "ui/wrap/slide_wrap.h"
#include "ui/wrap/vertical_layout.h" #include "ui/wrap/vertical_layout.h"
#include "window/window_session_controller.h"
#include "window/window_controller.h" #include "window/window_controller.h"
#include "main/main_session.h" #include "main/main_session.h"
#include "main/main_account.h" #include "main/main_account.h"
#include "main/main_app_config.h" #include "main/main_app_config.h"
#include "window/window_session_controller.h"
#include "styles/style_boxes.h" #include "styles/style_boxes.h"
#include "styles/style_chat_helpers.h" #include "styles/style_chat_helpers.h"
#include "styles/style_info.h" #include "styles/style_info.h"
@ -64,7 +66,9 @@ private:
const not_null<Window::SessionController*> _controller; const not_null<Window::SessionController*> _controller;
base::unique_qptr<Ui::FadeWrap<Ui::IconButton>> _back;
rpl::variable<bool> _backToggles; rpl::variable<bool> _backToggles;
rpl::variable<Info::Wrap> _wrap;
rpl::event_stream<> _showBack; rpl::event_stream<> _showBack;
@ -96,6 +100,7 @@ void Premium::setStepDataReference(std::any &data) {
_backToggles = std::move( _backToggles = std::move(
my->backButtonEnables my->backButtonEnables
) | rpl::map_to(true); ) | rpl::map_to(true);
_wrap = std::move(my->wrapValue);
} }
} }
@ -297,15 +302,22 @@ QPointer<Ui::RpWidget> Premium::createPinnedToTop(
container->setMaximumHeight(st::introQrStepsTop); container->setMaximumHeight(st::introQrStepsTop);
container->setMinimumHeight(st::infoLayerTopBarHeight); container->setMinimumHeight(st::infoLayerTopBarHeight);
const auto back = Ui::CreateChild<Ui::FadeWrap<Ui::IconButton>>( _wrap.value(
content, ) | rpl::start_with_next([=](Info::Wrap wrap) {
object_ptr<Ui::IconButton>(content, st::settingsPremiumTopBarBack), _back = base::make_unique_q<Ui::FadeWrap<Ui::IconButton>>(
st::infoTopBarScale); content,
back->setDuration(0); object_ptr<Ui::IconButton>(
back->toggleOn(_backToggles.value()); content,
back->entity()->addClickHandler([=] { (wrap == Info::Wrap::Layer)
_showBack.fire({}); ? st::settingsPremiumLayerTopBarBack
}); : st::settingsPremiumTopBarBack),
st::infoTopBarScale);
_back->setDuration(0);
_back->toggleOn(_backToggles.value());
_back->entity()->addClickHandler([=] {
_showBack.fire({});
});
}, container->lifetime());
return Ui::MakeWeak(not_null<Ui::RpWidget*>{ container }); return Ui::MakeWeak(not_null<Ui::RpWidget*>{ container });
} }
@ -340,7 +352,17 @@ QPointer<Ui::RpWidget> Premium::createPinnedToBottom(
st::premiumPreviewBox.button.textTop, st::premiumPreviewBox.button.textTop,
outer); outer);
}, label->lifetime()); }, label->lifetime());
content->add(std::move(result), st::settingsPremiumButtonPadding); auto padding = st::settingsPremiumButtonPadding;
const auto paddingBottom = padding.bottom();
padding.setBottom(paddingBottom - st::boxRadius);
content->add(std::move(result), padding);
content->add(
object_ptr<Ui::SlideWrap<Ui::FixedHeightWidget>>(
content,
object_ptr<Ui::FixedHeightWidget>(content, st::boxRadius))
)->setDuration(0)->toggleOn(_wrap.value(
) | rpl::map(rpl::mappers::_1 != Info::Wrap::Layer));
return Ui::MakeWeak(not_null<Ui::RpWidget*>{ content }); return Ui::MakeWeak(not_null<Ui::RpWidget*>{ content });
} }