summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@collabora.co.uk>2014-02-22 05:49:39 +0100
committerAndras Timar <andras.timar@collabora.com>2014-02-24 06:48:33 -0800
commit404689ba178d4282b5b685dced393fdd3f0e3ff8 (patch)
tree764374dfe2433b480d95e45e3be15014aa0fe9cb
parent45cc86bf89cee298037bef9693a2ea22c3238673 (diff)
we only support simple labels in the InternalDataProvider, bnc#864396
Change-Id: Ie31c5c73bb5185125fd4493c4e476997e2e9bc63
-rw-r--r--oox/source/drawingml/chart/datasourceconverter.cxx28
1 files changed, 28 insertions, 0 deletions
diff --git a/oox/source/drawingml/chart/datasourceconverter.cxx b/oox/source/drawingml/chart/datasourceconverter.cxx
index 6be4710ad72c..ea22348c3cc0 100644
--- a/oox/source/drawingml/chart/datasourceconverter.cxx
+++ b/oox/source/drawingml/chart/datasourceconverter.cxx
@@ -50,6 +50,34 @@ Reference< XDataSequence > DataSequenceConverter::createDataSequence( const OUSt
Reference< XDataSequence > xDataSeq;
if( getChartConverter() )
{
+ // the internal data table does not support complex labels
+ // this is only supported in Calc!!!
+ // merge the labels into a single one
+ if(rRole == "label")
+ {
+ mrModel.mnPointCount = std::min<sal_Int32>(mrModel.mnPointCount, 1);
+ OUStringBuffer aTitle;
+ bool bFirst = true;
+ for(DataSequenceModel::AnyMap::const_iterator itr = mrModel.maData.begin(),
+ itrEnd = mrModel.maData.end(); itr != itrEnd; ++itr)
+ {
+ Any aAny = itr->second;
+ if(aAny.has<OUString>())
+ {
+ if(!bFirst)
+ aTitle.append(" ");
+
+ aTitle.append(aAny.get<OUString>());
+ bFirst = false;
+ }
+ }
+
+ if(!bFirst)
+ {
+ mrModel.maData.clear();
+ mrModel.maData.insert(std::make_pair<sal_Int32, Any>(1, Any(aTitle.makeStringAndClear())));
+ }
+ }
xDataSeq = getChartConverter()->createDataSequence( getChartDocument()->getDataProvider(), mrModel );
// set sequen ce role