aboutsummaryrefslogtreecommitdiff
path: root/src/Body.cpp
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2020-09-17 16:44:52 +0200
committerdec05eba <dec05eba@protonmail.com>2020-09-17 16:44:52 +0200
commit5e7215b4675955fee8197076914599fe62f39c26 (patch)
tree90b5c097a0759ae948e3ae251201cbd8e047064c /src/Body.cpp
parentd83c0123ed3e51ef1e8d6a164e87343dd5335331 (diff)
Disable wrap around body, detect wrap around
Diffstat (limited to 'src/Body.cpp')
-rw-r--r--src/Body.cpp66
1 files changed, 50 insertions, 16 deletions
diff --git a/src/Body.cpp b/src/Body.cpp
index 6500e16..2233f92 100644
--- a/src/Body.cpp
+++ b/src/Body.cpp
@@ -20,39 +20,73 @@ namespace QuickMedia {
replies_text("", *font, 14),
selected_item(0),
draw_thumbnails(false),
- loading_thumbnail(false)
+ loading_thumbnail(false),
+ wrap_around(false)
{
progress_text.setFillColor(sf::Color::White);
author_text.setFillColor(sf::Color::White);
replies_text.setFillColor(sf::Color(129, 162, 190));
}
- void Body::select_previous_item() {
+ bool Body::select_previous_item() {
if(items.empty())
- return;
+ return false;
+ int new_selected_item = selected_item;
int num_items = (int)items.size();
+
for(int i = 0; i < num_items; ++i) {
- --selected_item;
- if(selected_item < 0)
- selected_item = num_items - 1;
- if(items[selected_item]->visible)
- return;
+ if(new_selected_item - 1 < 0) {
+ if(wrap_around)
+ new_selected_item = num_items - 1;
+ else {
+ new_selected_item = selected_item;
+ break;
+ }
+ } else {
+ --new_selected_item;
+ }
+ if(items[new_selected_item]->visible)
+ break;
}
+
+ if(selected_item == new_selected_item)
+ return false;
+ selected_item = new_selected_item;
+ return true;
}
- void Body::select_next_item() {
+ bool Body::select_next_item() {
if(items.empty())
- return;
+ return false;
+ int new_selected_item = selected_item;
int num_items = (int)items.size();
+
for(int i = 0; i < num_items; ++i) {
- ++selected_item;
- if(selected_item == num_items)
- selected_item = 0;
- if(items[selected_item]->visible)
- return;
+ if(new_selected_item + 1 == num_items) {
+ if(wrap_around) {
+ new_selected_item = 0;
+ } else {
+ new_selected_item = selected_item;
+ break;
+ }
+ } else {
+ ++new_selected_item;
+ }
+ if(items[new_selected_item]->visible)
+ break;
}
+
+ if(selected_item == new_selected_item)
+ return false;
+ selected_item = new_selected_item;
+ return true;
+ }
+
+ void Body::set_selected_item(int item) {
+ assert(item >= 0 && item < (int)items.size());
+ selected_item = item;
}
void Body::select_first_item() {
@@ -178,7 +212,7 @@ namespace QuickMedia {
body_item->title_text->setString(body_item->get_title());
else
body_item->title_text = std::make_unique<Text>(body_item->get_title(), font, 14, size.x - 50 - image_padding_x * 2.0f);
- //body_item->title_text->updateGeometry(); // TODO: Call this to make getHeight work on first frame (called below)
+ body_item->title_text->updateGeometry();
}
if(!body_item->get_description().empty() && !body_item->description_text) {