chart2/qa/extras/chart2export.cxx                                   |   33 
++++++++++
 chart2/qa/extras/data/ods/tdf131115.ods                             |binary
 chart2/qa/extras/data/ods/tdf131979.ods                             |binary
 chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx |   12 +--
 include/xmloff/prstylei.hxx                                         |    2 
 xmloff/inc/XMLChartStyleContext.hxx                                 |    2 
 xmloff/source/chart/SchXMLSeries2Context.cxx                        |   22 
++++++
 7 files changed, 65 insertions(+), 6 deletions(-)

New commits:
commit 434d92a51409b0847ee7d313b50fc547b7615bff
Author:     Balazs Varga <balazs.varga...@gmail.com>
AuthorDate: Thu Apr 9 13:45:10 2020 +0200
Commit:     László Németh <nem...@numbertext.org>
CommitDate: Fri Apr 17 12:16:17 2020 +0200

    tdf#131979 Chart ODF import-export of Link to source format
    
    setting also into data point styles, fixing lost numbering
    style of custom data points. (Only export into the data
    series style was supported previously.)
    
    Also fix tdf#131115 - FILEOPEN: Incorrect format of single data label
    Regression from commit: e57d90cd4e51a1353eafc87bb29cfe6076704a7c
    (tdf#129173 tdf#129175 Fix number format of data labels)
    
    Data point styles in older ODF files do not contain the
    'link-data-style-to-source' property, so they used the
    data series style property during the import previously.
    Now we set the default false value, if the data point
    style contains a 'data-style-name' (number format).
    
    Change-Id: I4786e62ca75770ed632463bcf1275ece7ea793f4
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91967
    Tested-by: László Németh <nem...@numbertext.org>
    Reviewed-by: László Németh <nem...@numbertext.org>

diff --git a/chart2/qa/extras/chart2export.cxx 
b/chart2/qa/extras/chart2export.cxx
index 10b284adb344..378e2361d034 100644
--- a/chart2/qa/extras/chart2export.cxx
+++ b/chart2/qa/extras/chart2export.cxx
@@ -164,6 +164,7 @@ public:
     void testTdf126076();
     void testTdf75330();
     void testTdf127792();
+    void testTdf131979();
 
     CPPUNIT_TEST_SUITE(Chart2ExportTest);
     CPPUNIT_TEST(testErrorBarXLSX);
@@ -291,6 +292,7 @@ public:
     CPPUNIT_TEST(testTdf126076);
     CPPUNIT_TEST(testTdf75330);
     CPPUNIT_TEST(testTdf127792);
+    CPPUNIT_TEST(testTdf131979);
 
     CPPUNIT_TEST_SUITE_END();
 
@@ -2678,6 +2680,37 @@ void Chart2ExportTest::testTdf127792()
     }
 }
 
+void Chart2ExportTest::testTdf131979()
+{
+    load("/chart2/qa/extras/data/ods/", "tdf131115.ods");
+    {
+        reload("calc8");
+        Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, 
mxComponent);
+        CPPUNIT_ASSERT(xChartDoc.is());
+        Reference<chart2::XDataSeries> 
xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+        CPPUNIT_ASSERT(xDataSeries.is());
+        Reference<beans::XPropertySet> xPropertySet;
+        xPropertySet.set(xDataSeries->getDataPointByIndex(2), 
uno::UNO_SET_THROW);
+        bool blinknumberformattosource = true;
+        
CPPUNIT_ASSERT(xPropertySet->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) 
>>= blinknumberformattosource);
+        CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to 
false.", !blinknumberformattosource);
+    }
+
+    load("/chart2/qa/extras/data/ods/", "tdf131979.ods");
+    {
+        reload("calc8");
+        Reference<chart2::XChartDocument> xChartDoc = getChartDocFromSheet(0, 
mxComponent);
+        CPPUNIT_ASSERT(xChartDoc.is());
+        Reference<chart2::XDataSeries> 
xDataSeries(getDataSeriesFromDoc(xChartDoc, 0));
+        CPPUNIT_ASSERT(xDataSeries.is());
+        Reference<beans::XPropertySet> xPropertySet;
+        xPropertySet.set(xDataSeries->getDataPointByIndex(2), 
uno::UNO_SET_THROW);
+        bool blinknumberformattosource = true;
+        
CPPUNIT_ASSERT(xPropertySet->getPropertyValue(CHART_UNONAME_LINK_TO_SRC_NUMFMT) 
>>= blinknumberformattosource);
+        CPPUNIT_ASSERT_MESSAGE("\"LinkNumberFormatToSource\" should be set to 
true.", blinknumberformattosource);
+    }
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ExportTest);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/chart2/qa/extras/data/ods/tdf131115.ods 
b/chart2/qa/extras/data/ods/tdf131115.ods
new file mode 100644
index 000000000000..76a87c2c226c
Binary files /dev/null and b/chart2/qa/extras/data/ods/tdf131115.ods differ
diff --git a/chart2/qa/extras/data/ods/tdf131979.ods 
b/chart2/qa/extras/data/ods/tdf131979.ods
new file mode 100644
index 000000000000..3dfcf6b699f9
Binary files /dev/null and b/chart2/qa/extras/data/ods/tdf131979.ods differ
diff --git 
a/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx 
b/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx
index db8fd95abea7..a695076a4c13 100644
--- a/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx
+++ b/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx
@@ -118,6 +118,12 @@ void lcl_AddPropertiesToVector_PointProperties(
                   beans::PropertyAttribute::BOUND
                   | beans::PropertyAttribute::MAYBEVOID );
 
