aboutsummaryrefslogtreecommitdiff
path: root/src/QuickMedia.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r--src/QuickMedia.cpp49
1 files changed, 22 insertions, 27 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index c528056..fc3cba6 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -71,7 +71,6 @@ extern "C" {
static int FPS_IDLE;
static const double IDLE_TIMEOUT_SEC = 2.0;
static const mgl::vec2i AVATAR_THUMBNAIL_SIZE(std::floor(32), std::floor(32));
-static const float more_items_height = 2.0f;
static const int FPS_SYNC_TO_VSYNC = 0;
static const std::pair<const char*, const char*> valid_plugins[] = {
@@ -5319,17 +5318,10 @@ namespace QuickMedia {
return load_cached_related_embedded_item(body_item, message, me.get(), current_room->get_user_display_name(me), me->user_id, message_body_items);
}
- static std::string message_to_qm_text(Message *message) {
- if(message->body_is_formatted)
- return formatted_text_to_qm_text(message->body.c_str(), message->body.size(), true);
- else
- return message->body;
- }
-
- 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) {
+ static std::shared_ptr<BodyItem> message_to_body_item(Matrix *matrix, 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(extract_first_line_remove_newline_elipses(room->get_user_display_name(message->user), AUTHOR_MAX_LENGTH));
- body_item->set_description(strip(message_to_qm_text(message)));
+ body_item->set_description(strip(message_to_qm_text(matrix, message)));
body_item->set_timestamp(message->timestamp);
if(!message->thumbnail_url.empty()) {
body_item->thumbnail_url = message->thumbnail_url;
@@ -5364,10 +5356,10 @@ namespace QuickMedia {
return body_item;
}
- static BodyItems messages_to_body_items(RoomData *room, const Messages &messages, const std::string &my_display_name, const std::string &my_user_id) {
+ static BodyItems messages_to_body_items(Matrix *matrix, 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(room, messages[i].get(), my_display_name, my_user_id);
+ result_items[i] = message_to_body_item(matrix, room, messages[i].get(), my_display_name, my_user_id);
}
return result_items;
}
@@ -5659,10 +5651,10 @@ namespace QuickMedia {
// TODO: Properly check reply message objects for mention of user instead of message data, but only when synapse fixes that notifications
// are not triggered by reply to a message with our display name/user id.
Message *edited_message_ref = static_cast<Message*>(body_item->userdata);
- std::string qm_formatted_text = message_to_qm_text(message.get());
+ std::string qm_formatted_text = message_to_qm_text(matrix, message.get());
body_item->set_description(std::move(qm_formatted_text));
- if(message->user != me && message_contains_user_mention(message.get(), my_display_name, me->user_id))
+ if(message->user != me && message_contains_user_mention(matrix, message.get(), my_display_name, me->user_id))
body_item->set_description_color(get_theme().attention_alert_text_color, true);
else
body_item->set_description_color(get_theme().text_color);
@@ -5700,10 +5692,10 @@ namespace QuickMedia {
// TODO: Properly check reply message objects for mention of user instead of message data, but only when synapse fixes that notifications
// are not triggered by reply to a message with our display name/user id.
Message *edited_message_ref = static_cast<Message*>(body_item->userdata);
- std::string qm_formatted_text = formatted_text_to_qm_text(message->body.c_str(), message->body.size(), true);
+ std::string qm_formatted_text = formatted_text_to_qm_text(matrix, message->body.c_str(), message->body.size(), true);
body_item->set_description(std::move(qm_formatted_text));
- if(message->user != me && message_contains_user_mention(message.get(), my_display_name, me->user_id))
+ if(message->user != me && message_contains_user_mention(matrix, message.get(), my_display_name, me->user_id))
body_item->set_description_color(get_theme().attention_alert_text_color, true);
else
body_item->set_description_color(get_theme().text_color);
@@ -5832,7 +5824,7 @@ namespace QuickMedia {
fetched_messages_set.insert(message->event_id);
}
auto me = matrix->get_me(current_room);
- auto new_body_items = messages_to_body_items(current_room, all_messages, current_room->get_user_display_name(me), me->user_id);
+ auto new_body_items = messages_to_body_items(matrix, current_room, all_messages, current_room->get_user_display_name(me), me->user_id);
messages_load_cached_related_embedded_item(new_body_items, tabs[MESSAGES_TAB_INDEX].body->get_items(), me, current_room);
tabs[MESSAGES_TAB_INDEX].body->insert_items_by_timestamps(std::move(new_body_items));
modify_related_messages_in_current_room(all_messages);
@@ -6143,7 +6135,7 @@ namespace QuickMedia {
message->type = MessageType::REACTION;
message->related_event_type = RelatedEventType::REACTION;
message->related_event_id = static_cast<Message*>(related_to_message)->event_id;
- auto body_item = message_to_body_item(current_room, message.get(), current_room->get_user_avatar_url(me), me->user_id);
+ auto body_item = message_to_body_item(matrix, current_room, message.get(), current_room->get_user_avatar_url(me), me->user_id);
load_cached_related_embedded_item(body_item.get(), message.get(), me, current_room, tabs[MESSAGES_TAB_INDEX].body->get_items());
tabs[MESSAGES_TAB_INDEX].body->insert_items_by_timestamps({body_item});
Messages messages;
@@ -6158,7 +6150,7 @@ namespace QuickMedia {
return provisional_message;
});
} else {
- auto body_item = message_to_body_item(current_room, message.get(), current_room->get_user_avatar_url(me), me->user_id);
+ auto body_item = message_to_body_item(matrix, current_room, message.get(), current_room->get_user_avatar_url(me), me->user_id);
body_item->set_description_color(get_theme().provisional_message_color);
load_cached_related_embedded_item(body_item.get(), message.get(), me, current_room, tabs[MESSAGES_TAB_INDEX].body->get_items());
tabs[MESSAGES_TAB_INDEX].body->insert_items_by_timestamps({body_item});
@@ -6183,7 +6175,7 @@ namespace QuickMedia {
void *related_to_message = currently_operating_on_item->userdata;
message->related_event_type = RelatedEventType::REPLY;
message->related_event_id = static_cast<Message*>(related_to_message)->event_id;
- auto body_item = message_to_body_item(current_room, message.get(), current_room->get_user_avatar_url(me), me->user_id);
+ auto body_item = message_to_body_item(matrix, current_room, message.get(), current_room->get_user_avatar_url(me), me->user_id);
body_item->set_description_color(get_theme().provisional_message_color);
load_cached_related_embedded_item(body_item.get(), message.get(), me, current_room, tabs[MESSAGES_TAB_INDEX].body->get_items());
tabs[MESSAGES_TAB_INDEX].body->insert_items_by_timestamps({body_item});
@@ -6212,13 +6204,13 @@ namespace QuickMedia {
auto body_item = find_body_item_by_event_id(tabs[MESSAGES_TAB_INDEX].body->get_items().data(), tabs[MESSAGES_TAB_INDEX].body->get_items().size(), message->related_event_id, &body_item_index);
if(body_item) {
const std::string formatted_text = matrix->body_to_formatted_body(current_room, text);
- std::string qm_formatted_text = formatted_text_to_qm_text(formatted_text.c_str(), formatted_text.size(), true);
+ std::string qm_formatted_text = formatted_text_to_qm_text(matrix, formatted_text.c_str(), formatted_text.size(), true);
auto body_item_shared_ptr = tabs[MESSAGES_TAB_INDEX].body->get_item_by_index(body_item_index);
body_item_shared_ptr->set_description(std::move(qm_formatted_text));
body_item_shared_ptr->set_description_color(get_theme().provisional_message_color);
- auto edit_body_item = message_to_body_item(current_room, message.get(), current_room->get_user_avatar_url(me), me->user_id);
+ auto edit_body_item = message_to_body_item(matrix, current_room, message.get(), current_room->get_user_avatar_url(me), me->user_id);
edit_body_item->visible = false;
load_cached_related_embedded_item(edit_body_item.get(), message.get(), me, current_room, tabs[MESSAGES_TAB_INDEX].body->get_items());
tabs[MESSAGES_TAB_INDEX].body->insert_items_by_timestamps({edit_body_item});
@@ -6466,7 +6458,7 @@ namespace QuickMedia {
}
all_messages.insert(all_messages.end(), message_list->begin(), message_list->end());
- auto new_body_items = messages_to_body_items(current_room, *message_list, current_room->get_user_display_name(me), me->user_id);
+ auto new_body_items = messages_to_body_items(matrix, current_room, *message_list, current_room->get_user_display_name(me), me->user_id);
messages_load_cached_related_embedded_item(new_body_items, tabs[MESSAGES_TAB_INDEX].body->get_items(), me, current_room);
tabs[MESSAGES_TAB_INDEX].body->insert_items_by_timestamps(std::move(new_body_items));
modify_related_messages_in_current_room(*message_list);
@@ -6536,7 +6528,7 @@ namespace QuickMedia {
}
};
- auto add_new_messages_to_current_room = [&me, &tabs, &ui_tabs, &current_room, MESSAGES_TAB_INDEX, &after_token](Messages &messages) {
+ auto add_new_messages_to_current_room = [this, &me, &tabs, &ui_tabs, &current_room, MESSAGES_TAB_INDEX, &after_token](Messages &messages) {
if(messages.empty())
return;
@@ -6555,7 +6547,7 @@ namespace QuickMedia {
if(!after_token.empty())
scroll_to_end = false;
- auto new_body_items = messages_to_body_items(current_room, messages, current_room->get_user_display_name(me), me->user_id);
+ auto new_body_items = messages_to_body_items(matrix, current_room, messages, current_room->get_user_display_name(me), me->user_id);
messages_load_cached_related_embedded_item(new_body_items, tabs[MESSAGES_TAB_INDEX].body->get_items(), me, current_room);
tabs[MESSAGES_TAB_INDEX].body->insert_items_by_timestamps(std::move(new_body_items));
if(scroll_to_end)
@@ -7489,7 +7481,7 @@ namespace QuickMedia {
if(fetch_message_tab == PINNED_TAB_INDEX) {
PinnedEventData *event_data = static_cast<PinnedEventData*>(fetch_body_item->userdata);
if(fetch_message_result.message) {
- *fetch_body_item = *message_to_body_item(current_room, fetch_message_result.message.get(), current_room->get_user_display_name(me), me->user_id);
+ *fetch_body_item = *message_to_body_item(matrix, current_room, fetch_message_result.message.get(), current_room->get_user_display_name(me), me->user_id);
event_data->status = FetchStatus::FINISHED_LOADING;
event_data->message = fetch_message_result.message.get();
fetch_body_item->userdata = event_data;
@@ -7499,7 +7491,7 @@ namespace QuickMedia {
}
} else if(fetch_message_tab == MESSAGES_TAB_INDEX) {
if(fetch_message_result.message) {
- fetch_body_item->embedded_item = message_to_body_item(current_room, fetch_message_result.message.get(), current_room->get_user_display_name(me), me->user_id);
+ fetch_body_item->embedded_item = message_to_body_item(matrix, current_room, fetch_message_result.message.get(), current_room->get_user_display_name(me), me->user_id);
fetch_body_item->embedded_item_status = FetchStatus::FINISHED_LOADING;
if(fetch_message_result.message->user == me)
fetch_body_item->set_description_color(get_theme().attention_alert_text_color, true);
@@ -7846,6 +7838,9 @@ namespace QuickMedia {
auto matrix_room_directory_page = std::make_unique<MatrixRoomDirectoryPage>(this, matrix);
auto settings_body = create_body();
+ auto custom_emoji_body_item = BodyItem::create("Custom emoji");
+ custom_emoji_body_item->url = "emoji";
+ settings_body->append_item(std::move(custom_emoji_body_item));
auto join_body_item = BodyItem::create("Join room");
join_body_item->url = "join";
settings_body->append_item(std::move(join_body_item));