From 155305f0f74c7f697b255e01a4d5afcdde7c416b Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Wed, 11 Sep 2024 15:24:22 +0300 Subject: [PATCH] Added ability to generate QR code for self from settings. --- Telegram/SourceFiles/info/info.style | 13 +++++++++++++ Telegram/SourceFiles/info/info_wrap_widget.cpp | 18 ++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/Telegram/SourceFiles/info/info.style b/Telegram/SourceFiles/info/info.style index 3be1bd88a..65d6c2eb1 100644 --- a/Telegram/SourceFiles/info/info.style +++ b/Telegram/SourceFiles/info/info.style @@ -169,6 +169,13 @@ infoTopBarCall: IconButton(infoTopBarMenu) { iconPosition: point(5px, -1px); rippleAreaPosition: point(0px, 6px); } +infoTopBarQr: IconButton(infoTopBarMenu) { + width: 52px; + icon: icon {{ "menu/qr_code", boxTitleCloseFg }}; + iconOver: icon {{ "menu/qr_code", boxTitleCloseFgOver }}; + iconPosition: point(9px, -1px); + rippleAreaPosition: point(0px, 6px); +} infoTopBarForward: IconButton(infoTopBarBack) { width: 46px; icon: icon {{ "info/info_media_forward", boxTitleCloseFg }}; @@ -262,6 +269,12 @@ infoLayerTopBarCall: IconButton(infoLayerTopBarMenu) { iconOver: icon {{ "top_bar_call", boxTitleCloseFgOver }}; iconPosition: point(3px, -1px); } +infoLayerTopBarQr: IconButton(infoLayerTopBarClose) { + width: 40px; + icon: icon {{ "menu/qr_code", boxTitleCloseFg }}; + iconOver: icon {{ "menu/qr_code", boxTitleCloseFgOver }}; + iconPosition: point(8px, -1px); +} infoLayerTopBarForward: IconButton(infoLayerTopBarBack) { width: 45px; icon: icon {{ "info/info_media_forward", boxTitleCloseFg }}; diff --git a/Telegram/SourceFiles/info/info_wrap_widget.cpp b/Telegram/SourceFiles/info/info_wrap_widget.cpp index c97be9faf..b03dc2d97 100644 --- a/Telegram/SourceFiles/info/info_wrap_widget.cpp +++ b/Telegram/SourceFiles/info/info_wrap_widget.cpp @@ -16,6 +16,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "info/info_top_bar.h" #include "settings/cloud_password/settings_cloud_password_email_confirm.h" #include "settings/settings_chat.h" +#include "settings/settings_information.h" #include "settings/settings_main.h" #include "settings/settings_premium.h" #include "ui/effects/ripple_animation.h" // MaskByDrawer. @@ -35,6 +36,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "window/window_slide_animation.h" #include "boxes/peer_list_box.h" #include "ui/boxes/confirm_box.h" +#include "ui/boxes/peer_qr_box.h" #include "main/main_session.h" #include "mtproto/mtproto_config.h" #include "data/data_download_manager.h" @@ -384,6 +386,22 @@ void WrapWidget::setupTopBarMenuToggle() { addProfileCallsButton(); } else if (section.type() == Section::Type::Settings) { addTopBarMenuButton(); + if (section.settingsType() == ::Settings::Information::Id()) { + const auto controller = _controller->parentController(); + const auto self = controller->session().user(); + if (!self->username().isEmpty()) { + const auto show = controller->uiShow(); + const auto &st = (wrap() == Wrap::Layer) + ? st::infoLayerTopBarQr + : st::infoTopBarQr; + const auto button = _topBar->addButton( + base::make_unique_q(_topBar, st)); + button->addClickHandler([show, self] { + show->show( + Box(Ui::FillPeerQrBox, self, std::nullopt, nullptr)); + }); + } + } } else if (section.type() == Section::Type::Downloads) { auto &manager = Core::App().downloadManager(); rpl::merge(