aboutsummaryrefslogtreecommitdiff
path: root/src/QuickMedia.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r--src/QuickMedia.cpp36
1 files changed, 15 insertions, 21 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index 0ec8d1d..fdaf3d1 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -657,8 +657,6 @@ namespace QuickMedia {
}
} else if(handle_searchbar) {
assert(search_bar);
- if(event.type == sf::Event::TextEntered)
- search_bar->onTextEntered(event.text.unicode);
search_bar->on_event(event);
}
}
@@ -1126,8 +1124,6 @@ namespace QuickMedia {
}
if(tabs[selected_tab].search_bar) {
- if(event.type == sf::Event::TextEntered)
- tabs[selected_tab].search_bar->onTextEntered(event.text.unicode);
tabs[selected_tab].search_bar->on_event(event);
}
@@ -2988,8 +2984,6 @@ namespace QuickMedia {
redraw = true;
} else if(event.type == sf::Event::GainedFocus) {
redraw = true;
- } else if(event.type == sf::Event::TextEntered) {
- inputs[focused_input]->onTextEntered(event.text.unicode);
} else if(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Tab) {
for(int i = 0; i < num_inputs; ++i) {
inputs[i]->caret_visible = false;
@@ -3047,9 +3041,9 @@ namespace QuickMedia {
static const sf::Vector2i CHAT_MESSAGE_THUMBNAIL_MAX_SIZE(600, 337);
- static std::shared_ptr<BodyItem> message_to_body_item(Message *message, UserInfo *me) {
+ static std::shared_ptr<BodyItem> message_to_body_item(RoomData *room, Message *message, const std::string &my_display_name, const std::string &my_user_id) {
auto body_item = BodyItem::create("");
- body_item->set_author(message->user->display_name);
+ body_item->set_author(room->get_user_display_name(message->user));
body_item->set_description(message_get_body_remove_formatting(message));
body_item->set_timestamp(message->timestamp);
if(!message->thumbnail_url.empty()) {
@@ -3059,7 +3053,7 @@ namespace QuickMedia {
body_item->thumbnail_url = message->url;
body_item->thumbnail_size = message->thumbnail_size;
} else {
- body_item->thumbnail_url = message->user->avatar_url;
+ body_item->thumbnail_url = room->get_user_avatar_url(message->user);
body_item->thumbnail_mask_type = ThumbnailMaskType::CIRCLE;
// if construct is not configured to use ImageMagic then it wont give thumbnails of size 32x32 even when requested and the spec says that the server SHOULD do that
body_item->thumbnail_size = sf::Vector2i(32, 32);
@@ -3070,15 +3064,15 @@ namespace QuickMedia {
body_item->userdata = (void*)message; // Note: message has to be valid as long as body_item is used!
if(message->related_event_type == RelatedEventType::REDACTION || message->related_event_type == RelatedEventType::EDIT)
body_item->visible = false;
- if(me && (message_contains_user_mention(message->body, me->display_name) || message_contains_user_mention(message->body, me->user_id)))
+ if(message_contains_user_mention(message->body, my_display_name) || message_contains_user_mention(message->body, my_user_id))
body_item->set_description_color(sf::Color(255, 100, 100));
return body_item;
}
- static BodyItems messages_to_body_items(const Messages &messages, UserInfo *me) {
+ static BodyItems messages_to_body_items(RoomData *room, const Messages &messages, const std::string &my_display_name, const std::string &my_user_id) {
BodyItems result_items(messages.size());
for(size_t i = 0; i < messages.size(); ++i) {
- result_items[i] = message_to_body_item(messages[i].get(), me);
+ result_items[i] = message_to_body_item(room, messages[i].get(), my_display_name, my_user_id);
}
return result_items;
}
@@ -3190,10 +3184,10 @@ namespace QuickMedia {
// TODO: What if these never end up referencing events? clean up automatically after a while?
std::unordered_map<RoomData*, Messages> unreferenced_event_by_room;
- auto set_body_as_deleted = [](Message *message, BodyItem *body_item) {
+ auto set_body_as_deleted = [&current_room](Message *message, BodyItem *body_item) {
body_item->embedded_item = nullptr;
body_item->embedded_item_status = FetchStatus::NONE;
- body_item->thumbnail_url = message->user->avatar_url;
+ body_item->thumbnail_url = current_room->get_user_avatar_url(message->user);
body_item->thumbnail_mask_type = ThumbnailMaskType::CIRCLE;
body_item->set_description_color(sf::Color::White);
body_item->thumbnail_size = sf::Vector2i(32, 32);
@@ -3306,7 +3300,8 @@ namespace QuickMedia {
for(auto &message : all_messages) {
fetched_messages_set.insert(message->event_id);
}
- tabs[MESSAGES_TAB_INDEX].body->insert_items_by_timestamps(messages_to_body_items(all_messages, matrix->get_me(current_room).get()));
+ auto me = matrix->get_me(current_room);
+ tabs[MESSAGES_TAB_INDEX].body->insert_items_by_timestamps(messages_to_body_items(current_room, all_messages, current_room->get_user_display_name(me), me->user_id));
modify_related_messages_in_current_room(all_messages);
tabs[MESSAGES_TAB_INDEX].body->select_last_item();
@@ -3577,7 +3572,7 @@ namespace QuickMedia {
}
};
- auto add_new_messages_to_current_room = [this, &tabs, &selected_tab, &current_room](Messages &messages) {
+ auto add_new_messages_to_current_room = [&me, &tabs, &selected_tab, &current_room](Messages &messages) {
if(messages.empty())
return;
@@ -3587,7 +3582,7 @@ namespace QuickMedia {
scroll_to_end = true;
BodyItem *selected_item = tabs[MESSAGES_TAB_INDEX].body->get_selected();
- tabs[MESSAGES_TAB_INDEX].body->insert_items_by_timestamps(messages_to_body_items(messages, matrix->get_me(current_room).get()));
+ tabs[MESSAGES_TAB_INDEX].body->insert_items_by_timestamps(messages_to_body_items(current_room, messages, current_room->get_user_display_name(me), me->user_id));
if(selected_item && !scroll_to_end) {
int selected_item_index = tabs[MESSAGES_TAB_INDEX].body->get_index_by_body_item(selected_item);
if(selected_item_index != -1)
@@ -3896,7 +3891,6 @@ namespace QuickMedia {
if((chat_state == ChatState::TYPING_MESSAGE || chat_state == ChatState::REPLYING || chat_state == ChatState::EDITING) && selected_tab == MESSAGES_TAB_INDEX && !frame_skip_text_entry) {
frame_skip_text_entry = false;
if(event.type == sf::Event::TextEntered) {
- //chat_input.onTextEntered(event.text.unicode);
// TODO: Also show typing event when ctrl+v pasting?
if(event.text.unicode != 13) { // Return key
start_typing_timer.restart();
@@ -4094,7 +4088,7 @@ namespace QuickMedia {
size_t num_new_messages = new_messages.size();
if(num_new_messages > 0) {
BodyItem *selected_item = tabs[MESSAGES_TAB_INDEX].body->get_selected();
- BodyItems new_body_items = messages_to_body_items(new_messages, matrix->get_me(current_room).get());
+ BodyItems new_body_items = messages_to_body_items(current_room, new_messages, current_room->get_user_display_name(me), me->user_id);
size_t num_new_body_items = new_body_items.size();
tabs[MESSAGES_TAB_INDEX].body->insert_items_by_timestamps(std::move(new_body_items));
if(selected_item) {
@@ -4124,7 +4118,7 @@ namespace QuickMedia {
if(fetch_message_tab == PINNED_TAB_INDEX) {
PinnedEventData *event_data = static_cast<PinnedEventData*>(fetch_body_item->userdata);
if(message) {
- *fetch_body_item = *message_to_body_item(message.get(), matrix->get_me(current_room).get());
+ *fetch_body_item = *message_to_body_item(current_room, message.get(), current_room->get_user_display_name(me), me->user_id);
event_data->status = FetchStatus::FINISHED_LOADING;
event_data->message = message.get();
fetch_body_item->userdata = event_data;
@@ -4134,7 +4128,7 @@ namespace QuickMedia {
}
} else if(fetch_message_tab == MESSAGES_TAB_INDEX) {
if(message) {
- fetch_body_item->embedded_item = message_to_body_item(message.get(), matrix->get_me(current_room).get());
+ fetch_body_item->embedded_item = message_to_body_item(current_room, message.get(), current_room->get_user_display_name(me), me->user_id);
fetch_body_item->embedded_item_status = FetchStatus::FINISHED_LOADING;
} else {
fetch_body_item->embedded_item_status = FetchStatus::FAILED_TO_LOAD;