diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2018-12-05 03:45:17 +0100 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2018-12-05 15:43:28 +0100 |
commit | c32a4c2fac32b766a05473d037d73cbcd972dadd (patch) | |
tree | 79a30a34b8b91307a49cd32bb1db3f7908277d9d | |
parent | 7e7b9a90adc5186d48febce5ee0c0afb09aedaee (diff) |
tdf#51671, implement feature to disable legend entry for series
No UI and no ODF or OOXML support yet.
Change-Id: I839c195e9c42f074838ff6592331f7cdd13b6cd2
Reviewed-on: https://gerrit.libreoffice.org/64583
Tested-by: Jenkins
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r-- | chart2/source/model/main/DataSeriesProperties.cxx | 7 | ||||
-rw-r--r-- | chart2/source/model/main/DataSeriesProperties.hxx | 3 | ||||
-rw-r--r-- | chart2/source/view/charttypes/VSeriesPlotter.cxx | 5 | ||||
-rw-r--r-- | offapi/com/sun/star/chart2/DataSeries.idl | 7 | ||||
-rw-r--r-- | sc/source/filter/excel/xichart.cxx | 16 | ||||
-rw-r--r-- | sc/source/filter/inc/xichart.hxx | 2 | ||||
-rw-r--r-- | sc/source/filter/inc/xlchart.hxx | 8 |
7 files changed, 46 insertions, 2 deletions
diff --git a/chart2/source/model/main/DataSeriesProperties.cxx b/chart2/source/model/main/DataSeriesProperties.cxx index 6c7e38d7e038..375e6c441c2a 100644 --- a/chart2/source/model/main/DataSeriesProperties.cxx +++ b/chart2/source/model/main/DataSeriesProperties.cxx @@ -57,6 +57,12 @@ void DataSeriesProperties::AddPropertiesToVector( | beans::PropertyAttribute::MAYBEVOID | beans::PropertyAttribute::MAYBEDEFAULT ); + rOutProperties.emplace_back( "ShowLegendEntry", + PROP_DATASERIES_SHOW_LEGEND_ENTRY, + cppu::UnoType<sal_Bool>::get(), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT ); + // add properties of service DataPointProperties DataPointProperties::AddPropertiesToVector( rOutProperties ); } @@ -67,6 +73,7 @@ void DataSeriesProperties::AddDefaultsToMap( PropertyHelper::setPropertyValueDefault( rOutMap, PROP_DATASERIES_STACKING_DIRECTION, chart2::StackingDirection_NO_STACKING ); PropertyHelper::setPropertyValueDefault( rOutMap, PROP_DATASERIES_VARY_COLORS_BY_POINT, false ); PropertyHelper::setPropertyValueDefault< sal_Int32 >( rOutMap, PROP_DATASERIES_ATTACHED_AXIS_INDEX, 0 ); + PropertyHelper::setPropertyValueDefault( rOutMap, PROP_DATASERIES_SHOW_LEGEND_ENTRY, true ); // PROP_DATASERIES_ATTRIBUTED_DATA_POINTS has no default diff --git a/chart2/source/model/main/DataSeriesProperties.hxx b/chart2/source/model/main/DataSeriesProperties.hxx index e27b9acd44f2..6791078d5678 100644 --- a/chart2/source/model/main/DataSeriesProperties.hxx +++ b/chart2/source/model/main/DataSeriesProperties.hxx @@ -36,7 +36,8 @@ namespace DataSeriesProperties PROP_DATASERIES_ATTRIBUTED_DATA_POINTS = FAST_PROPERTY_ID_START_DATA_SERIES, PROP_DATASERIES_STACKING_DIRECTION, PROP_DATASERIES_VARY_COLORS_BY_POINT, - PROP_DATASERIES_ATTACHED_AXIS_INDEX + PROP_DATASERIES_ATTACHED_AXIS_INDEX, + PROP_DATASERIES_SHOW_LEGEND_ENTRY }; void AddPropertiesToVector( diff --git a/chart2/source/view/charttypes/VSeriesPlotter.cxx b/chart2/source/view/charttypes/VSeriesPlotter.cxx index ff09606cda5c..ee76f7351d93 100644 --- a/chart2/source/view/charttypes/VSeriesPlotter.cxx +++ b/chart2/source/view/charttypes/VSeriesPlotter.cxx @@ -2208,6 +2208,11 @@ std::vector< ViewLegendEntry > VSeriesPlotter::createLegendEntries( if (!pSeries) continue; + if (!pSeries->getPropertiesOfSeries()->getPropertyValue("ShowLegendEntry").get<sal_Bool>()) + { + continue; + } + std::vector<ViewLegendEntry> aSeriesEntries( createLegendEntriesForSeries( rEntryKeyAspectRatio, *pSeries, xTextProperties, diff --git a/offapi/com/sun/star/chart2/DataSeries.idl b/offapi/com/sun/star/chart2/DataSeries.idl index 0d43ee6adf56..357ec4fcd097 100644 --- a/offapi/com/sun/star/chart2/DataSeries.idl +++ b/offapi/com/sun/star/chart2/DataSeries.idl @@ -173,6 +173,13 @@ service DataSeries this series there.</p> */ [optional, property] long AttachedAxisIndex; + + /** This property describes whether the legend entry for the + the data series should be shown. + + @since LibreOffice 6.3 + */ + [optional, property] boolean ShowLegendEntry; }; } ; // chart2 diff --git a/sc/source/filter/excel/xichart.cxx b/sc/source/filter/excel/xichart.cxx index 6ff977f9d7a6..b8d32f81a4d7 100644 --- a/sc/source/filter/excel/xichart.cxx +++ b/sc/source/filter/excel/xichart.cxx @@ -1778,7 +1778,8 @@ XclImpChSeries::XclImpChSeries( const XclImpChRoot& rRoot, sal_uInt16 nSeriesIdx XclImpChRoot( rRoot ), mnGroupIdx( EXC_CHSERGROUP_NONE ), mnSeriesIdx( nSeriesIdx ), - mnParentIdx( EXC_CHSERIES_INVALID ) + mnParentIdx( EXC_CHSERIES_INVALID ), + mbLabelDeleted( false ) { } @@ -1817,6 +1818,9 @@ void XclImpChSeries::ReadSubRecord( XclImpStream& rStrm ) case EXC_ID_CHSERERRORBAR: ReadChSerErrorBar( rStrm ); break; + case EXC_ID_CHLEGENDEXCEPTION: + ReadChLegendException( rStrm ); + break; } } @@ -2054,6 +2058,9 @@ Reference< XDataSeries > XclImpChSeries::CreateDataSeries() const if( mxSeriesFmt ) mxSeriesFmt->Convert( aSeriesProp, rTypeInfo ); + if (mbLabelDeleted) + aSeriesProp.SetProperty(EXC_CHPROP_SHOWLEGENDENTRY, false); + // trend lines ConvertTrendLines( xDataSeries ); @@ -2185,6 +2192,13 @@ Reference< XPropertySet > XclImpChSeries::CreateErrorBar( sal_uInt8 nPosBarId, s return XclImpChSerErrorBar::CreateErrorBar(itrPosBar->second.get(), itrNegBar->second.get()); } +void XclImpChSeries::ReadChLegendException(XclImpStream& rStrm) +{ + rStrm.Ignore(2); + sal_uInt16 nFlags = rStrm.ReaduInt16(); + mbLabelDeleted = (nFlags & EXC_CHLEGENDEXCEPTION_DELETED); +} + // Chart type groups ========================================================== XclImpChType::XclImpChType( const XclImpChRoot& rRoot ) : diff --git a/sc/source/filter/inc/xichart.hxx b/sc/source/filter/inc/xichart.hxx index ec033e5b4d3e..5a686ca4e7e9 100644 --- a/sc/source/filter/inc/xichart.hxx +++ b/sc/source/filter/inc/xichart.hxx @@ -822,6 +822,7 @@ private: /** Reads a CHSERERRORBAR record containing error bar settings. */ void ReadChSerErrorBar( XclImpStream& rStrm ); + void ReadChLegendException( XclImpStream& rStrm ); /** Creates a new CHDATAFORMAT group with the specified point index. */ XclImpChDataFormatRef CreateDataFormat( sal_uInt16 nPointIdx, sal_uInt16 nFormatIdx ); @@ -849,6 +850,7 @@ private: sal_uInt16 mnGroupIdx; /// Chart type group (CHTYPEGROUP group) this series is assigned to. sal_uInt16 mnSeriesIdx; /// 0-based series index. sal_uInt16 mnParentIdx; /// 0-based index of parent series (trend lines and error bars). + bool mbLabelDeleted; /// Legend label deleted }; typedef std::shared_ptr< XclImpChSeries > XclImpChSeriesRef; diff --git a/sc/source/filter/inc/xlchart.hxx b/sc/source/filter/inc/xlchart.hxx index e14979461f4d..8ba2219b96fe 100644 --- a/sc/source/filter/inc/xlchart.hxx +++ b/sc/source/filter/inc/xlchart.hxx @@ -89,6 +89,7 @@ class XclRoot; #define EXC_CHPROP_LABELPLACEMENT "LabelPlacement" #define EXC_CHPROP_LABELPOSITION "LabelPosition" #define EXC_CHPROP_LABELSEPARATOR "LabelSeparator" +#define EXC_CHPROP_SHOWLEGENDENTRY "ShowLegendEntry" #define EXC_CHPROP_MAJORTICKS "MajorTickmarks" #define EXC_CHPROP_MARKPOSITION "MarkPosition" #define EXC_CHPROP_MINORTICKS "MinorTickmarks" @@ -583,6 +584,13 @@ const sal_uInt16 EXC_CHAXESSET_PRIMARY = 0; const sal_uInt16 EXC_CHAXESSET_SECONDARY = 1; const sal_uInt16 EXC_CHAXESSET_NONE = 0xFFFF; /// For internal use. +// (0x1043) LEGENDEXCEPTION + +const sal_uInt16 EXC_ID_CHLEGENDEXCEPTION = 0x1043; + +const sal_uInt16 EXC_CHLEGENDEXCEPTION_DELETED = 0x0001; +const sal_uInt16 EXC_CHLEGENDEXCEPTION_LABEL = 0x0002; + // (0x1044) CHPROPERTIES ------------------------------------------------------ const sal_uInt16 EXC_ID_CHPROPERTIES = 0x1044; |