From b894f0b2283a4fcd42fc41f9517b16d623ae3adb Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 5 Aug 2019 21:07:11 +0200 Subject: Add thumbnails for manganelo --- include/Body.hpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 include/Body.hpp (limited to 'include/Body.hpp') diff --git a/include/Body.hpp b/include/Body.hpp new file mode 100644 index 0000000..c27ecf0 --- /dev/null +++ b/include/Body.hpp @@ -0,0 +1,48 @@ +#pragma once + +#include +#include +#include +#include + +namespace QuickMedia { + class BodyItem { + public: + BodyItem(const std::string &_title): title(_title), visible(true) { + + } + + std::string title; + std::string url; + std::string thumbnail_url; + bool visible; + }; + + class Body { + public: + Body(sf::Font &font); + + // Select previous item, ignoring invisible items + void select_previous_item(); + + // Select next item, ignoring invisible items + void select_next_item(); + void reset_selected(); + void clear_items(); + + BodyItem* get_selected() const; + + void clamp_selection(); + void draw(sf::RenderWindow &window, sf::Vector2f pos, sf::Vector2f size); + static bool string_find_case_insensitive(const std::string &str, const std::string &substr); + + // TODO: Make this actually fuzzy... Right now it's just a case insensitive string find. + // TODO: Highlight the part of the text that matches the search + void filter_search_fuzzy(const std::string &text); + + sf::Text title_text; + int selected_item; + std::vector> items; + std::vector> item_thumbnail_textures; + }; +} \ No newline at end of file -- cgit v1.2.3