aboutsummaryrefslogtreecommitdiff
path: root/src/SearchBar.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/SearchBar.cpp')
-rw-r--r--src/SearchBar.cpp86
1 files changed, 1 insertions, 85 deletions
diff --git a/src/SearchBar.cpp b/src/SearchBar.cpp
index 5909635..c1f9ceb 100644
--- a/src/SearchBar.cpp
+++ b/src/SearchBar.cpp
@@ -21,17 +21,13 @@ namespace QuickMedia {
onTextUpdateCallback(nullptr),
onTextSubmitCallback(nullptr),
onTextBeginTypingCallback(nullptr),
- onAutocompleteRequestCallback(nullptr),
text_autosearch_delay(50),
- autocomplete_search_delay(250),
caret_visible(true),
text(placeholder, *FontLoader::get_font(FontLoader::FontType::LATIN), std::floor(16 * get_ui_scale())),
- autocomplete_text("", *FontLoader::get_font(FontLoader::FontType::LATIN), std::floor(16 * get_ui_scale())),
background(sf::Vector2f(1.0f, 1.0f), 10.0f, get_current_theme().selected_color, rounded_rectangle_shader),
placeholder_str(placeholder),
show_placeholder(true),
updated_search(false),
- updated_autocomplete(false),
draw_logo(false),
needs_update(true),
input_masked(input_masked),
@@ -44,7 +40,6 @@ namespace QuickMedia {
padding_top = padding_top_default;
padding_bottom = padding_bottom_default;
text.setFillColor(get_current_theme().placeholder_text_color);
- autocomplete_text.setFillColor(get_current_theme().placeholder_text_color);
shade.setFillColor(get_current_theme().shade_color);
if(plugin_logo && plugin_logo->getNativeHandle() != 0)
plugin_logo_sprite.setTexture(*plugin_logo, true);
@@ -65,8 +60,7 @@ namespace QuickMedia {
window.draw(shade);
background.draw(window);
- // TODO: Render starting from the character after text length
- window.draw(autocomplete_text);
+
if(input_masked && !show_placeholder) {
std::string masked_str(text.getString().getSize(), '*');
sf::Text masked_text(std::move(masked_str), *text.getFont(), text.getCharacterSize());
@@ -117,7 +111,6 @@ namespace QuickMedia {
if(event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::D && event.key.control) {
clear();
updated_search = true;
- updated_autocomplete = true;
time_since_search_update.restart();
}
@@ -144,13 +137,6 @@ namespace QuickMedia {
if(onTextUpdateCallback)
onTextUpdateCallback(*u8_str);
typing = false;
- } else if(updated_autocomplete && elapsed_time >= autocomplete_search_delay) {
- updated_autocomplete = false;
- if(!show_placeholder && onAutocompleteRequestCallback) {
- auto u8 = text.getString().toUtf8();
- std::string *u8_str = (std::string*)&u8;
- onAutocompleteRequestCallback(*u8_str);
- }
}
}
@@ -184,7 +170,6 @@ namespace QuickMedia {
background.set_position(sf::Vector2f(pos.x + offset_x, pos.y + padding_top));
shade.setPosition(pos);
sf::Vector2f font_position(std::floor(pos.x + offset_x + background_margin_horizontal), std::floor(pos.y + padding_top + background_margin_vertical));
- autocomplete_text.setPosition(font_position);
text.setPosition(font_position);
}
@@ -201,9 +186,6 @@ namespace QuickMedia {
show_placeholder = true;
text.setString(placeholder_str);
text.setFillColor(get_current_theme().placeholder_text_color);
- autocomplete_text.setString("");
- } else {
- clear_autocomplete_if_text_not_substring();
}
if(!updated_search) {
typing = true;
@@ -211,7 +193,6 @@ namespace QuickMedia {
onTextBeginTypingCallback();
}
updated_search = true;
- updated_autocomplete = true;
time_since_search_update.restart();
}
} else if(codepoint == 13) { // Return
@@ -235,10 +216,8 @@ namespace QuickMedia {
show_placeholder = true;
text.setString(placeholder_str);
text.setFillColor(get_current_theme().placeholder_text_color);
- autocomplete_text.setString("");
needs_update = true;
updated_search = false;
- updated_autocomplete = false;
backspace_pressed = false;
}
@@ -256,51 +235,18 @@ namespace QuickMedia {
str += text_to_add;
text.setString(str);
- clear_autocomplete_if_text_not_substring();
if(!updated_search) {
typing = true;
if(onTextBeginTypingCallback)
onTextBeginTypingCallback();
}
updated_search = true;
- updated_autocomplete = true;
time_since_search_update.restart();
backspace_pressed = false;
if(text_to_add.find('\n') != std::string::npos)
needs_update = true;
}
- bool SearchBar::is_cursor_at_start_of_line() const {
- // TODO: When it's possible to move the cursor, then check at the cursor position instead of end of the string
- const sf::String &str = text.getString();
- return show_placeholder || str.getSize() == 0 || str[str.getSize() - 1] == '\n';
- }
-
- void SearchBar::set_to_autocomplete() {
- const sf::String &autocomplete_str = autocomplete_text.getString();
- if(!autocomplete_str.isEmpty()) {
- if(show_placeholder) {
- show_placeholder = false;
- text.setString("");
- text.setFillColor(sf::Color::White);
- }
- text.setString(autocomplete_str);
- if(!updated_search) {
- typing = true;
- if(onTextBeginTypingCallback)
- onTextBeginTypingCallback();
- }
- updated_search = true;
- updated_autocomplete = true;
- time_since_search_update.restart();
- needs_update = true;
- }
- }
-
- void SearchBar::set_autocomplete_text(const std::string &text) {
- autocomplete_text.setString(text);
- }
-
void SearchBar::set_position(sf::Vector2f pos) {
if(std::abs(this->pos.x - pos.x) > 1.0f || std::abs(this->pos.y - pos.y) > 1.0f) {
this->pos = pos;
@@ -316,36 +262,6 @@ namespace QuickMedia {
return editable;
}
- void SearchBar::clear_autocomplete_if_text_not_substring() {
- const sf::String &text_str = text.getString();
- const sf::String &autocomplete_str = autocomplete_text.getString();
- if(text_str.getSize() > autocomplete_str.getSize()) {
- autocomplete_text.setString("");
- return;
- }
-
- for(size_t i = 0; i < autocomplete_str.getSize(); ++i) {
- if(text_str[i] != autocomplete_str[i]) {
- autocomplete_text.setString("");
- return;
- }
- }
- }
-
- void SearchBar::clear_autocomplete_if_last_char_not_substr() {
- const sf::String &text_str = text.getString();
- const sf::String &autocomplete_str = autocomplete_text.getString();
- if(text_str.isEmpty() || text_str.getSize() > autocomplete_str.getSize()) {
- autocomplete_text.setString("");
- return;
- }
-
- if(autocomplete_str[text_str.getSize() - 1] != text_str[text_str.getSize() - 1]) {
- autocomplete_text.setString("");
- return;
- }
- }
-
float SearchBar::getBottom() const {
return getBottomWithoutShadow() + 5.0f;//background_shadow.getSize().y;
}