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:21:59 -0800
commitf82d52f43d88f33dc7c4e365cba206e223e0b2b9 (patch)
tree9e57b19ef826475bd445a21b5adb1bccd584be14
parentcd5a25dedbff94e8d7be714432c36fc18de269bc (diff)
we only support simple labels in the InternalDataProvider, bnc#864396
Change-Id: Ie31c5c73bb5185125fd4493c4e476997e2e9bc63 Reviewed-on: https://gerrit.libreoffice.org/8190 Reviewed-by: Andras Timar <andras.timar@collabora.com> Tested-by: Andras Timar <andras.timar@collabora.com>
-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