From ae18b4c851c38770d5edf0a031cb81dcd201289b Mon Sep 17 00:00:00 2001
From: 23rd <23rd@vivaldi.net>
Date: Fri, 9 Aug 2024 10:58:39 +0300
Subject: [PATCH] Added special icon to list for invite links with
subscription.
---
.../icons/info/edit/links_subscription.svg | 36 +++++++++++++++++++
Telegram/Resources/qrc/telegram/telegram.qrc | 1 +
.../boxes/peers/edit_peer_invite_links.cpp | 31 ++++++++++++----
Telegram/SourceFiles/info/info.style | 1 +
4 files changed, 62 insertions(+), 7 deletions(-)
create mode 100644 Telegram/Resources/icons/info/edit/links_subscription.svg
diff --git a/Telegram/Resources/icons/info/edit/links_subscription.svg b/Telegram/Resources/icons/info/edit/links_subscription.svg
new file mode 100644
index 000000000..2d2d0c3fb
--- /dev/null
+++ b/Telegram/Resources/icons/info/edit/links_subscription.svg
@@ -0,0 +1,36 @@
+
+
\ No newline at end of file
diff --git a/Telegram/Resources/qrc/telegram/telegram.qrc b/Telegram/Resources/qrc/telegram/telegram.qrc
index e83243d33..c065c5fad 100644
--- a/Telegram/Resources/qrc/telegram/telegram.qrc
+++ b/Telegram/Resources/qrc/telegram/telegram.qrc
@@ -30,6 +30,7 @@
../../art/topic_icons/red.svg
../../art/topic_icons/gray.svg
../../art/topic_icons/general.svg
+ ../../icons/info/edit/links_subscription.svg
../../icons/calls/hands.lottie
diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp
index 5952171ae..fdbc07dd5 100644
--- a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp
+++ b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp
@@ -19,6 +19,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/widgets/buttons.h"
#include "ui/widgets/popup_menu.h"
#include "ui/painter.h"
+#include "ui/rect.h"
#include "ui/vertical_list.h"
#include "lang/lang_keys.h"
#include "ui/boxes/confirm_box.h"
@@ -31,6 +32,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "styles/style_layers.h" // st::boxDividerLabel
#include "styles/style_menu_icons.h"
+#include
+
namespace {
enum class Color {
@@ -39,6 +42,7 @@ enum class Color {
ExpireSoon,
Expired,
Revoked,
+ Subscription,
Count,
};
@@ -145,6 +149,8 @@ private:
? Color::ExpireSoon
: (progress >= 0.)
? Color::Expiring
+ : link.subscription
+ ? Color::Subscription
: Color::Permanent;
}
@@ -659,6 +665,7 @@ void LinksController::rowPaintIcon(
case Color::ExpireSoon: return &st::msgFile4Bg;
case Color::Expired: return &st::msgFile3Bg;
case Color::Revoked: return &st::windowSubTextFg;
+ case Color::Subscription: return &st::msgFile2Bg;
}
Unexpected("Color in LinksController::rowPaintIcon.");
}();
@@ -676,15 +683,25 @@ void LinksController::rowPaintIcon(
p.setBrush(*bg);
{
auto hq = PainterHighQualityEnabler(p);
- auto rect = QRect(0, 0, inner, inner);
- if (color == Color::Expiring || color == Color::ExpireSoon) {
- rect = rect.marginsRemoved({ stroke, stroke, stroke, stroke });
- }
+ const auto rect = QRect(0, 0, inner, inner)
+ - ((color == Color::Expiring || color == Color::ExpireSoon)
+ ? Margins(stroke)
+ : Margins(0));
p.drawEllipse(rect);
}
- (color == Color::Revoked
- ? st::inviteLinkRevokedIcon
- : st::inviteLinkIcon).paintInCenter(p, { 0, 0, inner, inner });
+ if (color == Color::Subscription) {
+ auto svg = QSvgRenderer(u":/gui/links_subscription.svg"_q);
+ const auto r = QRect(
+ (inner - st::inviteLinkSubscriptionSize) / 2,
+ (inner - st::inviteLinkSubscriptionSize) / 2,
+ st::inviteLinkSubscriptionSize,
+ st::inviteLinkSubscriptionSize);
+ svg.render(&p, r);
+ } else {
+ (color == Color::Revoked
+ ? st::inviteLinkRevokedIcon
+ : st::inviteLinkIcon).paintInCenter(p, { 0, 0, inner, inner });
+ }
}
p.drawImage(x + skip, y + skip, icon);
if (progress >= 0. && progress < 1.) {
diff --git a/Telegram/SourceFiles/info/info.style b/Telegram/SourceFiles/info/info.style
index 1eaa10069..db1cd8b19 100644
--- a/Telegram/SourceFiles/info/info.style
+++ b/Telegram/SourceFiles/info/info.style
@@ -986,6 +986,7 @@ inviteLinkRevokedIcon: icon {{ "info/edit/links_revoked", mediaviewFileExtFg }};
inviteLinkThreeDotsSkip: 12px;
inviteLinkRevokedTitlePadding: margins(22px, 16px, 10px, 4px);
inviteLinkLimitMargin: margins(22px, 8px, 22px, 8px);
+inviteLinkSubscriptionSize: 18px;
inviteLinkQrPixel: 8px;
inviteLinkQrSkip: 24px;