From d0536cc31f45ebe41717050c1676244aef070043 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Tue, 10 Sep 2024 13:47:27 +0300 Subject: [PATCH] Replaced boxes for QR code of invite links with box for share QR code. --- .../boxes/filters/edit_filter_links.cpp | 2 ++ .../boxes/peers/edit_peer_invite_link.cpp | 23 +++++++++++-------- .../boxes/peers/edit_peer_invite_link.h | 1 + .../boxes/peers/edit_peer_invite_links.cpp | 1 + .../settings/business/settings_chat_links.cpp | 1 + 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/Telegram/SourceFiles/boxes/filters/edit_filter_links.cpp b/Telegram/SourceFiles/boxes/filters/edit_filter_links.cpp index e86b0811f..aaeda8ae1 100644 --- a/Telegram/SourceFiles/boxes/filters/edit_filter_links.cpp +++ b/Telegram/SourceFiles/boxes/filters/edit_filter_links.cpp @@ -582,6 +582,7 @@ void LinkController::addLinkBlock(not_null container) { }); const auto getLinkQr = crl::guard(weak, [=] { delegate()->peerListUiShow()->showBox(InviteLinkQrBox( + nullptr, link, tr::lng_group_invite_qr_title(), tr::lng_filters_link_qr_about())); @@ -890,6 +891,7 @@ base::unique_qptr LinksController::createRowContextMenu( }; const auto getLinkQr = [=] { delegate()->peerListUiShow()->showBox(InviteLinkQrBox( + nullptr, link, tr::lng_group_invite_qr_title(), tr::lng_filters_link_qr_about())); diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.cpp index 203a027f0..8e1a11030 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.cpp @@ -33,6 +33,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/boxes/confirm_box.h" #include "ui/boxes/edit_invite_link.h" #include "ui/boxes/edit_invite_link_session.h" +#include "ui/boxes/peer_qr_box.h" #include "ui/controls/invite_link_buttons.h" #include "ui/controls/invite_link_label.h" #include "ui/controls/userpic_button.h" @@ -64,8 +65,8 @@ namespace { constexpr auto kFirstPage = 20; constexpr auto kPerPage = 100; -constexpr auto kShareQrSize = 768; -constexpr auto kShareQrPadding = 16; +// constexpr auto kShareQrSize = 768; +// constexpr auto kShareQrPadding = 16; using LinkData = Api::InviteLink; @@ -282,6 +283,8 @@ private: return updated.link.isEmpty() || (!revoked && updated.revoked); } +#if 0 + QImage QrExact(const Qr::Data &data, int pixel, QColor color) { const auto image = [](int size) { auto result = QImage( @@ -383,6 +386,8 @@ void QrBox( box->addLeftButton(tr::lng_group_invite_context_copy(), copyCallback); } +#endif + Controller::Controller( not_null peer, not_null admin, @@ -421,6 +426,7 @@ void Controller::addHeaderBlock(not_null container) { }); const auto getLinkQr = crl::guard(weak, [=] { delegate()->peerListUiShow()->showBox(InviteLinkQrBox( + _peer, link, tr::lng_group_invite_qr_title(), tr::lng_group_invite_qr_about())); @@ -1253,6 +1259,7 @@ void AddPermanentLinkBlock( const auto getLinkQr = crl::guard(weak, [=] { if (const auto current = value->current(); !current.link.isEmpty()) { show->showBox(InviteLinkQrBox( + peer, current.link, tr::lng_group_invite_qr_title(), tr::lng_group_invite_qr_about())); @@ -1510,16 +1517,14 @@ object_ptr ShareInviteLinkBox( } object_ptr InviteLinkQrBox( + PeerData *peer, const QString &link, rpl::producer title, rpl::producer about) { - return Box(QrBox, link, std::move(title), std::move(about), [=]( - const QImage &image, - std::shared_ptr show) { - auto mime = std::make_unique(); - mime->setImageData(image); - QGuiApplication::clipboard()->setMimeData(mime.release()); - show->showToast(tr::lng_group_invite_qr_copied(tr::now)); + return Box([=, t = std::move(title), a = std::move(about)]( + not_null box) { + Ui::FillPeerQrBox(box, peer, link, std::move(a)); + box->setTitle(std::move(t)); }); } diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.h b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.h index 1cb22fb1a..e59ffdd5e 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.h +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_link.h @@ -50,6 +50,7 @@ void CopyInviteLink(std::shared_ptr show, const QString &link); const QString &link, const QString &copied = {}); [[nodiscard]] object_ptr InviteLinkQrBox( + PeerData *peer, const QString &link, rpl::producer title, rpl::producer about); diff --git a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp index 86d8e3595..e3f387062 100644 --- a/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp +++ b/Telegram/SourceFiles/boxes/peers/edit_peer_invite_links.cpp @@ -587,6 +587,7 @@ base::unique_qptr LinksController::createRowContextMenu( }, &st::menuIconShare); result->addAction(tr::lng_group_invite_context_qr(tr::now), [=] { delegate()->peerListUiShow()->showBox(InviteLinkQrBox( + nullptr, link, tr::lng_group_invite_qr_title(), tr::lng_group_invite_qr_about())); diff --git a/Telegram/SourceFiles/settings/business/settings_chat_links.cpp b/Telegram/SourceFiles/settings/business/settings_chat_links.cpp index e984b9b23..e0d35efca 100644 --- a/Telegram/SourceFiles/settings/business/settings_chat_links.cpp +++ b/Telegram/SourceFiles/settings/business/settings_chat_links.cpp @@ -606,6 +606,7 @@ base::unique_qptr LinksController::createRowContextMenu( }, &st::menuIconShare); result->addAction(tr::lng_group_invite_context_qr(tr::now), [=] { delegate()->peerListUiShow()->showBox(InviteLinkQrBox( + nullptr, link, tr::lng_chat_link_qr_title(), tr::lng_chat_link_qr_about()));