/* 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 "ui/effects/send_action_animations.h" #include "api/api_send_progress.h" class UserData; namespace Main { class Session; } // namespace Main namespace Api { enum class SendProgressType; struct SendProgress; } // namespace Api namespace HistoryView { class SendActionPainter final { public: explicit SendActionPainter(not_null history); bool paint( Painter &p, int x, int y, int availableWidth, int outerWidth, style::color color, crl::time now); void paintSpeaking( Painter &p, int x, int y, int outerWidth, style::color color, crl::time now); bool updateNeedsAnimating( crl::time now, bool force = false); bool updateNeedsAnimating( not_null user, const MTPSendMessageAction &action); void clear(not_null from); private: const not_null _history; const base::weak_ptr _weak; const style::TextStyle &_st; base::flat_map, crl::time> _typing; base::flat_map, crl::time> _speaking; base::flat_map, Api::SendProgress> _sendActions; QString _sendActionString; Ui::Text::String _sendActionText; Ui::SendActionAnimation _sendActionAnimation; Ui::SendActionAnimation _speakingAnimation; int _animationLeft = 0; int _spacesCount = 0; }; } // namespace HistoryView