[Libreoffice-commits] core.git: Branch 'libreoffice-7-2' - include/oox oox/source sd/qa
Tibor Nagy (via logerrit)
logerrit at kemper.freedesktop.org
Mon Jun 21 15:53:33 UTC 2021
include/oox/ppt/presPropsfragmenthandler.hxx | 1 +
oox/source/ppt/presPropsfragmenthandler.cxx | 17 +++++++++++++++++
sd/qa/unit/data/pptx/tdf142590.pptx |binary
sd/qa/unit/import-tests.cxx | 19 +++++++++++++++++++
4 files changed, 37 insertions(+)
New commits:
commit 11ef976624dce8a8e50a1eb20e9c586519fd7ec8
Author: Tibor Nagy <nagy.tibor2 at nisz.hu>
AuthorDate: Mon Jun 14 16:06:55 2021 +0200
Commit: László Németh <nemeth at numbertext.org>
CommitDate: Mon Jun 21 17:53:00 2021 +0200
tdf#142590 PPTX import: fix custom slide show use as default
If the PPTX file contains a custom slideshow, which set by
default and opening in Impress, this setting wasn't imported.
See also commit 312334f8488a668e9b5302959b60292ce151e4fc
"tdf#47365 PPTX export: support loop attribute" and
commit a4b66458a7b8da2f5580014813e5dabe3fa670b6
"tdf#125071 PPTX: fix missing custom slide show export".
Change-Id: I9c2b3773f6883ee795f119df5b8534fcdfa6618f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117172
Tested-by: László Németh <nemeth at numbertext.org>
Reviewed-by: László Németh <nemeth at numbertext.org>
(cherry picked from commit 8bf44b9cdceb7926fe52ef0bd4a38af24e7c700a)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117562
Tested-by: Jenkins
diff --git a/include/oox/ppt/presPropsfragmenthandler.hxx b/include/oox/ppt/presPropsfragmenthandler.hxx
index d760f39f4524..3edf60cf3273 100644
--- a/include/oox/ppt/presPropsfragmenthandler.hxx
+++ b/include/oox/ppt/presPropsfragmenthandler.hxx
@@ -32,6 +32,7 @@ public:
private:
bool m_bLoop = false;
+ OUString m_sId;
};
} // namespace ppt
} // namespace oox
diff --git a/oox/source/ppt/presPropsfragmenthandler.cxx b/oox/source/ppt/presPropsfragmenthandler.cxx
index 53d831b60ae9..47965050b164 100644
--- a/oox/source/ppt/presPropsfragmenthandler.cxx
+++ b/oox/source/ppt/presPropsfragmenthandler.cxx
@@ -10,6 +10,9 @@
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/frame/XModel.hpp>
#include <com/sun/star/presentation/XPresentationSupplier.hpp>
+#include <com/sun/star/presentation/XCustomPresentationSupplier.hpp>
+#include <com/sun/star/container/XNamed.hpp>
+#include <com/sun/star/container/XIndexContainer.hpp>
#include <oox/core/xmlfilterbase.hxx>
#include <oox/helper/attributelist.hxx>
@@ -33,6 +36,17 @@ void PresPropsFragmentHandler::finalizeImport()
css::uno::Reference<css::beans::XPropertySet> xPresentationProps(
xPresentationSupplier->getPresentation(), css::uno::UNO_QUERY_THROW);
xPresentationProps->setPropertyValue("IsEndless", css::uno::Any(m_bLoop));
+
+ if (!m_sId.isEmpty())
+ {
+ css::uno::Reference<css::presentation::XCustomPresentationSupplier>
+ XCustPresentationSupplier(getFilter().getModel(), css::uno::UNO_QUERY_THROW);
+ css::uno::Reference<css::container::XNameContainer> mxCustShows;
+ mxCustShows = XCustPresentationSupplier->getCustomPresentations();
+ const css::uno::Sequence<OUString> aNameSeq(mxCustShows->getElementNames());
+ xPresentationProps->setPropertyValue("CustomShow",
+ css::uno::Any(aNameSeq[m_sId.toInt32()]));
+ }
}
core::ContextHandlerRef PresPropsFragmentHandler::onCreateContext(sal_Int32 aElementToken,
@@ -45,6 +59,9 @@ core::ContextHandlerRef PresPropsFragmentHandler::onCreateContext(sal_Int32 aEle
case PPT_TOKEN(showPr):
m_bLoop = rAttribs.getBool(XML_loop, false);
return this;
+ case PPT_TOKEN(custShow):
+ m_sId = rAttribs.getString(XML_id).get();
+ return this;
}
return this;
}
diff --git a/sd/qa/unit/data/pptx/tdf142590.pptx b/sd/qa/unit/data/pptx/tdf142590.pptx
new file mode 100644
index 000000000000..ecc131c2a0f6
Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf142590.pptx differ
diff --git a/sd/qa/unit/import-tests.cxx b/sd/qa/unit/import-tests.cxx
index fec4db5b6586..8d7b5333f720 100644
--- a/sd/qa/unit/import-tests.cxx
+++ b/sd/qa/unit/import-tests.cxx
@@ -122,6 +122,7 @@ public:
virtual void setUp() override;
void testDocumentLayout();
+ void testTdf142590();
void testCustomSlideShow();
void testInternalHyperlink();
void testHyperlinkColor();
@@ -241,6 +242,7 @@ public:
CPPUNIT_TEST_SUITE(SdImportTest);
CPPUNIT_TEST(testDocumentLayout);
+ CPPUNIT_TEST(testTdf142590);
CPPUNIT_TEST(testCustomSlideShow);
CPPUNIT_TEST(testInternalHyperlink);
CPPUNIT_TEST(testHyperlinkColor);
@@ -436,6 +438,23 @@ void SdImportTest::testDocumentLayout()
}
}
+void SdImportTest::testTdf142590()
+{
+ ::sd::DrawDocShellRef xDocShRef
+ = loadURL(m_directories.getURLFromSrc(u"/sd/qa/unit/data/pptx/tdf142590.pptx"), PPTX);
+
+ uno::Reference<presentation::XPresentationSupplier> xPresentationSupplier(
+ xDocShRef->GetDoc()->getUnoModel(), uno::UNO_QUERY_THROW);
+ uno::Reference<beans::XPropertySet> xPresentationProps(xPresentationSupplier->getPresentation(),
+ uno::UNO_QUERY_THROW);
+ const OUString sCustomShowId
+ = xPresentationProps->getPropertyValue("CustomShow").get<OUString>();
+
+ CPPUNIT_ASSERT(!sCustomShowId.isEmpty());
+
+ xDocShRef->DoClose();
+}
+
void SdImportTest::testCustomSlideShow()
{
::sd::DrawDocShellRef xDocShRef
More information about the Libreoffice-commits
mailing list