aboutsummaryrefslogtreecommitdiff
path: root/src/QuickMedia.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r--src/QuickMedia.cpp64
1 files changed, 37 insertions, 27 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index 52452d4..dc23892 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -1222,7 +1222,7 @@ namespace QuickMedia {
if(youtube_url.empty()) {
start_tab_index = 1;
tabs.push_back(Tab{create_body(false, true), std::make_unique<YoutubeSubscriptionsPage>(this), create_search_bar("Search...", SEARCH_DELAY_FILTER)});
- tabs.push_back(Tab{create_body(false, true), std::make_unique<YoutubeSearchPage>(this), create_search_bar("Search...", 350)});
+ tabs.push_back(Tab{create_body(false, false), std::make_unique<YoutubeSearchPage>(this), create_search_bar("Search...", 100)});
auto recommended_page = std::make_unique<YoutubeRecommendedPage>(this);
tabs.push_back(Tab{create_body(false, true), std::move(recommended_page), create_search_bar("Search...", SEARCH_DELAY_FILTER)});
@@ -1708,9 +1708,6 @@ namespace QuickMedia {
tab_associated_data.push_back(std::move(data));
}
- //std::string autocomplete_text;
- //bool autocomplete_running = false;
-
double gradient_inc = 0.0;
const float gradient_height = 5.0f;
@@ -1733,12 +1730,19 @@ namespace QuickMedia {
hide_virtual_keyboard();
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;
- auto plugin_submit_handler = [&tabs, selected_tab, &selected_item, &search_text, &new_tabs]() {
- 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);
- return plugin_result == PluginResult::OK;
+ auto plugin_submit_handler = [&tabs, selected_tab, &selected_item, &search_text, &new_tabs, &new_body_items, search_suggestion_submitted]() {
+ 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);
+ 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);
+ return plugin_result == PluginResult::OK;
+ }
};
TaskResult submit_result;
@@ -1769,11 +1773,11 @@ namespace QuickMedia {
}
}
- if(tabs[selected_tab].page->is_single_page()) {
+ if(tabs[selected_tab].page->is_single_page() && !tabs[selected_tab].page->search_is_suggestion()) {
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 = prev_selected_item;
+ tabs[selected_tab].page->submit_body_item = nullptr;
return;
} else if(new_tabs.empty()) {
loop_running = false;
@@ -1782,6 +1786,15 @@ namespace QuickMedia {
}
}
+ if(tabs[selected_tab].page->search_is_suggestion() && !search_suggestion_submitted) {
+ 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;
+ if(tabs[selected_tab].search_bar)
+ tabs[selected_tab].search_bar->clear();
+ return;
+ }
+
if(new_tabs.empty()) {
tabs[selected_tab].page->submit_body_item = prev_selected_item;
return;
@@ -1909,6 +1922,7 @@ namespace QuickMedia {
&& !tab_associated_data[selected_tab].fetching_next_page_failed
&& (!tabs[selected_tab].search_bar || !tabs[selected_tab].page->search_is_filter() || tabs[selected_tab].search_bar->is_empty())
&& tabs[selected_tab].body->get_num_visible_items() > 0
+ && (!tabs[selected_tab].page->search_is_suggestion() || tab_associated_data[selected_tab].search_suggestion_submitted)
&& tabs[selected_tab].page->is_ready()
&& (!tabs[selected_tab].page->is_lazy_fetch_page() || tab_associated_data[selected_tab].lazy_fetch_finished))
{
@@ -1940,12 +1954,6 @@ namespace QuickMedia {
TabAssociatedData &associated_data = tab_associated_data[i];
if(tab.search_bar) {
- // tab.search_bar->autocomplete_search_delay = current_plugin->get_autocomplete_delay();
- // tab.search_bar->onAutocompleteRequestCallback = [this, &tabs, &selected_tab, &autocomplete_text](const std::string &text) {
- // if(tabs[selected_tab].body == body && !current_plugin->search_is_filter())
- // autocomplete_text = text;
- // };
-
tab.search_bar->onTextUpdateCallback = [&associated_data, &tabs, i](const std::string &text) {
if(!tabs[i].page->search_is_filter()) {
associated_data.update_search_text = text;
@@ -2000,8 +2008,6 @@ namespace QuickMedia {
else if(event.type == sf::Event::KeyPressed) {
if(event.key.code == sf::Keyboard::Escape) {
return false;
- } else if(event.key.code == sf::Keyboard::Tab) {
- if(tabs[selected_tab].search_bar) tabs[selected_tab].search_bar->set_to_autocomplete();
} else if(event.key.code == sf::Keyboard::Enter) {
if(!tabs[selected_tab].search_bar) {
BodyItem *selected_item = tabs[selected_tab].body->get_selected();
@@ -2162,11 +2168,13 @@ namespace QuickMedia {
if(associated_data.search_text_updated && associated_data.fetch_status == FetchStatus::NONE && !associated_data.fetching_next_page_running) {
std::string update_search_text = associated_data.update_search_text;
+ if(!tabs[i].page->search_is_suggestion() || associated_data.search_suggestion_submitted)
+ tabs[i].body->clear_items();
associated_data.search_text_updated = false;
- tabs[i].body->clear_items();
associated_data.fetch_status = FetchStatus::LOADING;
associated_data.fetch_type = FetchType::SEARCH;
associated_data.search_result_text.setString("Searching...");
+ associated_data.search_suggestion_submitted = false;
Page *page = tabs[i].page.get();
associated_data.fetch_future = AsyncTask<FetchResult>([update_search_text, page]() {
FetchResult fetch_result;
@@ -2937,18 +2945,18 @@ namespace QuickMedia {
window.setMouseCursorVisible(true);
cursor_visible = true;
- int search_delay = 0;
- auto search_page = video_page->create_search_page(this, search_delay);
+ Tab search_page_tab;
+ const bool search_page_created = video_page->create_search_page(this, search_page_tab);
auto comments_page = video_page->create_comments_page(this);
auto related_videos_page = video_page->create_related_videos_page(this);
auto channels_page = video_page->create_channels_page(this, channel_url);
- if(search_page || related_videos_page || channels_page) {
+ if(search_page_created || related_videos_page || channels_page) {
XUnmapWindow(disp, video_player_window);
XSync(disp, False);
std::vector<Tab> tabs;
- if(search_page) {
- tabs.push_back(Tab{create_body(false, true), std::move(search_page), create_search_bar("Search...", search_delay)});
+ if(search_page_created) {
+ tabs.push_back(std::move(search_page_tab));
}
if(comments_page) {
tabs.push_back(Tab{create_body(), std::move(comments_page), nullptr});
@@ -4755,12 +4763,15 @@ namespace QuickMedia {
//message->related_event_id.clear();
//message->related_event_type = RelatedEventType::NONE;
Message *original_message = static_cast<Message*>(body_item->userdata);
- if(original_message) {
+ if(original_message && !is_system_message_type(original_message->type)) {
body_item->thumbnail_url = current_room->get_user_avatar_url(original_message->user);
body_item->thumbnail_mask_type = ThumbnailMaskType::CIRCLE;
}
body_item->set_description("Message deleted");
- body_item->set_description_color(get_current_theme().text_color);
+ if(original_message && is_system_message_type(original_message->type))
+ body_item->set_description_color(get_current_theme().faded_text_color);
+ else
+ body_item->set_description_color(get_current_theme().text_color);
body_item->thumbnail_size = AVATAR_THUMBNAIL_SIZE;
body_item->url.clear();
};
@@ -6995,8 +7006,7 @@ namespace QuickMedia {
if(task_result == TaskResult::TRUE) {
if(!new_tabs.empty()) {
- new_tabs[0].body->move_items_to(file_manager_body.get());
- file_manager_body->select_first_item();
+ file_manager_body = std::move(new_tabs[0].body);
search_bar->clear();
}
} else if(task_result == TaskResult::FALSE) {