#pragma once #include #include #include "./texture_uploader.hpp" #include "./texture_cache.hpp" #include "./tox_avatar_loader.hpp" #include "./message_image_loader.hpp" #include "./file_selector.hpp" #include "./send_image_popup.hpp" #include #include class ChatGui4 { ConfigModelI& _conf; RegistryMessageModel& _rmm; Contact3Registry& _cr; ToxAvatarLoader _tal; TextureCache _contact_tc; MessageImageLoader _mil; TextureCache _msg_tc; FileSelector _fss; SendImagePopup _sip; std::optional _selected_contact; // TODO: per contact std::string _text_input_buffer; bool _show_chat_extra_info {true}; float TEXT_BASE_WIDTH {1}; float TEXT_BASE_HEIGHT {1}; public: ChatGui4( ConfigModelI& conf, RegistryMessageModel& rmm, Contact3Registry& cr, TextureUploaderI& tu ); public: void render(void); public: bool any_unread {false}; void sendFilePath(const char* file_path); private: void renderMessageBodyText(Message3Registry& reg, const Message3 e); void renderMessageBodyFile(Message3Registry& reg, const Message3 e); void renderMessageExtra(Message3Registry& reg, const Message3 e); void renderContactList(void); bool renderContactListContactBig(const Contact3 c, const bool selected); bool renderContactListContactSmall(const Contact3 c, const bool selected) const; bool renderSubContactListContact(const Contact3 c, const bool selected) const; void pasteFile(const char* mime_type); };