From cddb2a4bac6dff75f67b1b1c1526224e399c7147 Mon Sep 17 00:00:00 2001 From: John Preston Date: Tue, 1 Nov 2022 19:23:52 +0400 Subject: [PATCH] Improve video chat menu for forums. --- Telegram/Resources/icons/menu/video_chat.png | Bin 0 -> 557 bytes .../Resources/icons/menu/video_chat@2x.png | Bin 0 -> 1022 bytes .../Resources/icons/menu/video_chat@3x.png | Bin 0 -> 1357 bytes Telegram/Resources/langs/lang.strings | 1 + Telegram/SourceFiles/ui/menu_icons.style | 6 +-- .../SourceFiles/window/window_peer_menu.cpp | 45 ++++++++++++++---- Telegram/lib_ui | 2 +- 7 files changed, 40 insertions(+), 14 deletions(-) create mode 100644 Telegram/Resources/icons/menu/video_chat.png create mode 100644 Telegram/Resources/icons/menu/video_chat@2x.png create mode 100644 Telegram/Resources/icons/menu/video_chat@3x.png diff --git a/Telegram/Resources/icons/menu/video_chat.png b/Telegram/Resources/icons/menu/video_chat.png new file mode 100644 index 0000000000000000000000000000000000000000..fd5728dc72931517868077ad68056a35f3ee7210 GIT binary patch literal 557 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1SIoCSFHz9jKx9jP7LeL$-D$|Tv8)E(|mmy zw18|52FCVG1{RPKAeI7R1_tH@j10^`nh_+nfC(-uv49!D1}S`GTDlgfY`Uk5V~B;| z(~#X=ha5zDUkj-yh;0%z1zxjanTc;od~v2NGZR~IdLFQR@Z=xWy2&SL=^ z4)zGSJ=_ta*UtRVGxKbAfJ%1VVwuES877xrnq2D7X3*#|lIwS7W>u2@`unffQm0*? zf7%?Kkd>l5L#VTTwZiELnd=>;#|H|_UYA+TO)>fzvv2bcA@{`>Q;c>B zpV=L@x^iCoL|eK3%{O(XdfnAowaRb#<--pd07UXJOfpVrtNuYVqHE_ylUI?$D?GoyN* b&-aL*cw;N0%=yckK~d%D>gTe~DWM4fjhEM> literal 0 HcmV?d00001 diff --git a/Telegram/Resources/icons/menu/video_chat@2x.png b/Telegram/Resources/icons/menu/video_chat@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..63cb517db7908c8a65a18f2adb90b27e8a941bbd GIT binary patch literal 1022 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 IbxsLQ0BRIhr2qf` literal 0 HcmV?d00001 diff --git a/Telegram/Resources/langs/lang.strings b/Telegram/Resources/langs/lang.strings index 171193cb6..dcfa8a058 100644 --- a/Telegram/Resources/langs/lang.strings +++ b/Telegram/Resources/langs/lang.strings @@ -2810,6 +2810,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL "lng_menu_start_group_call_scheduled" = "Schedule video chat"; "lng_menu_start_group_call_with" = "Stream with..."; "lng_menu_start_group_call_join" = "Join video chat"; +"lng_menu_start_group_call_options" = "Video chat"; "lng_menu_start_group_call_channel" = "Start live stream"; "lng_menu_start_group_call_scheduled_channel" = "Schedule live stream"; "lng_menu_start_group_call_with_channel" = "Stream with..."; diff --git a/Telegram/SourceFiles/ui/menu_icons.style b/Telegram/SourceFiles/ui/menu_icons.style index 049329b29..4871e9f8c 100644 --- a/Telegram/SourceFiles/ui/menu_icons.style +++ b/Telegram/SourceFiles/ui/menu_icons.style @@ -89,6 +89,9 @@ menuIconAddToFolder: icon {{ "menu/add_to_folder", menuIconColor }}; menuIconLeave: icon {{ "menu/leave", menuIconColor }}; menuIconGiftPremium: icon {{ "menu/gift_premium", menuIconColor }}; menuIconSearch: icon {{ "menu/search", menuIconColor }}; +menuIconStartStream: icon {{ "menu/start_stream", menuIconColor }}; +menuIconStartStreamWith: icon {{ "menu/start_stream_with", menuIconColor }}; +menuIconVideoChat: icon {{ "menu/video_chat", menuIconColor }}; menuIconTTLAny: icon {{ "menu/auto_delete_plain", menuIconColor }}; menuIconTTLAnyTextPosition: point(11px, 22px); @@ -110,9 +113,6 @@ mediaMenuIconShowAll: icon {{ "menu/all_media", mediaviewMenuFg }}; mediaMenuIconProfile: icon {{ "menu/profile", mediaviewMenuFg }}; mediaMenuIconReport: icon {{ "menu/report", mediaviewMenuFg }}; -menuIconStartStream: icon {{ "menu/start_stream", menuIconColor }}; -menuIconStartStreamWith: icon {{ "menu/start_stream_with", menuIconColor }}; - menuIconDeleteAttention: icon {{ "menu/delete", menuIconAttentionColor }}; menuIconLeaveAttention: icon {{ "menu/leave", menuIconAttentionColor }}; menuIconDisableAttention: icon {{ "menu/disable", menuIconAttentionColor }}; diff --git a/Telegram/SourceFiles/window/window_peer_menu.cpp b/Telegram/SourceFiles/window/window_peer_menu.cpp index 9e941fdbf..ce1e017b7 100644 --- a/Telegram/SourceFiles/window/window_peer_menu.cpp +++ b/Telegram/SourceFiles/window/window_peer_menu.cpp @@ -32,6 +32,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include "ui/text/text_utilities.h" #include "ui/widgets/labels.h" #include "ui/widgets/checkbox.h" +#include "ui/widgets/popup_menu.h" +#include "ui/widgets/menu/menu_add_action_callback_factory.h" #include "ui/layers/generic_box.h" #include "ui/toasts/common_toasts.h" #include "main/main_session.h" @@ -220,10 +222,8 @@ void PeerMenuAddMuteSubmenuAction( .icon = (notifySettings->sound(thread).none ? &st::menuIconSilent : &st::menuIconMute), - .fillSubmenu = [=](not_null menu) { - if (const auto strong = weak.get()) { - MuteMenu::FillMuteMenu(menu, strong, show); - } + .fillSubmenu = [&](not_null menu) { + MuteMenu::FillMuteMenu(menu, thread, show); }, }); } @@ -302,6 +302,7 @@ private: void addViewAsMessages(); void addSearchTopics(); void addDeleteTopic(); + void addVideoChat(); not_null _controller; Dialogs::EntryState _request; @@ -572,7 +573,7 @@ void Filler::addToggleFolder() { .text = tr::lng_filters_menu_add(tr::now), .handler = nullptr, .icon = &st::menuIconAddToFolder, - .fillSubmenu = [=](not_null menu) { + .fillSubmenu = [&](not_null menu) { FillChooseFilterMenu(controller, menu, history); }, }); @@ -1085,13 +1086,13 @@ void Filler::fillChatsListActions() { addCreateTopic(); addInfo(); addViewAsMessages(); - addManageChat(); - FillVideoChatMenu(_controller, _request, _addAction); - addNewMembers(); const auto &all = _peer->forum()->topicsList()->indexed()->all(); if (all.size() > kTopicsSearchMinCount) { addSearchTopics(); } + addManageChat(); + addNewMembers(); + addVideoChat(); _addAction(PeerMenuCallback::Args{ .isSeparator = true }); if (_peer->asChannel()->amIn()) { addLeaveChat(); @@ -1100,6 +1101,30 @@ void Filler::fillChatsListActions() { } } +void Filler::addVideoChat() { + auto test = Ui::PopupMenu(nullptr); + FillVideoChatMenu( + _controller, + _request, + Ui::Menu::CreateAddActionCallback(&test)); + if (test.actions().size() < 2) { + FillVideoChatMenu(_controller, _request, _addAction); + return; + } + const auto show = std::make_shared(_controller); + _addAction(PeerMenuCallback::Args{ + .text = tr::lng_menu_start_group_call_options(tr::now), + .handler = nullptr, + .icon = &st::menuIconVideoChat, + .fillSubmenu = [&](not_null menu) { + FillVideoChatMenu( + _controller, + _request, + Ui::Menu::CreateAddActionCallback(menu)); + }, + }); +} + void Filler::fillContextMenuActions() { addHidePromotion(); addToggleArchive(); @@ -2017,14 +2042,14 @@ bool FillVideoChatMenu( addAction( tr::lng_menu_start_group_call_join(tr::now), [=] { callback({}); }, - &st::menuIconStartStream); + &st::menuIconVideoChat); } else if (manager) { addAction( (livestream ? tr::lng_menu_start_group_call_channel : tr::lng_menu_start_group_call)(tr::now), [=] { callback({}); }, - &st::menuIconStartStream); + creator ? &st::menuIconStartStream : &st::menuIconVideoChat); } if (!has && creator) { addAction( diff --git a/Telegram/lib_ui b/Telegram/lib_ui index 09e8850df..c3616927e 160000 --- a/Telegram/lib_ui +++ b/Telegram/lib_ui @@ -1 +1 @@ -Subproject commit 09e8850dfd9a531449afbb730072a206a0784f6e +Subproject commit c3616927ebfcbe98375189be87821bea202d9587