From 9ec2ecca18e0ac62c5a9a0fcd628c6dde610e174 Mon Sep 17 00:00:00 2001
From: Andrzej Hunt <andrzej@ahunt.org>
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 <andrzej@ahunt.org>
Tested-by: Andrzej Hunt <andrzej@ahunt.org>
(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<container::XNameAccess> xStyleFamilies(xStyleFamiliesSupplier->getStyleFamilies(), uno::UNO_QUERY);
uno::Sequence<OUString> 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<container::XNameAccess> 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<OUString> aStyles = xStyleFamily->getElementNames();
for (sal_Int32 nInd = 0; nInd < aStyles.getLength(); ++nInd)
{
--
2.12.0