Improve video chat menu for forums.

This commit is contained in:
John Preston 2022-11-01 19:23:52 +04:00
parent 0c514c4b0a
commit cddb2a4bac
7 changed files with 40 additions and 14 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 557 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,022 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -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...";

View file

@ -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 }};

View file

@ -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<Ui::PopupMenu*> menu) {
if (const auto strong = weak.get()) {
MuteMenu::FillMuteMenu(menu, strong, show);
}
.fillSubmenu = [&](not_null<Ui::PopupMenu*> menu) {
MuteMenu::FillMuteMenu(menu, thread, show);
},
});
}
@ -302,6 +302,7 @@ private:
void addViewAsMessages();
void addSearchTopics();
void addDeleteTopic();
void addVideoChat();
not_null<SessionController*> _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<Ui::PopupMenu*> menu) {
.fillSubmenu = [&](not_null<Ui::PopupMenu*> 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<Window::Show>(_controller);
_addAction(PeerMenuCallback::Args{
.text = tr::lng_menu_start_group_call_options(tr::now),
.handler = nullptr,
.icon = &st::menuIconVideoChat,
.fillSubmenu = [&](not_null<Ui::PopupMenu*> 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(

@ -1 +1 @@
Subproject commit 09e8850dfd9a531449afbb730072a206a0784f6e
Subproject commit c3616927ebfcbe98375189be87821bea202d9587