From 1e1535d46f9d89a2584409d88f35b57ef920eefa Mon Sep 17 00:00:00 2001 From: Grzegorz Araminowicz Date: Tue, 4 Jun 2019 13:51:40 +0200 Subject: [PATCH] SmartArt: bullet list improvements by default start bullet list at second level use stBulletLvl parameter to change this behaviour Change-Id: I5084e7bf1902fdca83bea6d57a8c1f37dd2e65be Reviewed-on: https://gerrit.libreoffice.org/73440 Tested-by: Jenkins Reviewed-by: Miklos Vajna --- .../drawingml/diagram/diagramlayoutatoms.cxx | 22 ++++++------ .../unit/data/pptx/smartart-bullet-list.pptx | Bin 0 -> 40468 bytes sd/qa/unit/import-tests-smartart.cxx | 32 +++++++++++++++++- 3 files changed, 43 insertions(+), 11 deletions(-) create mode 100644 sd/qa/unit/data/pptx/smartart-bullet-list.pptx diff --git a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx index 4d0c18c27561..2c612233251d 100644 --- a/oox/source/drawingml/diagram/diagramlayoutatoms.cxx +++ b/oox/source/drawingml/diagram/diagramlayoutatoms.cxx @@ -1227,27 +1227,30 @@ void AlgAtom::layoutShape( const ShapePtr& rShape, nBaseLevel = aParagraph->getProperties().getLevel(); } + // Start bullets at: + // 1 - top level + // 2 - with children (default) + int nStartBulletsAtLevel = 2; ParamMap::const_iterator aBulletLvl = maMap.find(XML_stBulletLvl); - int nStartBulletsAtLevel = 0; if (aBulletLvl != maMap.end()) - { - nBaseLevel -= aBulletLvl->second; nStartBulletsAtLevel = aBulletLvl->second; - } + nStartBulletsAtLevel--; + bool isBulletList = false; for (auto & aParagraph : pTextBody->getParagraphs()) { - sal_Int32 nLevel = aParagraph->getProperties().getLevel(); - aParagraph->getProperties().setLevel(nLevel - nBaseLevel); - if (nStartBulletsAtLevel > 0 && nLevel >= nStartBulletsAtLevel) + sal_Int32 nLevel = aParagraph->getProperties().getLevel() - nBaseLevel; + aParagraph->getProperties().setLevel(nLevel); + if (nLevel >= nStartBulletsAtLevel) { // It is not possible to change the bullet style for text. - sal_Int32 nLeftMargin = 285750 * (nLevel - nStartBulletsAtLevel) / EMU_PER_HMM; + sal_Int32 nLeftMargin = 285750 * (nLevel - nStartBulletsAtLevel + 1) / EMU_PER_HMM; aParagraph->getProperties().getParaLeftMargin() = nLeftMargin; aParagraph->getProperties().getFirstLineIndentation() = -285750 / EMU_PER_HMM; OUString aBulletChar = OUString::fromUtf8(u8"•"); aParagraph->getProperties().getBulletList().setBulletChar(aBulletChar); aParagraph->getProperties().getBulletList().setSuffixNone(); + isBulletList = true; } } @@ -1260,8 +1263,7 @@ void AlgAtom::layoutShape( const ShapePtr& rShape, for (auto & aParagraph : pTextBody->getParagraphs()) aParagraph->getProperties().setParaAdjust(aAlignment); } - else if (std::all_of(pTextBody->getParagraphs().begin(), pTextBody->getParagraphs().end(), - [](const std::shared_ptr& aParagraph) { return aParagraph->getProperties().getLevel() == 0; })) + else if (!isBulletList) { // if not list use default alignment - centered for (auto & aParagraph : pTextBody->getParagraphs()) diff --git a/sd/qa/unit/data/pptx/smartart-bullet-list.pptx b/sd/qa/unit/data/pptx/smartart-bullet-list.pptx new file mode 100644 index 0000000000000000000000000000000000000000..d95bdb769140e4b606d74e9ffd0092984b14715b GIT binary patch literal 40468 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�!=;(9I@&WK=8kG- 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 xRules(xPara->getPropertyValue("NumberingRules"), uno::UNO_QUERY); - comphelper::SequenceAsHashMap aRule(xRules->getByIndex(1)); + comphelper::SequenceAsHashMap aRule(xRules->getByIndex(0)); CPPUNIT_ASSERT_EQUAL(OUString::fromUtf8(u8"•"), aRule["BulletChar"].get()); } @@ -1244,6 +1246,34 @@ void SdImportTestSmartArt::testVerticalBlockList() xDocShRef->DoClose(); } +void SdImportTestSmartArt::testBulletList() +{ + sd::DrawDocShellRef xDocShRef = loadURL( + m_directories.getURLFromSrc("/sd/qa/unit/data/pptx/smartart-bullet-list.pptx"), + PPTX); + uno::Reference xGroup(getShapeFromPage(0, 0, xDocShRef), uno::UNO_QUERY); + CPPUNIT_ASSERT(xGroup.is()); + + uno::Reference xText(xGroup->getByIndex(1), uno::UNO_QUERY); + uno::Reference xParasAccess(xText, uno::UNO_QUERY); + uno::Reference xParas = xParasAccess->createEnumeration(); + xParas->nextElement(); // skip parent + + // child levels should have bullets + uno::Reference xPara1(xParas->nextElement(), uno::UNO_QUERY); + uno::Reference xRules1(xPara1->getPropertyValue("NumberingRules"), uno::UNO_QUERY); + comphelper::SequenceAsHashMap aRule1(xRules1->getByIndex(1)); + CPPUNIT_ASSERT_EQUAL(OUString::fromUtf8(u8"•"), aRule1["BulletChar"].get()); + + uno::Reference xPara2(xParas->nextElement(), uno::UNO_QUERY); + uno::Reference xRules2(xPara2->getPropertyValue("NumberingRules"), uno::UNO_QUERY); + comphelper::SequenceAsHashMap aRule2(xRules2->getByIndex(2)); + CPPUNIT_ASSERT_EQUAL(OUString::fromUtf8(u8"•"), aRule2["BulletChar"].get()); + + xDocShRef->DoClose(); +} + + CPPUNIT_TEST_SUITE_REGISTRATION(SdImportTestSmartArt); CPPUNIT_PLUGIN_IMPLEMENT();