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