From a2c2ed0b4a5eb8c9ec1e5fd595474b45451c6898 Mon Sep 17 00:00:00 2001 From: 23rd <23rd@vivaldi.net> Date: Mon, 30 Jun 2025 14:26:22 +0300 Subject: [PATCH] Added ability to clear proxy list from top context menu in settings. --- Telegram/SourceFiles/boxes/connection_box.cpp | 27 ++++++++++++++++--- Telegram/SourceFiles/boxes/connection_box.h | 1 + 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/Telegram/SourceFiles/boxes/connection_box.cpp b/Telegram/SourceFiles/boxes/connection_box.cpp index 3b48cf123f..cd4285b262 100644 --- a/Telegram/SourceFiles/boxes/connection_box.cpp +++ b/Telegram/SourceFiles/boxes/connection_box.cpp @@ -34,6 +34,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/widgets/fields/number_input.h" #include "ui/widgets/fields/password_input.h" #include "ui/widgets/labels.h" +#include "ui/widgets/menu/menu_add_action_callback.h" +#include "ui/widgets/menu/menu_add_action_callback_factory.h" #include "ui/widgets/popup_menu.h" #include "ui/wrap/slide_wrap.h" #include "ui/wrap/vertical_layout.h" @@ -737,10 +739,21 @@ void ProxiesBox::setupTopButton() { } }; top->setClickedCallback([=] { - *menu = base::make_unique_q(top, st::defaultPopupMenu); - (*menu)->addAction( - tr::lng_proxy_add_from_clipboard(tr::now), - callback); + *menu = base::make_unique_q( + top, + st::popupMenuWithIcons); + const auto addAction = Ui::Menu::CreateAddActionCallback(*menu); + addAction({ + .text = tr::lng_proxy_add_from_clipboard(tr::now), + .handler = callback, + .icon = &st::menuIconImportTheme, + }); + addAction({ + .text = tr::lng_group_invite_context_delete_all(tr::now), + .handler = [=] { _controller->deleteItems(); }, + .icon = &st::menuIconDeleteAttention, + .isAttention = true, + }); (*menu)->popup(QCursor::pos()); return true; }); @@ -1475,6 +1488,12 @@ void ProxiesBoxController::deleteItem(int id) { setDeleted(id, true); } +void ProxiesBoxController::deleteItems() { + for (const auto &item : _list) { + setDeleted(item.id, true); + } +} + void ProxiesBoxController::restoreItem(int id) { setDeleted(id, false); } diff --git a/Telegram/SourceFiles/boxes/connection_box.h b/Telegram/SourceFiles/boxes/connection_box.h index 27a7cc6b7a..97636060c7 100644 --- a/Telegram/SourceFiles/boxes/connection_box.h +++ b/Telegram/SourceFiles/boxes/connection_box.h @@ -72,6 +72,7 @@ public: }; void deleteItem(int id); + void deleteItems(); void restoreItem(int id); void shareItem(int id, bool qr); void shareItems();