58 lines
1.5 KiB
C++
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);
|
|
}
|
|
}
|