diff options
author | dec05eba <dec05eba@protonmail.com> | 2021-04-16 23:36:37 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2021-04-16 23:36:37 +0200 |
commit | 78f01f5d041ba291aca05f768bb71eba71ebb58e (patch) | |
tree | e63c4992ff642813770f5ac093fa0eb57e69eb97 /src/plugins | |
parent | 1376a92ef6d6a6418efefbcde5e01d1958e52fd5 (diff) |
Add a combined manga search page, highlight urls ending with ?
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/MangaCombined.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
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<MangaPlugin> 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<Tab> &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 |