aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/MangaGeneric.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/MangaGeneric.cpp')
-rw-r--r--src/plugins/MangaGeneric.cpp34
1 files changed, 29 insertions, 5 deletions
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<DescriptionQuery> queries) {
+ description_queries = std::move(queries);
+ return *this;
+ }
+
MangaGenericSearchPage& MangaGenericSearchPage::thumbnail_handler(std::vector<ThumbnailQuery> queries) {
thumbnail_queries = std::move(queries);
return *this;