(#483) Improved disabled state (gray icon) for range filters/filtercollection

This commit is contained in:
Magne Sjaastad 2015-11-02 07:18:04 +01:00
parent 572601c3db
commit b10fedb997
5 changed files with 51 additions and 8 deletions

View File

@ -95,7 +95,7 @@ void RimCellFilter::updateIconState()
painter.drawPixmap(0,0, sign);
}
if (!isActive)
if (!isActive || isActive.uiCapability()->isUiReadOnly())
{
QIcon temp(icPixmap);
icPixmap = temp.pixmap(16, 16, QIcon::Disabled);
@ -103,6 +103,8 @@ void RimCellFilter::updateIconState()
QIcon newIcon(icPixmap);
this->setUiIcon(newIcon);
this->uiCapability()->updateConnectedEditors();
}
//--------------------------------------------------------------------------------------------------

View File

@ -29,6 +29,7 @@
#include "RimEclipseCase.h"
#include "RimCellRangeFilterCollection.h"
#include "RimEclipseView.h"
#include "RimViewController.h"
#include "cafPdmUiSliderEditor.h"
#include "cvfAssert.h"
@ -229,20 +230,40 @@ void RimCellRangeFilter::defineUiOrdering(QString uiConfigName, caf::PdmUiOrderi
firstAnchestorOrThisOfType(rimView);
CVF_ASSERT(rimView);
bool isFilterOverride = false;
if (rimView->overrideRangeFilterCollection())
bool isRangeFilterControlled = false;
if (rimView->viewController() && rimView->viewController()->isRangeFiltersControlled())
{
isFilterOverride = true;
isRangeFilterControlled = true;
}
std::vector<caf::PdmFieldHandle*> objFields;
this->fields(objFields);
for (size_t i = 0; i < objFields.size(); i ++)
{
objFields[i]->uiCapability()->setUiReadOnly(isFilterOverride);
objFields[i]->uiCapability()->setUiReadOnly(isRangeFilterControlled);
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimCellRangeFilter::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName)
{
RimCellFilter::defineUiTreeOrdering(uiTreeOrdering, uiConfigName);
RimView* rimView = NULL;
firstAnchestorOrThisOfType(rimView);
CVF_ASSERT(rimView);
bool isRangeFilterControlled = false;
if (rimView->viewController() && rimView->viewController()->isRangeFiltersControlled())
{
isRangeFilterControlled = true;
}
isActive.uiCapability()->setUiReadOnly(isRangeFilterControlled);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -64,6 +64,7 @@ protected:
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute);
virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) ;
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName);
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly );

View File

@ -335,8 +335,26 @@ void RimCellRangeFilterCollection::updateIconState()
for (size_t i = 0; i < rangeFilters.size(); i++)
{
RimCellRangeFilter* rangeFilter = rangeFilters[i];
rangeFilter->updateIconState();
RimCellFilter* cellFilter = rangeFilters[i];
cellFilter->updateIconState();
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimCellRangeFilterCollection::defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName)
{
PdmObject::defineUiTreeOrdering(uiTreeOrdering, uiConfigName);
RimViewController* viewController = baseView()->viewController();
if (viewController && viewController->isRangeFiltersControlled())
{
isActive.uiCapability()->setUiReadOnly(true);
}
else
{
isActive.uiCapability()->setUiReadOnly(false);
}
}

View File

@ -56,8 +56,9 @@ public:
void updateDisplayModeNotifyManagedViews(RimCellRangeFilter* changedRangeFilter);
void updateIconState();
// Overridden methods
protected:
virtual void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue );
virtual void defineUiTreeOrdering(caf::PdmUiTreeOrdering& uiTreeOrdering, QString uiConfigName);
virtual caf::PdmFieldHandle* objectToggleField();
private: