/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include class ScDocument; namespace sc { enum class ValueType { Empty, String, Numeric }; struct ValueAndFormat { double m_fValue; OUString m_aString; ValueType m_eType; sal_uInt32 m_nNumberFormat; explicit ValueAndFormat() : m_fValue(0.0) , m_aString() , m_eType(ValueType::Empty) , m_nNumberFormat(0) { rtl::math::setNan(&m_fValue); } explicit ValueAndFormat(double fValue, sal_uInt32 nNumberFormat) : m_fValue(fValue) , m_aString() , m_eType(ValueType::Numeric) , m_nNumberFormat(nNumberFormat) {} explicit ValueAndFormat(OUString const & rString) : m_fValue(0.0) , m_aString(rString) , m_eType(ValueType::String) , m_nNumberFormat(0) { rtl::math::setNan(&m_fValue); } }; typedef cppu::WeakImplHelper PivotTableDataSequence_Base; class PivotTableDataSequence final : public PivotTableDataSequence_Base, public SfxListener { public: explicit PivotTableDataSequence(ScDocument* pDocument, OUString const & sID, std::vector const & rData); virtual ~PivotTableDataSequence() override; PivotTableDataSequence(const PivotTableDataSequence&) = delete; PivotTableDataSequence& operator=(const PivotTableDataSequence&) = delete; virtual void Notify(SfxBroadcaster& rBC, const SfxHint& rHint) override; // XDataSequence virtual css::uno::Sequence SAL_CALL getData() override; virtual OUString SAL_CALL getSourceRangeRepresentation() override; virtual css::uno::Sequence SAL_CALL generateLabel(css::chart2::data::LabelOrigin nOrigin) override; virtual sal_Int32 SAL_CALL getNumberFormatKeyByIndex(sal_Int32 nIndex) override; // XNumericalDataSequence virtual css::uno::Sequence SAL_CALL getNumericalData() override; // XTextualDataSequence virtual css::uno::Sequence SAL_CALL getTextualData() override; // XPropertySet virtual css::uno::Reference SAL_CALL getPropertySetInfo() override; virtual void SAL_CALL setPropertyValue(const OUString& rPropertyName, const css::uno::Any& rValue) override; virtual css::uno::Any SAL_CALL getPropertyValue(const OUString& rPropertyName) override; virtual void SAL_CALL addPropertyChangeListener( const OUString& rPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener>& xListener) override; virtual void SAL_CALL removePropertyChangeListener( const OUString& rPropertyName, const css::uno::Reference< css::beans::XPropertyChangeListener>& rListener) override; virtual void SAL_CALL addVetoableChangeListener( const OUString& rPropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener>& rListener) override; virtual void SAL_CALL removeVetoableChangeListener( const OUString& rPropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener>& rListener) override; // XCloneable virtual css::uno::Reference SAL_CALL createClone() override; // XModifyBroadcaster virtual void SAL_CALL addModifyListener( const css::uno::Reference& aListener) override; virtual void SAL_CALL removeModifyListener( const css::uno::Reference& aListener) override; // XServiceInfo virtual OUString SAL_CALL getImplementationName() override; virtual sal_Bool SAL_CALL supportsService(const OUString& rServiceName) override; virtual css::uno::Sequence SAL_CALL getSupportedServiceNames() override; // Other void setRole(css::chart2::data::DataSequenceRole const & aRole) { m_aRole = aRole; } private: ScDocument* m_pDocument; OUString m_aID; std::vector m_aData; SfxItemPropertySet m_aPropSet; css::chart2::data::DataSequenceRole m_aRole; std::vector> m_aValueListeners; }; } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */