#include "RimDataSourceSteppingTools.h" #include "cvfAssert.h" //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RimDataSourceSteppingTools::modifyCurrentIndex(caf::PdmValueField* valueField, const QList& options, int indexOffset) { if (valueField && !options.isEmpty()) { QVariant currentValue = valueField->toQVariant(); caf::PdmPointer currentHandle = currentValue.value>(); int currentIndex = -1; for (int i = 0; i < options.size(); i++) { QVariant optionValue = options[i].value(); // First try pointer variety. They are not supported by QVariant::operator== caf::PdmPointer optionHandle = optionValue.value>(); if (optionHandle) { if (currentHandle == optionHandle) { currentIndex = i; } } else if (currentValue == optionValue) { currentIndex = i; } } if (currentIndex == -1) { currentIndex = 0; } int nextIndex = currentIndex + indexOffset; if (nextIndex < options.size() && nextIndex > -1) { QVariant newValue = options[nextIndex].value(); valueField->setFromQVariant(newValue); valueField->uiCapability()->notifyFieldChanged(currentValue, newValue); } } }