Blame SOURCES/0306-lok-sw-Place-default-styles-at-top-of-style-selector.patch

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