Allow invalid PdmUiTreeOrdering objects, and display message in Debug

This commit is contained in:
Magne Sjaastad 2015-08-11 11:00:46 +02:00
parent 198da4d553
commit c7fca88bdc
3 changed files with 37 additions and 23 deletions

View File

@ -54,6 +54,8 @@ namespace caf
//--------------------------------------------------------------------------------------------------
void PdmUiTreeOrdering::add(PdmFieldHandle * field)
{
assert(field);
PdmUiTreeOrdering* child = new PdmUiTreeOrdering(this, field);
}
@ -62,6 +64,8 @@ void PdmUiTreeOrdering::add(PdmFieldHandle * field)
//--------------------------------------------------------------------------------------------------
void PdmUiTreeOrdering::add(PdmObjectHandle* object)
{
assert(object);
PdmUiTreeOrdering* child = new PdmUiTreeOrdering(this, object);
}
@ -71,6 +75,7 @@ void PdmUiTreeOrdering::add(PdmObjectHandle* object)
PdmUiTreeOrdering* PdmUiTreeOrdering::add(const QString & title, const QString& iconResourceName)
{
PdmUiTreeOrdering* child = new PdmUiTreeOrdering(title, iconResourceName);
assert(child->isValid());
this->appendChild(child);
return child;

View File

@ -119,8 +119,8 @@ private:
PdmUiTreeOrdering(PdmUiTreeOrdering* parent, PdmFieldHandle* pdmField );
// Item that we represent
PdmPointer<PdmObjectHandle> m_object;
PdmFieldHandle* m_field;
PdmPointer<PdmObjectHandle> m_object; // We keep both pointer to object and pointer to field when representing a field
PdmFieldHandle* m_field; // because m_object is guarded while PdmFieldHandle::ownerObject() is not guarded
PdmUiItem* m_uiItem;
// Tree generation control

View File

@ -89,7 +89,7 @@ void PdmUiTreeViewModel::setPdmItemRoot(PdmUiItem* rootItem)
assert( newRoot || rootItem == NULL ); // Only fields, objects or NULL is allowed.
if (newRoot) newRoot->debugDump(0);
//if (newRoot) newRoot->debugDump(0);
this->resetTree(newRoot);
}
@ -483,8 +483,17 @@ QVariant PdmUiTreeViewModel::data(const QModelIndex &index, int role ) const
bool isFieldRep = uitreeOrdering->isRepresentingField();
bool isDisplayOnly = uitreeOrdering->isDisplayItemOnly();
// MODTODO
//assert (uitreeOrdering->isValid()); // Tree generation has some error.
if (role == Qt::DisplayRole && !uitreeOrdering->isValid())
{
QString str;
#ifdef DEBUG
str = "Invalid uiordering";
#endif
return QVariant(str);
}
if (role == Qt::DisplayRole || role == Qt::EditRole)
{
@ -512,8 +521,8 @@ QVariant PdmUiTreeViewModel::data(const QModelIndex &index, int role ) const
if (uitreeOrdering->activeItem())
{
return uitreeOrdering->activeItem()->uiName();
}
return uitreeOrdering->activeItem()->uiName();
}
else
{
return QVariant();
@ -523,8 +532,8 @@ QVariant PdmUiTreeViewModel::data(const QModelIndex &index, int role ) const
{
if (uitreeOrdering->activeItem())
{
return uitreeOrdering->activeItem()->uiIcon();
}
return uitreeOrdering->activeItem()->uiIcon();
}
else
{
return QVariant();
@ -534,8 +543,8 @@ QVariant PdmUiTreeViewModel::data(const QModelIndex &index, int role ) const
{
if (uitreeOrdering->activeItem())
{
return uitreeOrdering->activeItem()->uiToolTip();
}
return uitreeOrdering->activeItem()->uiToolTip();
}
else
{
return QVariant();
@ -545,8 +554,8 @@ QVariant PdmUiTreeViewModel::data(const QModelIndex &index, int role ) const
{
if (uitreeOrdering->activeItem())
{
return uitreeOrdering->activeItem()->uiWhatsThis();
}
return uitreeOrdering->activeItem()->uiWhatsThis();
}
else
{
return QVariant();
@ -561,24 +570,24 @@ QVariant PdmUiTreeViewModel::data(const QModelIndex &index, int role ) const
{
caf::PdmUiFieldHandle* uiFieldHandle = pdmUiObj->objectToggleField()->uiCapability();
if (uiFieldHandle)
{
{
bool isToggledOn = uiFieldHandle->uiValue().toBool();
if (isToggledOn)
{
return Qt::Checked;
if (isToggledOn)
{
return Qt::Checked;
}
else
{
return Qt::Unchecked;
}
}
else
{
return Qt::Unchecked;
}
}
else
{
return QVariant();
}
}
}
}
}
return QVariant();
}