From 50cd9250c4f5fc1ed8598841434f85ba530b3fd1 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Tue, 1 Dec 2015 13:28:44 +0100 Subject: [PATCH] (#659) Sort well paths when downloading from SSI-hub --- .../RiuWellImportWizard.cpp | 37 +++++++++++++++++++ .../RiuWellImportWizard.h | 13 ++++--- 2 files changed, 44 insertions(+), 6 deletions(-) diff --git a/ApplicationCode/WellPathImportSsihub/RiuWellImportWizard.cpp b/ApplicationCode/WellPathImportSsihub/RiuWellImportWizard.cpp index 4a47a0aab9..e02b1115b3 100644 --- a/ApplicationCode/WellPathImportSsihub/RiuWellImportWizard.cpp +++ b/ApplicationCode/WellPathImportSsihub/RiuWellImportWizard.cpp @@ -890,6 +890,8 @@ void WellSelectionPage::buildWellTreeView() fieldGroup->objects.push_back(wellPathCopy); } + + sortObjectsByDescription(fieldGroup); } } } @@ -956,7 +958,42 @@ void WellSelectionPage::selectedWellPathEntries(std::vector& dow } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool lessByDescription(const caf::PdmPointer& obj1, const caf::PdmPointer& obj2) +{ + caf::PdmUiFieldHandle* uiFieldHandle1 = NULL; + caf::PdmUiFieldHandle* uiFieldHandle2 = NULL; + if (obj1.notNull() && obj1->uiCapability() && obj1->uiCapability()->userDescriptionField()) + { + uiFieldHandle1 = obj1->uiCapability()->userDescriptionField()->uiCapability(); + } + + if (obj2.notNull() && obj2->uiCapability() && obj2->uiCapability()->userDescriptionField()) + { + uiFieldHandle2 = obj2->uiCapability()->userDescriptionField()->uiCapability(); + } + + if (uiFieldHandle1 && uiFieldHandle2) + { + QString string1 = uiFieldHandle1->uiValue().toString(); + QString string2 = uiFieldHandle2->uiValue().toString(); + + return string1 < string2; + } + + return true; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void WellSelectionPage::sortObjectsByDescription(caf::PdmObjectCollection* objects) +{ + std::sort(objects->objects.begin(), objects->objects.end(), lessByDescription); +} //-------------------------------------------------------------------------------------------------- /// diff --git a/ApplicationCode/WellPathImportSsihub/RiuWellImportWizard.h b/ApplicationCode/WellPathImportSsihub/RiuWellImportWizard.h index 75ff77487d..92043c5cf4 100644 --- a/ApplicationCode/WellPathImportSsihub/RiuWellImportWizard.h +++ b/ApplicationCode/WellPathImportSsihub/RiuWellImportWizard.h @@ -131,15 +131,16 @@ public: ~WellSelectionPage(); virtual void initializePage(); - void buildWellTreeView(); + void buildWellTreeView(); - - void selectedWellPathEntries(std::vector& downloadEntities, caf::PdmObjectHandle* objHandle); + void selectedWellPathEntries(std::vector& downloadEntities, caf::PdmObjectHandle* objHandle); +private: + void sortObjectsByDescription(caf::PdmObjectCollection* objects); private: - ObjectGroupWithHeaders* m_regionsWithVisibleWells; - RimWellPathImport* m_wellPathImportObject; - caf::PdmUiTreeView* m_wellSelectionTreeView; + ObjectGroupWithHeaders* m_regionsWithVisibleWells; + RimWellPathImport* m_wellPathImportObject; + caf::PdmUiTreeView* m_wellSelectionTreeView; };