Animate field type selection
This commit is contained in:
@ -38,7 +38,7 @@ private:
|
||||
DriverViewField &getField(size_t i);
|
||||
|
||||
void updateSelectedField(size_t select);
|
||||
void updateSelectedFieldType(size_t select);
|
||||
void updateSelectedFieldType(size_t select, bool animate = true);
|
||||
|
||||
size_t selectedField;
|
||||
size_t selectedFieldType;
|
||||
|
||||
@ -138,15 +138,22 @@ void DriverViewView::updateSelectedField(size_t selected) {
|
||||
fieldTypeSelection.invalidate();
|
||||
selectedField = selected;
|
||||
|
||||
updateSelectedFieldType(fieldTypes[selectedField]);
|
||||
updateSelectedFieldType(fieldTypes[selectedField], false);
|
||||
}
|
||||
|
||||
void DriverViewView::updateSelectedFieldType(size_t selected) {
|
||||
void DriverViewView::updateSelectedFieldType(size_t selected, bool animate) {
|
||||
size_t previousSelected = selectedFieldType;
|
||||
selectedFieldType = selected;
|
||||
// Trigger update of the background
|
||||
fieldTypeSelection.itemChanged(previousSelected);
|
||||
fieldTypeSelection.itemChanged(selectedFieldType);
|
||||
|
||||
fieldTypeSelection.animateToItem(selectedFieldType, 0);
|
||||
int16_t steps = animate ? 2 : 0;
|
||||
if (selectedFieldType == 0) {
|
||||
// Just animating to 0 looks very broken when scrolling forwards. Animating
|
||||
// to DataFieldType_COUNT looks good in both directions.
|
||||
fieldTypeSelection.animateToItem(DataFieldType_COUNT, steps);
|
||||
} else {
|
||||
fieldTypeSelection.animateToItem(selectedFieldType, steps);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user