From 5c27b5fbaa0f1693bf4605a3e6fc57d0f066c0ec Mon Sep 17 00:00:00 2001 From: dec05eba Date: Fri, 12 Nov 2021 22:37:23 +0100 Subject: Allow plugins to add their own tabs in ctrl+r instead of search, comments, related and channel --- src/plugins/ImageBoard.cpp | 4 ---- src/plugins/Lbry.cpp | 12 ------------ src/plugins/MediaGeneric.cpp | 14 +++++--------- src/plugins/Peertube.cpp | 12 ------------ src/plugins/Youtube.cpp | 27 +++++++-------------------- 5 files changed, 12 insertions(+), 57 deletions(-) (limited to 'src/plugins') diff --git a/src/plugins/ImageBoard.cpp b/src/plugins/ImageBoard.cpp index f813068..b87e4bb 100644 --- a/src/plugins/ImageBoard.cpp +++ b/src/plugins/ImageBoard.cpp @@ -6,10 +6,6 @@ namespace QuickMedia { sf::Clipboard::setString(sf::String::fromUtf8(body_item->get_description().begin(), body_item->get_description().end())); } - std::unique_ptr ImageBoardThreadPage::create_related_videos_page(Program*) { - return nullptr; - } - PluginResult ImageBoardThreadPage::login(const std::string &token, const std::string &pin, std::string &response_msg) { (void)token; (void)pin; diff --git a/src/plugins/Lbry.cpp b/src/plugins/Lbry.cpp index 239a269..50da718 100644 --- a/src/plugins/Lbry.cpp +++ b/src/plugins/Lbry.cpp @@ -373,18 +373,6 @@ namespace QuickMedia { return PluginResult::OK; } - std::unique_ptr LbryVideoPage::create_comments_page(Program*) { - return nullptr; - } - - std::unique_ptr LbryVideoPage::create_related_videos_page(Program*) { - return nullptr; - } - - std::unique_ptr LbryVideoPage::create_channels_page(Program*, const std::string&) { - return nullptr; - } - // TODO: Support |max_height|. This can be done by gettin video source hash and checking for sd_hash and then resolution. // If max_height is below max resolution height then choose the sd_hash version (replace hash in video stream with sd hash for the lower quality version) std::string LbryVideoPage::get_download_url(int max_height) { diff --git a/src/plugins/MediaGeneric.cpp b/src/plugins/MediaGeneric.cpp index 713c7f7..dd70efc 100644 --- a/src/plugins/MediaGeneric.cpp +++ b/src/plugins/MediaGeneric.cpp @@ -193,14 +193,10 @@ namespace QuickMedia { return result_items; } - bool MediaGenericVideoPage::create_search_page(Program*, Tab &tab) { - tab.body = create_body(false, true); - tab.page = std::make_unique(*search_page); - tab.search_bar = create_search_bar("Search...", 500); // TODO: Make search delay configurable? - return true; - } - - std::unique_ptr MediaGenericVideoPage::create_related_videos_page(Program *program) { - return std::make_unique(program, search_page); + PluginResult MediaGenericVideoPage::get_related_pages(const BodyItems &related_videos, const std::string&, std::vector &result_tabs) { + auto related_page_body = create_body(false, true); + related_page_body->set_items(related_videos); + result_tabs.push_back(Tab{std::move(related_page_body), std::make_unique(program, search_page), create_search_bar("Search...", SEARCH_DELAY_FILTER)}); + return PluginResult::OK; } } \ No newline at end of file diff --git a/src/plugins/Peertube.cpp b/src/plugins/Peertube.cpp index b83daf5..2e7fec4 100644 --- a/src/plugins/Peertube.cpp +++ b/src/plugins/Peertube.cpp @@ -298,18 +298,6 @@ namespace QuickMedia { return get_page("", 0, result_items); } - std::unique_ptr PeertubeVideoPage::create_comments_page(Program*) { - return nullptr; - } - - std::unique_ptr PeertubeVideoPage::create_related_videos_page(Program*) { - return nullptr; - } - - std::unique_ptr PeertubeVideoPage::create_channels_page(Program*, const std::string&) { - return nullptr; - } - static std::string get_ext_from_url(const std::string &url) { const size_t dot_index = url.rfind('.'); if(dot_index == std::string::npos) diff --git a/src/plugins/Youtube.cpp b/src/plugins/Youtube.cpp index 40b6970..c7a9e5c 100644 --- a/src/plugins/Youtube.cpp +++ b/src/plugins/Youtube.cpp @@ -2167,26 +2167,13 @@ namespace QuickMedia { return result_items; } - bool YoutubeVideoPage::create_search_page(Program *program, Tab &tab) { - std::string video_id; - youtube_url_extract_id(url, video_id); - - tab.body = create_body(false, false); - tab.page = std::make_unique(program, std::move(video_id)); - tab.search_bar = create_search_bar("Search...", 100); - return true; - } - - std::unique_ptr YoutubeVideoPage::create_comments_page(Program *program) { - return std::make_unique(program, url, comments_continuation_token); - } - - std::unique_ptr YoutubeVideoPage::create_related_videos_page(Program *program) { - return std::make_unique(program); - } - - std::unique_ptr YoutubeVideoPage::create_channels_page(Program *program, const std::string &channel_url) { - return std::make_unique(program, channel_url, "", "Channel videos"); + PluginResult YoutubeVideoPage::get_related_pages(const BodyItems &related_videos, const std::string &channel_url, std::vector &result_tabs) { + auto related_page_body = create_body(false, true); + related_page_body->set_items(related_videos); + result_tabs.push_back(Tab{create_body(), std::make_unique(program, url, comments_continuation_token), nullptr}); + result_tabs.push_back(Tab{std::move(related_page_body), std::make_unique(program), create_search_bar("Search...", SEARCH_DELAY_FILTER)}); + result_tabs.push_back(Tab{create_body(false, true), std::make_unique(program, channel_url, "", "Channel videos"), create_search_bar("Search...", 350)}); + return PluginResult::OK; } static std::map http_params_parse(const std::string &http_params) { -- cgit v1.2.3-70-g09d2