sd/source/ui/unoidl/unomodel.cxx | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-)
New commits: commit 3dfa66c20d0760d3b2808f93fdf8fafed301e9f5 Author: Marco Cecchetti <marco.cecche...@collabora.com> AuthorDate: Tue Jul 23 23:03:02 2024 +0200 Commit: Tomaž Vajngerl <qui...@gmail.com> CommitDate: Tue Jul 23 23:22:21 2024 +0200 fix-up slideshow: provide animations info Avoid to export json node with the same name node name moved to nodeName property Change-Id: Ibefc6689e6af22e9d2a27b39fd1e08ced6756051 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170917 Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx index 129221abafda..844f2c8c46e6 100644 --- a/sd/source/ui/unoidl/unomodel.cxx +++ b/sd/source/ui/unoidl/unomodel.cxx @@ -479,6 +479,7 @@ public: private: void exportNode(const Reference<XAnimationNode>& xNode); + void exportNodeImpl(const Reference<XAnimationNode>& xNode); void exportContainer(const Reference<XTimeContainer>& xContainer); void exportAnimate(const Reference<XAnimate>& xAnimate); @@ -578,24 +579,43 @@ void convertColor(OStringBuffer& rBuffer, sal_Int32 nColor) rBuffer.append(aUBuffer.makeStringAndClear().toUtf8()); } +bool isValidNode(const Reference<XAnimationNode>& xNode) +{ + if (xNode.is()) + { + sal_Int16 nNodeType = xNode->getType(); + auto iterator = constAnimationNodeTypeToString.find(nNodeType); + return iterator != constAnimationNodeTypeToString.end(); + } + return false; +} + void AnimationsExporter::exportAnimations() { if (!mxDrawPage.is() || !mxPageProps.is() || !mxRootNode.is() || !hasEffects()) return; - exportNode(mxRootNode); + if (isValidNode(mxRootNode)) + { + ::tools::ScopedJsonWriterNode aNode = mrWriter.startNode("root"); + exportNodeImpl(mxRootNode); + } } - void AnimationsExporter::exportNode(const Reference<XAnimationNode>& xNode) +{ + if (!isValidNode(mxRootNode)) + return; + ::tools::ScopedJsonWriterStruct aStruct = mrWriter.startStruct(); + exportNodeImpl(xNode); +} + +void AnimationsExporter::exportNodeImpl(const Reference<XAnimationNode>& xNode) { try { sal_Int16 nNodeType = xNode->getType(); auto iterator = constAnimationNodeTypeToString.find(nNodeType); - if (iterator == constAnimationNodeTypeToString.end()) - return; - - ::tools::ScopedJsonWriterNode aNode = mrWriter.startNode(iterator->second); + mrWriter.put("nodeName", iterator->second); // common properties OStringBuffer sTmp; @@ -855,6 +875,8 @@ void AnimationsExporter::exportContainer(const Reference<XTimeContainer>& xConta { try { + ::tools::ScopedJsonWriterArray anArray = mrWriter.startArray("children"); + Reference<XEnumerationAccess> xEnumerationAccess(xContainer, UNO_QUERY_THROW); Reference<XEnumeration> xEnumeration(xEnumerationAccess->createEnumeration(), css::uno::UNO_SET_THROW);