aboutsummaryrefslogtreecommitdiff
path: root/src/QuickMedia.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2022-11-02 19:29:18 +0100
committerdec05eba <dec05eba@protonmail.com>2022-11-02 19:29:18 +0100
commit089818f9078c53de7ff9e6596eb7eb82cc8d6727 (patch)
tree908ff69e1e95f10c4330cf75c647fe13bfb5a3d5 /src/QuickMedia.cpp
parent53316e4bada29f1392df2528d8616afde17f570b (diff)
Matrix: update room info in ui when receiving updates
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r--src/QuickMedia.cpp65
1 files changed, 42 insertions, 23 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index fbf2006..432dccb 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -5462,6 +5462,23 @@ namespace QuickMedia {
bool move_room = false;
+ const float room_name_text_height = std::floor(18.0f * get_config().scale * get_config().font_scale);
+ mgl::Text room_name_text("", *FontLoader::get_font(FontLoader::FontType::LATIN_BOLD, room_name_text_height));
+ const float room_name_text_padding_y = std::floor(10.0f * get_config().scale);
+ const float room_name_total_height = room_name_text_height + room_name_text_padding_y * 2.0f;
+ const float room_avatar_height = 32.0f;
+
+ const float room_topic_text_height = std::floor(12.0f * get_config().scale * get_config().font_scale);
+ mgl::Text room_topic_text("", *FontLoader::get_font(FontLoader::FontType::LATIN, room_topic_text_height));
+ room_topic_text.set_color(get_theme().faded_text_color);
+
+ mgl::Text room_label(matrix_chat_page->rooms_page->get_title(), *FontLoader::get_font(FontLoader::FontType::LATIN_BOLD, 18 * get_config().scale * get_config().font_scale));
+ room_label.set_position(mgl::vec2f(15.0f, room_name_text_padding_y + 4.0f));
+
+ mgl::Sprite room_avatar_sprite;
+ auto room_avatar_thumbnail_data = std::make_shared<ThumbnailData>();
+ bool avatar_applied = false;
+
std::vector<ChatTab> tabs;
ChatTab pinned_tab;
@@ -5494,7 +5511,27 @@ namespace QuickMedia {
matrix_chat_page->chat_body = tabs[MESSAGES_TAB_INDEX].body.get();
matrix_chat_page->messages_tab_visible = true;
- matrix_chat_page->set_current_room(current_room, tabs[USERS_TAB_INDEX].body.get());
+ matrix_chat_page->set_current_room(current_room, tabs[USERS_TAB_INDEX].body.get(),
+ [&](const MatrixEventRoomInfo &room_info) {
+ if(room_info.name) {
+ window.set_title(("QuickMedia - matrix - " + room_info.name.value()).c_str());
+ std::string room_name = current_room->get_name();
+ string_replace_all(room_name, '\n', ' ');
+ room_name_text.set_string(std::move(room_name));
+ }
+
+ if(room_info.topic) {
+ std::string room_topic = current_room->get_topic();
+ string_replace_all(room_topic, '\n', ' ');
+ room_topic_text.set_string(std::move(room_topic));
+ }
+
+ if(room_info.avatar_url) {
+ room_avatar_sprite.set_texture(nullptr);
+ room_avatar_thumbnail_data.reset();
+ avatar_applied = false;
+ }
+ });
size_t prev_num_users_in_room = 0;
bool redraw = true;
@@ -5560,22 +5597,6 @@ namespace QuickMedia {
logo_sprite.set_scale(mgl::vec2f(0.8f * get_config().scale, 0.8f * get_config().scale));
mgl::vec2f logo_size(plugin_logo.get_size().x * logo_sprite.get_scale().x, plugin_logo.get_size().y * logo_sprite.get_scale().y);
- const float room_name_text_height = std::floor(18.0f * get_config().scale * get_config().font_scale);
- mgl::Text room_name_text("", *FontLoader::get_font(FontLoader::FontType::LATIN_BOLD, room_name_text_height));
- const float room_name_text_padding_y = std::floor(10.0f * get_config().scale);
- const float room_name_total_height = room_name_text_height + room_name_text_padding_y * 2.0f;
- const float room_avatar_height = 32.0f;
-
- const float room_topic_text_height = std::floor(12.0f * get_config().scale * get_config().font_scale);
- mgl::Text room_topic_text("", *FontLoader::get_font(FontLoader::FontType::LATIN, room_topic_text_height));
- room_topic_text.set_color(get_theme().faded_text_color);
-
- mgl::Text room_label(matrix_chat_page->rooms_page->get_title(), *FontLoader::get_font(FontLoader::FontType::LATIN_BOLD, 18 * get_config().scale * get_config().font_scale));
- room_label.set_position(mgl::vec2f(15.0f, room_name_text_padding_y + 4.0f));
-
- mgl::Sprite room_avatar_sprite;
- auto room_avatar_thumbnail_data = std::make_shared<ThumbnailData>();
-
bool draw_room_list = show_room_side_panel;
// TODO: What if these never end up referencing events? clean up automatically after a while?
@@ -6364,8 +6385,6 @@ namespace QuickMedia {
const float logo_padding_x = std::floor(10.0f * get_config().scale * get_config().spacing_scale);
const float chat_input_padding_x = std::floor(10.0f * get_config().scale * get_config().spacing_scale);
const float chat_input_padding_y = std::floor(10.0f * get_config().scale * get_config().spacing_scale);
-
- bool avatar_applied = false;
auto jump_to_message = [&](const std::string &event_id) {
const int selected_tab = ui_tabs.get_selected();
@@ -7245,7 +7264,7 @@ namespace QuickMedia {
break;
}
case PageType::CHAT_LOGIN: {
- matrix_chat_page->set_current_room(nullptr, nullptr);
+ matrix_chat_page->set_current_room(nullptr, nullptr, nullptr);
fetch_messages_future.cancel();
cleanup_tasks();
tabs.clear();
@@ -7660,7 +7679,7 @@ namespace QuickMedia {
if(matrix && !matrix->is_initial_sync_finished()) {
std::string err_msg;
if(matrix->did_initial_sync_fail(err_msg)) {
- matrix_chat_page->set_current_room(nullptr, nullptr);
+ matrix_chat_page->set_current_room(nullptr, nullptr, nullptr);
fetch_messages_future.cancel();
cleanup_tasks();
tabs.clear();
@@ -7696,7 +7715,7 @@ namespace QuickMedia {
while(!matrix->is_initial_sync_finished()) {
std::this_thread::sleep_for(std::chrono::milliseconds(10));
if(matrix->did_initial_sync_fail(err_msg)) {
- matrix_chat_page->set_current_room(nullptr, nullptr);
+ matrix_chat_page->set_current_room(nullptr, nullptr, nullptr);
fetch_messages_future.cancel();
cleanup_tasks();
tabs.clear();
@@ -7753,7 +7772,7 @@ namespace QuickMedia {
}
chat_page_end:
- matrix_chat_page->set_current_room(nullptr, nullptr);
+ matrix_chat_page->set_current_room(nullptr, nullptr, nullptr);
fetch_messages_future.cancel();
cleanup_tasks();
window.set_title("QuickMedia - matrix");