mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Added checkbox for wells in treeview
p4#: 21325
This commit is contained in:
parent
acbe8d23ee
commit
ec2754ce30
@ -123,3 +123,11 @@ void RimWell::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QV
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
caf::PdmFieldHandle* RimWell::objectToggleField()
|
||||
{
|
||||
return &showWellPipes;
|
||||
}
|
||||
|
||||
|
@ -45,6 +45,7 @@ public:
|
||||
RigSingleWellResultsData* wellResults() { return m_wellResults.p(); }
|
||||
|
||||
virtual caf::PdmFieldHandle* userDescriptionField();
|
||||
virtual caf::PdmFieldHandle* objectToggleField();
|
||||
|
||||
virtual void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue );
|
||||
|
||||
|
@ -146,6 +146,10 @@ public:
|
||||
// Virtual interface to override in subclasses to support special behaviour if needed
|
||||
public: // Virtual
|
||||
virtual PdmFieldHandle* userDescriptionField() { return NULL; }
|
||||
|
||||
/// Field used to toggle object on/off in UI-related uses of the object (ie checkbox in treeview)
|
||||
virtual PdmFieldHandle* objectToggleField() { return NULL; }
|
||||
|
||||
/// Method to reimplement to catch when the field has changed due to setUiValue()
|
||||
virtual void fieldChangedByUi(const PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) {}
|
||||
/// Method to re-implement to supply option values for a specific field
|
||||
|
@ -231,6 +231,21 @@ QVariant UiTreeModelPdm::data(const QModelIndex &index, int role /*= Qt::Display
|
||||
else
|
||||
return obj->uiWhatsThis();
|
||||
}
|
||||
else if (role == Qt::CheckStateRole)
|
||||
{
|
||||
if (obj->objectToggleField())
|
||||
{
|
||||
bool isToggledOn = obj->objectToggleField()->uiValue().toBool();
|
||||
if (isToggledOn)
|
||||
{
|
||||
return Qt::Checked;
|
||||
}
|
||||
else
|
||||
{
|
||||
return Qt::Unchecked;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return QVariant();
|
||||
}
|
||||
@ -248,22 +263,35 @@ void UiTreeModelPdm::emitDataChanged(const QModelIndex& index)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool UiTreeModelPdm::setData(const QModelIndex &index, const QVariant &value, int role /*= Qt::EditRole*/)
|
||||
{
|
||||
if (index.isValid() && role == Qt::EditRole)
|
||||
if (!index.isValid())
|
||||
{
|
||||
PdmUiTreeItem* treeItem = UiTreeModelPdm::getTreeItemFromIndex(index);
|
||||
assert(treeItem);
|
||||
|
||||
PdmObject* obj = treeItem->dataObject();
|
||||
|
||||
if (obj->userDescriptionField())
|
||||
{
|
||||
obj->userDescriptionField()->setValueFromUi(value);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
PdmUiTreeItem* treeItem = UiTreeModelPdm::getTreeItemFromIndex(index);
|
||||
assert(treeItem);
|
||||
|
||||
PdmObject* obj = treeItem->dataObject();
|
||||
assert(obj);
|
||||
|
||||
if (role == Qt::EditRole && obj->userDescriptionField())
|
||||
{
|
||||
obj->userDescriptionField()->setValueFromUi(value);
|
||||
|
||||
emitDataChanged(index);
|
||||
|
||||
return true;
|
||||
}
|
||||
else if (role == Qt::CheckStateRole && obj->objectToggleField())
|
||||
{
|
||||
bool toggleOn = (value == Qt::Checked);
|
||||
|
||||
obj->objectToggleField()->setValueFromUi(toggleOn);
|
||||
|
||||
emitDataChanged(index);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
@ -277,18 +305,30 @@ Qt::ItemFlags UiTreeModelPdm::flags(const QModelIndex &index) const
|
||||
if (!index.isValid())
|
||||
return Qt::ItemIsEnabled;
|
||||
|
||||
Qt::ItemFlags flagMask = QAbstractItemModel::flags(index);
|
||||
|
||||
PdmUiTreeItem* treeItem = getTreeItemFromIndex(index);
|
||||
if (treeItem)
|
||||
{
|
||||
PdmObject* pdmObject = treeItem->dataObject();
|
||||
if (pdmObject && pdmObject->userDescriptionField() && !pdmObject->userDescriptionField()->isUiReadOnly())
|
||||
if (pdmObject)
|
||||
{
|
||||
Qt::ItemFlags flagMask = QAbstractItemModel::flags(index) | Qt::ItemIsEditable;
|
||||
return flagMask;
|
||||
if (pdmObject->userDescriptionField() && !pdmObject->userDescriptionField()->isUiReadOnly())
|
||||
{
|
||||
flagMask = flagMask | Qt::ItemIsEditable;
|
||||
}
|
||||
|
||||
if (pdmObject->objectToggleField())
|
||||
{
|
||||
flagMask = flagMask | Qt::ItemIsUserCheckable;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
flagMask = flagMask & (~Qt::ItemIsEditable);
|
||||
}
|
||||
|
||||
Qt::ItemFlags flagMask = QAbstractItemModel::flags(index) & (~Qt::ItemIsEditable);
|
||||
return flagMask;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user