#4490 Command Features : Use app state for toggle features

This commit is contained in:
Magne Sjaastad 2019-06-17 09:03:22 +02:00
parent 41235a2f00
commit bdcc7c53f7
2 changed files with 46 additions and 11 deletions

View File

@ -19,9 +19,10 @@
#include "RicToggleItemsFeatureImpl.h" #include "RicToggleItemsFeatureImpl.h"
#include "RiaFeatureCommandContext.h"
#include "RiaGuiApplication.h"
#include "RiuMainWindow.h" #include "RiuMainWindow.h"
#include "RiuPlotMainWindow.h" #include "RiuPlotMainWindow.h"
#include "RiaGuiApplication.h"
#include "cafPdmUiFieldHandle.h" #include "cafPdmUiFieldHandle.h"
#include "cafPdmUiItem.h" #include "cafPdmUiItem.h"
@ -153,22 +154,54 @@ void RicToggleItemsFeatureImpl::setObjectToggleStateForSelection(SelectionToggle
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf::PdmUiTreeView* RicToggleItemsFeatureImpl::findTreeView(const caf::PdmUiItem* uiItem)
{
{
RiaFeatureCommandContext* context = RiaFeatureCommandContext::instance();
caf::PdmUiTreeView* customActiveTreeView = dynamic_cast<caf::PdmUiTreeView*>(context->object());
if (customActiveTreeView)
{
return customActiveTreeView;
}
}
{
QModelIndex modIndex = RiuMainWindow::instance()->projectTreeView()->findModelIndex(uiItem);
if (modIndex.isValid())
{
return RiuMainWindow::instance()->projectTreeView();
}
}
RiuPlotMainWindow* mainPlotWindow = RiaGuiApplication::instance()->mainPlotWindow();
if (mainPlotWindow)
{
QModelIndex modIndex = mainPlotWindow->projectTreeView()->findModelIndex(uiItem);
if (modIndex.isValid())
{
return mainPlotWindow->projectTreeView();
}
}
return nullptr;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// Finds the tree item in either the 3D main window or plot main window project tree view /// Finds the tree item in either the 3D main window or plot main window project tree view
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
caf::PdmUiTreeOrdering* RicToggleItemsFeatureImpl::findTreeItemFromSelectedUiItem(const caf::PdmUiItem* uiItem) caf::PdmUiTreeOrdering* RicToggleItemsFeatureImpl::findTreeItemFromSelectedUiItem(const caf::PdmUiItem* uiItem)
{ {
QModelIndex modIndex = RiuMainWindow::instance()->projectTreeView()->findModelIndex(uiItem); caf::PdmUiTreeView* pdmUiTreeView = findTreeView(uiItem);
if(!modIndex.isValid())
if (pdmUiTreeView)
{ {
RiuPlotMainWindow* mainPlotWindow = RiaGuiApplication::instance()->mainPlotWindow(); QModelIndex modIndex = pdmUiTreeView->findModelIndex(uiItem);
if(mainPlotWindow) return static_cast<caf::PdmUiTreeOrdering*>(modIndex.internalPointer());
{
modIndex = mainPlotWindow->projectTreeView()->findModelIndex(uiItem);
}
} }
caf::PdmUiTreeOrdering* treeItem = static_cast<caf::PdmUiTreeOrdering*>(modIndex.internalPointer()); return nullptr;
return treeItem;
} }

View File

@ -23,6 +23,7 @@ namespace caf
{ {
class PdmUiItem; class PdmUiItem;
class PdmUiTreeOrdering; class PdmUiTreeOrdering;
class PdmUiTreeView;
}; };
//================================================================================================== //==================================================================================================
@ -45,6 +46,7 @@ public:
static void setObjectToggleStateForSelection(SelectionToggleType state); static void setObjectToggleStateForSelection(SelectionToggleType state);
private: private:
static caf::PdmUiTreeView* findTreeView(const caf::PdmUiItem* uiItem);
static caf::PdmUiTreeOrdering* findTreeItemFromSelectedUiItem(const caf::PdmUiItem* uiItem); static caf::PdmUiTreeOrdering* findTreeItemFromSelectedUiItem(const caf::PdmUiItem* uiItem);
}; };