AppFwk : Use list of variants to produce display text for lists fields

This commit is contained in:
Magne Sjaastad 2016-12-21 14:16:39 +01:00
parent b5a18b6d64
commit 8ff4b3d4f9

View File

@ -192,35 +192,39 @@ QVariant PdmUiTableViewModel::data(const QModelIndex &index, int role /*= Qt::Di
if (role == Qt::DisplayRole || role == Qt::EditRole)
{
PdmFieldHandle* fieldHandle = getField(index);
if (dynamic_cast<PdmPtrArrayFieldHandle*>(fieldHandle))
{
PdmPtrArrayFieldHandle* ptrArrayFieldHandle = dynamic_cast<PdmPtrArrayFieldHandle*>(fieldHandle);
QString displayText;
for (size_t i = 0; i < ptrArrayFieldHandle->size(); i++)
{
PdmObjectHandle* objHandle = ptrArrayFieldHandle->at(i);
if (objHandle && objHandle->uiCapability())
{
PdmUiObjectHandle* uiObjHandle = objHandle->uiCapability();
if (!displayText.isEmpty()) displayText += ", ";
caf::PdmUiFieldHandle* uiFieldHandle = uiObjHandle->userDescriptionField()->uiCapability();
if (uiFieldHandle)
{
displayText += uiFieldHandle->uiValue().toString();
}
}
}
return displayText;
}
PdmUiFieldHandle* uiFieldHandle = fieldHandle->uiCapability();
if (uiFieldHandle)
{
bool fromMenuOnly = false;
QList<PdmOptionItemInfo> valueOptions = uiFieldHandle->valueOptions(&fromMenuOnly);
QVariant fieldValue = uiFieldHandle->uiValue();
if (fieldValue.type() == QVariant::List)
{
QString displayText;
QList<QVariant> valuesSelectedInField = fieldValue.toList();
if (valuesSelectedInField.size() > 0)
{
QList<PdmOptionItemInfo> options;
bool useOptionsOnly = true;
options = uiFieldHandle->valueOptions(&useOptionsOnly);
for (QVariant v : valuesSelectedInField)
{
int index = v.toInt();
if (index != -1)
{
if (!displayText.isEmpty()) displayText += ", ";
displayText += options.at(index).optionUiText;
}
}
}
return displayText;
}
bool useOptionsOnly = false;
QList<PdmOptionItemInfo> valueOptions = uiFieldHandle->valueOptions(&useOptionsOnly);
if (!valueOptions.isEmpty())
{
int listIndex = uiFieldHandle->uiValue().toInt();