sfx2/source/devtools/ObjectInspectorTreeHandler.cxx |  137 ++++----------------
 1 file changed, 32 insertions(+), 105 deletions(-)

New commits:
commit 89afca98f060be1f6a49c47cf7eaf123dd7ed4fa
Author:     Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk>
AuthorDate: Thu Feb 11 21:14:36 2021 +0900
Commit:     Tomaž Vajngerl <qui...@gmail.com>
CommitDate: Fri Feb 12 11:21:27 2021 +0100

    devtools: remove code duplication when creating child nodes
    
    We essentially do the same thing in PropertyNode, StructNode and
    SequenceNode when creating a child node. Remove the duplication
    and move it into a common place (BasicValueNode) under
    createNodeObjectForAny method.
    
    Change-Id: If993c9018a537bf24683a526e76d438bd5105619
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110797
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <qui...@gmail.com>

diff --git a/sfx2/source/devtools/ObjectInspectorTreeHandler.cxx 
b/sfx2/source/devtools/ObjectInspectorTreeHandler.cxx
index 8dbc389d2103..fd51a06ee3e8 100644
--- a/sfx2/source/devtools/ObjectInspectorTreeHandler.cxx
+++ b/sfx2/source/devtools/ObjectInspectorTreeHandler.cxx
@@ -233,6 +233,8 @@ protected:
         return xInterface;
     }
 
+    ObjectInspectorNodeInterface* createNodeObjectForAny(OUString const& 
rName, uno::Any& rAny);
+
 public:
     BasicValueNode(OUString const& rName, uno::Any const& rAny,
                    uno::Reference<uno::XComponentContext> const& xContext)
@@ -444,47 +446,12 @@ public:
 
         for (int i = 0; i < nLength; i++)
         {
-            uno::Any aCurrentAny = xIdlArray->get(maAny, i);
+            uno::Any aArrayValue = xIdlArray->get(maAny, i);
             uno::Reference<uno::XInterface> xCurrent;
-            if (aCurrentAny.hasValue())
-            {
-                switch (aCurrentAny.getValueType().getTypeClass())
-                {
-                    case uno::TypeClass_INTERFACE:
-                    {
-                        auto xInterface
-                            = uno::Reference<uno::XInterface>(aCurrentAny, 
uno::UNO_QUERY);
-                        lclAppendNodeToParent(
-                            pTree, rParent,
-                            new GenericPropertiesNode(OUString::number(i), 
aCurrentAny, mxContext));
-                    }
-                    break;
-
-                    case uno::TypeClass_SEQUENCE:
-                    {
-                        lclAppendNodeToParent(
-                            pTree, rParent,
-                            new SequenceNode(OUString::number(i), aCurrentAny, 
mxContext));
-                    }
-                    break;
-
-                    case uno::TypeClass_STRUCT:
-                    {
-                        lclAppendNodeToParent(
-                            pTree, rParent,
-                            new StructNode(OUString::number(i), aCurrentAny, 
mxContext));
-                    }
-                    break;
 
-                    default:
-                    {
-                        lclAppendNodeToParent(
-                            pTree, rParent,
-                            new BasicValueNode(OUString::number(i), 
aCurrentAny, mxContext));
-                    }
-                    break;
-                }
-            }
+            auto* pObjectInspectorNode = 
createNodeObjectForAny(OUString::number(i), aArrayValue);
+            if (pObjectInspectorNode)
+                lclAppendNodeToParent(pTree, rParent, pObjectInspectorNode);
         }
     }
 
@@ -538,41 +505,9 @@ void 
GenericPropertiesNode::fillChildren(std::unique_ptr<weld::TreeView>& pTree,
         {
         }
 
-        switch (aCurrentAny.getValueType().getTypeClass())
-        {
-            case uno::TypeClass_INTERFACE:
-            {
-                auto xInterface = uno::Reference<uno::XInterface>(aCurrentAny, 
uno::UNO_QUERY);
-                if (xInterface.is())
-                {
-                    lclAppendNodeToParent(
-                        pTree, rParent,
-                        new GenericPropertiesNode(xProperty.Name, aCurrentAny, 
mxContext));
-                }
-            }
-            break;
-
-            case uno::TypeClass_SEQUENCE:
-            {
-                lclAppendNodeToParent(pTree, rParent,
-                                      new SequenceNode(xProperty.Name, 
aCurrentAny, mxContext));
-            }
-            break;
-
-            case uno::TypeClass_STRUCT:
-            {
-                lclAppendNodeToParent(pTree, rParent,
-                                      new StructNode(xProperty.Name, 
aCurrentAny, mxContext));
-            }
-            break;
-
-            default:
-            {
-                lclAppendNodeToParent(pTree, rParent,
-                                      new BasicValueNode(xProperty.Name, 
aCurrentAny, mxContext));
-            }
-            break;
-        }
+        auto* pObjectInspectorNode = createNodeObjectForAny(xProperty.Name, 
aCurrentAny);
+        if (pObjectInspectorNode)
+            lclAppendNodeToParent(pTree, rParent, pObjectInspectorNode);
     }
 }
 
@@ -589,42 +524,34 @@ void 
StructNode::fillChildren(std::unique_ptr<weld::TreeView>& pTree, weld::Tree
         OUString aFieldName = xField->getName();
         uno::Any aFieldValue = xField->get(maAny);
 
-        switch (aFieldValue.getValueType().getTypeClass())
-        {
-            case uno::TypeClass_INTERFACE:
-            {
-                auto xInterface = uno::Reference<uno::XInterface>(aFieldValue, 
uno::UNO_QUERY);
-                if (xInterface.is())
-                {
-                    lclAppendNodeToParent(
-                        pTree, rParent,
-                        new GenericPropertiesNode(aFieldName, aFieldValue, 
mxContext));
-                }
-            }
-            break;
+        auto* pObjectInspectorNode = createNodeObjectForAny(aFieldName, 
aFieldValue);
+        if (pObjectInspectorNode)
+            lclAppendNodeToParent(pTree, rParent, pObjectInspectorNode);
+    }
+}
 
-            case uno::TypeClass_SEQUENCE:
-            {
-                lclAppendNodeToParent(pTree, rParent,
-                                      new SequenceNode(aFieldName, 
aFieldValue, mxContext));
-            }
-            break;
+ObjectInspectorNodeInterface* BasicValueNode::createNodeObjectForAny(OUString 
const& rName,
+                                                                     uno::Any& 
rAny)
+{
+    if (!rAny.hasValue())
+        return nullptr;
 
-            case uno::TypeClass_STRUCT:
-            {
-                lclAppendNodeToParent(pTree, rParent,
-                                      new StructNode(aFieldName, aFieldValue, 
mxContext));
-            }
-            break;
+    switch (rAny.getValueType().getTypeClass())
+    {
+        case uno::TypeClass_INTERFACE:
+            return new GenericPropertiesNode(rName, rAny, mxContext);
 
-            default:
-            {
-                lclAppendNodeToParent(pTree, rParent,
-                                      new BasicValueNode(aFieldName, 
aFieldValue, mxContext));
-            }
+        case uno::TypeClass_SEQUENCE:
+            return new SequenceNode(rName, rAny, mxContext);
+
+        case uno::TypeClass_STRUCT:
+            return new StructNode(rName, rAny, mxContext);
+
+        default:
             break;
-        }
     }
+
+    return new BasicValueNode(rName, rAny, mxContext);
 }
 
 } // end anonymous namespace
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to