From 933ceeabb339cdf0583a8687528941593381a268 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 21 Jun 2021 06:25:13 +0200 Subject: Add color themeing, (Theme.hpp/Theme.cpp) and the env var QM_THEME --- src/QuickMedia.cpp | 132 ++++++++++++++++++++++++++--------------------------- 1 file changed, 65 insertions(+), 67 deletions(-) (limited to 'src/QuickMedia.cpp') diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp index 9613199..bcd9a53 100644 --- a/src/QuickMedia.cpp +++ b/src/QuickMedia.cpp @@ -28,6 +28,7 @@ #include "../include/ResourceLoader.hpp" #include "../include/Utils.hpp" #include "../include/Tabs.hpp" +#include "../include/Theme.hpp" #include "../include/gui/Button.hpp" #include "../external/hash-library/sha256.h" @@ -50,7 +51,6 @@ #include #include -static const sf::Color back_color(21, 25, 30); static const std::string fourchan_google_captcha_api_key = "6Ldp2bsSAAAAAAJ5uyx_lx34lJeEpTLVkP5k04qc"; static int FPS_IDLE = 2; static const double IDLE_TIMEOUT_SEC = 2.0; @@ -312,7 +312,7 @@ namespace QuickMedia { auto body_item = BodyItem::create(std::move(title)); if(!description.empty()) { body_item->set_description(std::move(description)); - body_item->set_description_color(sf::Color(179, 179, 179)); + body_item->set_description_color(get_current_theme().faded_text_color); } body_item->url = std::to_string(handlers.size()); handlers.push_back(std::move(handler)); @@ -658,6 +658,7 @@ namespace QuickMedia { } set_resource_loader_root_path(resources_root.c_str()); + init_themes(); if(!is_touch_enabled()) { if(!circle_mask_shader.loadFromFile(resources_root + "shaders/circle_mask.glsl", sf::Shader::Type::Fragment)) { @@ -1332,7 +1333,7 @@ namespace QuickMedia { body_item->url = "https://www.youtube.com/watch?v=" + video_id_str; body_item->thumbnail_url = "https://img.youtube.com/vi/" + video_id_str + "/mqdefault.jpg"; body_item->set_description("Watched " + seconds_to_relative_time_str(time_now - timestamp.asInt64())); - body_item->set_description_color(sf::Color(179, 179, 179)); + body_item->set_description_color(get_current_theme().faded_text_color); body_item->thumbnail_size = sf::Vector2i(192, 108); body_items.push_back(std::move(body_item)); } @@ -1411,7 +1412,7 @@ namespace QuickMedia { // TODO: Add thumbnail auto body_item = BodyItem::create(manga_name.asString()); body_item->set_description("Last read " + seconds_to_relative_time_str(now - last_modified_time)); - body_item->set_description_color(sf::Color(179, 179, 179)); + body_item->set_description_color(get_current_theme().faded_text_color); if(strcmp(plugin_name, "manganelo") == 0) body_item->url = "https://manganelo.com/manga/" + base64_decode(filename.string()); @@ -1564,7 +1565,7 @@ namespace QuickMedia { if(!tabs[selected_tab].search_bar) { shade_extra_height = std::floor(10.0f * get_ui_scale()); sf::RectangleShape shade_top(sf::Vector2f(window_size.x, shade_extra_height)); - shade_top.setFillColor(sf::Color(33, 37, 44)); + shade_top.setFillColor(get_current_theme().shade_color); window.draw(shade_top); } @@ -2013,18 +2014,18 @@ namespace QuickMedia { if(tab_associated_data[selected_tab].fetching_next_page_running) { double progress = 0.5 + std::sin(std::fmod(gradient_inc, 360.0) * 0.017453292519943295 - 1.5707963267948966*0.5) * 0.5; gradient_inc += (frame_time_ms * 0.5); - sf::Color bottom_color = interpolate_colors(back_color, sf::Color(175, 180, 188), progress); + sf::Color bottom_color = interpolate_colors(get_current_theme().background_color, get_current_theme().loading_bar_color, progress); if(tabs[selected_tab].body->attach_side == AttachSide::TOP) { - gradient_points[0].color = back_color; - gradient_points[1].color = back_color; + gradient_points[0].color = get_current_theme().background_color; + gradient_points[1].color = get_current_theme().background_color; gradient_points[2].color = bottom_color; gradient_points[3].color = bottom_color; } else if(tabs[selected_tab].body->attach_side == AttachSide::BOTTOM) { gradient_points[0].color = bottom_color; gradient_points[1].color = bottom_color; - gradient_points[2].color = back_color; - gradient_points[3].color = back_color; + gradient_points[2].color = get_current_theme().background_color; + gradient_points[3].color = get_current_theme().background_color; } } @@ -2164,7 +2165,7 @@ namespace QuickMedia { ui_tabs.set_text(i, tab.page->get_title()); } - window.clear(back_color); + window.clear(get_current_theme().background_color); page_loop_render(window, tabs, selected_tab, tab_associated_data[selected_tab], json_chapters, ui_tabs); AsyncImageLoader::get_instance().update(); window.display(); @@ -2331,7 +2332,7 @@ namespace QuickMedia { goto task_end; } - window.clear(back_color); + window.clear(get_current_theme().background_color); load_sprite.setPosition(window_size.x * 0.5f, window_size.y * 0.5f); load_sprite.setRotation(load_sprite_timer.getElapsedTime().asSeconds() * 400.0); window.draw(load_sprite); @@ -2943,7 +2944,7 @@ namespace QuickMedia { AsyncImageLoader::get_instance().update(); if(!video_loaded) { - window.clear(back_color); + window.clear(get_current_theme().background_color); load_sprite.setPosition(window_size.x * 0.5f, window_size.y * 0.5f); load_sprite.setRotation(load_sprite_timer.getElapsedTime().asSeconds() * 400.0); window.draw(load_sprite); @@ -3194,7 +3195,7 @@ namespace QuickMedia { break; } - window.clear(back_color); + window.clear(get_current_theme().background_color); load_sprite.setPosition(window_size.x * 0.5f, window_size.y * 0.5f); load_sprite.setRotation(load_sprite_timer.getElapsedTime().asSeconds() * 400.0); window.draw(load_sprite); @@ -3217,7 +3218,7 @@ namespace QuickMedia { sf::Texture image_texture; sf::Sprite image; sf::Text error_message("", *FontLoader::get_font(FontLoader::FontType::LATIN), std::floor(30 * get_ui_scale())); - error_message.setFillColor(sf::Color::White); + error_message.setFillColor(get_current_theme().text_color); bool download_in_progress = false; sf::Event event; @@ -3381,7 +3382,7 @@ namespace QuickMedia { image.setPosition(std::floor(content_size.x * 0.5f - image_size.x * 0.5f), std::floor(content_size.y * 0.5f - image_size.y * 0.5f)); } - window.clear(back_color); + window.clear(get_current_theme().background_color); if(error) { window.draw(error_message); @@ -3453,7 +3454,7 @@ namespace QuickMedia { while(current_page == PageType::IMAGES_CONTINUOUS && window.isOpen()) { handle_window_close(); - window.clear(back_color); + window.clear(get_current_theme().background_color); ImageViewerAction action = image_viewer.draw(); switch(action) { case ImageViewerAction::NONE: @@ -3514,7 +3515,7 @@ namespace QuickMedia { GoogleCaptchaChallengeInfo challenge_info; sf::Text challenge_description_text("", *FontLoader::get_font(FontLoader::FontType::LATIN), std::floor(24 * get_ui_scale())); - challenge_description_text.setFillColor(sf::Color::White); + challenge_description_text.setFillColor(get_current_theme().text_color); const size_t captcha_num_columns = 3; const size_t captcha_num_rows = 3; std::array selected_captcha_images; @@ -3654,7 +3655,7 @@ namespace QuickMedia { }; sf::RectangleShape comment_input_shade; - comment_input_shade.setFillColor(sf::Color(33, 37, 44)); + comment_input_shade.setFillColor(get_current_theme().shade_color); sf::Sprite logo_sprite(plugin_logo); logo_sprite.setScale(0.8f * get_ui_scale(), 0.8f * get_ui_scale()); @@ -3981,7 +3982,7 @@ namespace QuickMedia { //comment_input.update(); - window.clear(back_color); + window.clear(get_current_theme().background_color); if(navigation_stage == NavigationStage::SOLVING_POST_CAPTCHA) { std::lock_guard lock(captcha_image_mutex); if(captcha_texture.getNativeHandle() != 0) { @@ -4051,7 +4052,7 @@ namespace QuickMedia { window.draw(attached_image_sprite); } else { sf::RectangleShape rect(sf::Vector2f(640.0f, 480.0f)); - rect.setFillColor(sf::Color(52, 58, 70)); + rect.setFillColor(get_current_theme().image_loading_background_color); auto content_size = window_size; auto rect_size = clamp_to_size(rect.getSize(), content_size); rect.setSize(rect_size); @@ -4093,7 +4094,7 @@ namespace QuickMedia { SearchBar *inputs[num_inputs] = { &login_input, &password_input, &homeserver_input }; int focused_input = 0; - RoundedRectangle background(sf::Vector2f(1.0f, 1.0f), 10.0f, sf::Color(33, 37, 44), &rounded_rectangle_shader); + RoundedRectangle background(sf::Vector2f(1.0f, 1.0f), 10.0f, get_current_theme().shade_color, &rounded_rectangle_shader); auto text_submit_callback = [this, inputs](const sf::String&) { for(int i = 0; i < num_inputs; ++i) { @@ -4173,7 +4174,7 @@ namespace QuickMedia { } } - window.clear(back_color); + window.clear(get_current_theme().background_color); background.draw(window); for(int i = 0; i < num_inputs; ++i) { inputs[i]->update(); @@ -4220,9 +4221,9 @@ namespace QuickMedia { body_item->embedded_item->embedded_item = nullptr; body_item->embedded_item->reactions.clear(); if(message->user->user_id != my_user_id && ((related_body_item->userdata && static_cast(related_body_item->userdata)->user.get() == me) || message_contains_user_mention(body_item->get_description(), my_display_name) || message_contains_user_mention(body_item->get_description(), my_user_id))) - body_item->set_description_color(sf::Color(255, 100, 100)); + body_item->set_description_color(get_current_theme().attention_alert_text_color); else - body_item->set_description_color(sf::Color::White); + body_item->set_description_color(get_current_theme().text_color); body_item->embedded_item_status = FetchStatus::FINISHED_LOADING; return true; } @@ -4255,7 +4256,7 @@ namespace QuickMedia { if(message->related_event_type == RelatedEventType::REDACTION || message->related_event_type == RelatedEventType::EDIT || message->related_event_type == RelatedEventType::REACTION) body_item->visible = false; if(message->user->user_id != my_user_id && (message_contains_user_mention(body_item->get_description(), my_display_name) || message_contains_user_mention(body_item->get_description(), my_user_id))) - body_item->set_description_color(sf::Color(255, 100, 100)); + body_item->set_description_color(get_current_theme().attention_alert_text_color); return body_item; } @@ -4367,7 +4368,7 @@ namespace QuickMedia { tab.body->show_drop_shadow = false; } - Tabs ui_tabs(&rounded_rectangle_shader, is_touch_enabled() ? sf::Color::Transparent : back_color); + Tabs ui_tabs(&rounded_rectangle_shader, is_touch_enabled() ? sf::Color::Transparent : get_current_theme().background_color); const int PINNED_TAB_INDEX = ui_tabs.add_tab("Pinned messages (0)", tabs[0].body.get()); const int MESSAGES_TAB_INDEX = ui_tabs.add_tab("Messages", tabs[1].body.get()); const int USERS_TAB_INDEX = ui_tabs.add_tab("Users (0)", tabs[2].body.get()); @@ -4450,7 +4451,7 @@ namespace QuickMedia { const float room_topic_text_height = std::floor(12.0f * get_ui_scale()); sf::Text room_topic_text("", *FontLoader::get_font(FontLoader::FontType::LATIN), room_topic_text_height); - room_topic_text.setFillColor(sf::Color(179, 179, 179)); + room_topic_text.setFillColor(get_current_theme().faded_text_color); sf::Text room_label(matrix_chat_page->rooms_page->get_title(), *FontLoader::get_font(FontLoader::FontType::LATIN_BOLD), std::floor(18 * get_ui_scale())); room_label.setPosition(15.0f, room_name_text_padding_y + 4.0f); @@ -4475,7 +4476,7 @@ namespace QuickMedia { body_item->thumbnail_mask_type = ThumbnailMaskType::CIRCLE; } body_item->set_description("Message deleted"); - body_item->set_description_color(sf::Color::White); + body_item->set_description_color(get_current_theme().text_color); body_item->thumbnail_size = AVATAR_THUMBNAIL_SIZE; body_item->url.clear(); }; @@ -4502,9 +4503,9 @@ namespace QuickMedia { Message *orig_message = get_original_message(reply_to_message); body_item->set_description(strip(message_get_body_remove_formatting(message.get()))); if(message->user != me && (message_contains_user_mention(body_item->get_description(), my_display_name) || message_contains_user_mention(body_item->get_description(), me->user_id) || (orig_message && orig_message->user == me))) - body_item->set_description_color(sf::Color(255, 100, 100)); + body_item->set_description_color(get_current_theme().attention_alert_text_color); else - body_item->set_description_color(sf::Color::White); + body_item->set_description_color(get_current_theme().text_color); message->replaces = reply_to_message; reply_to_message->replaced_by = message; } @@ -4540,9 +4541,9 @@ namespace QuickMedia { Message *orig_message = get_original_message(reply_to_message); body_item->set_description(strip(message_get_body_remove_formatting(message.get()))); if(message->user != me && (message_contains_user_mention(body_item->get_description(), my_display_name) || message_contains_user_mention(body_item->get_description(), me->user_id) || (orig_message && orig_message->user == me))) - body_item->set_description_color(sf::Color(255, 100, 100)); + body_item->set_description_color(get_current_theme().attention_alert_text_color); else - body_item->set_description_color(sf::Color::White); + body_item->set_description_color(get_current_theme().text_color); message->replaces = reply_to_message; reply_to_message->replaced_by = message; } @@ -4897,8 +4898,6 @@ namespace QuickMedia { message->type = MessageType::TEXT; message->timestamp = time(NULL) * 1000; - const sf::Color provisional_message_color(255, 255, 255, 150); - int num_items = tabs[MESSAGES_TAB_INDEX].body->items.size(); bool scroll_to_end = num_items == 0; if(tabs[MESSAGES_TAB_INDEX].body->is_selected_item_last_visible_item() && selected_tab == MESSAGES_TAB_INDEX) @@ -4931,7 +4930,7 @@ namespace QuickMedia { }); } else { auto body_item = message_to_body_item(current_room, message.get(), current_room->get_user_avatar_url(me), me->user_id); - body_item->set_description_color(provisional_message_color); + body_item->set_description_color(get_current_theme().provisional_message_color); load_cached_related_embedded_item(body_item.get(), message.get(), me, current_room, tabs[MESSAGES_TAB_INDEX].body->items); tabs[MESSAGES_TAB_INDEX].body->insert_items_by_timestamps({body_item}); post_task_queue.push([this, ¤t_room, text, msgtype, body_item, message]() { @@ -4956,7 +4955,7 @@ namespace QuickMedia { message->related_event_type = RelatedEventType::REPLY; message->related_event_id = static_cast(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); - body_item->set_description_color(provisional_message_color); + body_item->set_description_color(get_current_theme().provisional_message_color); load_cached_related_embedded_item(body_item.get(), message.get(), me, current_room, tabs[MESSAGES_TAB_INDEX].body->items); tabs[MESSAGES_TAB_INDEX].body->insert_items_by_timestamps({body_item}); post_task_queue.push([this, ¤t_room, text, related_to_message, body_item, message, transaction_id]() { @@ -4982,7 +4981,7 @@ namespace QuickMedia { if(body_item) { auto body_item_shared_ptr = tabs[MESSAGES_TAB_INDEX].body->items[body_item_index]; body_item_shared_ptr->set_description(text); - body_item_shared_ptr->set_description_color(provisional_message_color); + body_item_shared_ptr->set_description_color(get_current_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); edit_body_item->visible = false; @@ -5070,9 +5069,9 @@ namespace QuickMedia { *body_item = *related_body_item; body_item->reactions.clear(); if(message_contains_user_mention(related_body_item->get_description(), current_room->get_user_display_name(me)) || message_contains_user_mention(related_body_item->get_description(), me->user_id)) - body_item->set_description_color(sf::Color(255, 100, 100)); + body_item->set_description_color(get_current_theme().attention_alert_text_color); else - body_item->set_description_color(sf::Color::White); + body_item->set_description_color(get_current_theme().text_color); event_data->status = FetchStatus::FINISHED_LOADING; event_data->message = static_cast(related_body_item->userdata); body_item->userdata = event_data; @@ -5158,10 +5157,10 @@ namespace QuickMedia { }; sf::RectangleShape more_messages_below_rect; - more_messages_below_rect.setFillColor(sf::Color(128, 50, 50)); + more_messages_below_rect.setFillColor(get_current_theme().new_items_alert_color); sf::RectangleShape chat_input_shade; - chat_input_shade.setFillColor(sf::Color(33, 37, 44)); + chat_input_shade.setFillColor(get_current_theme().shade_color); float tab_vertical_offset = 0.0f; @@ -5721,11 +5720,11 @@ namespace QuickMedia { if(!provisional_message->event_id.empty()) { provisional_message->message->event_id = std::move(provisional_message->event_id); - provisional_message->body_item->set_description_color(sf::Color::White); + provisional_message->body_item->set_description_color(get_current_theme().text_color); sent_messages[provisional_message->message->event_id] = std::move(provisional_message.value()); } else if(provisional_message->body_item) { provisional_message->body_item->set_description("Failed to send: " + provisional_message->body_item->get_description()); - provisional_message->body_item->set_description_color(sf::Color::Red); + provisional_message->body_item->set_description_color(get_current_theme().failed_text_color); provisional_message->body_item->userdata = nullptr; } } @@ -5942,7 +5941,7 @@ namespace QuickMedia { 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_status = FetchStatus::FINISHED_LOADING; if(fetch_message_result.message->user == me) - fetch_body_item->set_description_color(sf::Color(255, 100, 100)); + fetch_body_item->set_description_color(get_current_theme().attention_alert_text_color); } else { fetch_body_item->embedded_item_status = FetchStatus::FAILED_TO_LOAD; } @@ -5951,7 +5950,7 @@ namespace QuickMedia { fetch_message_tab = -1; } - window.clear(back_color); + window.clear(get_current_theme().background_color); if(chat_state == ChatState::URL_SELECTION) { url_selection_body.draw(window, body_pos, body_size); @@ -5960,7 +5959,7 @@ namespace QuickMedia { if(selected_tab == MESSAGES_TAB_INDEX && mention.visible && chat_state == ChatState::TYPING_MESSAGE) { sf::RectangleShape user_mention_background(sf::Vector2f(body_size.x, user_mention_body_height)); user_mention_background.setPosition(sf::Vector2f(body_pos.x, body_pos.y + body_size.y - user_mention_body_height)); - user_mention_background.setFillColor(sf::Color(33, 37, 44)); + user_mention_background.setFillColor(get_current_theme().shade_color); window.draw(user_mention_background); tabs[USERS_TAB_INDEX].body->draw(window, user_mention_background.getPosition(), user_mention_background.getSize()); @@ -5992,7 +5991,7 @@ namespace QuickMedia { if(draw_room_list) { sf::RectangleShape room_list_background(sf::Vector2f(this->body_size.x, window_size.y)); //room_list_background.setPosition(this->body_pos); - room_list_background.setFillColor(sf::Color(33, 37, 44)); + room_list_background.setFillColor(get_current_theme().shade_color); glEnable(GL_SCISSOR_TEST); glScissor(0.0f, 0.0f, this->body_size.x, window_size.y); window.draw(room_list_background); @@ -6008,7 +6007,7 @@ namespace QuickMedia { if(previous_messages_future.valid() && selected_tab == MESSAGES_TAB_INDEX) { double progress = 0.5 + std::sin(std::fmod(gradient_inc, 360.0) * 0.017453292519943295 - 1.5707963267948966*0.5) * 0.5; gradient_inc += (frame_time_ms * 0.5); - sf::Color top_color = interpolate_colors(back_color, sf::Color(175, 180, 188), progress); + sf::Color top_color = interpolate_colors(get_current_theme().background_color, get_current_theme().loading_page_color, progress); gradient_points[0].position.x = chat_input_shade.getPosition().x; gradient_points[0].position.y = tab_shade_height; @@ -6024,8 +6023,8 @@ namespace QuickMedia { gradient_points[0].color = top_color; gradient_points[1].color = top_color; - gradient_points[2].color = back_color; - gradient_points[3].color = back_color; + gradient_points[2].color = get_current_theme().background_color; + gradient_points[3].color = get_current_theme().background_color; window.draw(gradient_points, 4, sf::Quads); // Note: sf::Quads doesn't work with egl } @@ -6050,13 +6049,13 @@ namespace QuickMedia { sf::RectangleShape item_background(sf::Vector2f(window_size.x, body_item_size.y + chat_input_height_full + replying_to_text_height + margin)); item_background.setPosition(sf::Vector2f(0.0f, window_size.y - (body_item_size.y + chat_input_height_full + replying_to_text_height + margin))); - item_background.setFillColor(back_color); + item_background.setFillColor(get_current_theme().background_color); window.draw(item_background); if(mention.visible) { sf::RectangleShape user_mention_background(sf::Vector2f(window_size.x, user_mention_body_height)); user_mention_background.setPosition(sf::Vector2f(0.0f, item_background.getPosition().y - user_mention_body_height)); - user_mention_background.setFillColor(sf::Color(33, 37, 44)); + user_mention_background.setFillColor(get_current_theme().shade_color); window.draw(user_mention_background); tabs[USERS_TAB_INDEX].body->draw(window, @@ -6093,9 +6092,9 @@ namespace QuickMedia { room_desc.erase(room_desc.begin() + last_line_start - 1, room_desc.end()); } current_room->body_item->set_description(std::move(room_desc)); - current_room->body_item->set_description_color(sf::Color(179, 179, 179)); + current_room->body_item->set_description_color(get_current_theme().faded_text_color); // TODO: Show a line like nheko instead for unread messages, or something else - current_room->body_item->set_title_color(sf::Color::White); + current_room->body_item->set_title_color(get_current_theme().text_color); current_room->last_message_read = true; // TODO: Maybe set this instead when the mention is visible on the screen? current_room->unread_notification_count = 0; @@ -6670,13 +6669,13 @@ namespace QuickMedia { } idle_active_handler(); - window.clear(back_color); + window.clear(get_current_theme().background_color); window.display(); const float loading_bar_padding_x = std::floor(4.0f * get_ui_scale()); const float loading_bar_padding_y = std::floor(4.0f * get_ui_scale()); - RoundedRectangle loading_bar_background(sf::Vector2f(1.0f, 1.0f), std::floor(10.0f * get_ui_scale()), sf::Color(21, 25, 30), &rounded_rectangle_shader); - RoundedRectangle loading_bar(sf::Vector2f(1.0f, 1.0f), std::floor(10.0f * get_ui_scale() - loading_bar_padding_y), sf::Color(31, 117, 255), &rounded_rectangle_shader); + RoundedRectangle loading_bar_background(sf::Vector2f(1.0f, 1.0f), std::floor(10.0f * get_ui_scale()), get_current_theme().background_color, &rounded_rectangle_shader); + RoundedRectangle loading_bar(sf::Vector2f(1.0f, 1.0f), std::floor(10.0f * get_ui_scale() - loading_bar_padding_y), get_current_theme().loading_bar_color, &rounded_rectangle_shader); const float padding_x = std::floor(30.0f * get_ui_scale()); const float spacing_y = std::floor(15.0f * get_ui_scale()); @@ -6685,9 +6684,9 @@ namespace QuickMedia { sf::Text progress_text("0kb/Unknown", *FontLoader::get_font(FontLoader::FontType::LATIN), std::floor(20.0f * get_ui_scale())); sf::Text status_text("Downloading", *FontLoader::get_font(FontLoader::FontType::LATIN), std::floor(20.0f * get_ui_scale())); sf::Text filename_text(filename.c_str(), *FontLoader::get_font(FontLoader::FontType::LATIN), std::floor(14.0f * get_ui_scale())); - filename_text.setFillColor(sf::Color(179, 179, 179)); + filename_text.setFillColor(get_current_theme().faded_text_color); sf::Text download_speed_text("0 bytes/s", *FontLoader::get_font(FontLoader::FontType::LATIN), std::floor(14.0f * get_ui_scale())); - download_speed_text.setFillColor(sf::Color(179, 179, 179)); + download_speed_text.setFillColor(get_current_theme().faded_text_color); bool redraw = true; sf::Event event; @@ -6779,7 +6778,7 @@ namespace QuickMedia { std::floor((loading_bar_background.get_size().x - loading_bar_padding_x * 2.0f) * ui_progress), loading_bar_height - loading_bar_padding_y * 2.0f)); - window.clear(sf::Color(33, 37, 44)); + window.clear(get_current_theme().shade_color); loading_bar_background.draw(window); loading_bar.draw(window); window.draw(progress_text); @@ -6854,10 +6853,10 @@ namespace QuickMedia { const float bottom_panel_spacing = 10.0f; Button cancel_button("Cancel", FontLoader::get_font(FontLoader::FontType::LATIN), 16, 100.0f, &rounded_rectangle_shader, get_ui_scale()); - cancel_button.set_background_color(sf::Color(41, 45, 50)); + cancel_button.set_background_color(get_current_theme().cancel_button_background_color); Button save_button("Save", FontLoader::get_font(FontLoader::FontType::LATIN), 16, 100.0f, &rounded_rectangle_shader, get_ui_scale()); - save_button.set_background_color(sf::Color(31, 117, 255)); + save_button.set_background_color(get_current_theme().confirm_button_background_color); sf::Text file_name_label("File name:", *FontLoader::get_font(FontLoader::FontType::LATIN), std::floor(16.0f * get_ui_scale())); @@ -6867,11 +6866,9 @@ namespace QuickMedia { file_name_entry.set_editable(false); sf::RectangleShape bottom_panel_background; - bottom_panel_background.setFillColor(sf::Color(33, 37, 44)); + bottom_panel_background.setFillColor(get_current_theme().shade_color); - const sf::Color color(0, 0, 0, 50); const float gradient_height = 5.0f; - sf::Vertex gradient_points[4]; auto save_file = [this, &file_name_entry, &file_manager_page]() -> std::string { @@ -6976,13 +6973,14 @@ namespace QuickMedia { bottom_panel_background.setPosition(0.0f, window_size.y - std::floor(bottom_panel_padding * 2.0f + file_name_entry.get_height())); bottom_panel_background.setSize(sf::Vector2f(window_size.x, std::floor(bottom_panel_padding * 2.0f + file_name_entry.get_height()))); + const sf::Color color(0, 0, 0, 50); gradient_points[0] = sf::Vertex(bottom_panel_background.getPosition() + sf::Vector2f(0.0f, -gradient_height), sf::Color(color.r, color.g, color.b, 0)); gradient_points[1] = sf::Vertex(bottom_panel_background.getPosition() + sf::Vector2f(bottom_panel_background.getSize().x, -gradient_height), sf::Color(color.r, color.g, color.b, 0)); gradient_points[2] = sf::Vertex(bottom_panel_background.getPosition() + sf::Vector2f(bottom_panel_background.getSize().x, 0.0f), color); gradient_points[3] = sf::Vertex(bottom_panel_background.getPosition() + sf::Vector2f(0.0f, 0.0f), color); } - window.clear(back_color); + window.clear(get_current_theme().background_color); ui_tabs.draw(window, sf::Vector2f(0.0f, search_bar->getBottomWithoutShadow()), window_size.x); search_bar->draw(window, window_size, true); -- cgit v1.2.3