/* This file is part of Telegram Desktop, the official desktop application for the Telegram messaging service. For license and copyright information please follow this link: https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #pragma once #include "boxes/abstract_box.h" #include "data/data_peer.h" namespace Ui { class RoundButton; class VerticalLayout; } // namespace Ui namespace Window { class SessionNavigation; } // namespace Window class EditPeerPermissionsBox : public Ui::BoxContent { public: EditPeerPermissionsBox( QWidget*, not_null navigation, not_null peer); struct Result { MTPDchatBannedRights::Flags rights; int slowmodeSeconds = 0; }; rpl::producer saveEvents() const; protected: void prepare() override; private: Fn addSlowmodeSlider(not_null container); void addSlowmodeLabels(not_null container); void addBannedButtons(not_null container); const not_null _navigation; const not_null _peer; Ui::RoundButton *_save = nullptr; Fn _value; }; template struct EditFlagsControl { object_ptr widget; Fn value; rpl::producer changes; }; EditFlagsControl CreateEditRestrictions( QWidget *parent, rpl::producer header, MTPDchatBannedRights::Flags restrictions, std::map disabledMessages); EditFlagsControl CreateEditAdminRights( QWidget *parent, rpl::producer header, MTPDchatAdminRights::Flags rights, std::map disabledMessages, bool isGroup, bool anyoneCanAddMembers); ChatAdminRights DisabledByDefaultRestrictions(not_null peer); ChatRestrictions FixDependentRestrictions(ChatRestrictions restrictions); ChatAdminRights FullAdminRights(bool isGroup);