stw24/TouchGFX/gui/src/debugview_screen/DebugViewView.cpp

58 lines
1.5 KiB
C++

#include "gui/common/NamedField.hpp"
#include <gui/debugview_screen/DebugViewView.hpp>
DebugViewView::DebugViewView() {}
void DebugViewView::setupScreen() {
DebugViewViewBase::setupScreen();
size_t numItems = DataFieldType_COUNT / 2;
if (DataFieldType_COUNT % 2 == 1) {
numItems++;
}
list.setNumberOfItems(numItems);
}
void DebugViewView::tearDownScreen() { DebugViewViewBase::tearDownScreen(); }
void DebugViewView::listUpdateItem(DebugViewLine &line, int16_t itemIndex) {
size_t idx = itemIndex * 2;
line.setFieldType(0, static_cast<DataFieldType>(idx));
idx++;
if (idx < DataFieldType_COUNT) {
line.setFieldType(1, static_cast<DataFieldType>(idx));
line.setFieldVisible(1, true);
} else {
line.setFieldVisible(1, false);
}
line.setLightBG(itemIndex % 2 == 1);
}
void DebugViewView::updateFieldValues() {
for (DebugViewLine &el : listListItems.element) {
el.updateFieldValues();
}
}
void DebugViewView::scrollUp() {
if (scrollIndex == 0) {
updateScrollIndex(list.getNumberOfItems() - 1);
} else {
updateScrollIndex(scrollIndex - 1);
}
}
void DebugViewView::scrollDown() {
updateScrollIndex((scrollIndex + 1) % list.getNumberOfItems());
}
void DebugViewView::updateScrollIndex(size_t index) {
scrollIndex = index;
if (scrollIndex == 0) {
// Just animating to 0 looks very broken when scrolling forwards. Animating
// to numItems looks good in both directions.
list.animateToItem(list.getNumberOfItems(), 2);
} else {
list.animateToItem(scrollIndex, 2);
}
}