Show premium previews from the settings.

This commit is contained in:
John Preston 2022-06-14 07:11:35 +04:00
parent 5f9eeb7cbe
commit c9292512c0
3 changed files with 21 additions and 8 deletions

View file

@ -64,6 +64,7 @@ struct Entry {
const style::icon *icon; const style::icon *icon;
rpl::producer<QString> title; rpl::producer<QString> title;
rpl::producer<QString> description; rpl::producer<QString> description;
std::optional<PremiumPreview> section;
}; };
using Order = std::vector<QString>; using Order = std::vector<QString>;
@ -99,6 +100,7 @@ using Order = std::vector<QString>;
&st::settingsPremiumIconFiles, &st::settingsPremiumIconFiles,
tr::lng_premium_summary_subtitle_more_upload(), tr::lng_premium_summary_subtitle_more_upload(),
tr::lng_premium_summary_about_more_upload(), tr::lng_premium_summary_about_more_upload(),
PremiumPreview::MoreUpload,
}, },
}, },
{ {
@ -107,6 +109,7 @@ using Order = std::vector<QString>;
&st::settingsPremiumIconSpeed, &st::settingsPremiumIconSpeed,
tr::lng_premium_summary_subtitle_faster_download(), tr::lng_premium_summary_subtitle_faster_download(),
tr::lng_premium_summary_about_faster_download(), tr::lng_premium_summary_about_faster_download(),
PremiumPreview::FasterDownload,
}, },
}, },
{ {
@ -115,6 +118,7 @@ using Order = std::vector<QString>;
&st::settingsPremiumIconVoice, &st::settingsPremiumIconVoice,
tr::lng_premium_summary_subtitle_voice_to_text(), tr::lng_premium_summary_subtitle_voice_to_text(),
tr::lng_premium_summary_about_voice_to_text(), tr::lng_premium_summary_about_voice_to_text(),
PremiumPreview::VoiceToText,
}, },
}, },
{ {
@ -123,6 +127,7 @@ using Order = std::vector<QString>;
&st::settingsPremiumIconChannelsOff, &st::settingsPremiumIconChannelsOff,
tr::lng_premium_summary_subtitle_no_ads(), tr::lng_premium_summary_subtitle_no_ads(),
tr::lng_premium_summary_about_no_ads(), tr::lng_premium_summary_about_no_ads(),
PremiumPreview::NoAds,
}, },
}, },
{ {
@ -131,6 +136,7 @@ using Order = std::vector<QString>;
&st::settingsPremiumIconLike, &st::settingsPremiumIconLike,
tr::lng_premium_summary_subtitle_unique_reactions(), tr::lng_premium_summary_subtitle_unique_reactions(),
tr::lng_premium_summary_about_unique_reactions(), tr::lng_premium_summary_about_unique_reactions(),
PremiumPreview::Reactions,
}, },
}, },
{ {
@ -139,6 +145,7 @@ using Order = std::vector<QString>;
&st::settingsIconStickers, &st::settingsIconStickers,
tr::lng_premium_summary_subtitle_premium_stickers(), tr::lng_premium_summary_subtitle_premium_stickers(),
tr::lng_premium_summary_about_premium_stickers(), tr::lng_premium_summary_about_premium_stickers(),
PremiumPreview::Stickers,
}, },
}, },
{ {
@ -147,6 +154,7 @@ using Order = std::vector<QString>;
&st::settingsIconChat, &st::settingsIconChat,
tr::lng_premium_summary_subtitle_advanced_chat_management(), tr::lng_premium_summary_subtitle_advanced_chat_management(),
tr::lng_premium_summary_about_advanced_chat_management(), tr::lng_premium_summary_about_advanced_chat_management(),
PremiumPreview::AdvancedChatManagement,
}, },
}, },
{ {
@ -155,6 +163,7 @@ using Order = std::vector<QString>;
&st::settingsPremiumIconStar, &st::settingsPremiumIconStar,
tr::lng_premium_summary_subtitle_profile_badge(), tr::lng_premium_summary_subtitle_profile_badge(),
tr::lng_premium_summary_about_profile_badge(), tr::lng_premium_summary_about_profile_badge(),
PremiumPreview::ProfileBadge,
}, },
}, },
{ {
@ -163,6 +172,7 @@ using Order = std::vector<QString>;
&st::settingsPremiumIconPlay, &st::settingsPremiumIconPlay,
tr::lng_premium_summary_subtitle_animated_userpics(), tr::lng_premium_summary_subtitle_animated_userpics(),
tr::lng_premium_summary_about_animated_userpics(), tr::lng_premium_summary_about_animated_userpics(),
PremiumPreview::AnimatedUserpics,
}, },
}, },
}; };
@ -710,9 +720,7 @@ void Premium::setupContent() {
auto iconContainers = std::vector<Ui::AbstractButton*>(); auto iconContainers = std::vector<Ui::AbstractButton*>();
iconContainers.reserve(int(entryMap.size())); iconContainers.reserve(int(entryMap.size()));
const auto addRow = [&]( const auto addRow = [&](Entry &entry) {
rpl::producer<QString> &&title,
rpl::producer<QString> &&text) {
const auto labelAscent = stLabel.style.font->ascent; const auto labelAscent = stLabel.style.font->ascent;
const auto button = Ui::CreateChild<Ui::SettingsButton>( const auto button = Ui::CreateChild<Ui::SettingsButton>(
content, content,
@ -721,14 +729,14 @@ void Premium::setupContent() {
const auto label = content->add( const auto label = content->add(
object_ptr<Ui::FlatLabel>( object_ptr<Ui::FlatLabel>(
content, content,
std::move(title) | rpl::map(Ui::Text::Bold), std::move(entry.title) | rpl::map(Ui::Text::Bold),
stLabel), stLabel),
titlePadding); titlePadding);
label->setAttribute(Qt::WA_TransparentForMouseEvents); label->setAttribute(Qt::WA_TransparentForMouseEvents);
const auto description = content->add( const auto description = content->add(
object_ptr<Ui::FlatLabel>( object_ptr<Ui::FlatLabel>(
content, content,
std::move(text), std::move(entry.description),
st::boxDividerLabel), st::boxDividerLabel),
descriptionPadding); descriptionPadding);
description->setAttribute(Qt::WA_TransparentForMouseEvents); description->setAttribute(Qt::WA_TransparentForMouseEvents);
@ -781,7 +789,12 @@ void Premium::setupContent() {
arrow->moveToRight(0, (s.height() - arrow->height()) / 2); arrow->moveToRight(0, (s.height() - arrow->height()) / 2);
}, arrow->lifetime()); }, arrow->lifetime());
const auto section = entry.section;
button->setClickedCallback([=, controller = _controller] { button->setClickedCallback([=, controller = _controller] {
if (section) {
ShowPremiumPreviewBox(controller, *section);
return;
}
controller->show(Box([=](not_null<Ui::GenericBox*> box) { controller->show(Box([=](not_null<Ui::GenericBox*> box) {
DoubledLimitsPreviewBox(box, &controller->session()); DoubledLimitsPreviewBox(box, &controller->session());
@ -820,7 +833,7 @@ void Premium::setupContent() {
FallbackOrder()); FallbackOrder());
const auto processEntry = [&](Entry &entry) { const auto processEntry = [&](Entry &entry) {
icons.push_back(entry.icon); icons.push_back(entry.icon);
addRow(base::take(entry.title), base::take(entry.description)); addRow(entry);
}; };
for (const auto &key : mtpOrder) { for (const auto &key : mtpOrder) {

@ -1 +1 @@
Subproject commit a12aa5216731b3d661c015b69d92c7b8ebb6c479 Subproject commit 7dd3cf86a3daa1ee8c1022930816cc8044d0ed5b

@ -1 +1 @@
Subproject commit ce35425670d01e51aa26849a20ae721c09b38cf9 Subproject commit 1679da738b2739820287fbf810981c91de48b73d