From 75c610d1f65d741bbeba9f1ddeef60a6e9315427 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 7 Feb 2022 22:54:20 +0100 Subject: Use one struct for all args in Page::submit instead of multiple args (easier to add new fields without changing code) Also remove submit_body_item from page. --- src/QuickMedia.cpp | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) (limited to 'src/QuickMedia.cpp') diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp index 5a57022..5a3932e 100644 --- a/src/QuickMedia.cpp +++ b/src/QuickMedia.cpp @@ -203,11 +203,8 @@ namespace QuickMedia { HistoryPage(Program *program, Page *search_page, HistoryType history_type) : LazyFetchPage(program), search_page(search_page), history_type(history_type) {} const char* get_title() const override { return "History"; } - PluginResult submit(const std::string &title, const std::string &url, std::vector &result_tabs) override { - search_page->submit_body_item = submit_body_item; - PluginResult result = search_page->submit(title, url, result_tabs); - search_page->submit_body_item = nullptr; - return result; + PluginResult submit(const SubmitArgs &args, std::vector &result_tabs) override { + return search_page->submit(args, result_tabs); } PluginResult lazy_fetch(BodyItems &result_items) override { switch(history_type) { @@ -234,8 +231,8 @@ namespace QuickMedia { OptionsPage(Program *program, std::string title) : Page(program), title(std::move(title)) {} const char* get_title() const override { return title.c_str(); } - PluginResult submit(const std::string&, const std::string &url, std::vector&) override { - const int handlers_index = atoi(url.c_str()); + PluginResult submit(const SubmitArgs &args, std::vector&) override { + const int handlers_index = atoi(args.url.c_str()); handlers[handlers_index](); program->set_go_to_previous_page(); return PluginResult::OK; @@ -1835,8 +1832,6 @@ namespace QuickMedia { std::vector new_tabs; BodyItems new_body_items; const bool search_suggestion_submitted = tab_associated_data[selected_tab].search_suggestion_submitted; - auto prev_selected_item = tabs[selected_tab].page->submit_body_item; - tabs[selected_tab].page->submit_body_item = selected_item; if((tabs[selected_tab].page->is_single_page() || (tabs[selected_tab].page->search_is_suggestion() && !search_suggestion_submitted)) && tab_associated_data[selected_tab].fetch_future.valid()) @@ -1848,11 +1843,18 @@ namespace QuickMedia { } auto plugin_submit_handler = [&tabs, selected_tab, &selected_item, &search_text, &new_tabs, &new_body_items, search_suggestion_submitted]() { + SubmitArgs submit_args; + submit_args.title = selected_item ? selected_item->get_title() : search_text; + submit_args.url = selected_item ? selected_item->url : search_text; + submit_args.thumbnail_url = selected_item ? selected_item->thumbnail_url : ""; + submit_args.userdata = selected_item ? selected_item->userdata : nullptr; + submit_args.extra = selected_item ? selected_item->extra : nullptr; + if(tabs[selected_tab].page->search_is_suggestion() && !search_suggestion_submitted) { - PluginResult plugin_result = tabs[selected_tab].page->submit_suggestion(selected_item ? selected_item->get_title() : search_text, selected_item ? selected_item->url : search_text, new_body_items); + PluginResult plugin_result = tabs[selected_tab].page->submit_suggestion(submit_args, new_body_items); return plugin_result == PluginResult::OK; } else { - PluginResult plugin_result = tabs[selected_tab].page->submit(selected_item ? selected_item->get_title() : search_text, selected_item ? selected_item->url : search_text, new_tabs); + PluginResult plugin_result = tabs[selected_tab].page->submit(submit_args, new_tabs); return plugin_result == PluginResult::OK; } }; @@ -1889,11 +1891,9 @@ namespace QuickMedia { if(tabs[selected_tab].search_bar) tabs[selected_tab].search_bar->clear(); if(new_tabs.size() == 1 && !new_tabs[0].page) { tabs[selected_tab].body = std::move(new_tabs[0].body); - tabs[selected_tab].page->submit_body_item = nullptr; return; } else if(new_tabs.empty()) { loop_running = false; - tabs[selected_tab].page->submit_body_item = prev_selected_item; return; } } @@ -1902,13 +1902,11 @@ namespace QuickMedia { if(tabs[selected_tab].search_bar) tabs[selected_tab].search_bar->set_text(selected_item ? selected_item->get_title() : search_text, false); tabs[selected_tab].body->set_items(std::move(new_body_items)); - tabs[selected_tab].page->submit_body_item = nullptr; tab_associated_data[selected_tab].search_suggestion_submitted = true; return; } if(new_tabs.empty()) { - tabs[selected_tab].page->submit_body_item = prev_selected_item; return; } @@ -2023,7 +2021,6 @@ namespace QuickMedia { tab.page->on_navigate_to_page(tab.body.get()); } - tabs[selected_tab].page->submit_body_item = prev_selected_item; redraw = true; idle_active_handler(); hide_virtual_keyboard(); @@ -7450,9 +7447,14 @@ namespace QuickMedia { return; std::vector new_tabs; - TaskResult task_result = run_task_with_loading_screen([selected, &file_manager_page, &new_tabs]() { - file_manager_page->submit_body_item = selected; - return file_manager_page->submit(selected->get_title(), selected->url, new_tabs) == PluginResult::OK; + TaskResult task_result = run_task_with_loading_screen([&]() { + SubmitArgs submit_args; + submit_args.title = selected->get_title(); + submit_args.url = selected->url; + submit_args.thumbnail_url = selected->thumbnail_url; + submit_args.userdata = selected->userdata; + submit_args.extra = selected->extra; + return file_manager_page->submit(submit_args, new_tabs) == PluginResult::OK; }); if(task_result == TaskResult::TRUE) { -- cgit v1.2.3