From 9ec2ecca18e0ac62c5a9a0fcd628c6dde610e174 Mon Sep 17 00:00:00 2001 From: Andrzej Hunt Date: Wed, 11 Nov 2015 21:07:13 +0100 Subject: [PATCH 306/398] lok sw: Place default styles at top of style selector The order/list of default styles for Writer should be hardcoded, (by default the list contains 100+ items), it makes most sense to place these at the start of the list, allowing the client to then select how many styles they actually want to show. Change-Id: I491a426397e06b3502cee7484c5f8adfd9d9cdf2 Reviewed-on: https://gerrit.libreoffice.org/19918 Reviewed-by: Andrzej Hunt Tested-by: Andrzej Hunt (cherry picked from commit 5c6119eeaaaed322c884504a53bb558258233fe9) --- desktop/source/lib/init.cxx | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx index b7459e03244c..e09ad171678e 100644 --- a/desktop/source/lib/init.cxx +++ b/desktop/source/lib/init.cxx @@ -1252,12 +1252,45 @@ static char* getStyles(LibreOfficeKitDocument* pThis, const char* pCommand) uno::Reference xStyleFamilies(xStyleFamiliesSupplier->getStyleFamilies(), uno::UNO_QUERY); uno::Sequence aStyleFamilies = xStyleFamilies->getElementNames(); + static const sal_Char* aWriterStyles[] = + { + "Text body", + "Quotations", + "Title", + "Subtitle", + "Heading 1", + "Heading 2", + "Heading 3" + }; + boost::property_tree::ptree aValues; for (sal_Int32 nStyleFam = 0; nStyleFam < aStyleFamilies.getLength(); ++nStyleFam) { boost::property_tree::ptree aChildren; OUString sStyleFam = aStyleFamilies[nStyleFam]; uno::Reference xStyleFamily(xStyleFamilies->getByName(sStyleFam), uno::UNO_QUERY); + + // Writer provides a huge number of styles, we have a list of 7 "default" styles which + // should be shown in the normal dropdown, which we should add to the start of the list + // to simplify their selection. + if (sStyleFam == "ParagraphStyles" + && doc_getDocumentType(pThis) == LOK_DOCTYPE_TEXT) + { + for( sal_uInt32 nStyle = 0; nStyle < sizeof( aWriterStyles ) / sizeof( sal_Char*); ++nStyle ) + { + uno::Reference< beans::XPropertySet > xStyle; + xStyleFamily->getByName( OUString::createFromAscii( aWriterStyles[nStyle] )) >>= xStyle; + OUString sName; + xStyle->getPropertyValue("DisplayName") >>= sName; + if( !sName.isEmpty() ) + { + boost::property_tree::ptree aChild; + aChild.put("", sName.toUtf8()); + aChildren.push_back(std::make_pair("", aChild)); + } + } + } + uno::Sequence aStyles = xStyleFamily->getElementNames(); for (sal_Int32 nInd = 0; nInd < aStyles.getLength(); ++nInd) { -- 2.12.0