diff options
author | Tünde Tóth <tundeth@gmail.com> | 2019-12-18 09:49:26 +0100 |
---|---|---|
committer | László Németh <nemeth@numbertext.org> | 2020-01-10 14:21:35 +0100 |
commit | 6e847aa817999ab18acd534f9e6a86685bb268fc (patch) | |
tree | 640176e25db6e79ef4976b9fd6c527b684456c7d /chart2 | |
parent | 04b2310aaa094794ceedaa1bb6ff1823a2d29d3e (diff) |
tdf#129859 XLSX import: don't show deleted legend entries
by adding a new feature to disable selected data points
in pie charts.
Fixing also tdf#129858 by deleting the correct legend entry
in bar charts.
Change-Id: Iaaf3a864e9404b8b6d3e2affbb366e18d0f4b43e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86160
Reviewed-by: László Németh <nemeth@numbertext.org>
Tested-by: László Németh <nemeth@numbertext.org>
Diffstat (limited to 'chart2')
-rw-r--r-- | chart2/qa/extras/chart2import.cxx | 24 | ||||
-rw-r--r-- | chart2/qa/extras/data/xlsx/deleted_legend_entry2.xlsx | bin | 0 -> 20060 bytes | |||
-rw-r--r-- | chart2/source/model/main/DataSeriesProperties.cxx | 6 | ||||
-rw-r--r-- | chart2/source/model/main/DataSeriesProperties.hxx | 3 | ||||
-rw-r--r-- | chart2/source/view/charttypes/VSeriesPlotter.cxx | 21 |
5 files changed, 52 insertions, 2 deletions
diff --git a/chart2/qa/extras/chart2import.cxx b/chart2/qa/extras/chart2import.cxx index e44efe636eed..5fcf205df813 100644 --- a/chart2/qa/extras/chart2import.cxx +++ b/chart2/qa/extras/chart2import.cxx @@ -151,6 +151,7 @@ public: void testTdf121991(); void testTdf123206CustomLabelField(); void testTdf125444PercentageCustomLabel(); + void testDeletedLegendEntries(); CPPUNIT_TEST_SUITE(Chart2ImportTest); CPPUNIT_TEST(Fdo60083); @@ -251,6 +252,8 @@ public: CPPUNIT_TEST(testTdf121991); CPPUNIT_TEST(testTdf123206CustomLabelField); CPPUNIT_TEST(testTdf125444PercentageCustomLabel); + CPPUNIT_TEST(testDeletedLegendEntries); + CPPUNIT_TEST_SUITE_END(); private: @@ -2334,7 +2337,28 @@ void Chart2ImportTest::testTdf125444PercentageCustomLabel() // to assert the latter. CPPUNIT_ASSERT_EQUAL(static_cast<sal_Int32>(3), aLabelFields.getLength()); CPPUNIT_ASSERT_EQUAL(chart2::DataPointCustomLabelFieldType_PERCENTAGE, aLabelFields[2]->getFieldType()); +} + +void Chart2ImportTest::testDeletedLegendEntries() +{ + load("/chart2/qa/extras/data/xlsx/", "deleted_legend_entry2.xlsx"); + 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(xDataSeries, uno::UNO_QUERY_THROW); + bool bShowLegendEntry = true; + CPPUNIT_ASSERT(xPropertySet->getPropertyValue("ShowLegendEntry") >>= bShowLegendEntry); + CPPUNIT_ASSERT(!bShowLegendEntry); + Reference<chart2::XChartDocument> xChartDoc2 = getChartDocFromSheet(1, mxComponent); + CPPUNIT_ASSERT(xChartDoc.is()); + Reference<chart2::XDataSeries> xDataSeries2(getDataSeriesFromDoc(xChartDoc2, 0)); + CPPUNIT_ASSERT(xDataSeries2.is()); + Reference<beans::XPropertySet> xPropertySet2(xDataSeries2, uno::UNO_QUERY_THROW); + Sequence<sal_Int32> deletedLegendEntriesSeq; + CPPUNIT_ASSERT(xPropertySet2->getPropertyValue("DeletedLegendEntries") >>= deletedLegendEntriesSeq); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), deletedLegendEntriesSeq[0]); } CPPUNIT_TEST_SUITE_REGISTRATION(Chart2ImportTest); diff --git a/chart2/qa/extras/data/xlsx/deleted_legend_entry2.xlsx b/chart2/qa/extras/data/xlsx/deleted_legend_entry2.xlsx Binary files differnew file mode 100644 index 000000000000..ea02464b1c46 --- /dev/null +++ b/chart2/qa/extras/data/xlsx/deleted_legend_entry2.xlsx diff --git a/chart2/source/model/main/DataSeriesProperties.cxx b/chart2/source/model/main/DataSeriesProperties.cxx index c43ced71f40c..5d0cb777e151 100644 --- a/chart2/source/model/main/DataSeriesProperties.cxx +++ b/chart2/source/model/main/DataSeriesProperties.cxx @@ -63,6 +63,12 @@ void DataSeriesProperties::AddPropertiesToVector( beans::PropertyAttribute::BOUND | beans::PropertyAttribute::MAYBEDEFAULT ); + rOutProperties.emplace_back( "DeletedLegendEntries", + PROP_DATASERIES_DELETED_LEGEND_ENTRIES, + cppu::UnoType<uno::Sequence<sal_Int32>>::get(), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEVOID ); + // add properties of service DataPointProperties DataPointProperties::AddPropertiesToVector( rOutProperties ); } diff --git a/chart2/source/model/main/DataSeriesProperties.hxx b/chart2/source/model/main/DataSeriesProperties.hxx index 6791078d5678..b0f6283db54c 100644 --- a/chart2/source/model/main/DataSeriesProperties.hxx +++ b/chart2/source/model/main/DataSeriesProperties.hxx @@ -37,7 +37,8 @@ namespace DataSeriesProperties PROP_DATASERIES_STACKING_DIRECTION, PROP_DATASERIES_VARY_COLORS_BY_POINT, PROP_DATASERIES_ATTACHED_AXIS_INDEX, - PROP_DATASERIES_SHOW_LEGEND_ENTRY + PROP_DATASERIES_SHOW_LEGEND_ENTRY, + PROP_DATASERIES_DELETED_LEGEND_ENTRIES }; void AddPropertiesToVector( diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx b/chart2/source/view/charttypes/VSeriesPlotter.cxx index 34036f3dd0ed..f7e828425246 100644 --- a/chart2/source/view/charttypes/VSeriesPlotter.cxx +++ b/chart2/source/view/charttypes/VSeriesPlotter.cxx @@ -2657,9 +2657,28 @@ std::vector< ViewLegendEntry > VSeriesPlotter::createLegendEntriesForSeries( Sequence< OUString > aCategoryNames; if( m_pExplicitCategoriesProvider ) aCategoryNames = m_pExplicitCategoriesProvider->getSimpleCategories(); - + Sequence<sal_Int32> deletedLegendEntries; + try + { + rSeries.getPropertiesOfSeries()->getPropertyValue("DeletedLegendEntries") >>= deletedLegendEntries; + } + catch (const uno::Exception&) + { + } for( sal_Int32 nIdx=0; nIdx<aCategoryNames.getLength(); ++nIdx ) { + bool deletedLegendEntry = false; + for (auto& deletedLegendEntryIdx : deletedLegendEntries) + { + if (nIdx == deletedLegendEntryIdx) + { + deletedLegendEntry = true; + break; + } + } + if (deletedLegendEntry) + continue; + // symbol uno::Reference< drawing::XShapes > xSymbolGroup( ShapeFactory::getOrCreateShapeFactory(xShapeFactory)->createGroup2D( xTarget )); |