summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2017-05-03 16:57:27 +0200
committerTomaž Vajngerl <quikee@gmail.com>2017-05-04 09:38:46 +0200
commit86b2c0c7642f0e87d534a9ff57f188ce08149473 (patch)
treeba44296157419ae2daa792573cf1d5a1e1d1a8f0
parent582c9949d53ac4845bdea50b06f1a47d948b9fb9 (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.hxx31
-rw-r--r--sc/source/ui/unoobj/PivotTableDataSequence.cxx7
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++;
}