aboutsummaryrefslogtreecommitdiff
path: root/src/QuickMedia.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2022-02-07 22:54:20 +0100
committerdec05eba <dec05eba@protonmail.com>2022-02-07 22:55:11 +0100
commit75c610d1f65d741bbeba9f1ddeef60a6e9315427 (patch)
tree0dd79a5a7f35c89b9672d55fbf24cb1f6de13aa9 /src/QuickMedia.cpp
parent9539a71dbeafdc4107d3b92eefada332ee45579a (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.cpp40
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) {