Added mute submenu to top bar in sections.

This commit is contained in:
23rd 2022-03-28 21:11:37 +03:00 committed by John Preston
parent 4bcd9de2b0
commit 2f7017b305

View file

@ -29,6 +29,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
#include "ui/toasts/common_toasts.h" #include "ui/toasts/common_toasts.h"
#include "main/main_session.h" #include "main/main_session.h"
#include "main/main_session_settings.h" #include "main/main_session_settings.h"
#include "menu/menu_mute.h"
#include "apiwrap.h" #include "apiwrap.h"
#include "mainwidget.h" #include "mainwidget.h"
#include "mainwindow.h" #include "mainwindow.h"
@ -122,6 +123,31 @@ void MarkAsReadChatList(not_null<Dialogs::MainList*> list) {
ranges::for_each(mark, MarkAsReadHistory); ranges::for_each(mark, MarkAsReadHistory);
} }
void PeerMenuAddMuteSubmenuAction(
not_null<Window::SessionController*> controller,
not_null<PeerData*> peer,
const PeerMenuCallback &addAction) {
peer->owner().requestNotifySettings(peer);
const auto isMuted = peer->owner().notifyIsMuted(peer);
if (isMuted) {
addAction(tr::lng_mute_menu_unmute(tr::now), [=] {
peer->owner().updateNotifySettings(peer, 0);
}, &st::menuIconUnmute);
} else {
const auto show = std::make_shared<Window::Show>(controller);
addAction(PeerMenuCallback::Args{
.text = tr::lng_mute_menu_mute(tr::now),
.handler = nullptr,
.icon = peer->owner().notifySoundIsNone(peer)
? &st::menuIconSilent
: &st::menuIconMute,
.fillSubmenu = [=](not_null<Ui::PopupMenu*> menu) {
MuteMenu::FillMuteMenu(menu, { peer, show });
},
});
}
}
class Filler { class Filler {
public: public:
Filler( Filler(
@ -143,6 +169,7 @@ private:
void addHidePromotion(); void addHidePromotion();
void addTogglePin(); void addTogglePin();
void addToggleMute(); void addToggleMute();
void addToggleMuteSubmenu(bool addSeparator);
void addSupportInfo(); void addSupportInfo();
void addInfo(); void addInfo();
//void addToFolder(); //void addToFolder();
@ -344,6 +371,16 @@ void Filler::addToggleMute() {
PeerMenuAddMuteAction(_controller, _peer, _addAction); PeerMenuAddMuteAction(_controller, _peer, _addAction);
} }
void Filler::addToggleMuteSubmenu(bool addSeparator) {
if (_peer->isSelf()) {
return;
}
PeerMenuAddMuteSubmenuAction(_controller, _peer, _addAction);
if (addSeparator) {
_addAction(PeerMenuCallback::Args{ .isSeparator = true });
}
}
void Filler::addSupportInfo() { void Filler::addSupportInfo() {
if (!_peer->session().supportMode()) { if (!_peer->session().supportMode()) {
return; return;
@ -746,7 +783,7 @@ void Filler::fillChatsListActions() {
if (ViewProfileInChatsListContextMenu.value()) { if (ViewProfileInChatsListContextMenu.value()) {
addInfo(); addInfo();
} }
addToggleMute(); addToggleMuteSubmenu(false);
addToggleUnreadMark(); addToggleUnreadMark();
// addToFolder(); // addToFolder();
if (const auto user = _peer->asUser()) { if (const auto user = _peer->asUser()) {
@ -760,8 +797,8 @@ void Filler::fillChatsListActions() {
} }
void Filler::fillHistoryActions() { void Filler::fillHistoryActions() {
addToggleMuteSubmenu(true);
addInfo(); addInfo();
addToggleMute();
addSupportInfo(); addSupportInfo();
addManageChat(); addManageChat();
addCreatePoll(); addCreatePoll();