/* 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 "base/required.h" #include "data/business/data_business_common.h" #include "settings/settings_common_session.h" class FilterChatsPreview; namespace Ui { class VerticalLayout; } // namespace Ui namespace Window { class SessionController; } // namespace Window namespace Settings { template class BusinessSection : public Section { public: BusinessSection( QWidget *parent, not_null controller) : Section(parent) , _controller(controller) { } [[nodiscard]] not_null controller() const { return _controller; } [[nodiscard]] rpl::producer<> showFinishes() const { return _showFinished.events(); } private: void showFinished() override { _showFinished.fire({}); } const not_null _controller; rpl::event_stream<> _showFinished; }; struct BusinessChatsDescriptor { Data::BusinessChats current; Fn save; bool usersOnly = false; bool include = false; }; void EditBusinessChats( not_null window, BusinessChatsDescriptor &&descriptor); not_null SetupBusinessChatsPreview( not_null container, not_null*> data); struct BusinessRecipientsSelectorDescriptor { not_null controller; rpl::producer title; not_null*> data; base::required type; }; void AddBusinessRecipientsSelector( not_null container, BusinessRecipientsSelectorDescriptor &&descriptor); [[nodiscard]] int ShortcutsCount(not_null session); [[nodiscard]] rpl::producer ShortcutsCountValue( not_null session); [[nodiscard]] int ShortcutMessagesCount( not_null session, const QString &name); [[nodiscard]] rpl::producer ShortcutMessagesCountValue( not_null session, const QString &name); [[nodiscard]] bool ShortcutExists( not_null session, const QString &name); [[nodiscard]] rpl::producer ShortcutExistsValue( not_null session, const QString &name); [[nodiscard]] int ShortcutsLimit(not_null session); [[nodiscard]] rpl::producer ShortcutsLimitValue( not_null session); [[nodiscard]] int ShortcutMessagesLimit(not_null session); [[nodiscard]] rpl::producer ShortcutMessagesLimitValue( not_null session); [[nodiscard]] BusinessShortcutId LookupShortcutId( not_null session, const QString &name); } // namespace Settings