diff options
author | dec05eba <dec05eba@protonmail.com> | 2022-02-07 22:54:20 +0100 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2022-02-07 22:55:11 +0100 |
commit | 75c610d1f65d741bbeba9f1ddeef60a6e9315427 (patch) | |
tree | 0dd79a5a7f35c89b9672d55fbf24cb1f6de13aa9 /src/QuickMedia.cpp | |
parent | 9539a71dbeafdc4107d3b92eefada332ee45579a (diff) |
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.
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r-- | src/QuickMedia.cpp | 40 |
1 files changed, 21 insertions, 19 deletions
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<Tab> &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<Tab> &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<Tab>&) override { - const int handlers_index = atoi(url.c_str()); + PluginResult submit(const SubmitArgs &args, std::vector<Tab>&) 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<Tab> 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<Tab> 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) { |