summaryrefslogtreecommitdiff
path: root/xmloff
diff options
context:
space:
mode:
authorKohei Yoshida <kohei.yoshida@collabora.com>2014-06-12 11:24:30 -0400
committerKohei Yoshida <kohei.yoshida@collabora.com>2014-06-12 12:52:40 -0400
commitcbb2505ced3a750ab0cc2e0c4e6aa3fad6c70aeb (patch)
tree37463c5fc93d30fe31aecab5b07ae8122f3811e4 /xmloff
parent16232bc3066be2c4c24de5df99b18403674bb864 (diff)
fdo#77506: More reliable way to determine label strings.
Not beautiful, but doable. (cherry picked from commit a2a1a59a448420a858724371c4a339f75ebe8c1e) Conflicts: sc/source/ui/unoobj/chart2uno.cxx xmloff/source/chart/SchXMLExport.cxx Change-Id: I6f3b00d620e7d7d19cc05ec4239deeb14d0d5201
Diffstat (limited to 'xmloff')
-rw-r--r--xmloff/source/chart/SchXMLExport.cxx38
1 files changed, 28 insertions, 10 deletions
diff --git a/xmloff/source/chart/SchXMLExport.cxx b/xmloff/source/chart/SchXMLExport.cxx
index 2de23c694a71..1647e33f02bd 100644
--- a/xmloff/source/chart/SchXMLExport.cxx
+++ b/xmloff/source/chart/SchXMLExport.cxx
@@ -2588,7 +2588,6 @@ void SchXMLExportHelper_Impl::exportSeries(
OUString aFirstXDomainRange;
OUString aFirstYDomainRange;
- bool modifyLabelRange = false;
std::vector< XMLPropertyState > aPropertyStates;
@@ -2734,17 +2733,36 @@ void SchXMLExportHelper_Impl::exportSeries(
// #i75297# allow empty series, export empty range to have all ranges on import
mrExport.AddAttribute( XML_NAMESPACE_CHART, XML_VALUES_CELL_RANGE_ADDRESS, OUString());
- if( xLabelSeq.is()) {
+ if (xLabelSeq.is())
+ {
+ // Check if the label is direct string value rather than a reference.
+ bool bHasString = false;
+ uno::Reference<beans::XPropertySet> xLSProp(xLabelSeq, uno::UNO_QUERY);
+ if (xLSProp.is())
+ {
+ try
+ {
+ xLSProp->getPropertyValue("HasStringLabel") >>= bHasString;
+ }
+ catch (const beans::UnknownPropertyException&) {}
+ }
+
OUString aRange = xLabelSeq->getSourceRangeRepresentation();
- if ( nSeriesIdx == 0 && aRange.equalsAscii("label 1"))
- modifyLabelRange = true;
- if (modifyLabelRange)
- aRange = "label " + OUString::number(aRange.copy( OUString("label").getLength()).toInt32() - 1);
- mrExport.AddAttribute( XML_NAMESPACE_CHART, XML_LABEL_CELL_ADDRESS,
- lcl_ConvertRange(
- aRange,
- xNewDoc ));
+
+ if (bHasString)
+ {
+ mrExport.AddAttribute(
+ XML_NAMESPACE_CHART, XML_LABEL_CELL_ADDRESS, aRange);
+ }
+ else
+ {
+ mrExport.AddAttribute(
+ XML_NAMESPACE_CHART, XML_LABEL_CELL_ADDRESS,
+ lcl_ConvertRange(
+ xLabelSeq->getSourceRangeRepresentation(), xNewDoc));
+ }
}
+
if( xLabelSeq.is() || xValuesSeq.is() )
aSeriesLabelValuesPair = tLabelValuesDataPair( xLabelSeq, xValuesSeq );