+    rOutProperties.emplace_back( CHART_UNONAME_LINK_TO_SRC_NUMFMT,
+                  PROP_SERIES_LINK_NUMBERFORMAT_TO_SOURCE,
+                  cppu::UnoType<bool>::get(),
+                  beans::PropertyAttribute::BOUND
+                  | beans::PropertyAttribute::MAYBEDEFAULT );
+
     rOutProperties.emplace_back( "PercentageNumberFormat",
                   PROP_SERIES_PERCENTAGE_NUMBERFORMAT,
                   cppu::UnoType<sal_Int32>::get(),
@@ -176,12 +182,6 @@ void lcl_AddPropertiesToVector_SeriesOnly(
                   cppu::UnoType<sal_Int32>::get(),
                   beans::PropertyAttribute::BOUND
                   | beans::PropertyAttribute::MAYBEDEFAULT );
-
-    rOutProperties.emplace_back( CHART_UNONAME_LINK_TO_SRC_NUMFMT,
-                  PROP_SERIES_LINK_NUMBERFORMAT_TO_SOURCE,
-                  cppu::UnoType<bool>::get(),
-                  beans::PropertyAttribute::BOUND
-                  | beans::PropertyAttribute::MAYBEDEFAULT );
 }
 
 uno::Sequence< Property > lcl_GetPropertySequence( 
DataSeriesPointWrapper::eType _eType )
diff --git a/include/xmloff/prstylei.hxx b/include/xmloff/prstylei.hxx
index d34fd4527644..ef42a6ad5e5c 100644
--- a/include/xmloff/prstylei.hxx
+++ b/include/xmloff/prstylei.hxx
@@ -101,6 +101,8 @@ public:
     virtual void FillPropertySet(
             const css::uno::Reference< css::beans::XPropertySet > & rPropSet );
 
+    virtual bool isEmptyDataStyleName() { return false; };
+
     const SvXMLStylesContext *GetStyles() const { return static_cast<const 
SvXMLStylesContext *>(mxStyles.get()); }
     const ::std::vector< XMLPropertyState > & GetProperties() const { return 
maProperties; }
 
diff --git a/xmloff/inc/XMLChartStyleContext.hxx 
b/xmloff/inc/XMLChartStyleContext.hxx
index f9c44de4ae12..3f4413392920 100644
--- a/xmloff/inc/XMLChartStyleContext.hxx
+++ b/xmloff/inc/XMLChartStyleContext.hxx
@@ -51,6 +51,8 @@ public:
         sal_uInt16 nPrefix,
         const OUString& rLocalName,
         const css::uno::Reference< css::xml::sax::XAttributeList > & xAttrList 
) override;
+
+    bool isEmptyDataStyleName() override { return msDataStyleName.isEmpty(); }
 };
 
 #endif // INCLUDED_XMLOFF_INC_XMLCHARTSTYLECONTEXT_HXX
diff --git a/xmloff/source/chart/SchXMLSeries2Context.cxx 
b/xmloff/source/chart/SchXMLSeries2Context.cxx
index 31e638971368..378c1195633a 100644
--- a/xmloff/source/chart/SchXMLSeries2Context.cxx
+++ b/xmloff/source/chart/SchXMLSeries2Context.cxx
@@ -172,6 +172,26 @@ void lcl_resetSymbolSizeForPointsIfNecessary( const 
uno::Reference< beans::XProp
         lcl_setSymbolSizeIfNeeded( xPointProp, rImport );
 }
 
+void lcl_setLinkNumberFormatToSourceIfNeeded( const uno::Reference< 
beans::XPropertySet >& xPointProp
+    , const XMLPropStyleContext* pPropStyleContext, const SvXMLStylesContext* 
pStylesCtxt )
+{
+    uno::Any aAny( 
SchXMLTools::getPropertyFromContext("LinkNumberFormatToSource", 
pPropStyleContext, pStylesCtxt) );
+    if( !aAny.hasValue() )
+    {
+        if( !xPointProp.is() )
+            return;
+
+        bool bLinkToSource = false;
+        if( xPointProp.is() && 
(xPointProp->getPropertyValue("LinkNumberFormatToSource") >>= bLinkToSource) )
+        {
+            if( bLinkToSource )
+            {
+                xPointProp->setPropertyValue("LinkNumberFormatToSource", 
uno::makeAny(false));
+            }
+        }
+    }
+}
+
 void lcl_insertErrorBarLSequencesToMap(
     tSchXMLLSequencesPerIndex & rInOutMap,
     const uno::Reference< beans::XPropertySet > & xSeriesProp )
@@ -1086,6 +1106,8 @@ void SchXMLSeries2Context::setStylesToDataPoints( 
SeriesDefaultsAndStyles& rSeri
                     pPropStyleContext->FillPropertySet( xPointProp );
                     if( seriesStyle.mbSymbolSizeForSeriesIsMissingInFile )
                         lcl_resetSymbolSizeForPointsIfNecessary( xPointProp, 
rImport, pPropStyleContext, pStylesCtxt );
+                    if( !pPropStyleContext->isEmptyDataStyleName() )
+                        lcl_setLinkNumberFormatToSourceIfNeeded( xPointProp, 
pPropStyleContext, pStylesCtxt );
                 }
 
                 // Custom labels might be passed as property
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to