summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2018-12-05 03:45:17 +0100
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2018-12-05 15:43:28 +0100
commitc32a4c2fac32b766a05473d037d73cbcd972dadd (patch)
tree79a30a34b8b91307a49cd32bb1db3f7908277d9d
parent7e7b9a90adc5186d48febce5ee0c0afb09aedaee (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.cxx7
-rw-r--r--chart2/source/model/main/DataSeriesProperties.hxx3
-rw-r--r--chart2/source/view/charttypes/VSeriesPlotter.cxx5
-rw-r--r--offapi/com/sun/star/chart2/DataSeries.idl7
-rw-r--r--sc/source/filter/excel/xichart.cxx16
-rw-r--r--sc/source/filter/inc/xichart.hxx2
-rw-r--r--sc/source/filter/inc/xlchart.hxx8
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;