mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Replaced emoji with icon for currency in earn section.
This commit is contained in:
parent
5dd974f2ab
commit
8492b7144f
2 changed files with 88 additions and 20 deletions
|
@ -109,6 +109,9 @@ channelEarnLearnDescription: FlatLabel(defaultFlatLabel) {
|
||||||
align: align(top);
|
align: align(top);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
channelEarnCurrencyCommonMargins: margins(0px, 3px, 1px, 0px);
|
||||||
|
channelEarnCurrencyLearnMargins: margins(0px, 2px, 0px, 0px);
|
||||||
|
|
||||||
sponsoredAboutTitleIcon: icon {{ "sponsored/large_about", activeButtonFg }};
|
sponsoredAboutTitleIcon: icon {{ "sponsored/large_about", activeButtonFg }};
|
||||||
sponsoredAboutPrivacyIcon: icon {{ "sponsored/privacy_about", boxTextFg }};
|
sponsoredAboutPrivacyIcon: icon {{ "sponsored/privacy_about", boxTextFg }};
|
||||||
sponsoredAboutRemoveIcon: icon {{ "sponsored/remove_about", boxTextFg }};
|
sponsoredAboutRemoveIcon: icon {{ "sponsored/remove_about", boxTextFg }};
|
||||||
|
|
|
@ -48,6 +48,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "styles/style_statistics.h"
|
#include "styles/style_statistics.h"
|
||||||
#include "styles/style_window.h" // mainMenuToggleFourStrokes.
|
#include "styles/style_window.h" // mainMenuToggleFourStrokes.
|
||||||
|
|
||||||
|
#include <QtSvg/QSvgRenderer>
|
||||||
#include <QtWidgets/QApplication>
|
#include <QtWidgets/QApplication>
|
||||||
|
|
||||||
namespace Info::ChannelEarn {
|
namespace Info::ChannelEarn {
|
||||||
|
@ -69,6 +70,30 @@ void ShowMenu(not_null<Ui::GenericBox*> box, const QString &text) {
|
||||||
menu->popup(QCursor::pos());
|
menu->popup(QCursor::pos());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[[nodiscard]] QByteArray CurrencySvg(const QColor &c) {
|
||||||
|
const auto color = u"rgb(%1,%2,%3)"_q
|
||||||
|
.arg(c.red())
|
||||||
|
.arg(c.green())
|
||||||
|
.arg(c.blue())
|
||||||
|
.toUtf8();
|
||||||
|
return R"(
|
||||||
|
<svg width="72px" height="72px" viewBox="0 0 72 72">
|
||||||
|
<g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<g transform="translate(9.000000, 14.000000)
|
||||||
|
" stroke-width="7.2" stroke=")" + color + R"(">
|
||||||
|
<path d="M2.96014341,0 L50.9898193,0 C51.9732032,-7.06402744e-15
|
||||||
|
52.7703933,0.797190129 52.7703933,1.78057399 C52.7703933,2.08038611
|
||||||
|
52.6946886,2.3753442 52.5502994,2.63809702 L29.699977,44.2200383
|
||||||
|
C28.7527832,45.9436969 26.5876295,46.5731461 24.8639708,45.6259523
|
||||||
|
C24.2556953,45.2916896 23.7583564,44.7869606 23.4331014,44.1738213
|
||||||
|
L1.38718565,2.61498853 C0.926351231,1.74626794 1.25700829,0.668450654
|
||||||
|
2.12572888,0.20761623 C2.38272962,0.0712838007 2.6692209,4.97530809e-16
|
||||||
|
2.96014341,0 Z"></path>
|
||||||
|
<line x1="27" y1="44.4532875" x2="27" y2="0"></line>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>)";
|
||||||
|
}
|
||||||
|
|
||||||
void AddArrow(not_null<Ui::RpWidget*> parent) {
|
void AddArrow(not_null<Ui::RpWidget*> parent) {
|
||||||
const auto arrow = Ui::CreateChild<Ui::RpWidget>(parent.get());
|
const auto arrow = Ui::CreateChild<Ui::RpWidget>(parent.get());
|
||||||
|
@ -139,6 +164,7 @@ void AddRecipient(not_null<Ui::GenericBox*> box, const TextWithEntities &t) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
[[nodiscard]] TextWithEntities EmojiCurrency(
|
[[nodiscard]] TextWithEntities EmojiCurrency(
|
||||||
not_null<Main::Session*> session) {
|
not_null<Main::Session*> session) {
|
||||||
auto emoji = TextWithEntities{
|
auto emoji = TextWithEntities{
|
||||||
|
@ -152,6 +178,24 @@ void AddRecipient(not_null<Ui::GenericBox*> box, const TextWithEntities &t) {
|
||||||
}
|
}
|
||||||
return emoji;
|
return emoji;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
[[nodiscard]] QImage IconCurrency(
|
||||||
|
const style::FlatLabel &label,
|
||||||
|
const QColor &c) {
|
||||||
|
const auto s = Size(label.style.font->ascent);
|
||||||
|
auto svg = QSvgRenderer(CurrencySvg(c));
|
||||||
|
auto image = QImage(
|
||||||
|
s * style::DevicePixelRatio(),
|
||||||
|
QImage::Format_ARGB32_Premultiplied);
|
||||||
|
image.setDevicePixelRatio(style::DevicePixelRatio());
|
||||||
|
image.fill(Qt::transparent);
|
||||||
|
{
|
||||||
|
auto p = QPainter(&image);
|
||||||
|
svg.render(&p, Rect(s));
|
||||||
|
}
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
|
||||||
[[nodiscard]] QString FormatDate(const QDateTime &date) {
|
[[nodiscard]] QString FormatDate(const QDateTime &date) {
|
||||||
return tr::lng_group_call_starts_short_date(
|
return tr::lng_group_call_starts_short_date(
|
||||||
|
@ -201,7 +245,6 @@ void InnerWidget::fill() {
|
||||||
|
|
||||||
constexpr auto kMinus = QChar(0x2212);
|
constexpr auto kMinus = QChar(0x2212);
|
||||||
constexpr auto kApproximately = QChar(0x2248);
|
constexpr auto kApproximately = QChar(0x2248);
|
||||||
const auto currency = u"TON"_q;
|
|
||||||
const auto multiplier = data.usdRate;
|
const auto multiplier = data.usdRate;
|
||||||
|
|
||||||
constexpr auto kNonInteractivePeriod = 1717200000;
|
constexpr auto kNonInteractivePeriod = 1717200000;
|
||||||
|
@ -219,13 +262,35 @@ void InnerWidget::fill() {
|
||||||
};
|
};
|
||||||
const auto addEmojiToMajor = [=](
|
const auto addEmojiToMajor = [=](
|
||||||
not_null<Ui::FlatLabel*> label,
|
not_null<Ui::FlatLabel*> label,
|
||||||
EarnInt value) {
|
EarnInt value,
|
||||||
auto emoji = EmojiCurrency(session);
|
std::optional<bool> isIn,
|
||||||
|
std::optional<QMargins> margins) {
|
||||||
|
const auto &st = label->st();
|
||||||
|
auto icon = Ui::Text::SingleCustomEmoji(
|
||||||
|
session->data().customEmojiManager().registerInternalEmoji(
|
||||||
|
IconCurrency(
|
||||||
|
st,
|
||||||
|
!isIn
|
||||||
|
? st::activeButtonBg->c
|
||||||
|
: (*isIn)
|
||||||
|
? st::boxTextFgGood->c
|
||||||
|
: st::menuIconAttentionColor->c),
|
||||||
|
margins ? *margins : st::channelEarnCurrencyCommonMargins,
|
||||||
|
false));
|
||||||
|
auto prepended = !isIn
|
||||||
|
? TextWithEntities()
|
||||||
|
: TextWithEntities::Simple((*isIn) ? QChar('+') : kMinus);
|
||||||
label->setMarkedText(
|
label->setMarkedText(
|
||||||
emoji.append(' ').append(MajorPart(value)),
|
prepended.append(icon).append(MajorPart(value)),
|
||||||
makeContext(label));
|
makeContext(label));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const auto bigCurrencyIcon = Ui::Text::SingleCustomEmoji(
|
||||||
|
session->data().customEmojiManager().registerInternalEmoji(
|
||||||
|
IconCurrency(st::boxTitle, st::activeButtonBg->c),
|
||||||
|
st::channelEarnCurrencyLearnMargins,
|
||||||
|
false));
|
||||||
|
|
||||||
const auto arrow = Ui::Text::SingleCustomEmoji(
|
const auto arrow = Ui::Text::SingleCustomEmoji(
|
||||||
session->data().customEmojiManager().registerInternalEmoji(
|
session->data().customEmojiManager().registerInternalEmoji(
|
||||||
st::topicButtonArrow,
|
st::topicButtonArrow,
|
||||||
|
@ -357,7 +422,7 @@ void InnerWidget::fill() {
|
||||||
tr::lng_channel_earn_learn_coin_title(
|
tr::lng_channel_earn_learn_coin_title(
|
||||||
lt_emoji,
|
lt_emoji,
|
||||||
rpl::single(
|
rpl::single(
|
||||||
Ui::Text::Link(EmojiCurrency(session), 1)),
|
Ui::Text::Link(bigCurrencyIcon, 1)),
|
||||||
Ui::Text::RichLangValue
|
Ui::Text::RichLangValue
|
||||||
) | rpl::start_with_next([=](TextWithEntities t) {
|
) | rpl::start_with_next([=](TextWithEntities t) {
|
||||||
l->setMarkedText(std::move(t), makeContext(l));
|
l->setMarkedText(std::move(t), makeContext(l));
|
||||||
|
@ -406,6 +471,8 @@ void InnerWidget::fill() {
|
||||||
container,
|
container,
|
||||||
tr::lng_channel_earn_learn_close(),
|
tr::lng_channel_earn_learn_close(),
|
||||||
st::defaultActiveButton);
|
st::defaultActiveButton);
|
||||||
|
button->setTextTransform(
|
||||||
|
Ui::RoundButton::TextTransform::NoTransform);
|
||||||
button->resizeToWidth(box->width()
|
button->resizeToWidth(box->width()
|
||||||
- st.buttonPadding.left()
|
- st.buttonPadding.left()
|
||||||
- st.buttonPadding.left());
|
- st.buttonPadding.left());
|
||||||
|
@ -466,7 +533,7 @@ void InnerWidget::fill() {
|
||||||
const auto majorLabel = Ui::CreateChild<Ui::FlatLabel>(
|
const auto majorLabel = Ui::CreateChild<Ui::FlatLabel>(
|
||||||
line,
|
line,
|
||||||
st::channelEarnOverviewMajorLabel);
|
st::channelEarnOverviewMajorLabel);
|
||||||
addEmojiToMajor(majorLabel, value);
|
addEmojiToMajor(majorLabel, value, {}, {});
|
||||||
const auto minorLabel = Ui::CreateChild<Ui::FlatLabel>(
|
const auto minorLabel = Ui::CreateChild<Ui::FlatLabel>(
|
||||||
line,
|
line,
|
||||||
MinorPart(value),
|
MinorPart(value),
|
||||||
|
@ -511,17 +578,18 @@ void InnerWidget::fill() {
|
||||||
addOverview(data.overallRevenue, tr::lng_channel_earn_total);
|
addOverview(data.overallRevenue, tr::lng_channel_earn_total);
|
||||||
Ui::AddSkip(container);
|
Ui::AddSkip(container);
|
||||||
}
|
}
|
||||||
|
#ifndef _DEBUG
|
||||||
if (!channel->amCreator()) {
|
if (!channel->amCreator()) {
|
||||||
Ui::AddSkip(container);
|
Ui::AddSkip(container);
|
||||||
Ui::AddSkip(container);
|
Ui::AddSkip(container);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
Ui::AddSkip(container);
|
Ui::AddSkip(container);
|
||||||
Ui::AddDivider(container);
|
Ui::AddDivider(container);
|
||||||
Ui::AddSkip(container);
|
Ui::AddSkip(container);
|
||||||
if (channel) {
|
if (channel) {
|
||||||
const auto value = data.availableBalance;
|
const auto value = data.availableBalance;
|
||||||
Ui::AddSkip(container);
|
|
||||||
AddHeader(container, tr::lng_channel_earn_balance_title);
|
AddHeader(container, tr::lng_channel_earn_balance_title);
|
||||||
Ui::AddSkip(container);
|
Ui::AddSkip(container);
|
||||||
|
|
||||||
|
@ -533,7 +601,11 @@ void InnerWidget::fill() {
|
||||||
const auto majorLabel = Ui::CreateChild<Ui::FlatLabel>(
|
const auto majorLabel = Ui::CreateChild<Ui::FlatLabel>(
|
||||||
labels,
|
labels,
|
||||||
st::channelEarnBalanceMajorLabel);
|
st::channelEarnBalanceMajorLabel);
|
||||||
addEmojiToMajor(majorLabel, value);
|
{
|
||||||
|
const auto &m = st::channelEarnCurrencyCommonMargins;
|
||||||
|
const auto p = QMargins(m.left(), 0, m.right(), m.bottom());
|
||||||
|
addEmojiToMajor(majorLabel, value, {}, p);
|
||||||
|
}
|
||||||
majorLabel->setAttribute(Qt::WA_TransparentForMouseEvents);
|
majorLabel->setAttribute(Qt::WA_TransparentForMouseEvents);
|
||||||
const auto minorLabel = Ui::CreateChild<Ui::FlatLabel>(
|
const auto minorLabel = Ui::CreateChild<Ui::FlatLabel>(
|
||||||
labels,
|
labels,
|
||||||
|
@ -616,9 +688,6 @@ void InnerWidget::fill() {
|
||||||
: tr::lng_channel_earn_balance_about_temp);
|
: tr::lng_channel_earn_balance_about_temp);
|
||||||
Ui::AddSkip(container);
|
Ui::AddSkip(container);
|
||||||
}
|
}
|
||||||
Ui::AddSkip(container);
|
|
||||||
Ui::AddDivider(container);
|
|
||||||
Ui::AddSkip(container);
|
|
||||||
{
|
{
|
||||||
AddHeader(container, tr::lng_channel_earn_history_title);
|
AddHeader(container, tr::lng_channel_earn_history_title);
|
||||||
Ui::AddSkip(container);
|
Ui::AddSkip(container);
|
||||||
|
@ -683,20 +752,16 @@ void InnerWidget::fill() {
|
||||||
const auto color = (isIn
|
const auto color = (isIn
|
||||||
? st::boxTextFgGood
|
? st::boxTextFgGood
|
||||||
: st::menuIconAttentionColor)->c;
|
: st::menuIconAttentionColor)->c;
|
||||||
const auto majorText = (isIn ? '+' : kMinus)
|
|
||||||
+ MajorPart(entry.amount);
|
|
||||||
const auto majorLabel = Ui::CreateChild<Ui::FlatLabel>(
|
const auto majorLabel = Ui::CreateChild<Ui::FlatLabel>(
|
||||||
wrap,
|
wrap,
|
||||||
majorText,
|
|
||||||
st::channelEarnHistoryMajorLabel);
|
st::channelEarnHistoryMajorLabel);
|
||||||
|
addEmojiToMajor(majorLabel, entry.amount, isIn, {});
|
||||||
majorLabel->setAttribute(Qt::WA_TransparentForMouseEvents);
|
majorLabel->setAttribute(Qt::WA_TransparentForMouseEvents);
|
||||||
majorLabel->setTextColorOverride(color);
|
majorLabel->setTextColorOverride(color);
|
||||||
const auto minorText = MinorPart(entry.amount)
|
const auto minorText = MinorPart(entry.amount);
|
||||||
+ ' '
|
|
||||||
+ currency;
|
|
||||||
const auto minorLabel = Ui::CreateChild<Ui::FlatLabel>(
|
const auto minorLabel = Ui::CreateChild<Ui::FlatLabel>(
|
||||||
wrap,
|
wrap,
|
||||||
minorText,
|
rpl::single(minorText),
|
||||||
st::channelEarnHistoryMinorLabel);
|
st::channelEarnHistoryMinorLabel);
|
||||||
minorLabel->setAttribute(Qt::WA_TransparentForMouseEvents);
|
minorLabel->setAttribute(Qt::WA_TransparentForMouseEvents);
|
||||||
minorLabel->setTextColorOverride(color);
|
minorLabel->setTextColorOverride(color);
|
||||||
|
@ -705,7 +770,7 @@ void InnerWidget::fill() {
|
||||||
rpl::single(QString()));
|
rpl::single(QString()));
|
||||||
Ui::ToggleChildrenVisibility(wrap, true);
|
Ui::ToggleChildrenVisibility(wrap, true);
|
||||||
|
|
||||||
const auto detailsBox = [=, peer = _peer](
|
const auto detailsBox = [=, amount = entry.amount, peer = _peer](
|
||||||
not_null<Ui::GenericBox*> box) {
|
not_null<Ui::GenericBox*> box) {
|
||||||
Ui::AddSkip(box->verticalLayout());
|
Ui::AddSkip(box->verticalLayout());
|
||||||
Ui::AddSkip(box->verticalLayout());
|
Ui::AddSkip(box->verticalLayout());
|
||||||
|
@ -716,8 +781,8 @@ void InnerWidget::fill() {
|
||||||
|
|
||||||
const auto majorLabel = Ui::CreateChild<Ui::FlatLabel>(
|
const auto majorLabel = Ui::CreateChild<Ui::FlatLabel>(
|
||||||
labels,
|
labels,
|
||||||
majorText,
|
|
||||||
st::channelEarnOverviewMajorLabel);
|
st::channelEarnOverviewMajorLabel);
|
||||||
|
addEmojiToMajor(majorLabel, amount, isIn, {});
|
||||||
majorLabel->setAttribute(Qt::WA_TransparentForMouseEvents);
|
majorLabel->setAttribute(Qt::WA_TransparentForMouseEvents);
|
||||||
majorLabel->setTextColorOverride(color);
|
majorLabel->setTextColorOverride(color);
|
||||||
const auto minorLabel = Ui::CreateChild<Ui::FlatLabel>(
|
const auto minorLabel = Ui::CreateChild<Ui::FlatLabel>(
|
||||||
|
|
Loading…
Add table
Reference in a new issue