From 78f01f5d041ba291aca05f768bb71eba71ebb58e Mon Sep 17 00:00:00 2001 From: dec05eba Date: Fri, 16 Apr 2021 23:36:37 +0200 Subject: Add a combined manga search page, highlight urls ending with ? --- src/plugins/MangaCombined.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/plugins/MangaCombined.cpp (limited to 'src/plugins') diff --git a/src/plugins/MangaCombined.cpp b/src/plugins/MangaCombined.cpp new file mode 100644 index 0000000..8b989fb --- /dev/null +++ b/src/plugins/MangaCombined.cpp @@ -0,0 +1,55 @@ +#include "../../plugins/MangaCombined.hpp" + +namespace QuickMedia { + MangaCombinedSearchPage::MangaCombinedSearchPage(Program *program, std::vector search_pages) : + Page(program), search_pages(std::move(search_pages)) + { + + } + + SearchResult MangaCombinedSearchPage::search(const std::string &str, BodyItems &result_items) { + for(auto &search_page : search_pages) { + BodyItems search_page_body_items; + search_page.page->search(str, search_page_body_items); + if(search_page_body_items.empty()) + continue; + + auto title_item = BodyItem::create(""); + title_item->set_author("======================== " + search_page.title + " ========================"); + title_item->url = search_page.service_name; + + result_items.push_back(std::move(title_item)); + for(auto &new_body_item : search_page_body_items) { + new_body_item->userdata = search_page.page.get(); + } + result_items.insert(result_items.end(), std::move_iterator(search_page_body_items.begin()), std::move_iterator(search_page_body_items.end())); + } + return SearchResult::OK; + } + + PluginResult MangaCombinedSearchPage::get_page(const std::string &str, int page, BodyItems &result_items) { + for(auto &search_page : search_pages) { + BodyItems search_page_body_items; + search_page.page->get_page(str, page, search_page_body_items); + if(search_page_body_items.empty()) + continue; + + auto title_item = BodyItem::create(""); + title_item->set_author("======================== " + search_page.title + " ========================"); + title_item->url = search_page.service_name; + + result_items.push_back(std::move(title_item)); + for(auto &new_body_item : search_page_body_items) { + new_body_item->userdata = search_page.page.get(); + } + result_items.insert(result_items.end(), std::move_iterator(search_page_body_items.begin()), std::move_iterator(search_page_body_items.end())); + } + return PluginResult::OK; + } + + PluginResult MangaCombinedSearchPage::submit(const std::string &title, const std::string &url, std::vector &result_tabs) { + Page *page = (Page*)submit_body_item->userdata; + if(!page) return PluginResult::OK; + return page->submit(title, url, result_tabs); + } +} \ No newline at end of file -- cgit v1.2.3