From e6bf21d2d5efb231c877eb985997b28033198600 Mon Sep 17 00:00:00 2001 From: Vasily Melenchuk Date: Mon, 27 Sep 2021 13:40:41 +0300 Subject: [PATCH] tdf#144578: numbering: generate include upper levels for UI In spite of used list format in ODF for UI we still need to show prefix/suffix (already was there) and included upper levels (done in this patch) for correct visualization of level properties. Moved initialization of ListLevel to later steps to avoid overriding of generated values for prefix, suffix and IncludeUpperLevel by some invalid values. Change-Id: I5d132426c06021ed526d16fb09276523105aa7b9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/122686 Tested-by: Jenkins Reviewed-by: Vasily Melenchuk --- editeng/source/items/numitem.cxx | 12 ++++- sw/qa/uitest/data/tdf144578.odt | Bin 0 -> 16546 bytes sw/qa/uitest/writer_tests7/tdf144578.py | 66 ++++++++++++++++++++++++ xmloff/source/style/xmlnumi.cxx | 4 +- 4 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 sw/qa/uitest/data/tdf144578.odt create mode 100644 sw/qa/uitest/writer_tests7/tdf144578.py diff --git a/editeng/source/items/numitem.cxx b/editeng/source/items/numitem.cxx index 7348eb16df4d..ca454d92f894 100644 --- a/editeng/source/items/numitem.cxx +++ b/editeng/source/items/numitem.cxx @@ -621,7 +621,9 @@ void SvxNumberFormat::SetListFormat(std::optional oSet) sListFormat = oSet; - // For backward compatibility and UI we should create prefix/suffix also + // For backward compatibility and UI we should create something looking like + // a prefix, suffix and included levels also. This is not possible in general case + // since level format string is much more flexible. But for most cases is okay sal_Int32 nFirstReplacement = sListFormat->indexOf('%'); sal_Int32 nLastReplacement = sListFormat->lastIndexOf('%') + 1; if (nFirstReplacement > 0) @@ -630,6 +632,14 @@ void SvxNumberFormat::SetListFormat(std::optional oSet) if (nLastReplacement >= 0 && nLastReplacement < sListFormat->getLength()) // Everything beyond last '%' is a suffix sSuffix = sListFormat->copy(nLastReplacement); + + sal_uInt8 nPercents = 0; + for (sal_Int32 i = 0; i < sListFormat->getLength(); i++) + { + if ((*sListFormat)[i] == '%') + nPercents++; + } + nInclUpperLevels = nPercents/2; } OUString SvxNumberFormat::GetListFormat(bool bIncludePrefixSuffix /*= true*/) const diff --git a/sw/qa/uitest/data/tdf144578.odt b/sw/qa/uitest/data/tdf144578.odt new file mode 100644 index 0000000000000000000000000000000000000000..d8f0f0f830eec5a3cb5cc2da7da815422fe1fe72 GIT binary patch literal 16546 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 literal 0 HcmV?d00001 diff --git a/sw/qa/uitest/writer_tests7/tdf144578.py b/sw/qa/uitest/writer_tests7/tdf144578.py new file mode 100644 index 000000000000..259b26ed8298 --- /dev/null +++ b/sw/qa/uitest/writer_tests7/tdf144578.py @@ -0,0 +1,66 @@ +# -*- tab-width: 4; indent-tabs-mode: nil; py-indent-offset: 4 -*- +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +# +from uitest.framework import UITestCase +from uitest.uihelper.common import get_state_as_dict, get_url_for_data_file + +import time + +class tdf144578(UITestCase): + + def test_tdf144578(self): + with self.ui_test.load_file(get_url_for_data_file("tdf144578.odt")) as writer_doc: + with self.ui_test.execute_dialog_through_command(".uno:ChapterNumberingDialog") as xDialog: + # Select level "1" + xLevelsTree = xDialog.getChild("level") + xLevel = xLevelsTree.getChild("0") + xLevel.executeAction("SELECT", tuple()) + # Check value for show upper levels + xSubLevels = xDialog.getChild("sublevelsnf") + self.assertEqual(get_state_as_dict(xSubLevels)["Text"], "1") + + # Select level "2" + xLevel = xLevelsTree.getChild("1") + xLevel.executeAction("SELECT", tuple()) + # Check value for show upper levels + xSubLevels = xDialog.getChild("sublevelsnf") + self.assertEqual(get_state_as_dict(xSubLevels)["Text"], "2") + + # Select level "3" + xLevel = xLevelsTree.getChild("2") + xLevel.executeAction("SELECT", tuple()) + # Check value for show upper levels + xSubLevels = xDialog.getChild("sublevelsnf") + self.assertEqual(get_state_as_dict(xSubLevels)["Text"], "3") + + # Select level "3" + xLevel = xLevelsTree.getChild("3") + xLevel.executeAction("SELECT", tuple()) + # Check value for show upper levels + xSubLevels = xDialog.getChild("sublevelsnf") + self.assertEqual(get_state_as_dict(xSubLevels)["Text"], "1") + + # And also verify label strings in outlines + Paragraphs = [] + ParagraphEnum = writer_doc.Text.createEnumeration() + while ParagraphEnum.hasMoreElements(): + Para = ParagraphEnum.nextElement() + Paragraphs.append(Para) + + self.assertEqual(Paragraphs[0].getPropertyValue("ListLabelString"), "I.") + self.assertEqual(Paragraphs[2].getPropertyValue("ListLabelString"), "II.") + self.assertEqual(Paragraphs[4].getPropertyValue("ListLabelString"), "II.A.") + self.assertEqual(Paragraphs[6].getPropertyValue("ListLabelString"), "II.B.") + self.assertEqual(Paragraphs[8].getPropertyValue("ListLabelString"), "III.") + self.assertEqual(Paragraphs[10].getPropertyValue("ListLabelString"), "III.A.") + self.assertEqual(Paragraphs[11].getPropertyValue("ListLabelString"), "III.A.1.") + self.assertEqual(Paragraphs[13].getPropertyValue("ListLabelString"), "III.A.2.") + self.assertEqual(Paragraphs[15].getPropertyValue("ListLabelString"), "III.B.") + self.assertEqual(Paragraphs[17].getPropertyValue("ListLabelString"), "III.C.") + self.assertEqual(Paragraphs[19].getPropertyValue("ListLabelString"), "III.C.1.") + self.assertEqual(Paragraphs[21].getPropertyValue("ListLabelString"), "III.C.2.") + +# vim: set shiftwidth=4 softtabstop=4 expandtab: diff --git a/xmloff/source/style/xmlnumi.cxx b/xmloff/source/style/xmlnumi.cxx index 335bbfac928f..8f40530a2a53 100644 --- a/xmloff/source/style/xmlnumi.cxx +++ b/xmloff/source/style/xmlnumi.cxx @@ -423,8 +423,6 @@ Sequence SvxXMLListLevelStyleContext_Impl::GetProperties() aProperties.push_back(comphelper::makePropertyValue("Suffix", sSuffix)); - aProperties.push_back(comphelper::makePropertyValue("ListFormat", *sListFormat)); - aProperties.push_back(comphelper::makePropertyValue("Adjust", eAdjust)); sal_Int32 nLeftMargin = nSpaceBefore + nMinLabelWidth; @@ -522,6 +520,8 @@ Sequence SvxXMLListLevelStyleContext_Impl::GetProperties() aProperties.push_back(comphelper::makePropertyValue("BulletColor", m_nColor)); } + aProperties.push_back(comphelper::makePropertyValue("ListFormat", *sListFormat)); + return comphelper::containerToSequence(aProperties); }