tomato-testing/src/chat_gui4.hpp

70 lines
1.7 KiB
C++
Raw Normal View History

2023-07-28 18:03:45 +02:00
#pragma once
#include <solanaceae/message3/registry_message_model.hpp>
2023-07-29 20:07:59 +02:00
#include <solanaceae/util/config_model.hpp>
2023-07-28 18:03:45 +02:00
#include "./texture_uploader.hpp"
#include "./texture_cache.hpp"
2023-08-01 13:21:16 +02:00
#include "./tox_avatar_loader.hpp"
#include "./message_image_loader.hpp"
2023-07-28 18:03:45 +02:00
#include "./file_selector.hpp"
#include "./send_image_popup.hpp"
2023-07-28 18:03:45 +02:00
#include <vector>
#include <set>
class ChatGui4 {
2023-07-29 20:07:59 +02:00
ConfigModelI& _conf;
2023-07-28 18:03:45 +02:00
RegistryMessageModel& _rmm;
Contact3Registry& _cr;
2023-08-01 13:21:16 +02:00
ToxAvatarLoader _tal;
TextureCache<void*, Contact3, ToxAvatarLoader> _contact_tc;
MessageImageLoader _mil;
TextureCache<void*, Message3Handle, MessageImageLoader> _msg_tc;
2023-07-28 18:03:45 +02:00
FileSelector _fss;
SendImagePopup _sip;
2023-07-28 18:03:45 +02:00
std::optional<Contact3> _selected_contact;
2023-09-01 21:13:36 +02:00
// TODO: per contact
std::string _text_input_buffer;
bool _show_chat_extra_info {false};
bool _show_chat_avatar_tf {false};
2023-07-28 18:03:45 +02:00
float TEXT_BASE_WIDTH {1};
float TEXT_BASE_HEIGHT {1};
public:
ChatGui4(
2023-07-29 20:07:59 +02:00
ConfigModelI& conf,
2023-07-28 18:03:45 +02:00
RegistryMessageModel& rmm,
Contact3Registry& cr,
TextureUploaderI& tu
);
public:
2024-01-07 16:33:08 +01:00
void render(float time_delta);
2023-07-28 18:03:45 +02:00
public:
bool any_unread {false};
2023-10-18 14:23:27 +02:00
void sendFilePath(const char* file_path);
2023-07-28 18:03:45 +02:00
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);
2023-08-06 16:07:50 +02:00
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);
2023-07-28 18:03:45 +02:00
};