From 7f0bdeddb79c308ab082a124441f1d69d665dbfc Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sun, 18 Apr 2021 17:18:31 +0200 Subject: Fix misc matrix bugs related to leaving a room when side panel is visible and changing room, misc visual changes to manga --- src/plugins/MangaGeneric.cpp | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) (limited to 'src/plugins/MangaGeneric.cpp') diff --git a/src/plugins/MangaGeneric.cpp b/src/plugins/MangaGeneric.cpp index ebfbdda..8a17040 100644 --- a/src/plugins/MangaGeneric.cpp +++ b/src/plugins/MangaGeneric.cpp @@ -13,7 +13,7 @@ namespace QuickMedia { enum class MergeType { THUMBNAIL, - UPLOAD_TIME + DESCRIPTION }; struct HtmlMergeUserdata { @@ -21,6 +21,7 @@ namespace QuickMedia { BodyItemContext body_item_image_context; const char *field_name = nullptr; const char *field_contains = nullptr; + const char *desc_prefix = nullptr; }; struct HtmlListPageImagesUserdata { @@ -85,9 +86,10 @@ namespace QuickMedia { { if(merge_userdata->type == MergeType::THUMBNAIL) { (*body_item_image_context.body_items)[body_item_image_context.index]->thumbnail_url = strip(field_value); - } else if(merge_userdata->type == MergeType::UPLOAD_TIME) { + } else if(merge_userdata->type == MergeType::DESCRIPTION) { std::string uploaded_date = strip(field_value); - (*body_item_image_context.body_items)[body_item_image_context.index]->set_description("Uploaded: " + uploaded_date); + (*body_item_image_context.body_items)[body_item_image_context.index]->set_description(merge_userdata->desc_prefix ? merge_userdata->desc_prefix : "" + uploaded_date); + (*body_item_image_context.body_items)[body_item_image_context.index]->set_description_color(sf::Color(179, 179, 179)); } body_item_image_context.index++; } @@ -181,8 +183,23 @@ namespace QuickMedia { if(result != 0) goto cleanup; + for(const DescriptionQuery &description_query : description_queries) { + assert(description_query.html_query && description_query.field_name); + if(description_query.html_query && description_query.field_name) { + HtmlMergeUserdata merge_userdata; + merge_userdata.type = MergeType::DESCRIPTION; + merge_userdata.body_item_image_context.body_items = &new_result_items; + merge_userdata.body_item_image_context.index = 0; + merge_userdata.field_name = description_query.field_name; + merge_userdata.field_contains = nullptr; + result = html_body_item_merge(&html_search, description_query.html_query, &merge_userdata); + if(result != 0) + goto cleanup; + } + } + for(const ThumbnailQuery &thumbnail_query : thumbnail_queries) { - assert(!thumbnail_query.html_query || thumbnail_query.field_name); + assert(thumbnail_query.html_query && thumbnail_query.field_name); if(thumbnail_query.html_query && thumbnail_query.field_name) { HtmlMergeUserdata merge_userdata; merge_userdata.type = MergeType::THUMBNAIL; @@ -217,6 +234,7 @@ namespace QuickMedia { new_body_item->url = target_url; } } + result_items.insert(result_items.end(), std::move_iterator(new_result_items.begin()), std::move_iterator(new_result_items.end())); } @@ -271,11 +289,12 @@ namespace QuickMedia { assert(!list_chapters_query.uploaded_time_html_query || list_chapters_query.uploaded_time_field_name); if(list_chapters_query.uploaded_time_html_query && list_chapters_query.uploaded_time_field_name) { HtmlMergeUserdata merge_userdata; - merge_userdata.type = MergeType::UPLOAD_TIME; + merge_userdata.type = MergeType::DESCRIPTION; merge_userdata.body_item_image_context.body_items = &chapters_items; merge_userdata.body_item_image_context.index = 0; merge_userdata.field_name = list_chapters_query.uploaded_time_field_name; merge_userdata.field_contains = list_chapters_query.uploaded_time_field_contains; + merge_userdata.desc_prefix = "Uploaded: "; result = html_body_item_merge(&html_search, list_chapters_query.uploaded_time_html_query, &merge_userdata); } @@ -605,6 +624,11 @@ namespace QuickMedia { return *this; } + MangaGenericSearchPage& MangaGenericSearchPage::description_handler(std::vector queries) { + description_queries = std::move(queries); + return *this; + } + MangaGenericSearchPage& MangaGenericSearchPage::thumbnail_handler(std::vector queries) { thumbnail_queries = std::move(queries); return *this; -- cgit v1.2.3