Slightly improved margins in premium settings.

This commit is contained in:
23rd 2022-05-24 12:24:39 +03:00
parent c0664d2d81
commit 7037268a36
2 changed files with 32 additions and 25 deletions

View file

@ -421,7 +421,6 @@ notifyPreviewTextPosition: point(64px, 30px);
notifyPreviewChecksSkip: 12px; notifyPreviewChecksSkip: 12px;
notifyPreviewBottomSkip: 9px; notifyPreviewBottomSkip: 9px;
settingsPremiumDescriptionSkip: 3px;
settingsPremiumButtonPadding: margins(11px, 11px, 11px, 3px); settingsPremiumButtonPadding: margins(11px, 11px, 11px, 3px);
settingsPremiumTopBarBackIcon: icon {{ "info/info_back", premiumButtonFg }}; settingsPremiumTopBarBackIcon: icon {{ "info/info_back", premiumButtonFg }};
settingsPremiumTopBarBackIconOver: icon {{ "info/info_back", premiumButtonFg }}; settingsPremiumTopBarBackIconOver: icon {{ "info/info_back", premiumButtonFg }};
@ -448,4 +447,5 @@ settingsPremiumTopBarClose: IconButton(infoTopBarClose) {
color: shadowFg; color: shadowFg;
} }
} }
settingsPremiumLabelDescriptionRightSkip: 46px; settingsPremiumRowTitlePadding: margins(60px, 5px, 46px, 3px);
settingsPremiumRowAboutPadding: margins(60px, 0px, 46px, 6px);

View file

@ -55,6 +55,23 @@ struct Entry {
rpl::producer<QString> description; rpl::producer<QString> description;
}; };
using Order = std::vector<QString>;
[[nodiscard]] Order FallbackOrder() {
return Order{
QString("double_limits"),
QString("more_upload"),
QString("faster_download"),
QString("voice_to_text"),
QString("no_ads"),
QString("unique_reactions"),
QString("premium_stickers"),
QString("advanced_chat_management"),
QString("profile_badge"),
QString("animated_userpics"),
};
}
[[nodiscard]] base::flat_map<QString, Entry> EntryMap() { [[nodiscard]] base::flat_map<QString, Entry> EntryMap() {
return base::flat_map<QString, Entry>{ return base::flat_map<QString, Entry>{
{ {
@ -381,21 +398,18 @@ void Premium::setStepDataReference(std::any &data) {
void Premium::setupContent() { void Premium::setupContent() {
const auto content = Ui::CreateChild<Ui::VerticalLayout>(this); const auto content = Ui::CreateChild<Ui::VerticalLayout>(this);
const auto &st = st::settingsButton; const auto &stDefault = st::settingsButton;
const auto &stLabel = st::defaultFlatLabel; const auto &stLabel = st::defaultFlatLabel;
const auto iconSize = st::settingsPremiumIconDouble.size(); const auto iconSize = st::settingsPremiumIconDouble.size();
const auto &titlePadding = st::settingsPremiumRowTitlePadding;
const auto &descriptionPadding = st::settingsPremiumRowAboutPadding;
AddSkip(content, st.padding.top()); AddSkip(content, stDefault.padding.top() + titlePadding.top());
auto entryMap = EntryMap(); auto entryMap = EntryMap();
auto iconContainers = std::vector<Ui::AbstractButton*>(); auto iconContainers = std::vector<Ui::AbstractButton*>();
iconContainers.reserve(int(entryMap.size())); iconContainers.reserve(int(entryMap.size()));
auto titlePadding = st.padding;
titlePadding.setBottom(0);
auto descriptionPadding = st.padding;
descriptionPadding.setTop(0);
descriptionPadding.setRight(st::settingsPremiumLabelDescriptionRightSkip);
const auto addRow = [&]( const auto addRow = [&](
rpl::producer<QString> &&title, rpl::producer<QString> &&title,
rpl::producer<QString> &&text) { rpl::producer<QString> &&text) {
@ -407,7 +421,6 @@ void Premium::setupContent() {
std::move(title) | rpl::map(Ui::Text::Bold), std::move(title) | rpl::map(Ui::Text::Bold),
stLabel), stLabel),
titlePadding); titlePadding);
AddSkip(content, st::settingsPremiumDescriptionSkip);
content->add( content->add(
object_ptr<Ui::FlatLabel>( object_ptr<Ui::FlatLabel>(
content, content,
@ -434,28 +447,21 @@ void Premium::setupContent() {
auto icons = std::vector<const style::icon *>(); auto icons = std::vector<const style::icon *>();
icons.reserve(int(entryMap.size())); icons.reserve(int(entryMap.size()));
{ {
using Order = std::vector<QString>;
const auto &account = _controller->session().account(); const auto &account = _controller->session().account();
const auto mtpOrder = account.appConfig().get<Order>( const auto mtpOrder = account.appConfig().get<Order>(
"premium_promo_order", "premium_promo_order",
Order()); 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(base::take(entry.title), base::take(entry.description));
}; };
if (!mtpOrder.empty()) { for (const auto &key : mtpOrder) {
for (const auto &key : mtpOrder) { auto it = entryMap.find(key);
auto it = entryMap.find(key); if (it == end(entryMap)) {
if (it == end(entryMap)) { continue;
continue;
}
processEntry(it->second);
}
} else {
for (auto &entry : ranges::views::values(entryMap)) {
processEntry(entry);
} }
processEntry(it->second);
} }
SendScreenShow(_controller, mtpOrder, _ref); SendScreenShow(_controller, mtpOrder, _ref);
@ -494,10 +500,11 @@ void Premium::setupContent() {
const auto brush = QBrush(resultGradient); const auto brush = QBrush(resultGradient);
AddButtonIcon( AddButtonIcon(
iconContainer, iconContainer,
st, stDefault,
{ .icon = icons[i], .backgroundBrush = brush }); { .icon = icons[i], .backgroundBrush = brush });
} }
AddSkip(content, descriptionPadding.bottom());
AddSkip(content); AddSkip(content);
AddDivider(content); AddDivider(content);
AddSkip(content); AddSkip(content);
@ -515,7 +522,7 @@ void Premium::setupContent() {
tr::lng_premium_summary_bottom_about(Ui::Text::RichLangValue), tr::lng_premium_summary_bottom_about(Ui::Text::RichLangValue),
st::aboutLabel), st::aboutLabel),
st::boxRowPadding); st::boxRowPadding);
AddSkip(content, st.padding.top() + st.padding.bottom()); AddSkip(content, stDefault.padding.top() + stDefault.padding.bottom());
Ui::ResizeFitChild(this, content); Ui::ResizeFitChild(this, content);