diff options
author | Tibor Nagy <nagy.tibor2@nisz.hu> | 2021-07-08 16:12:05 +0200 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2021-08-10 09:22:23 +0200 |
commit | 9cda220e98acda221b204b49d5d91ce4375cb2a7 (patch) | |
tree | e2f390d35654cd89e894d75c1f593184071859e0 /sd | |
parent | a5812749820d5118c3bb4297e5f785635c75f07a (diff) |
tdf#143126 PPTX: slideshow setting “Start from” not exported
Follow-up to commit 3d55149dcf19cffefcc19c16a3abbe8851453c5e
(tdf#142913 PPTX: slideshow setting “Start from” not imported).
Change-Id: I4124e528f8af61c3b87978c2f3d2b96d983ec056
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118648
Tested-by: Jenkins
Tested-by: László Németh <nemeth@numbertext.org>
Reviewed-by: László Németh <nemeth@numbertext.org>
(cherry picked from commit d2c2985024ee085796a21ef9c3226dde10311c80)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120238
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'sd')
-rw-r--r-- | sd/qa/unit/data/pptx/tdf143126.pptx | bin | 0 -> 35043 bytes | |||
-rw-r--r-- | sd/qa/unit/export-tests-ooxml1.cxx | 16 | ||||
-rw-r--r-- | sd/source/filter/eppt/pptx-epptooxml.cxx | 29 |
3 files changed, 43 insertions, 2 deletions
diff --git a/sd/qa/unit/data/pptx/tdf143126.pptx b/sd/qa/unit/data/pptx/tdf143126.pptx Binary files differnew file mode 100644 index 000000000000..f5799b60f26b --- /dev/null +++ b/sd/qa/unit/data/pptx/tdf143126.pptx diff --git a/sd/qa/unit/export-tests-ooxml1.cxx b/sd/qa/unit/export-tests-ooxml1.cxx index a450e6d890eb..8c1db529b89c 100644 --- a/sd/qa/unit/export-tests-ooxml1.cxx +++ b/sd/qa/unit/export-tests-ooxml1.cxx @@ -117,6 +117,7 @@ public: void testTdf140865Wordart3D(); void testTdf124457(); void testPlaceholderFillAndOutlineExport(); + void testTdf143126(); CPPUNIT_TEST_SUITE(SdOOXMLExportTest1); @@ -176,6 +177,7 @@ public: CPPUNIT_TEST(testTdf140865Wordart3D); CPPUNIT_TEST(testTdf124457); CPPUNIT_TEST(testPlaceholderFillAndOutlineExport); + CPPUNIT_TEST(testTdf143126); CPPUNIT_TEST_SUITE_END(); @@ -1555,6 +1557,20 @@ void SdOOXMLExportTest1::testTdf124457() "repeatCount", "indefinite"); } +void SdOOXMLExportTest1::testTdf143126() +{ + sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc(u"/sd/qa/unit/data/pptx/tdf143126.pptx"), PPTX); + utl::TempFile tempFile; + xDocShRef = saveAndReload(xDocShRef.get(), PPTX, &tempFile); + xDocShRef->DoClose(); + + xmlDocUniquePtr pXmlDoc = parseExport(tempFile, "ppt/presProps.xml"); + + assertXPath(pXmlDoc, "/p:presentationPr/p:showPr", "showNarration", "1"); + assertXPath(pXmlDoc, "/p:presentationPr/p:showPr/p:sldRg", "st", "2" ); + assertXPath(pXmlDoc, "/p:presentationPr/p:showPr/p:sldRg", "end", "3" ); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdOOXMLExportTest1); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sd/source/filter/eppt/pptx-epptooxml.cxx b/sd/source/filter/eppt/pptx-epptooxml.cxx index f30a4d040fc6..e9b219bbcd6e 100644 --- a/sd/source/filter/eppt/pptx-epptooxml.cxx +++ b/sd/source/filter/eppt/pptx-epptooxml.cxx @@ -1067,6 +1067,7 @@ void PowerPointExport::WritePresentationProps() Reference<beans::XPropertySet> xPresentationProps(xPresentationSupplier->getPresentation(), uno::UNO_QUERY); bool bEndlessVal = xPresentationProps->getPropertyValue("IsEndless").get<bool>(); + OUString sFirstPage = xPresentationProps->getPropertyValue("FirstPage").get<OUString>(); FSHelperPtr pFS = openFragmentStreamWithSerializer( "ppt/presProps.xml", @@ -1077,8 +1078,32 @@ void PowerPointExport::WritePresentationProps() pFS->startElementNS(XML_p, XML_presentationPr, PPRNMSS); - pFS->singleElementNS(XML_p, XML_showPr, XML_loop, sax_fastparser::UseIf("1", bEndlessVal), - XML_showNarration, sax_fastparser::UseIf("1", bEndlessVal)); + pFS->startElementNS(XML_p, XML_showPr, XML_loop, sax_fastparser::UseIf("1", bEndlessVal), + XML_showNarration, "1"); + + Reference<drawing::XDrawPagesSupplier> xDPS(mXModel, uno::UNO_QUERY_THROW); + Reference<drawing::XDrawPages> xDrawPages(xDPS->getDrawPages(), uno::UNO_SET_THROW); + if (!sFirstPage.isEmpty()) + { + sal_Int32 nStartSlide = 1; + sal_Int32 nEndSlide = xDrawPages->getCount(); + for (sal_Int32 i = 0; i < nEndSlide; i++) + { + Reference<drawing::XDrawPage> xDrawPage; + xDrawPages->getByIndex(i) >>= xDrawPage; + Reference<container::XNamed> xNamed(xDrawPage, uno::UNO_QUERY_THROW); + if (xNamed->getName() == sFirstPage) + { + nStartSlide = i + 1; + break; + } + } + + pFS->singleElementNS(XML_p, XML_sldRg, XML_st, OUString::number(nStartSlide), XML_end, + OUString::number(nEndSlide)); + } + + pFS->endElementNS(XML_p, XML_showPr); pFS->endElementNS(XML_p, XML_presentationPr); } |