From 5ddb796059c09f4597d93af5da170ac6916acc77 Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Wed, 20 Sep 2017 09:57:16 +0200 Subject: [PATCH] AppFwk : Add multiselect field of AppEnum including highlight field --- .../cafTestApplication/MainWindow.cpp | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/Fwk/AppFwk/cafTests/cafTestApplication/MainWindow.cpp b/Fwk/AppFwk/cafTests/cafTestApplication/MainWindow.cpp index a105bc71a7..58225a471a 100644 --- a/Fwk/AppFwk/cafTests/cafTestApplication/MainWindow.cpp +++ b/Fwk/AppFwk/cafTests/cafTestApplication/MainWindow.cpp @@ -225,6 +225,11 @@ public: m_proxyEnumMember = T2; m_testEnumField.capability()->setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName()); + + CAF_PDM_InitFieldNoDefault(&m_multipleAppEnum, "MultipleAppEnumValue", "MultipleAppEnumValue", "", "", ""); + m_multipleAppEnum.capability()->setUiEditorTypeName(caf::PdmUiTreeSelectionEditor::uiEditorTypeName()); + CAF_PDM_InitFieldNoDefault(&m_highlightedEnum, "HighlightedEnum", "HighlightedEnum", "", "", ""); + m_highlightedEnum.uiCapability()->setUiHidden(true); } caf::PdmField m_doubleField; @@ -239,6 +244,9 @@ public: TestEnumType m_proxyEnumMember; + // vector of app enum + caf::PdmField< std::vector< caf::AppEnum > > m_multipleAppEnum; + caf::PdmField< caf::AppEnum > m_highlightedEnum; caf::PdmField m_toggleField; virtual caf::PdmFieldHandle* objectToggleField() @@ -252,13 +260,16 @@ public: { std::cout << "Toggle Field changed" << std::endl; } + else if (changedField == &m_highlightedEnum) + { + std::cout << "Highlight value " << m_highlightedEnum() << std::endl; + } } virtual QList calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly) { QList options; - if (&m_ptrField == fieldNeedingOptions) { caf::PdmFieldHandle* field; @@ -287,6 +298,13 @@ public: } } } + else if (&m_multipleAppEnum == fieldNeedingOptions) + { + for (size_t i = 0; i < caf::AppEnum::size(); ++i) + { + options.push_back(caf::PdmOptionItemInfo(caf::AppEnum::uiTextFromIndex(i), caf::AppEnum::fromIndex(i))); + } + } if (useOptionsOnly) *useOptionsOnly = true; @@ -301,6 +319,22 @@ public: return &m_textField; } +protected: + //-------------------------------------------------------------------------------------------------- + /// + //-------------------------------------------------------------------------------------------------- + virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override + { + if (field == &m_multipleAppEnum) + { + caf::PdmUiTreeSelectionEditorAttribute* attr = dynamic_cast(attribute); + if (attr) + { + attr->highLightField = m_highlightedEnum.uiCapability(); + } + } + } + }; CAF_PDM_SOURCE_INIT(SmallDemoPdmObjectA, "SmallDemoPdmObjectA");