/* -*- 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/.
*/
#include <HistogramDataSequence.hxx>
#include <CommonFunctors.hxx>
#include <ModifyListenerHelper.hxx>
#include <comphelper/sequenceashashmap.hxx>
#include <cppuhelper/supportsservice.hxx>
#include <algorithm>
#include <strings.hrc>
#include <ResId.hxx>
#include <utility>
using namespace css;
namespace
{
constexpr OUString lcl_aServiceName = u"com.sun.star.comp.chart.HistogramDataSequence"_ustr;
enum
{
PROP_PROPOSED_ROLE
};
} // anonymous namespace
namespace chart
{
HistogramDataSequence::HistogramDataSequence()
: m_xModifyEventForwarder(new ModifyEventForwarder())
{
registerProperty(u"Role"_ustr, PROP_PROPOSED_ROLE,
0, // PropertyAttributes
&m_sRole, cppu::UnoType<decltype(m_sRole)>::get());
}
HistogramDataSequence::~HistogramDataSequence() {}
IMPLEMENT_FORWARD_XINTERFACE2(HistogramDataSequence, HistogramDataSequence_Base,
comphelper::OPropertyContainer2)
IMPLEMENT_FORWARD_XTYPEPROVIDER2(HistogramDataSequence, HistogramDataSequence_Base,
comphelper::OPropertyContainer2)
// XPropertySet
uno::Reference<beans::XPropertySetInfo> SAL_CALL HistogramDataSequence::getPropertySetInfo()
{
return createPropertySetInfo(getInfoHelper());
}
// comphelper::OPropertySetHelper
::cppu::IPropertyArrayHelper& HistogramDataSequence::getInfoHelper() { return *getArrayHelper(); }
// comphelper::OPropertyArrayHelper
::cppu::IPropertyArrayHelper* HistogramDataSequence::createArrayHelper() const
{
uno::Sequence<beans::Property> aProperties;
// describes all properties which have been registered in the ctor
describeProperties(aProperties);
return new ::cppu::OPropertyArrayHelper(aProperties);
}
OUString SAL_CALL HistogramDataSequence::getImplementationName() { return lcl_aServiceName; }
sal_Bool SAL_CALL HistogramDataSequence::supportsService(const OUString& rServiceName)
{
return cppu::supportsService(this, rServiceName);
}
uno::Sequence<OUString> SAL_CALL HistogramDataSequence::getSupportedServiceNames()
{
return { lcl_aServiceName, u"com.sun.star.chart2.data.DataSequence"_ustr,
u"com.sun.star.chart2.data.NumericalDataSequence"_ustr,
u"com.sun.star.chart2.data.TextualDataSequence"_ustr };
}
// XNumericalDataSequence
uno::Sequence<double> SAL_CALL HistogramDataSequence::getNumericalData()
{
std::unique_lock<std::mutex> aGuard;
return mxValues;
}
// XTextualDataSequence
uno::Sequence<OUString> SAL_CALL HistogramDataSequence::getTextualData()
{
std::unique_lock<std::mutex> aGuard;
return {};
}
// XDataSequence
uno::Sequence<uno::Any> SAL_CALL HistogramDataSequence::getData()
{
std::unique_lock<std::mutex> aGuard;
uno::Sequence<uno::Any> aSequence(mxValues.size());
auto pSequence = aSequence.getArray();
size_t i = 0;
for (double nValue : mxValues)
{
pSequence[i] <<= nValue;
i++;
}
return aSequence;
}
OUString SAL_CALL HistogramDataSequence::getSourceRangeRepresentation() { return m_sRole; }
uno::Sequence<OUString>
SAL_CALL HistogramDataSequence::generateLabel(css::chart2::data::LabelOrigin)
{
return mxLabels;
}
sal_Int32 SAL_CALL HistogramDataSequence::getNumberFormatKeyByIndex(sal_Int32)
{
return 0; // TODO - NumberFormat support
}
// XModifyBroadcaster
void SAL_CALL
HistogramDataSequence::addModifyListener(const uno::Reference<util::XModifyListener>& aListener)
{
m_xModifyEventForwarder->addModifyListener(aListener);
}
void SAL_CALL
HistogramDataSequence::removeModifyListener(const uno::Reference<util::XModifyListener>& aListener)
{
m_xModifyEventForwarder->removeModifyListener(aListener);
}
// XCloneable
uno::Reference<util::XCloneable> SAL_CALL HistogramDataSequence::createClone()
{
rtl::Reference<HistogramDataSequence> pClone(new HistogramDataSequence());
return pClone;
}
} // namespace chart2
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
↑ V1018 Usage of a suspicious mutex wrapper. The lock 'aGuard' is not used.
↑ V1018 Usage of a suspicious mutex wrapper. The lock 'aGuard' is not used.
↑ V1018 Usage of a suspicious mutex wrapper. The lock 'aGuard' is not used.