diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2017-05-03 16:57:27 +0200 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2017-05-04 09:38:46 +0200 |
commit | 86b2c0c7642f0e87d534a9ff57f188ce08149473 (patch) | |
tree | ba44296157419ae2daa792573cf1d5a1e1d1a8f0 | |
parent | 582c9949d53ac4845bdea50b06f1a47d948b9fb9 (diff) |
tdf#107097 fix missing values for categories when copying
We need to be careful what data we output to represent "no value"
as it could be mis-interpreted (for example Nan or empty string).
Change-Id: Ie5d85bd58118b0526750f387553dfd7a12b272a4
Reviewed-on: https://gerrit.libreoffice.org/37212
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
-rw-r--r-- | sc/inc/PivotTableDataSequence.hxx | 31 | ||||
-rw-r--r-- | sc/source/ui/unoobj/PivotTableDataSequence.cxx | 7 |
2 files changed, 23 insertions, 15 deletions
diff --git a/sc/inc/PivotTableDataSequence.hxx b/sc/inc/PivotTableDataSequence.hxx index f5e508e6dbab..ec5062151c2a 100644 --- a/sc/inc/PivotTableDataSequence.hxx +++ b/sc/inc/PivotTableDataSequence.hxx @@ -36,26 +36,24 @@ namespace sc { -typedef cppu::WeakImplHelper<css::chart2::data::XDataSequence, - css::chart2::data::XTextualDataSequence, - css::chart2::data::XNumericalDataSequence, - css::util::XCloneable, - css::util::XModifyBroadcaster, - css::beans::XPropertySet, - css::lang::XServiceInfo> - PivotTableDataSequence_Base; +enum class ValueType +{ + Empty, + String, + Numeric +}; struct ValueAndFormat { double m_fValue; OUString m_aString; - bool m_bIsValue; + ValueType m_eType; sal_uInt32 m_nNumberFormat; explicit ValueAndFormat() : m_fValue(0.0) , m_aString() - , m_bIsValue(true) + , m_eType(ValueType::Empty) , m_nNumberFormat(0) { rtl::math::setNan(&m_fValue); @@ -64,20 +62,29 @@ struct ValueAndFormat explicit ValueAndFormat(double fValue, sal_uInt32 nNumberFormat) : m_fValue(fValue) , m_aString() - , m_bIsValue(true) + , m_eType(ValueType::Numeric) , m_nNumberFormat(nNumberFormat) {} explicit ValueAndFormat(OUString const & rString) : m_fValue(0.0) , m_aString(rString) - , m_bIsValue(false) + , m_eType(ValueType::String) , m_nNumberFormat(0) { rtl::math::setNan(&m_fValue); } }; +typedef cppu::WeakImplHelper<css::chart2::data::XDataSequence, + css::chart2::data::XTextualDataSequence, + css::chart2::data::XNumericalDataSequence, + css::util::XCloneable, + css::util::XModifyBroadcaster, + css::beans::XPropertySet, + css::lang::XServiceInfo> + PivotTableDataSequence_Base; + class PivotTableDataSequence : public PivotTableDataSequence_Base, public SfxListener { public: diff --git a/sc/source/ui/unoobj/PivotTableDataSequence.cxx b/sc/source/ui/unoobj/PivotTableDataSequence.cxx index 8c41e90c6c70..812ad94e7046 100644 --- a/sc/source/ui/unoobj/PivotTableDataSequence.cxx +++ b/sc/source/ui/unoobj/PivotTableDataSequence.cxx @@ -78,10 +78,11 @@ uno::Sequence<uno::Any> SAL_CALL PivotTableDataSequence::getData() size_t i = 0; for (ValueAndFormat const & rItem : m_aData) { - if (rItem.m_bIsValue) + if (rItem.m_eType == ValueType::Numeric) aSeq[i] <<= double(rItem.m_fValue); - else + else if (rItem.m_eType == ValueType::String) aSeq[i] <<= OUString(rItem.m_aString); + i++; } return aSeq; @@ -119,7 +120,7 @@ uno::Sequence<OUString> SAL_CALL PivotTableDataSequence::getTextualData() size_t i = 0; for (ValueAndFormat const & rItem : m_aData) { - if (!rItem.m_bIsValue) + if (rItem.m_eType == ValueType::String) aSeq[i] = rItem.m_aString; i++; } |