/* 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 namespace Data { struct AiComposeTone; } // namespace Data namespace Main { class Session; } // namespace Main namespace Ui { class AbstractButton; class FlatLabel; class GenericBox; class InputField; class Show; class VerticalLayout; } // namespace Ui // Turns an Ui::InputField into a tone-style island: a rounded opaque // background painted behind the field plus a gray placeholder label that // fades and shifts on typing. Returns the placeholder label so callers can // observe its height (e.g. for auto-grow min-height computations). not_null AddAiComposeFieldDecor( not_null field, rpl::producer placeholder); not_null AddAiToneIconPreview( not_null container, not_null session, rpl::producer emojiIdValue, Fn emojiIdChosen = nullptr); void CreateAiToneBox( not_null box, not_null session, Fn saved = nullptr); void EditAiToneBox( not_null box, not_null session, const Data::AiComposeTone &tone, Fn saved = nullptr); void ConfirmDeleteAiTone( std::shared_ptr show, not_null session, const Data::AiComposeTone &tone, Fn done = nullptr); void ShowAiComposeToneLimitError( std::shared_ptr show, not_null session);