Updated riGetSelectedCases to use a string as type name

Improved how to get currently selected cases
p4#: 21625
This commit is contained in:
Magne Sjaastad
2013-05-15 12:03:36 +02:00
parent b5f5f49572
commit 97c3a330f6
7 changed files with 88 additions and 64 deletions

View File

@@ -1524,32 +1524,21 @@ void RiuMainWindow::updateScaleValue()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuMainWindow::selectionInfo(std::vector<qint64>& caseIds, std::vector<QString>& caseNames, std::vector<qint64>& caseTypes, std::vector<qint64>& caseGroupIds)
void RiuMainWindow::selectedCases(std::vector<RimCase*>& cases)
{
if (m_treeView && m_treeView->selectionModel())
{
QModelIndexList selectedModelIndexes = m_treeView->selectionModel()->selectedIndexes();
caf::PdmObjectGroup group;
m_treeView->populateObjectGroupFromModelIndexList(selectedModelIndexes, &group);
for (int i = 0; i < selectedModelIndexes.size(); i++)
std::vector<caf::PdmPointer<RimCase> > typedObjects;
group.objectsByType(&typedObjects);
for (size_t i = 0; i < typedObjects.size(); i++)
{
caf::PdmUiTreeItem* uiTreeItem = m_treeModelPdm->getTreeItemFromIndex(selectedModelIndexes[i]);
if (uiTreeItem && uiTreeItem->dataObject())
{
RimCase* rimCase = dynamic_cast<RimCase*>(uiTreeItem->dataObject().p());
if (rimCase)
{
caseIds.push_back(rimCase->caseId());
caseNames.push_back(rimCase->caseUserDescription());
caseTypes.push_back(-1);
qint64 caseGroupId = -1;
if (rimCase->parentGridCaseGroup())
{
caseGroupId = rimCase->parentGridCaseGroup()->groupId();
}
caseGroupIds.push_back(caseGroupId);
}
}
cases.push_back(typedObjects[i]);
}
}
}

View File

@@ -40,6 +40,7 @@ class RiuResultInfoPanel;
class RiuProcessMonitor;
class RimUiTreeModelPdm;
class RimUiTreeView;
class RimCase;
namespace caf
{
@@ -84,7 +85,7 @@ public:
void setCurrentObjectInTreeView(caf::PdmObject* object);
void selectionInfo(std::vector<qint64>& caseIds, std::vector<QString>& caseNames, std::vector<qint64>& caseTypes, std::vector<qint64>& caseGroupIds);
void selectedCases(std::vector<RimCase*>& cases);
protected:
virtual void closeEvent(QCloseEvent* event);