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:
@@ -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(); }
|
RigSingleWellResultsData* wellResults() { return m_wellResults.p(); }
|
||||||
|
|
||||||
virtual caf::PdmFieldHandle* userDescriptionField();
|
virtual caf::PdmFieldHandle* userDescriptionField();
|
||||||
|
virtual caf::PdmFieldHandle* objectToggleField();
|
||||||
|
|
||||||
virtual void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue );
|
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
|
// Virtual interface to override in subclasses to support special behaviour if needed
|
||||||
public: // Virtual
|
public: // Virtual
|
||||||
virtual PdmFieldHandle* userDescriptionField() { return NULL; }
|
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()
|
/// 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) {}
|
virtual void fieldChangedByUi(const PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) {}
|
||||||
/// Method to re-implement to supply option values for a specific field
|
/// 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
|
else
|
||||||
return obj->uiWhatsThis();
|
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();
|
return QVariant();
|
||||||
}
|
}
|
||||||
@@ -248,17 +263,30 @@ void UiTreeModelPdm::emitDataChanged(const QModelIndex& index)
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
bool UiTreeModelPdm::setData(const QModelIndex &index, const QVariant &value, int role /*= Qt::EditRole*/)
|
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);
|
return false;
|
||||||
assert(treeItem);
|
}
|
||||||
|
|
||||||
PdmObject* obj = treeItem->dataObject();
|
PdmUiTreeItem* treeItem = UiTreeModelPdm::getTreeItemFromIndex(index);
|
||||||
|
assert(treeItem);
|
||||||
|
|
||||||
if (obj->userDescriptionField())
|
PdmObject* obj = treeItem->dataObject();
|
||||||
{
|
assert(obj);
|
||||||
obj->userDescriptionField()->setValueFromUi(value);
|
|
||||||
}
|
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);
|
emitDataChanged(index);
|
||||||
|
|
||||||
@@ -277,18 +305,30 @@ Qt::ItemFlags UiTreeModelPdm::flags(const QModelIndex &index) const
|
|||||||
if (!index.isValid())
|
if (!index.isValid())
|
||||||
return Qt::ItemIsEnabled;
|
return Qt::ItemIsEnabled;
|
||||||
|
|
||||||
|
Qt::ItemFlags flagMask = QAbstractItemModel::flags(index);
|
||||||
|
|
||||||
PdmUiTreeItem* treeItem = getTreeItemFromIndex(index);
|
PdmUiTreeItem* treeItem = getTreeItemFromIndex(index);
|
||||||
if (treeItem)
|
if (treeItem)
|
||||||
{
|
{
|
||||||
PdmObject* pdmObject = treeItem->dataObject();
|
PdmObject* pdmObject = treeItem->dataObject();
|
||||||
if (pdmObject && pdmObject->userDescriptionField() && !pdmObject->userDescriptionField()->isUiReadOnly())
|
if (pdmObject)
|
||||||
{
|
{
|
||||||
Qt::ItemFlags flagMask = QAbstractItemModel::flags(index) | Qt::ItemIsEditable;
|
if (pdmObject->userDescriptionField() && !pdmObject->userDescriptionField()->isUiReadOnly())
|
||||||
return flagMask;
|
{
|
||||||
|
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;
|
return flagMask;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user