mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Added subscription info to box for details of invite link.
This commit is contained in:
parent
fb66c85567
commit
617ad38a68
2 changed files with 111 additions and 5 deletions
|
@ -2028,6 +2028,11 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
"lng_group_invite_subscription_about" = "Charge a subscription fee from people joining your channel via this link. {link}";
|
"lng_group_invite_subscription_about" = "Charge a subscription fee from people joining your channel via this link. {link}";
|
||||||
"lng_group_invite_subscription_about_link" = "Learn more {emoji}";
|
"lng_group_invite_subscription_about_link" = "Learn more {emoji}";
|
||||||
"lng_group_invite_subscription_about_url" = "https://telegram.org/tos/stars";
|
"lng_group_invite_subscription_about_url" = "https://telegram.org/tos/stars";
|
||||||
|
"lng_group_invite_subscription_info_subtitle" = "Subscription fee";
|
||||||
|
"lng_group_invite_subscription_info_title" = "{emoji} {price} / month {multiplier} {total}";
|
||||||
|
"lng_group_invite_subscription_info_title_none" = "{emoji} {price} / month";
|
||||||
|
"lng_group_invite_subscription_info_about" = "you get approximately {total} montly";
|
||||||
|
"lng_group_invite_joined_right" = "per month";
|
||||||
|
|
||||||
"lng_group_request_to_join" = "Request to Join";
|
"lng_group_request_to_join" = "Request to Join";
|
||||||
"lng_group_request_about" = "This group accepts new members only after they are approved by its admins.";
|
"lng_group_request_about" = "This group accepts new members only after they are approved by its admins.";
|
||||||
|
|
|
@ -8,12 +8,15 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "boxes/peers/edit_peer_invite_link.h"
|
#include "boxes/peers/edit_peer_invite_link.h"
|
||||||
|
|
||||||
#include "core/application.h"
|
#include "core/application.h"
|
||||||
#include "data/data_peer.h"
|
#include "core/ui_integration.h" // Core::MarkedTextContext.
|
||||||
#include "data/data_user.h"
|
#include "data/components/credits.h"
|
||||||
#include "data/data_channel.h"
|
|
||||||
#include "data/data_changes.h"
|
#include "data/data_changes.h"
|
||||||
#include "data/data_session.h"
|
#include "data/data_channel.h"
|
||||||
#include "data/data_histories.h"
|
#include "data/data_histories.h"
|
||||||
|
#include "data/data_peer.h"
|
||||||
|
#include "data/data_session.h"
|
||||||
|
#include "data/data_user.h"
|
||||||
|
#include "data/stickers/data_custom_emoji.h"
|
||||||
#include "main/main_session.h"
|
#include "main/main_session.h"
|
||||||
#include "api/api_invite_links.h"
|
#include "api/api_invite_links.h"
|
||||||
#include "base/unixtime.h"
|
#include "base/unixtime.h"
|
||||||
|
@ -26,10 +29,12 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "ui/widgets/popup_menu.h"
|
#include "ui/widgets/popup_menu.h"
|
||||||
#include "ui/abstract_button.h"
|
#include "ui/abstract_button.h"
|
||||||
#include "ui/toast/toast.h"
|
#include "ui/toast/toast.h"
|
||||||
|
#include "ui/text/format_values.h"
|
||||||
#include "ui/text/text_utilities.h"
|
#include "ui/text/text_utilities.h"
|
||||||
#include "ui/boxes/edit_invite_link.h"
|
#include "ui/boxes/edit_invite_link.h"
|
||||||
#include "ui/boxes/edit_invite_link_session.h"
|
#include "ui/boxes/edit_invite_link_session.h"
|
||||||
#include "ui/painter.h"
|
#include "ui/painter.h"
|
||||||
|
#include "ui/rect.h"
|
||||||
#include "ui/vertical_list.h"
|
#include "ui/vertical_list.h"
|
||||||
#include "boxes/share_box.h"
|
#include "boxes/share_box.h"
|
||||||
#include "history/view/history_view_group_call_bar.h" // GenerateUserpics...
|
#include "history/view/history_view_group_call_bar.h" // GenerateUserpics...
|
||||||
|
@ -49,8 +54,9 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
#include "styles/style_info.h"
|
#include "styles/style_info.h"
|
||||||
#include "styles/style_menu_icons.h"
|
#include "styles/style_menu_icons.h"
|
||||||
|
|
||||||
#include <QtGui/QGuiApplication>
|
|
||||||
#include <QtCore/QMimeData>
|
#include <QtCore/QMimeData>
|
||||||
|
#include <QtGui/QGuiApplication>
|
||||||
|
#include <QtSvg/QSvgRenderer>
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
@ -605,6 +611,101 @@ void Controller::setupAboveJoinedWidget() {
|
||||||
if (revoked || !current.permanent) {
|
if (revoked || !current.permanent) {
|
||||||
addHeaderBlock(container);
|
addHeaderBlock(container);
|
||||||
}
|
}
|
||||||
|
if (current.subscription) {
|
||||||
|
const auto &st = st::peerListSingleRow.item;
|
||||||
|
Ui::AddSubsectionTitle(
|
||||||
|
container,
|
||||||
|
tr::lng_group_invite_subscription_info_subtitle());
|
||||||
|
const auto widget = container->add(
|
||||||
|
CreateSkipWidget(container, st.height));
|
||||||
|
const auto name = widget->lifetime().make_state<Ui::Text::String>();
|
||||||
|
auto userpic = QImage(
|
||||||
|
Size(st.photoSize) * style::DevicePixelRatio(),
|
||||||
|
QImage::Format_ARGB32_Premultiplied);
|
||||||
|
{
|
||||||
|
constexpr auto kGreenIndex = 3;
|
||||||
|
const auto colors = Ui::EmptyUserpic::UserpicColor(kGreenIndex);
|
||||||
|
auto emptyUserpic = Ui::EmptyUserpic(colors, {});
|
||||||
|
|
||||||
|
userpic.setDevicePixelRatio(style::DevicePixelRatio());
|
||||||
|
userpic.fill(Qt::transparent);
|
||||||
|
|
||||||
|
auto p = QPainter(&userpic);
|
||||||
|
emptyUserpic.paintCircle(p, 0, 0, st.photoSize, st.photoSize);
|
||||||
|
|
||||||
|
auto svg = QSvgRenderer(u":/gui/links_subscription.svg"_q);
|
||||||
|
const auto size = st.photoSize / 4. * 3.;
|
||||||
|
const auto r = QRectF(
|
||||||
|
(st.photoSize - size) / 2.,
|
||||||
|
(st.photoSize - size) / 2.,
|
||||||
|
size,
|
||||||
|
size);
|
||||||
|
p.setPen(st::historyPeerUserpicFg);
|
||||||
|
p.setBrush(Qt::NoBrush);
|
||||||
|
svg.render(&p, r);
|
||||||
|
}
|
||||||
|
name->setMarkedText(
|
||||||
|
st.nameStyle,
|
||||||
|
current.usage
|
||||||
|
? tr::lng_group_invite_subscription_info_title(
|
||||||
|
tr::now,
|
||||||
|
lt_emoji,
|
||||||
|
session().data().customEmojiManager().creditsEmoji(),
|
||||||
|
lt_price,
|
||||||
|
{ QString::number(current.subscription.credits) },
|
||||||
|
lt_multiplier,
|
||||||
|
TextWithEntities{ .text = QString(QChar(0x00D7)) },
|
||||||
|
lt_total,
|
||||||
|
{ QString::number(current.usage) },
|
||||||
|
Ui::Text::WithEntities)
|
||||||
|
: tr::lng_group_invite_subscription_info_title_none(
|
||||||
|
tr::now,
|
||||||
|
lt_emoji,
|
||||||
|
session().data().customEmojiManager().creditsEmoji(),
|
||||||
|
lt_price,
|
||||||
|
{ QString::number(current.subscription.credits) },
|
||||||
|
Ui::Text::WithEntities),
|
||||||
|
kMarkupTextOptions,
|
||||||
|
Core::MarkedTextContext{
|
||||||
|
.session = &session(),
|
||||||
|
.customEmojiRepaint = [=] { widget->update(); },
|
||||||
|
});
|
||||||
|
auto &lifetime = widget->lifetime();
|
||||||
|
const auto rateValue = lifetime.make_state<rpl::variable<float64>>(
|
||||||
|
session().credits().rateValue(_peer));
|
||||||
|
const auto currency = u"USD"_q;
|
||||||
|
const auto allCredits = current.subscription.credits * current.usage;
|
||||||
|
widget->paintRequest(
|
||||||
|
) | rpl::start_with_next([=] {
|
||||||
|
auto p = Painter(widget);
|
||||||
|
p.setBrush(Qt::NoBrush);
|
||||||
|
p.setPen(st.nameFg);
|
||||||
|
name->draw(p, {
|
||||||
|
.position = st.namePosition,
|
||||||
|
.outerWidth = widget->width() - name->maxWidth(),
|
||||||
|
.availableWidth = widget->width() - name->maxWidth(),
|
||||||
|
});
|
||||||
|
|
||||||
|
p.drawImage(st.photoPosition, userpic);
|
||||||
|
|
||||||
|
const auto rate = rateValue->current();
|
||||||
|
const auto status = (allCredits <= 0)
|
||||||
|
? tr::lng_group_invite_no_joined(tr::now)
|
||||||
|
: (rate > 0)
|
||||||
|
? tr::lng_group_invite_subscription_info_about(
|
||||||
|
tr::now,
|
||||||
|
lt_total,
|
||||||
|
Ui::FillAmountAndCurrency(allCredits * rate, currency))
|
||||||
|
: QString();
|
||||||
|
p.setPen(st.statusFg);
|
||||||
|
p.setFont(st::contactsStatusFont);
|
||||||
|
p.drawTextLeft(
|
||||||
|
st.statusPosition.x(),
|
||||||
|
st.statusPosition.y(),
|
||||||
|
widget->width() - st.statusPosition.x(),
|
||||||
|
status);
|
||||||
|
}, widget->lifetime());
|
||||||
|
}
|
||||||
Ui::AddSubsectionTitle(
|
Ui::AddSubsectionTitle(
|
||||||
container,
|
container,
|
||||||
tr::lng_group_invite_created_by());
|
tr::lng_group_invite_created_by());
|
||||||
|
|
Loading…
Add table
Reference in a new issue