aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/MangaCombined.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2021-04-16 23:36:37 +0200
committerdec05eba <dec05eba@protonmail.com>2021-04-16 23:36:37 +0200
commit78f01f5d041ba291aca05f768bb71eba71ebb58e (patch)
treee63c4992ff642813770f5ac093fa0eb57e69eb97 /src/plugins/MangaCombined.cpp
parent1376a92ef6d6a6418efefbcde5e01d1958e52fd5 (diff)
Add a combined manga search page, highlight urls ending with ?
Diffstat (limited to 'src/plugins/MangaCombined.cpp')
-rw-r--r--src/plugins/MangaCombined.cpp55
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