/* 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_chat_participant_status.h" namespace Ui { class RoundButton; class VerticalLayout; } // namespace Ui namespace Window { class SessionController; class SessionNavigation; } // namespace Window class EditPeerPermissionsBox : public Ui::BoxContent { public: EditPeerPermissionsBox( QWidget*, not_null navigation, not_null peer); struct Result { ChatRestrictions rights; int slowmodeSeconds = 0; }; rpl::producer saveEvents() const; protected: void prepare() override; private: Fn addSlowmodeSlider(not_null container); void addSlowmodeLabels(not_null container); void addSuggestGigagroup(not_null container); void addBannedButtons(not_null container); const not_null _navigation; const not_null _peer; Ui::RoundButton *_save = nullptr; Fn _value; }; [[nodiscard]] Fn AboutGigagroupCallback( not_null channel, not_null controller); template struct EditFlagsControl { object_ptr widget; Fn value; rpl::producer changes; }; EditFlagsControl CreateEditRestrictions( QWidget *parent, rpl::producer header, ChatRestrictions restrictions, std::map disabledMessages); EditFlagsControl CreateEditAdminRights( QWidget *parent, rpl::producer header, ChatAdminRights rights, std::map disabledMessages, bool isGroup, bool anyoneCanAddMembers); ChatAdminRights DisabledByDefaultRestrictions(not_null peer); ChatRestrictions FixDependentRestrictions(ChatRestrictions restrictions); ChatAdminRights AdminRightsForOwnershipTransfer(bool isGroup);