mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-18 23:27:09 +02:00
Added support for MTP order of entries in premium settings.
This commit is contained in:
parent
2a4faf22f6
commit
1eccb34f86
2 changed files with 140 additions and 45 deletions
|
@ -1664,26 +1664,26 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
|
||||
"lng_premium_summary_title" = "Telegram Premium";
|
||||
"lng_premium_summary_top_about" = "Go **beyond the limits**, get **exclusive features** and support us by subscribing to **Telegram Premium**.";
|
||||
"lng_premium_summary_subtitle1" = "Doubled Limits";
|
||||
"lng_premium_summary_about1" = "Up to 1000 channels, 20 folders, 10 pins, 20 public links, 4 accounts and more.";
|
||||
"lng_premium_summary_subtitle2" = "4Gb Upload Size";
|
||||
"lng_premium_summary_about2" = "Increased upload size from 2Gb to 4Gb to per document, unlimited storage overall.";
|
||||
"lng_premium_summary_subtitle3" = "Faster Download Speed";
|
||||
"lng_premium_summary_about3" = "No more limits on the speed with which media and documents are downloaded.";
|
||||
"lng_premium_summary_subtitle4" = "Voice-to-Text Conversion";
|
||||
"lng_premium_summary_about4" = "Ability to read the transcript of any incoming voice message.";
|
||||
"lng_premium_summary_subtitle5" = "No Ads";
|
||||
"lng_premium_summary_about5" = "No more ads in public channels where Telegram sometimes shows ads.";
|
||||
"lng_premium_summary_subtitle6" = "Unique Reactions";
|
||||
"lng_premium_summary_about6" = "Additional animated reactions on messages available only to the Premium subscribers.";
|
||||
"lng_premium_summary_subtitle7" = "Premium Stickers";
|
||||
"lng_premium_summary_about7" = "Exclusive enlarged stickers featuring additional effects, updated monthly.";
|
||||
"lng_premium_summary_subtitle8" = "Advanced Chat Management";
|
||||
"lng_premium_summary_about8" = "Tools to set default folder, auto-archive and hide new chats from non-contacts.";
|
||||
"lng_premium_summary_subtitle9" = "Profile Badge";
|
||||
"lng_premium_summary_about9" = "A badge next to your name showing that you are helping support Telegram.";
|
||||
"lng_premium_summary_subtitle10" = "Animated Profile Pictures";
|
||||
"lng_premium_summary_about10" = "Video avatars animated in chat lists and chats to allow for additional self-expression.";
|
||||
"lng_premium_summary_subtitle_double_limits" = "Doubled Limits";
|
||||
"lng_premium_summary_about_double_limits" = "Up to 1000 channels, 20 folders, 10 pins, 20 public links, 4 accounts and more.";
|
||||
"lng_premium_summary_subtitle_more_upload" = "4Gb Upload Size";
|
||||
"lng_premium_summary_about_more_upload" = "Increased upload size from 2Gb to 4Gb to per document, unlimited storage overall.";
|
||||
"lng_premium_summary_subtitle_faster_download" = "Faster Download Speed";
|
||||
"lng_premium_summary_about_faster_download" = "No more limits on the speed with which media and documents are downloaded.";
|
||||
"lng_premium_summary_subtitle_voice_to_text" = "Voice-to-Text Conversion";
|
||||
"lng_premium_summary_about_voice_to_text" = "Ability to read the transcript of any incoming voice message.";
|
||||
"lng_premium_summary_subtitle_no_ads" = "No Ads";
|
||||
"lng_premium_summary_about_no_ads" = "No more ads in public channels where Telegram sometimes shows ads.";
|
||||
"lng_premium_summary_subtitle_unique_reactions" = "Unique Reactions";
|
||||
"lng_premium_summary_about_unique_reactions" = "Additional animated reactions on messages available only to the Premium subscribers.";
|
||||
"lng_premium_summary_subtitle_premium_stickers" = "Premium Stickers";
|
||||
"lng_premium_summary_about_premium_stickers" = "Exclusive enlarged stickers featuring additional effects, updated monthly.";
|
||||
"lng_premium_summary_subtitle_advanced_chat_management" = "Advanced Chat Management";
|
||||
"lng_premium_summary_about_advanced_chat_management" = "Tools to set default folder, auto-archive and hide new chats from non-contacts.";
|
||||
"lng_premium_summary_subtitle_profile_badge" = "Profile Badge";
|
||||
"lng_premium_summary_about_profile_badge" = "A badge next to your name showing that you are helping support Telegram.";
|
||||
"lng_premium_summary_subtitle_animated_userpics" = "Animated Profile Pictures";
|
||||
"lng_premium_summary_about_animated_userpics" = "Video avatars animated in chat lists and chats to allow for additional self-expression.";
|
||||
"lng_premium_summary_bottom_subtitle" = "About Telegram Premium";
|
||||
"lng_premium_summary_bottom_about" = "While the free version of Telegram already gives its users more than any other messaging application, **Telegram Premium** pushes its capabilities even further.\n\n**Telegram Premium** is a paid option, because most Premium Features require additional expenses from Telegram to third parties such as data center providers and server manufacturers. Contributions from **Telegram Premium** users allow us to cover such costs and also help Telegram stay free for everyone.";
|
||||
"lng_premium_summary_button" = "Subscribe for {cost} per month.";
|
||||
|
|
|
@ -47,6 +47,97 @@ using SectionCustomTopBarData = Info::Settings::SectionCustomTopBarData;
|
|||
constexpr auto kBodyAnimationPart = 0.90;
|
||||
constexpr auto kTitleAnimationPart = 0.15;
|
||||
|
||||
struct Entry {
|
||||
const style::icon *icon;
|
||||
rpl::producer<QString> title;
|
||||
rpl::producer<QString> description;
|
||||
};
|
||||
|
||||
[[nodiscard]] base::flat_map<QString, Entry> EntryMap() {
|
||||
return base::flat_map<QString, Entry>{
|
||||
{
|
||||
QString("double_limits"),
|
||||
Entry{
|
||||
&st::settingsPremiumIconDouble,
|
||||
tr::lng_premium_summary_subtitle_double_limits(),
|
||||
tr::lng_premium_summary_about_double_limits(),
|
||||
},
|
||||
},
|
||||
{
|
||||
QString("more_upload"),
|
||||
Entry{
|
||||
&st::settingsPremiumIconFiles,
|
||||
tr::lng_premium_summary_subtitle_more_upload(),
|
||||
tr::lng_premium_summary_about_more_upload(),
|
||||
},
|
||||
},
|
||||
{
|
||||
QString("faster_download"),
|
||||
Entry{
|
||||
&st::settingsPremiumIconSpeed,
|
||||
tr::lng_premium_summary_subtitle_faster_download(),
|
||||
tr::lng_premium_summary_about_faster_download(),
|
||||
},
|
||||
},
|
||||
{
|
||||
QString("voice_to_text"),
|
||||
Entry{
|
||||
&st::settingsPremiumIconVoice,
|
||||
tr::lng_premium_summary_subtitle_voice_to_text(),
|
||||
tr::lng_premium_summary_about_voice_to_text(),
|
||||
},
|
||||
},
|
||||
{
|
||||
QString("no_ads"),
|
||||
Entry{
|
||||
&st::settingsPremiumIconChannelsOff,
|
||||
tr::lng_premium_summary_subtitle_no_ads(),
|
||||
tr::lng_premium_summary_about_no_ads(),
|
||||
},
|
||||
},
|
||||
{
|
||||
QString("unique_reactions"),
|
||||
Entry{
|
||||
&st::settingsPremiumIconLike,
|
||||
tr::lng_premium_summary_subtitle_unique_reactions(),
|
||||
tr::lng_premium_summary_about_unique_reactions(),
|
||||
},
|
||||
},
|
||||
{
|
||||
QString("premium_stickers"),
|
||||
Entry{
|
||||
&st::settingsIconStickers,
|
||||
tr::lng_premium_summary_subtitle_premium_stickers(),
|
||||
tr::lng_premium_summary_about_premium_stickers(),
|
||||
},
|
||||
},
|
||||
{
|
||||
QString("advanced_chat_management"),
|
||||
Entry{
|
||||
&st::settingsIconChat,
|
||||
tr::lng_premium_summary_subtitle_advanced_chat_management(),
|
||||
tr::lng_premium_summary_about_advanced_chat_management(),
|
||||
},
|
||||
},
|
||||
{
|
||||
QString("profile_badge"),
|
||||
Entry{
|
||||
&st::settingsPremiumIconStar,
|
||||
tr::lng_premium_summary_subtitle_profile_badge(),
|
||||
tr::lng_premium_summary_about_profile_badge(),
|
||||
},
|
||||
},
|
||||
{
|
||||
QString("animated_userpics"),
|
||||
Entry{
|
||||
&st::settingsPremiumIconPlay,
|
||||
tr::lng_premium_summary_subtitle_animated_userpics(),
|
||||
tr::lng_premium_summary_about_animated_userpics(),
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
class TopBar final : public Ui::RpWidget {
|
||||
public:
|
||||
TopBar(not_null<QWidget*> parent);
|
||||
|
@ -240,21 +331,9 @@ void Premium::setupContent() {
|
|||
const auto &stLabel = st::defaultFlatLabel;
|
||||
const auto iconSize = st::settingsPremiumIconDouble.size();
|
||||
|
||||
const auto icons = std::array<const style::icon *, 10>{ {
|
||||
&st::settingsPremiumIconDouble,
|
||||
&st::settingsPremiumIconFiles,
|
||||
&st::settingsPremiumIconSpeed,
|
||||
&st::settingsPremiumIconVoice,
|
||||
&st::settingsPremiumIconChannelsOff,
|
||||
&st::settingsPremiumIconLike,
|
||||
&st::settingsIconStickers,
|
||||
&st::settingsIconChat,
|
||||
&st::settingsPremiumIconStar,
|
||||
&st::settingsPremiumIconPlay,
|
||||
} };
|
||||
|
||||
auto entryMap = EntryMap();
|
||||
auto iconContainers = std::vector<Ui::AbstractButton*>();
|
||||
iconContainers.reserve(int(icons.size()));
|
||||
iconContainers.reserve(int(entryMap.size()));
|
||||
|
||||
auto titlePadding = st.padding;
|
||||
titlePadding.setBottom(0);
|
||||
|
@ -295,17 +374,33 @@ void Premium::setupContent() {
|
|||
iconContainers.push_back(dummy);
|
||||
};
|
||||
|
||||
using namespace tr;
|
||||
addRow(lng_premium_summary_subtitle1(), lng_premium_summary_about1());
|
||||
addRow(lng_premium_summary_subtitle2(), lng_premium_summary_about2());
|
||||
addRow(lng_premium_summary_subtitle3(), lng_premium_summary_about3());
|
||||
addRow(lng_premium_summary_subtitle4(), lng_premium_summary_about4());
|
||||
addRow(lng_premium_summary_subtitle5(), lng_premium_summary_about5());
|
||||
addRow(lng_premium_summary_subtitle6(), lng_premium_summary_about6());
|
||||
addRow(lng_premium_summary_subtitle7(), lng_premium_summary_about7());
|
||||
addRow(lng_premium_summary_subtitle8(), lng_premium_summary_about8());
|
||||
addRow(lng_premium_summary_subtitle9(), lng_premium_summary_about9());
|
||||
addRow(lng_premium_summary_subtitle10(), lng_premium_summary_about10());
|
||||
auto icons = std::vector<const style::icon *>();
|
||||
icons.reserve(int(entryMap.size()));
|
||||
{
|
||||
using Order = std::vector<QString>;
|
||||
const auto &account = _controller->session().account();
|
||||
const auto mtpOrder = account.appConfig().get<Order>(
|
||||
"premium_promo_order",
|
||||
Order());
|
||||
const auto processEntry = [&](Entry &entry) {
|
||||
icons.push_back(entry.icon);
|
||||
addRow(base::take(entry.title), base::take(entry.description));
|
||||
};
|
||||
|
||||
if (!mtpOrder.empty()) {
|
||||
for (const auto &key : mtpOrder) {
|
||||
auto it = entryMap.find(key);
|
||||
if (it == end(entryMap)) {
|
||||
continue;
|
||||
}
|
||||
processEntry(it->second);
|
||||
}
|
||||
} else {
|
||||
for (auto &entry : ranges::views::values(entryMap)) {
|
||||
processEntry(entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
content->resizeToWidth(content->height());
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue