chart2/qa/extras/chart2export.cxx                    |   10 ++++
 chart2/qa/extras/data/xlsx/testAutoTitleDeleted.xlsx |binary
 oox/source/export/chartexport.cxx                    |   47 ++++++++++---------
 3 files changed, 35 insertions(+), 22 deletions(-)

New commits:
commit f6437b3a98256cd2782164fedefbc109bf5ab114
Author:     Balazs Varga <balazs.varga...@gmail.com>
AuthorDate: Wed Nov 6 15:50:32 2019 +0100
Commit:     László Németh <nem...@numbertext.org>
CommitDate: Fri Nov 8 13:19:47 2019 +0100

    tdf#128618 OOXML chart export: deleted automatic title returns on save
    
    If there is no main title and/or subtitle, write out autoTitleDeleted
    with a true value.
    
    Regression from the commit 96a29c12a9d8734c9d2a812f38fc6654b5df9c48
    (tdf#101322 Chart OOXML Export: fix missing subtitle)
    
    Change-Id: I0094014fc4da4cb66d31e4249f916452d00758c7
    Reviewed-on: https://gerrit.libreoffice.org/82142
    Reviewed-by: László Németh <nem...@numbertext.org>
    Tested-by: László Németh <nem...@numbertext.org>

diff --git a/chart2/qa/extras/chart2export.cxx 
b/chart2/qa/extras/chart2export.cxx
index dd07808b1d05..4d14a1e96638 100644
--- a/chart2/qa/extras/chart2export.cxx
+++ b/chart2/qa/extras/chart2export.cxx
@@ -108,6 +108,7 @@ public:
     void testLegendManualLayoutXLSX();
     void testChartSubTitle();
     void testChartMainWithSubTitle();
+    void testAutoTitleDeleted();
     void testChartTitlePropertiesColorFillXLSX();
     void testChartTitlePropertiesGradientFillXLSX();
     void testChartTitlePropertiesBitmapFillXLSX();
@@ -217,6 +218,7 @@ public:
     CPPUNIT_TEST(testLegendManualLayoutXLSX);
     CPPUNIT_TEST(testChartSubTitle);
     CPPUNIT_TEST(testChartMainWithSubTitle);
+    CPPUNIT_TEST(testAutoTitleDeleted);
     CPPUNIT_TEST(testChartTitlePropertiesColorFillXLSX);
     CPPUNIT_TEST(testChartTitlePropertiesGradientFillXLSX);
     CPPUNIT_TEST(testChartTitlePropertiesBitmapFillXLSX);
@@ -1732,6 +1734,14 @@ void Chart2ExportTest::testChartMainWithSubTitle()
     assertXPath(pXmlDoc, 
"/c:chartSpace/c:chart/c:title/c:spPr/a:solidFill/a:srgbClr", "val", "81d41a");
 }
 
+void Chart2ExportTest::testAutoTitleDeleted()
+{
+    load("/chart2/qa/extras/data/xlsx/", "testAutoTitleDeleted.xlsx");
+    xmlDocPtr pXmlDoc = parseExport("xl/charts/chart", "Calc Office Open XML");
+    CPPUNIT_ASSERT(pXmlDoc);
+    assertXPath(pXmlDoc, "/c:chartSpace/c:chart/c:autoTitleDeleted", "val", 
"1");
+}
+
 void Chart2ExportTest::testChartTitlePropertiesColorFillXLSX()
 {
     load("/chart2/qa/extras/data/xlsx/", 
"testChartTitlePropertiesColorFill.xlsx");
diff --git a/chart2/qa/extras/data/xlsx/testAutoTitleDeleted.xlsx 
b/chart2/qa/extras/data/xlsx/testAutoTitleDeleted.xlsx
new file mode 100644
index 000000000000..409389e23beb
Binary files /dev/null and 
b/chart2/qa/extras/data/xlsx/testAutoTitleDeleted.xlsx differ
diff --git a/oox/source/export/chartexport.cxx 
b/oox/source/export/chartexport.cxx
index 040014912b32..aeb2c8012674 100644
--- a/oox/source/export/chartexport.cxx
+++ b/oox/source/export/chartexport.cxx
@@ -917,7 +917,7 @@ void ChartExport::exportChart( const Reference< 
css::chart::XChartDocument >& xC
 
     // get Properties of ChartDocument
     bool bHasMainTitle = false;
-    bool bHasSubTitle = false;
+    OUString aSubTitle;
     bool bHasLegend = false;
     Reference< beans::XPropertySet > xDocPropSet( xChartDoc, uno::UNO_QUERY );
     if( xDocPropSet.is())
@@ -926,8 +926,6 @@ void ChartExport::exportChart( const Reference< 
css::chart::XChartDocument >& xC
         {
             Any aAny( xDocPropSet->getPropertyValue("HasMainTitle"));
             aAny >>= bHasMainTitle;
-            aAny = xDocPropSet->getPropertyValue("HasSubTitle");
-            aAny >>= bHasSubTitle;
             aAny = xDocPropSet->getPropertyValue("HasLegend");
             aAny >>= bHasLegend;
         }
@@ -937,33 +935,38 @@ void ChartExport::exportChart( const Reference< 
css::chart::XChartDocument >& xC
         }
     } // if( xDocPropSet.is())
 
-    // chart element
+    Reference< beans::XPropertySet > xPropSubTitle( xChartDoc->getSubTitle(), 
UNO_QUERY );
+    if( xPropSubTitle.is())
+    {
+        try
+        {
+            xPropSubTitle->getPropertyValue("String") >>= aSubTitle;
+        }
+        catch( beans::UnknownPropertyException & )
+        {
+        }
+    }
 
+    // chart element
     FSHelperPtr pFS = GetFS();
     pFS->startElement(FSNS(XML_c, XML_chart));
 
     // titles
-    if( bHasMainTitle || bHasSubTitle )
+    if( bHasMainTitle )
     {
-        OUString aSubText;
-        Reference< drawing::XShape > xShape;
-        if( bHasSubTitle )
-        {
-            xShape = xChartDoc->getSubTitle();
-            if( bHasMainTitle )
-            {
-                // if we have a title and a subtitle too, we need only the 
subtitle text
-                Reference< beans::XPropertySet > xPropSet(xShape, 
uno::UNO_QUERY);
-                if( xPropSet.is() )
-                    xPropSet->getPropertyValue("String") >>= aSubText;
-            }
-        }
-        if( bHasMainTitle )
-            xShape = xChartDoc->getTitle();
-
-        exportTitle( xShape, !aSubText.isEmpty() ? &aSubText : nullptr );
+        exportTitle( xChartDoc->getTitle(), !aSubTitle.isEmpty() ? &aSubTitle 
: nullptr );
         pFS->singleElement(FSNS(XML_c, XML_autoTitleDeleted), XML_val, "0");
     }
+    else if( !aSubTitle.isEmpty() )
+    {
+        exportTitle( xChartDoc->getSubTitle(), nullptr );
+        pFS->singleElement(FSNS(XML_c, XML_autoTitleDeleted), XML_val, "0");
+    }
+    else
+    {
+        pFS->singleElement(FSNS(XML_c, XML_autoTitleDeleted), XML_val, "1");
+    }
+
     InitPlotArea( );
     if( mbIs3DChart )
     {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to