diff options
Diffstat (limited to 'chart2/source/controller/chartapiwrapper')
48 files changed, 1382 insertions, 1525 deletions
diff --git a/chart2/source/controller/chartapiwrapper/AreaWrapper.cxx b/chart2/source/controller/chartapiwrapper/AreaWrapper.cxx index 7cbef7d67e2c..11884859927a 100644 --- a/chart2/source/controller/chartapiwrapper/AreaWrapper.cxx +++ b/chart2/source/controller/chartapiwrapper/AreaWrapper.cxx @@ -20,7 +20,6 @@ #include "AreaWrapper.hxx" #include "Chart2ModelContact.hxx" #include <WrappedDirectStateProperty.hxx> -#include <com/sun/star/chart2/XChartDocument.hpp> #include <comphelper/sequence.hxx> #include <cppuhelper/supportsservice.hxx> @@ -29,51 +28,18 @@ #include <UserDefinedProperties.hxx> #include <algorithm> +#include <utility> using namespace ::com::sun::star; using ::com::sun::star::beans::Property; -using ::osl::MutexGuard; using ::com::sun::star::uno::Reference; using ::com::sun::star::uno::Sequence; -namespace -{ - -struct StaticAreaWrapperPropertyArray_Initializer -{ - Sequence< Property >* operator()() - { - static Sequence< Property > aPropSeq( lcl_GetPropertySequence() ); - return &aPropSeq; - } - -private: - static Sequence< Property > lcl_GetPropertySequence() - { - std::vector< css::beans::Property > aProperties; - ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); - ::chart::FillProperties::AddPropertiesToVector( aProperties ); - ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); - - std::sort( aProperties.begin(), aProperties.end(), - ::chart::PropertyNameLess() ); - - return comphelper::containerToSequence( aProperties ); - } -}; - -struct StaticAreaWrapperPropertyArray : public rtl::StaticAggregate< Sequence< Property >, StaticAreaWrapperPropertyArray_Initializer > -{ -}; - -} // anonymous namespace - namespace chart::wrapper { -AreaWrapper::AreaWrapper(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : m_spChart2ModelContact(spChart2ModelContact) - , m_aEventListenerContainer(m_aMutex) +AreaWrapper::AreaWrapper(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : m_spChart2ModelContact(std::move(spChart2ModelContact)) { } @@ -104,29 +70,31 @@ void SAL_CALL AreaWrapper::setSize( const awt::Size& /*aSize*/ ) // ____ XShapeDescriptor (base of XShape) ____ OUString SAL_CALL AreaWrapper::getShapeType() { - return "com.sun.star.chart.ChartArea"; + return u"com.sun.star.chart.ChartArea"_ustr; } // ____ XComponent ____ void SAL_CALL AreaWrapper::dispose() { + std::unique_lock g(m_aMutex); Reference< uno::XInterface > xSource( static_cast< ::cppu::OWeakObject* >( this ) ); - m_aEventListenerContainer.disposeAndClear( lang::EventObject( xSource ) ); + m_aEventListenerContainer.disposeAndClear( g, lang::EventObject( xSource ) ); - MutexGuard aGuard( m_aMutex); clearWrappedPropertySet(); } void SAL_CALL AreaWrapper::addEventListener( const Reference< lang::XEventListener >& xListener ) { - m_aEventListenerContainer.addInterface( xListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.addInterface( g, xListener ); } void SAL_CALL AreaWrapper::removeEventListener( const Reference< lang::XEventListener >& aListener ) { - m_aEventListenerContainer.removeInterface( aListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.removeInterface( g, aListener ); } // WrappedPropertySet @@ -141,21 +109,33 @@ Reference< beans::XPropertySet > AreaWrapper::getInnerPropertySet() const Sequence< beans::Property >& AreaWrapper::getPropertySequence() { - return *StaticAreaWrapperPropertyArray::get(); + static Sequence< Property > aPropSeq = []() + { + std::vector< css::beans::Property > aProperties; + ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); + ::chart::FillProperties::AddPropertiesToVector( aProperties ); + ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); + + std::sort( aProperties.begin(), aProperties.end(), + ::chart::PropertyNameLess() ); + + return comphelper::containerToSequence( aProperties ); + }(); + return aPropSeq; } std::vector< std::unique_ptr<WrappedProperty> > AreaWrapper::createWrappedProperties() { std::vector< std::unique_ptr<WrappedProperty> > aWrappedProperties; - aWrappedProperties.emplace_back( new WrappedDirectStateProperty("LineStyle","LineStyle") ); + aWrappedProperties.emplace_back( new WrappedDirectStateProperty(u"LineStyle"_ustr,u"LineStyle"_ustr) ); return aWrappedProperties; } OUString SAL_CALL AreaWrapper::getImplementationName() { - return "com.sun.star.comp.chart.Area"; + return u"com.sun.star.comp.chart.Area"_ustr; } sal_Bool SAL_CALL AreaWrapper::supportsService( const OUString& rServiceName ) @@ -166,10 +146,10 @@ sal_Bool SAL_CALL AreaWrapper::supportsService( const OUString& rServiceName ) css::uno::Sequence< OUString > SAL_CALL AreaWrapper::getSupportedServiceNames() { return { - "com.sun.star.xml.UserDefinedAttributesSupplier", - "com.sun.star.beans.PropertySet", - "com.sun.star.drawing.FillProperties", - "com.sun.star.drawing.LineProperties" }; + u"com.sun.star.xml.UserDefinedAttributesSupplier"_ustr, + u"com.sun.star.beans.PropertySet"_ustr, + u"com.sun.star.drawing.FillProperties"_ustr, + u"com.sun.star.drawing.LineProperties"_ustr }; } } // namespace chart::wrapper diff --git a/chart2/source/controller/chartapiwrapper/AreaWrapper.hxx b/chart2/source/controller/chartapiwrapper/AreaWrapper.hxx index 3de57f421313..c150d5bbfcef 100644 --- a/chart2/source/controller/chartapiwrapper/AreaWrapper.hxx +++ b/chart2/source/controller/chartapiwrapper/AreaWrapper.hxx @@ -20,7 +20,7 @@ #include <WrappedPropertySet.hxx> #include <cppuhelper/implbase.hxx> -#include <comphelper/interfacecontainer3.hxx> +#include <comphelper/interfacecontainer4.hxx> #include <com/sun/star/drawing/XShape.hpp> #include <com/sun/star/lang/XComponent.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> @@ -40,7 +40,7 @@ class AreaWrapper : public ::cppu::ImplInheritanceHelper< > { public: - explicit AreaWrapper(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit AreaWrapper(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual ~AreaWrapper() override; /// XServiceInfo declarations @@ -72,7 +72,7 @@ protected: private: std::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; - ::comphelper::OInterfaceContainerHelper3<css::lang::XEventListener> m_aEventListenerContainer; + ::comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> m_aEventListenerContainer; }; } // namespace chart::wrapper diff --git a/chart2/source/controller/chartapiwrapper/AxisWrapper.cxx b/chart2/source/controller/chartapiwrapper/AxisWrapper.cxx index db3e413ba919..3376282d6ffc 100644 --- a/chart2/source/controller/chartapiwrapper/AxisWrapper.cxx +++ b/chart2/source/controller/chartapiwrapper/AxisWrapper.cxx @@ -18,6 +18,7 @@ */ #include "AxisWrapper.hxx" +#include <Axis.hxx> #include <AxisHelper.hxx> #include <TitleHelper.hxx> #include "Chart2ModelContact.hxx" @@ -35,8 +36,6 @@ #include <com/sun/star/chart/ChartAxisLabelPosition.hpp> #include <com/sun/star/chart/ChartAxisMarkPosition.hpp> #include <com/sun/star/chart2/XAxis.hpp> -#include <com/sun/star/chart2/XDiagram.hpp> -#include <com/sun/star/frame/XModel.hpp> #include <CharacterProperties.hxx> #include <LinePropertiesHelper.hxx> @@ -49,7 +48,8 @@ #include "WrappedScaleTextProperties.hxx" #include <algorithm> -#include <tools/diagnose_ex.h> +#include <utility> +#include <comphelper/diagnose_ex.hxx> using namespace ::com::sun::star; using namespace ::com::sun::star::chart2; @@ -335,33 +335,23 @@ void lcl_AddPropertiesToVector( | beans::PropertyAttribute::MAYBEVOID ); } -struct StaticAxisWrapperPropertyArray_Initializer -{ - Sequence< Property >* operator()() - { - static Sequence< Property > aPropSeq( lcl_GetPropertySequence() ); - return &aPropSeq; - } - -private: - static Sequence< Property > lcl_GetPropertySequence() - { - std::vector< css::beans::Property > aProperties; - lcl_AddPropertiesToVector( aProperties ); - ::chart::CharacterProperties::AddPropertiesToVector( aProperties ); - ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); - ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); - ::chart::wrapper::WrappedScaleTextProperties::addProperties( aProperties ); - - std::sort( aProperties.begin(), aProperties.end(), - ::chart::PropertyNameLess() ); - - return comphelper::containerToSequence( aProperties ); - } -}; - -struct StaticAxisWrapperPropertyArray : public rtl::StaticAggregate< Sequence< Property >, StaticAxisWrapperPropertyArray_Initializer > +const Sequence< Property >& StaticAxisWrapperPropertyArray() { + static Sequence< Property > aPropSeq = []() + { + std::vector< css::beans::Property > aProperties; + lcl_AddPropertiesToVector( aProperties ); + ::chart::CharacterProperties::AddPropertiesToVector( aProperties ); + ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); + ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); + ::chart::wrapper::WrappedScaleTextProperties::addProperties( aProperties ); + + std::sort( aProperties.begin(), aProperties.end(), + ::chart::PropertyNameLess() ); + + return comphelper::containerToSequence( aProperties ); + }(); + return aPropSeq; }; } // anonymous namespace @@ -370,9 +360,8 @@ namespace chart::wrapper { AxisWrapper::AxisWrapper( - tAxisType eType, const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) : - m_spChart2ModelContact( spChart2ModelContact ), - m_aEventListenerContainer( m_aMutex ), + tAxisType eType, std::shared_ptr<Chart2ModelContact> spChart2ModelContact) : + m_spChart2ModelContact(std::move( spChart2ModelContact )), m_eType( eType ) { } @@ -484,7 +473,7 @@ void SAL_CALL AxisWrapper::setSize( const awt::Size& /*aSize*/ ) // ____ XShapeDescriptor (base of XShape) ____ OUString SAL_CALL AxisWrapper::getShapeType() { - return "com.sun.star.chart.ChartAxis"; + return u"com.sun.star.chart.ChartAxis"_ustr; } // ____ XNumberFormatsSupplier ____ @@ -526,8 +515,9 @@ void AxisWrapper::getDimensionAndMainAxisBool( tAxisType eType, sal_Int32& rnDim // ____ XComponent ____ void SAL_CALL AxisWrapper::dispose() { + std::unique_lock g(m_aMutex); Reference< uno::XInterface > xSource( static_cast< ::cppu::OWeakObject* >( this ) ); - m_aEventListenerContainer.disposeAndClear( lang::EventObject( xSource ) ); + m_aEventListenerContainer.disposeAndClear( g, lang::EventObject( xSource ) ); DisposeHelper::DisposeAndClear( m_xAxisTitle ); DisposeHelper::DisposeAndClear( m_xMajorGrid ); @@ -539,13 +529,15 @@ void SAL_CALL AxisWrapper::dispose() void SAL_CALL AxisWrapper::addEventListener( const Reference< lang::XEventListener >& xListener ) { - m_aEventListenerContainer.addInterface( xListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.addInterface( g, xListener ); } void SAL_CALL AxisWrapper::removeEventListener( const Reference< lang::XEventListener >& aListener ) { - m_aEventListenerContainer.removeInterface( aListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.removeInterface( g, aListener ); } //ReferenceSizePropertyProvider @@ -554,8 +546,8 @@ void AxisWrapper::updateReferenceSize() Reference< beans::XPropertySet > xProp( getAxis(), uno::UNO_QUERY ); if( xProp.is() ) { - if( xProp->getPropertyValue("ReferencePageSize").hasValue() ) - xProp->setPropertyValue("ReferencePageSize", uno::Any( + if( xProp->getPropertyValue(u"ReferencePageSize"_ustr).hasValue() ) + xProp->setPropertyValue(u"ReferencePageSize"_ustr, uno::Any( m_spChart2ModelContact->GetPageSize() )); } } @@ -564,7 +556,7 @@ Any AxisWrapper::getReferenceSize() Any aRet; Reference< beans::XPropertySet > xProp( getAxis(), uno::UNO_QUERY ); if( xProp.is() ) - aRet = xProp->getPropertyValue("ReferencePageSize"); + aRet = xProp->getPropertyValue(u"ReferencePageSize"_ustr); return aRet; } awt::Size AxisWrapper::getCurrentSizeForReference() @@ -574,7 +566,7 @@ awt::Size AxisWrapper::getCurrentSizeForReference() Reference< chart2::XAxis > AxisWrapper::getAxis() { - Reference< chart2::XAxis > xAxis; + rtl::Reference< Axis > xAxis; try { sal_Int32 nDimensionIndex = 0; @@ -586,9 +578,8 @@ Reference< chart2::XAxis > AxisWrapper::getAxis() if( !xAxis.is() ) { xAxis = AxisHelper::createAxis( nDimensionIndex, bMainAxis, xDiagram, m_spChart2ModelContact->m_xContext ); - Reference< beans::XPropertySet > xProp( xAxis, uno::UNO_QUERY ); - if( xProp.is() ) - xProp->setPropertyValue("Show", uno::Any( false ) ); + if( xAxis.is() ) + xAxis->setPropertyValue(u"Show"_ustr, uno::Any( false ) ); } } catch( const uno::Exception & ) @@ -606,7 +597,7 @@ Reference< beans::XPropertySet > AxisWrapper::getInnerPropertySet() const Sequence< beans::Property >& AxisWrapper::getPropertySequence() { - return *StaticAxisWrapperPropertyArray::get(); + return StaticAxisWrapperPropertyArray(); } std::vector< std::unique_ptr<WrappedProperty> > AxisWrapper::createWrappedProperties() @@ -614,19 +605,19 @@ std::vector< std::unique_ptr<WrappedProperty> > AxisWrapper::createWrappedProper std::vector< std::unique_ptr<WrappedProperty> > aWrappedProperties; aWrappedProperties.emplace_back( new WrappedTextRotationProperty() ); - aWrappedProperties.emplace_back( new WrappedProperty("Marks","MajorTickmarks") ); - aWrappedProperties.emplace_back( new WrappedProperty("HelpMarks","MinorTickmarks") ); - aWrappedProperties.emplace_back( new WrappedProperty("TextCanOverlap","TextOverlap") ); - aWrappedProperties.emplace_back( new WrappedProperty("ArrangeOrder","ArrangeOrder") ); - aWrappedProperties.emplace_back( new WrappedProperty("Visible","Show") ); - aWrappedProperties.emplace_back( new WrappedDirectStateProperty("DisplayLabels","DisplayLabels") ); - aWrappedProperties.emplace_back( new WrappedDirectStateProperty("TryStaggeringFirst","TryStaggeringFirst") ); - aWrappedProperties.emplace_back( new WrappedDirectStateProperty("TextBreak","TextBreak") ); + aWrappedProperties.emplace_back( new WrappedProperty(u"Marks"_ustr,u"MajorTickmarks"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"HelpMarks"_ustr,u"MinorTickmarks"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"TextCanOverlap"_ustr,u"TextOverlap"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"ArrangeOrder"_ustr,u"ArrangeOrder"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"Visible"_ustr,u"Show"_ustr) ); + aWrappedProperties.emplace_back( new WrappedDirectStateProperty(u"DisplayLabels"_ustr,u"DisplayLabels"_ustr) ); + aWrappedProperties.emplace_back( new WrappedDirectStateProperty(u"TryStaggeringFirst"_ustr,u"TryStaggeringFirst"_ustr) ); + aWrappedProperties.emplace_back( new WrappedDirectStateProperty(u"TextBreak"_ustr,u"TextBreak"_ustr) ); aWrappedProperties.emplace_back( new WrappedNumberFormatProperty(m_spChart2ModelContact) ); aWrappedProperties.emplace_back( new WrappedLinkNumberFormatProperty ); - aWrappedProperties.emplace_back( new WrappedProperty("StackedText","StackCharacters") ); - aWrappedProperties.emplace_back( new WrappedDirectStateProperty("CrossoverPosition","CrossoverPosition") ); - aWrappedProperties.emplace_back( new WrappedDirectStateProperty("MajorOrigin","MajorOrigin") ); + aWrappedProperties.emplace_back( new WrappedProperty(u"StackedText"_ustr,u"StackCharacters"_ustr) ); + aWrappedProperties.emplace_back( new WrappedDirectStateProperty(u"CrossoverPosition"_ustr,u"CrossoverPosition"_ustr) ); + aWrappedProperties.emplace_back( new WrappedDirectStateProperty(u"MajorOrigin"_ustr,u"MajorOrigin"_ustr) ); { WrappedGapwidthProperty* pWrappedGapwidthProperty( new WrappedGapwidthProperty( m_spChart2ModelContact ) ); WrappedBarOverlapProperty* pWrappedBarOverlapProperty( new WrappedBarOverlapProperty( m_spChart2ModelContact ) ); @@ -652,7 +643,7 @@ std::vector< std::unique_ptr<WrappedProperty> > AxisWrapper::createWrappedProper OUString SAL_CALL AxisWrapper::getImplementationName() { - return "com.sun.star.comp.chart.Axis"; + return u"com.sun.star.comp.chart.Axis"_ustr; } sal_Bool SAL_CALL AxisWrapper::supportsService( const OUString& rServiceName ) @@ -663,9 +654,9 @@ sal_Bool SAL_CALL AxisWrapper::supportsService( const OUString& rServiceName ) css::uno::Sequence< OUString > SAL_CALL AxisWrapper::getSupportedServiceNames() { return { - "com.sun.star.chart.ChartAxis", - "com.sun.star.xml.UserDefinedAttributesSupplier", - "com.sun.star.style.CharacterProperties" + u"com.sun.star.chart.ChartAxis"_ustr, + u"com.sun.star.xml.UserDefinedAttributesSupplier"_ustr, + u"com.sun.star.style.CharacterProperties"_ustr }; } diff --git a/chart2/source/controller/chartapiwrapper/AxisWrapper.hxx b/chart2/source/controller/chartapiwrapper/AxisWrapper.hxx index b421ab331ab6..3b63c45c100d 100644 --- a/chart2/source/controller/chartapiwrapper/AxisWrapper.hxx +++ b/chart2/source/controller/chartapiwrapper/AxisWrapper.hxx @@ -21,13 +21,13 @@ #include <WrappedPropertySet.hxx> #include "ReferenceSizePropertyProvider.hxx" #include <cppuhelper/implbase.hxx> -#include <comphelper/interfacecontainer3.hxx> +#include <comphelper/interfacecontainer4.hxx> #include <com/sun/star/chart/XAxis.hpp> #include <com/sun/star/drawing/XShape.hpp> #include <com/sun/star/lang/XComponent.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> #include <com/sun/star/util/XNumberFormatsSupplier.hpp> - +#include <rtl/ref.hxx> #include <memory> namespace com::sun::star::chart2 { class XAxis; } @@ -35,6 +35,8 @@ namespace com::sun::star::chart2 { class XAxis; } namespace chart::wrapper { class Chart2ModelContact; +class TitleWrapper; +class GridWrapper; class AxisWrapper : public ::cppu::ImplInheritanceHelper< WrappedPropertySet @@ -56,7 +58,7 @@ public: SECOND_Y_AXIS }; - AxisWrapper(tAxisType eType, const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + AxisWrapper(tAxisType eType, std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual ~AxisWrapper() override; static void getDimensionAndMainAxisBool( tAxisType eType, sal_Int32& rnDimensionIndex, bool& rbMainAxis ); @@ -109,13 +111,13 @@ private: //methods private: //member std::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; - ::comphelper::OInterfaceContainerHelper3<css::lang::XEventListener> m_aEventListenerContainer; + ::comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> m_aEventListenerContainer; tAxisType m_eType; - css::uno::Reference< css::beans::XPropertySet > m_xAxisTitle; - css::uno::Reference< css::beans::XPropertySet > m_xMajorGrid; - css::uno::Reference< css::beans::XPropertySet > m_xMinorGrid; + rtl::Reference< TitleWrapper > m_xAxisTitle; + rtl::Reference< GridWrapper > m_xMajorGrid; + rtl::Reference< GridWrapper > m_xMinorGrid; }; } // namespace chart::wrapper diff --git a/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx b/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx index aefdc29b1dce..f7ed5ca5165b 100644 --- a/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx +++ b/chart2/source/controller/chartapiwrapper/Chart2ModelContact.cxx @@ -18,13 +18,13 @@ */ #include "Chart2ModelContact.hxx" -#include <ChartModelHelper.hxx> +#include <Legend.hxx> #include <LegendHelper.hxx> #include <CommonConverters.hxx> #include <servicenames.hxx> #include <ObjectIdentifier.hxx> -#include <chartview/ExplicitValueProvider.hxx> #include <chartview/DrawModelWrapper.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <ChartView.hxx> #include <DiagramHelper.hxx> @@ -32,8 +32,8 @@ #include <ChartModel.hxx> -#include <comphelper/servicehelper.hxx> -#include <tools/diagnose_ex.h> +#include <com/sun/star/chart2/XDataSeries.hpp> +#include <comphelper/diagnose_ex.hxx> using namespace ::com::sun::star; using namespace ::com::sun::star::chart2; @@ -62,16 +62,11 @@ void Chart2ModelContact::setDocumentModel( ChartModel* pChartModel ) if( !pChartModel ) return; - uno::Reference< container::XNameContainer > xDashTable( pChartModel->createInstance("com.sun.star.drawing.DashTable"), uno::UNO_QUERY ); - uno::Reference< container::XNameContainer > xGradientTable( pChartModel->createInstance("com.sun.star.drawing.GradientTable"), uno::UNO_QUERY ); - uno::Reference< container::XNameContainer > xHatchTable( pChartModel->createInstance("com.sun.star.drawing.HatchTable"), uno::UNO_QUERY ); - uno::Reference< container::XNameContainer > xBitmapTable( pChartModel->createInstance("com.sun.star.drawing.BitmapTable"), uno::UNO_QUERY ); - uno::Reference< container::XNameContainer > xTransparencyGradientTable( pChartModel->createInstance("com.sun.star.drawing.TransparencyGradientTable"), uno::UNO_QUERY ); - m_aTableMap["LineDashName"] = xDashTable; - m_aTableMap["FillGradientName"] = xGradientTable; - m_aTableMap["FillHatchName"] = xHatchTable; - m_aTableMap["FillBitmapName"] = xBitmapTable; - m_aTableMap["FillTransparenceGradientName"] = xTransparencyGradientTable; + m_aTableMap[u"LineDashName"_ustr].set(pChartModel->createInstance(u"com.sun.star.drawing.DashTable"_ustr), uno::UNO_QUERY); + m_aTableMap[u"FillGradientName"_ustr].set(pChartModel->createInstance(u"com.sun.star.drawing.GradientTable"_ustr), uno::UNO_QUERY); + m_aTableMap[u"FillHatchName"_ustr].set(pChartModel->createInstance(u"com.sun.star.drawing.HatchTable"_ustr), uno::UNO_QUERY); + m_aTableMap[u"FillBitmapName"_ustr].set(pChartModel->createInstance(u"com.sun.star.drawing.BitmapTable"_ustr), uno::UNO_QUERY); + m_aTableMap[u"FillTransparenceGradientName"_ustr].set(pChartModel->createInstance(u"com.sun.star.drawing.TransparencyGradientTable"_ustr), uno::UNO_QUERY); } void Chart2ModelContact::clear() @@ -107,74 +102,54 @@ rtl::Reference< ::chart::ChartView > const & Chart2ModelContact::getChartView() // get the chart view rtl::Reference<ChartModel> xChartModel( m_xChartModel ); if( xChartModel ) - { - auto xInstance = xChartModel->createInstance( CHART_VIEW_SERVICE_NAME ); - auto pChartView = dynamic_cast<ChartView*>(xInstance.get()); - assert(!xInstance || pChartView); - m_xChartView = pChartView; - } + m_xChartView = xChartModel->createChartView(); } return m_xChartView; } -ExplicitValueProvider* Chart2ModelContact::getExplicitValueProvider() const -{ - getChartView(); - - //obtain the ExplicitValueProvider from the chart view - return m_xChartView.get(); -} - rtl::Reference<SvxDrawPage> Chart2ModelContact::getDrawPage() const { rtl::Reference<SvxDrawPage> xResult; - ExplicitValueProvider* pProvider( getExplicitValueProvider() ); - if( pProvider ) + rtl::Reference< ChartView > const & rxChartView = getChartView(); + if( rxChartView ) { - xResult = pProvider->getDrawModelWrapper()->getMainDrawPage(); + xResult = rxChartView->getDrawModelWrapper()->getMainDrawPage(); } return xResult; } void Chart2ModelContact::getExplicitValuesForAxis( - const Reference< XAxis > & xAxis, + const rtl::Reference< Axis > & xAxis, ExplicitScaleData & rOutExplicitScale, ExplicitIncrementData & rOutExplicitIncrement ) { - ExplicitValueProvider* pProvider( getExplicitValueProvider() ); - if( pProvider ) + rtl::Reference< ChartView > const & rxChartView = getChartView(); + if( rxChartView ) { - pProvider->getExplicitValuesForAxis( + rxChartView->getExplicitValuesForAxis( xAxis, rOutExplicitScale, rOutExplicitIncrement ); } } sal_Int32 Chart2ModelContact::getExplicitNumberFormatKeyForAxis( - const Reference< chart2::XAxis >& xAxis ) + const rtl::Reference< ::chart::Axis >& xAxis ) { - Reference< chart2::XCoordinateSystem > xCooSys( + rtl::Reference< BaseCoordinateSystem > xCooSys( AxisHelper::getCoordinateSystemOfAxis( - xAxis, ChartModelHelper::findDiagram( m_xChartModel ) ) ); + xAxis, m_xChartModel.get()->getFirstChartDiagram() ) ); - return ExplicitValueProvider::getExplicitNumberFormatKeyForAxis( xAxis, xCooSys + return ChartView::getExplicitNumberFormatKeyForAxis( xAxis, xCooSys , m_xChartModel.get() ); } -sal_Int32 Chart2ModelContact::getExplicitNumberFormatKeyForSeries( - const Reference< chart2::XDataSeries >& xSeries ) -{ - return ExplicitValueProvider::getExplicitNumberFormatKeyForDataLabel( - uno::Reference< beans::XPropertySet >( xSeries, uno::UNO_QUERY )); -} - awt::Size Chart2ModelContact::GetPageSize() const { - return ChartModelHelper::getPageSize(m_xChartModel.get()); + return m_xChartModel.get()->getPageSize(); } awt::Rectangle Chart2ModelContact::SubstractAxisTitleSizes( const awt::Rectangle& rPositionRect ) { - awt::Rectangle aRect = ExplicitValueProvider::AddSubtractAxisTitleSizes( + awt::Rectangle aRect = ChartView::AddSubtractAxisTitleSizes( *m_xChartModel.get(), getChartView().get(), rPositionRect, true ); return aRect; } @@ -184,7 +159,7 @@ awt::Rectangle Chart2ModelContact::GetDiagramRectangleIncludingTitle() const awt::Rectangle aRect( GetDiagramRectangleIncludingAxes() ); //add axis title sizes to the diagram size - aRect = ExplicitValueProvider::AddSubtractAxisTitleSizes( + aRect = ChartView::AddSubtractAxisTitleSizes( *m_xChartModel.get(), getChartView().get(), aRect, false ); return aRect; @@ -193,15 +168,15 @@ awt::Rectangle Chart2ModelContact::GetDiagramRectangleIncludingTitle() const awt::Rectangle Chart2ModelContact::GetDiagramRectangleIncludingAxes() const { awt::Rectangle aRect(0,0,0,0); - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( m_xChartModel ); + rtl::Reference< Diagram > xDiagram = m_xChartModel.get()->getFirstChartDiagram(); - if( DiagramHelper::getDiagramPositioningMode( xDiagram ) == DiagramPositioningMode_INCLUDING ) + if( xDiagram && xDiagram->getDiagramPositioningMode() == DiagramPositioningMode::Including ) aRect = DiagramHelper::getDiagramRectangleFromModel(m_xChartModel.get()); else { - ExplicitValueProvider* pProvider( getExplicitValueProvider() ); - if( pProvider ) - aRect = pProvider->getRectangleOfObject("PlotAreaIncludingAxes"); + rtl::Reference< ChartView > const & rxChartView = getChartView(); + if( rxChartView ) + aRect = rxChartView->getRectangleOfObject(u"PlotAreaIncludingAxes"_ustr); } return aRect; } @@ -209,15 +184,15 @@ awt::Rectangle Chart2ModelContact::GetDiagramRectangleIncludingAxes() const awt::Rectangle Chart2ModelContact::GetDiagramRectangleExcludingAxes() const { awt::Rectangle aRect(0,0,0,0); - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( m_xChartModel ); + rtl::Reference< Diagram > xDiagram = m_xChartModel.get()->getFirstChartDiagram(); - if( DiagramHelper::getDiagramPositioningMode( xDiagram ) == DiagramPositioningMode_EXCLUDING ) + if( xDiagram && xDiagram->getDiagramPositioningMode() == DiagramPositioningMode::Excluding ) aRect = DiagramHelper::getDiagramRectangleFromModel(m_xChartModel.get()); else { - ExplicitValueProvider* pProvider( getExplicitValueProvider() ); - if( pProvider ) - aRect = pProvider->getDiagramRectangleExcludingAxes(); + rtl::Reference< ChartView > const & rxChartView = getChartView(); + if( rxChartView ) + aRect = rxChartView->getDiagramRectangleExcludingAxes(); } return aRect; } @@ -225,12 +200,12 @@ awt::Rectangle Chart2ModelContact::GetDiagramRectangleExcludingAxes() const awt::Size Chart2ModelContact::GetLegendSize() const { awt::Size aSize; - ExplicitValueProvider* pProvider( getExplicitValueProvider() ); - if( pProvider ) + rtl::Reference< ChartView > const & rxChartView = getChartView(); + if( rxChartView ) { - uno::Reference< chart2::XLegend > xLegend( LegendHelper::getLegend( *m_xChartModel.get() ) ); - OUString aCID( ObjectIdentifier::createClassifiedIdentifierForObject( xLegend, m_xChartModel.get() ) ); - aSize = ToSize( pProvider->getRectangleOfObject( aCID ) ); + rtl::Reference< Legend > xLegend = LegendHelper::getLegend( *m_xChartModel.get() ); + OUString aCID( ObjectIdentifier::createClassifiedIdentifierForObject( xLegend, m_xChartModel ) ); + aSize = ToSize( rxChartView->getRectangleOfObject( aCID ) ); } return aSize; } @@ -238,12 +213,12 @@ awt::Size Chart2ModelContact::GetLegendSize() const awt::Point Chart2ModelContact::GetLegendPosition() const { awt::Point aPoint; - ExplicitValueProvider* pProvider( getExplicitValueProvider() ); - if( pProvider ) + rtl::Reference< ChartView > const & rxChartView = getChartView(); + if( rxChartView ) { - uno::Reference< chart2::XLegend > xLegend( LegendHelper::getLegend( *m_xChartModel.get() ) ); - OUString aCID( ObjectIdentifier::createClassifiedIdentifierForObject( xLegend, m_xChartModel.get() ) ); - aPoint = ToPoint( pProvider->getRectangleOfObject( aCID ) ); + rtl::Reference< Legend > xLegend = LegendHelper::getLegend( *m_xChartModel.get() ); + OUString aCID( ObjectIdentifier::createClassifiedIdentifierForObject( xLegend, m_xChartModel ) ); + aPoint = ToPoint( rxChartView->getRectangleOfObject( aCID ) ); } return aPoint; } @@ -251,11 +226,11 @@ awt::Point Chart2ModelContact::GetLegendPosition() const awt::Size Chart2ModelContact::GetTitleSize( const uno::Reference< css::chart2::XTitle > & xTitle ) const { awt::Size aSize; - ExplicitValueProvider* pProvider( getExplicitValueProvider() ); - if( pProvider && xTitle.is() ) + rtl::Reference< ChartView > const & rxChartView = getChartView(); + if( rxChartView && xTitle.is() ) { - OUString aCID( ObjectIdentifier::createClassifiedIdentifierForObject( xTitle, m_xChartModel.get() ) ); - aSize = ToSize( pProvider->getRectangleOfObject( aCID ) ); + OUString aCID( ObjectIdentifier::createClassifiedIdentifierForObject( xTitle, m_xChartModel ) ); + aSize = ToSize( rxChartView->getRectangleOfObject( aCID ) ); } return aSize; } @@ -263,11 +238,11 @@ awt::Size Chart2ModelContact::GetTitleSize( const uno::Reference< css::chart2::X awt::Point Chart2ModelContact::GetTitlePosition( const uno::Reference< css::chart2::XTitle > & xTitle ) const { awt::Point aPoint; - ExplicitValueProvider* pProvider( getExplicitValueProvider() ); - if( pProvider && xTitle.is() ) + rtl::Reference< ChartView > const & rxChartView = getChartView(); + if( rxChartView && xTitle.is() ) { OUString aCID( ObjectIdentifier::createClassifiedIdentifierForObject( xTitle, m_xChartModel.get() ) ); - aPoint = ToPoint( pProvider->getRectangleOfObject( aCID ) ); + aPoint = ToPoint( rxChartView->getRectangleOfObject( aCID ) ); } return aPoint; } @@ -275,11 +250,11 @@ awt::Point Chart2ModelContact::GetTitlePosition( const uno::Reference< css::char awt::Size Chart2ModelContact::GetAxisSize( const uno::Reference< css::chart2::XAxis > & xAxis ) const { awt::Size aSize; - ExplicitValueProvider* pProvider( getExplicitValueProvider() ); - if( pProvider && xAxis.is() ) + rtl::Reference< ChartView > const & rxChartView = getChartView(); + if( rxChartView && xAxis.is() ) { OUString aCID( ObjectIdentifier::createClassifiedIdentifierForObject( xAxis, m_xChartModel.get() ) ); - aSize = ToSize( pProvider->getRectangleOfObject( aCID ) ); + aSize = ToSize( rxChartView->getRectangleOfObject( aCID ) ); } return aSize; } @@ -287,11 +262,11 @@ awt::Size Chart2ModelContact::GetAxisSize( const uno::Reference< css::chart2::XA awt::Point Chart2ModelContact::GetAxisPosition( const uno::Reference< css::chart2::XAxis > & xAxis ) const { awt::Point aPoint; - ExplicitValueProvider* pProvider( getExplicitValueProvider() ); - if( pProvider && xAxis.is() ) + rtl::Reference< ChartView > const & rxChartView = getChartView(); + if( rxChartView && xAxis.is() ) { OUString aCID( ObjectIdentifier::createClassifiedIdentifierForObject( xAxis, m_xChartModel.get() ) ); - aPoint = ToPoint( pProvider->getRectangleOfObject( aCID ) ); + aPoint = ToPoint( rxChartView->getRectangleOfObject( aCID ) ); } return aPoint; } diff --git a/chart2/source/controller/chartapiwrapper/Chart2ModelContact.hxx b/chart2/source/controller/chartapiwrapper/Chart2ModelContact.hxx index 837c09341fd3..40ef39fd105f 100644 --- a/chart2/source/controller/chartapiwrapper/Chart2ModelContact.hxx +++ b/chart2/source/controller/chartapiwrapper/Chart2ModelContact.hxx @@ -18,7 +18,6 @@ */ #pragma once -#include <cppuhelper/weakref.hxx> #include <com/sun/star/awt/Size.hpp> #include <com/sun/star/awt/Point.hpp> #include <com/sun/star/awt/Rectangle.hpp> @@ -32,14 +31,9 @@ namespace chart { struct ExplicitIncrementData; } namespace chart { struct ExplicitScaleData; } namespace com::sun::star::chart2 { class XAxis; } -namespace com::sun::star::chart2 { class XChartDocument; } namespace com::sun::star::chart2 { class XDataSeries; } -namespace com::sun::star::chart2 { class XDiagram; } namespace com::sun::star::chart2 { class XTitle; } namespace com::sun::star::container { class XNameContainer; } -namespace com::sun::star::drawing { class XDrawPage; } -namespace com::sun::star::frame { class XModel; } -namespace com::sun::star::lang { class XUnoTunnel; } namespace com::sun::star::uno { class XComponentContext; } @@ -71,15 +65,12 @@ public: case properties are 'auto'. */ void getExplicitValuesForAxis( - const css::uno::Reference< css::chart2::XAxis > & xAxis, + const rtl::Reference< ::chart::Axis > & xAxis, ExplicitScaleData & rOutExplicitScale, ExplicitIncrementData & rOutExplicitIncrement ); sal_Int32 getExplicitNumberFormatKeyForAxis( - const css::uno::Reference< css::chart2::XAxis >& xAxis ); - - static sal_Int32 getExplicitNumberFormatKeyForSeries( - const css::uno::Reference< css::chart2::XDataSeries >& xSeries ); + const rtl::Reference< ::chart::Axis >& xAxis ); /** Returns the size of the page in logic coordinates. This value is used for setting an appropriate "ReferencePageSize" for FontHeights. @@ -130,7 +121,6 @@ public: css::awt::Point GetAxisPosition( const css::uno::Reference< css::chart2::XAxis > & xAxis ) const; private: //methods - ExplicitValueProvider* getExplicitValueProvider() const; rtl::Reference< ChartView > const & getChartView() const; public: //member diff --git a/chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx b/chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx index 3b0a56818e77..b2c38d31bde5 100644 --- a/chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx +++ b/chart2/source/controller/chartapiwrapper/ChartDataWrapper.cxx @@ -20,17 +20,16 @@ #include "ChartDataWrapper.hxx" #include <DiagramHelper.hxx> #include <DataSourceHelper.hxx> -#include <ChartModelHelper.hxx> #include <InternalDataProvider.hxx> #include <ControllerLockGuard.hxx> #include "Chart2ModelContact.hxx" #include <cppuhelper/supportsservice.hxx> -#include <com/sun/star/chart2/XChartDocument.hpp> #include <com/sun/star/chart/XChartDocument.hpp> #include <float.h> #include <cmath> #include <limits> +#include <utility> #include <osl/diagnose.h> using namespace ::com::sun::star; @@ -121,6 +120,11 @@ struct lcl_AllOperator : public lcl_Operator virtual bool setsCategories( bool /*bDataInColumns*/ ) override { + // Do not force creation of categories, when original has no categories + if (auto pDataWrapper = dynamic_cast<const ChartDataWrapper*>(m_xDataToApply.get())) + if (auto xChartModel = pDataWrapper->getChartModel()) + if (auto xDiagram = xChartModel->getFirstChartDiagram()) + return xDiagram->getCategories().is(); return true; } @@ -177,9 +181,9 @@ struct lcl_DataOperator : public lcl_Operator struct lcl_RowDescriptionsOperator : public lcl_Operator { lcl_RowDescriptionsOperator( const Sequence< OUString >& rRowDescriptions - , const rtl::Reference<::chart::ChartModel>& xChartDoc ) + , rtl::Reference<::chart::ChartModel> xChartDoc ) : m_rRowDescriptions( rRowDescriptions ) - , m_xChartDoc(xChartDoc) + , m_xChartDoc(std::move(xChartDoc)) , m_bDataInColumns(true) { } @@ -208,9 +212,9 @@ struct lcl_RowDescriptionsOperator : public lcl_Operator struct lcl_ComplexRowDescriptionsOperator : public lcl_Operator { lcl_ComplexRowDescriptionsOperator( const Sequence< Sequence< OUString > >& rComplexRowDescriptions - , const rtl::Reference<::chart::ChartModel>& xChartDoc ) + , rtl::Reference<::chart::ChartModel> xChartDoc ) : m_rComplexRowDescriptions( rComplexRowDescriptions ) - , m_xChartDoc(xChartDoc) + , m_xChartDoc(std::move(xChartDoc)) , m_bDataInColumns(true) { } @@ -260,9 +264,9 @@ struct lcl_AnyRowDescriptionsOperator : public lcl_Operator struct lcl_ColumnDescriptionsOperator : public lcl_Operator { lcl_ColumnDescriptionsOperator( const Sequence< OUString >& rColumnDescriptions - , const rtl::Reference<::chart::ChartModel>& xChartDoc ) + , rtl::Reference<::chart::ChartModel> xChartDoc ) : m_rColumnDescriptions( rColumnDescriptions ) - , m_xChartDoc(xChartDoc) + , m_xChartDoc(std::move(xChartDoc)) , m_bDataInColumns(true) { } @@ -291,9 +295,9 @@ struct lcl_ColumnDescriptionsOperator : public lcl_Operator struct lcl_ComplexColumnDescriptionsOperator : public lcl_Operator { lcl_ComplexColumnDescriptionsOperator( const Sequence< Sequence< OUString > >& rComplexColumnDescriptions - , const rtl::Reference<::chart::ChartModel>& xChartDoc ) + , rtl::Reference<::chart::ChartModel> xChartDoc ) : m_rComplexColumnDescriptions( rComplexColumnDescriptions ) - , m_xChartDoc(xChartDoc) + , m_xChartDoc(std::move(xChartDoc)) , m_bDataInColumns(true) { } @@ -364,19 +368,17 @@ struct lcl_DateCategoriesOperator : public lcl_Operator } -ChartDataWrapper::ChartDataWrapper(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : m_spChart2ModelContact(spChart2ModelContact) - , m_aEventListenerContainer(m_aMutex) +ChartDataWrapper::ChartDataWrapper(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : m_spChart2ModelContact(std::move(spChart2ModelContact)) { osl_atomic_increment( &m_refCount ); initDataAccess(); osl_atomic_decrement( &m_refCount ); } -ChartDataWrapper::ChartDataWrapper( const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact, +ChartDataWrapper::ChartDataWrapper( std::shared_ptr<Chart2ModelContact> spChart2ModelContact, const Reference< XChartData >& xNewData ) : - m_spChart2ModelContact( spChart2ModelContact ), - m_aEventListenerContainer( m_aMutex ) + m_spChart2ModelContact(std::move( spChart2ModelContact )) { osl_atomic_increment( &m_refCount ); lcl_AllOperator aOperator( xNewData ); @@ -513,13 +515,15 @@ void SAL_CALL ChartDataWrapper::setDateCategories( const Sequence< double >& rDa void SAL_CALL ChartDataWrapper::addChartDataChangeEventListener( const uno::Reference< css::chart::XChartDataChangeEventListener >& aListener ) { - m_aEventListenerContainer.addInterface( aListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.addInterface( g, aListener ); } void SAL_CALL ChartDataWrapper::removeChartDataChangeEventListener( const uno::Reference< css::chart::XChartDataChangeEventListener >& aListener ) { - m_aEventListenerContainer.removeInterface( aListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.removeInterface( g, aListener ); } double SAL_CALL ChartDataWrapper::getNotANumber() @@ -537,20 +541,23 @@ sal_Bool SAL_CALL ChartDataWrapper::isNotANumber( double nNumber ) // ____ XComponent ____ void SAL_CALL ChartDataWrapper::dispose() { - m_aEventListenerContainer.disposeAndClear( lang::EventObject( static_cast< ::cppu::OWeakObject* >( this ))); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.disposeAndClear( g, lang::EventObject( static_cast< ::cppu::OWeakObject* >( this ))); m_xDataAccess=nullptr; } void SAL_CALL ChartDataWrapper::addEventListener( const uno::Reference< lang::XEventListener > & xListener ) { - m_aEventListenerContainer.addInterface( xListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.addInterface( g, xListener ); } void SAL_CALL ChartDataWrapper::removeEventListener( const uno::Reference< lang::XEventListener >& aListener ) { - m_aEventListenerContainer.removeInterface( aListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.removeInterface( g, aListener ); } // ____ XEventListener ____ @@ -560,15 +567,22 @@ void SAL_CALL ChartDataWrapper::disposing( const lang::EventObject& /* Source */ void ChartDataWrapper::fireChartDataChangeEvent( css::chart::ChartDataChangeEvent& aEvent ) { - if( ! m_aEventListenerContainer.getLength() ) + std::unique_lock g(m_aMutex); + if( ! m_aEventListenerContainer.getLength(g) ) return; uno::Reference< uno::XInterface > xSrc( static_cast< cppu::OWeakObject* >( this )); OSL_ASSERT( xSrc.is()); if( xSrc.is() ) - aEvent.Source = xSrc; + aEvent.Source = std::move(xSrc); - m_aEventListenerContainer.notifyEach( &css::chart::XChartDataChangeEventListener::chartDataChanged, aEvent ); + m_aEventListenerContainer.forEach( g, + [&aEvent](const uno::Reference<css::lang::XEventListener>& l) + { + uno::Reference<css::chart::XChartDataChangeEventListener> cl(l, uno::UNO_QUERY); + if (cl) + cl->chartDataChanged(aEvent); + }); } void ChartDataWrapper::switchToInternalDataProvider() @@ -590,9 +604,9 @@ void ChartDataWrapper::initDataAccess() else { //create a separate "internal data provider" that is not connected to the model - auto xInternal = ChartModelHelper::createInternalDataProvider( - xChartDoc, false /*bConnectToModel*/ ); - m_xDataAccess.set( static_cast<cppu::OWeakObject*>(xInternal.get()), uno::UNO_QUERY_THROW ); + rtl::Reference<InternalDataProvider> xInternal + = new InternalDataProvider( xChartDoc, /*bConnectToModel*/false, /*bDefaultDataInColumns*/ true ); + m_xDataAccess = xInternal; } } @@ -612,9 +626,9 @@ void ChartDataWrapper::applyData( lcl_Operator& rDataOperator ) uno::Reference< beans::XPropertySet > xDiaProp( xOldDoc->getDiagram(), uno::UNO_QUERY ); if( xDiaProp.is()) { - xDiaProp->getPropertyValue("Stacked") >>= bStacked; - xDiaProp->getPropertyValue("Percent") >>= bPercent; - xDiaProp->getPropertyValue("Deep") >>= bDeep; + xDiaProp->getPropertyValue(u"Stacked"_ustr) >>= bStacked; + xDiaProp->getPropertyValue(u"Percent"_ustr) >>= bPercent; + xDiaProp->getPropertyValue(u"Deep"_ustr) >>= bDeep; } //detect arguments for the new data source @@ -647,7 +661,7 @@ void ChartDataWrapper::applyData( lcl_Operator& rDataOperator ) return; uno::Reference< chart2::data::XDataSource > xSource( xDataProvider->createDataSource( aArguments ) ); - uno::Reference< chart2::XDiagram > xDia( xChartDoc->getFirstDiagram() ); + rtl::Reference< Diagram > xDia( xChartDoc->getFirstChartDiagram() ); if( xDia.is() ) xDia->setDiagramData( xSource, aArguments ); @@ -659,7 +673,7 @@ void ChartDataWrapper::applyData( lcl_Operator& rDataOperator ) eStackMode = StackMode::ZStacked; else if( bPercent ) eStackMode = StackMode::YStackedPercent; - DiagramHelper::setStackMode( xDia, eStackMode ); + xDia->setStackMode( eStackMode ); } // notify listeners @@ -672,7 +686,7 @@ void ChartDataWrapper::applyData( lcl_Operator& rDataOperator ) OUString SAL_CALL ChartDataWrapper::getImplementationName() { - return "com.sun.star.comp.chart.ChartData"; + return u"com.sun.star.comp.chart.ChartData"_ustr; } sal_Bool SAL_CALL ChartDataWrapper::supportsService( const OUString& rServiceName ) @@ -683,11 +697,16 @@ sal_Bool SAL_CALL ChartDataWrapper::supportsService( const OUString& rServiceNam css::uno::Sequence< OUString > SAL_CALL ChartDataWrapper::getSupportedServiceNames() { return { - "com.sun.star.chart.ChartDataArray", - "com.sun.star.chart.ChartData" + u"com.sun.star.chart.ChartDataArray"_ustr, + u"com.sun.star.chart.ChartData"_ustr }; } +rtl::Reference<ChartModel> ChartDataWrapper::getChartModel() const +{ + return m_spChart2ModelContact->getDocumentModel(); +} + } // namespace chart /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/chart2/source/controller/chartapiwrapper/ChartDataWrapper.hxx b/chart2/source/controller/chartapiwrapper/ChartDataWrapper.hxx index dcf7c50ade36..9a44e53b8b12 100644 --- a/chart2/source/controller/chartapiwrapper/ChartDataWrapper.hxx +++ b/chart2/source/controller/chartapiwrapper/ChartDataWrapper.hxx @@ -18,9 +18,10 @@ */ #pragma once -#include <cppuhelper/basemutex.hxx> #include <cppuhelper/implbase.hxx> -#include <comphelper/interfacecontainer2.hxx> +#include <comphelper/interfacecontainer4.hxx> +#include <rtl/ref.hxx> + #include <com/sun/star/chart2/XAnyDescriptionAccess.hpp> #include <com/sun/star/chart/XDateCategories.hpp> #include <com/sun/star/lang/XComponent.hpp> @@ -29,13 +30,17 @@ #include <memory> -namespace chart::wrapper +namespace chart +{ +class ChartModel; + +namespace wrapper { class Chart2ModelContact; struct lcl_Operator; -class ChartDataWrapper final : public cppu::BaseMutex, public +class ChartDataWrapper final : public ::cppu::WeakImplHelper< css::chart2::XAnyDescriptionAccess, css::chart::XDateCategories, @@ -44,8 +49,8 @@ class ChartDataWrapper final : public cppu::BaseMutex, public css::lang::XComponent > { public: - explicit ChartDataWrapper(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); - ChartDataWrapper(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact + explicit ChartDataWrapper(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); + ChartDataWrapper(std::shared_ptr<Chart2ModelContact> spChart2ModelContact , const css::uno::Reference< css::chart::XChartData >& xNewData ); virtual ~ChartDataWrapper() override; @@ -54,6 +59,8 @@ public: virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override; virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override; + rtl::Reference<ChartModel> getChartModel() const; + private: // ____ XDateCategories ____ virtual css::uno::Sequence< double > SAL_CALL getDateCategories() override; @@ -107,12 +114,13 @@ private: void initDataAccess(); void applyData( lcl_Operator& rDataOperator ); + std::mutex m_aMutex; css::uno::Reference< css::chart2::XAnyDescriptionAccess > m_xDataAccess; - std::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; - ::comphelper::OInterfaceContainerHelper2 m_aEventListenerContainer; + ::comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> m_aEventListenerContainer; }; } // namespace chart::wrapper +} // namespace chart /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx b/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx index e75bd16e8e24..2bbff1f3c293 100644 --- a/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx +++ b/chart2/source/controller/chartapiwrapper/ChartDocumentWrapper.cxx @@ -19,25 +19,24 @@ #include <ChartDocumentWrapper.hxx> #include <ChartView.hxx> +#include <ChartViewHelper.hxx> #include <ChartTypeManager.hxx> #include <ChartTypeTemplate.hxx> #include <servicenames.hxx> #include <PropertyHelper.hxx> #include <TitleHelper.hxx> +#include <Legend.hxx> #include <LegendHelper.hxx> #include <ControllerLockGuard.hxx> #include <DisposeHelper.hxx> #include "DataSeriesPointWrapper.hxx" -#include <chartview/ExplicitValueProvider.hxx> #include <chartview/DrawModelWrapper.hxx> #include "Chart2ModelContact.hxx" #include <BaseCoordinateSystem.hxx> #include <ChartModel.hxx> -#include <DiagramHelper.hxx> #include <DataSourceHelper.hxx> -#include <ChartModelHelper.hxx> #include <AxisHelper.hxx> #include <ThreeDHelper.hxx> @@ -51,7 +50,7 @@ #include <cppuhelper/supportsservice.hxx> #include <comphelper/processfactory.hxx> #include <comphelper/sequence.hxx> -#include <comphelper/servicehelper.hxx> +#include <utility> #include <vcl/settings.hxx> #include <com/sun/star/drawing/ShapeCollection.hpp> @@ -59,9 +58,8 @@ #include <com/sun/star/lang/DisposedException.hpp> #include <com/sun/star/lang/XInitialization.hpp> #include <com/sun/star/util/XRefreshable.hpp> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> -#include <vector> #include <algorithm> #include <map> @@ -220,30 +218,20 @@ void lcl_AddPropertiesToVector( beans::PropertyAttribute::MAYBEDEFAULT ); } -struct StaticChartDocumentWrapperPropertyArray_Initializer +const Sequence< Property > & StaticChartDocumentWrapperPropertyArray() { - Sequence< Property >* operator()() - { - static Sequence< Property > aPropSeq( lcl_GetPropertySequence() ); - return &aPropSeq; - } - -private: - static uno::Sequence< Property > lcl_GetPropertySequence() - { - std::vector< css::beans::Property > aProperties; - lcl_AddPropertiesToVector( aProperties ); - - std::sort( aProperties.begin(), aProperties.end(), - ::chart::PropertyNameLess() ); + static Sequence< Property > aPropSeq = []() + { + std::vector< css::beans::Property > aProperties; + lcl_AddPropertiesToVector( aProperties ); - return comphelper::containerToSequence( aProperties ); - } -}; + std::sort( aProperties.begin(), aProperties.end(), + ::chart::PropertyNameLess() ); -struct StaticChartDocumentWrapperPropertyArray : public rtl::StaticAggregate< Sequence< Property >, StaticChartDocumentWrapperPropertyArray_Initializer > -{ -}; + return comphelper::containerToSequence( aProperties ); + }(); + return aPropSeq; +} } // anonymous namespace @@ -256,7 +244,7 @@ namespace { class WrappedDataSourceLabelsInFirstRowProperty : public WrappedProperty { public: - explicit WrappedDataSourceLabelsInFirstRowProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit WrappedDataSourceLabelsInFirstRowProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; @@ -271,9 +259,9 @@ private: //member } -WrappedDataSourceLabelsInFirstRowProperty::WrappedDataSourceLabelsInFirstRowProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : WrappedProperty("DataSourceLabelsInFirstRow",OUString()) - , m_spChart2ModelContact( spChart2ModelContact ) +WrappedDataSourceLabelsInFirstRowProperty::WrappedDataSourceLabelsInFirstRowProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : WrappedProperty(u"DataSourceLabelsInFirstRow"_ustr,OUString()) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) { m_aOuterValue = WrappedDataSourceLabelsInFirstRowProperty::getPropertyDefault( nullptr ); } @@ -282,7 +270,7 @@ void WrappedDataSourceLabelsInFirstRowProperty::setPropertyValue( const Any& rOu { bool bLabelsInFirstRow = true; if( ! (rOuterValue >>= bLabelsInFirstRow) ) - throw lang::IllegalArgumentException("Property DataSourceLabelsInFirstRow requires value of type boolean", nullptr, 0 ); + throw lang::IllegalArgumentException(u"Property DataSourceLabelsInFirstRow requires value of type boolean"_ustr, nullptr, 0 ); m_aOuterValue = rOuterValue; bool bNewValue = bLabelsInFirstRow; @@ -346,7 +334,7 @@ namespace { class WrappedDataSourceLabelsInFirstColumnProperty : public WrappedProperty { public: - explicit WrappedDataSourceLabelsInFirstColumnProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit WrappedDataSourceLabelsInFirstColumnProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; @@ -361,9 +349,9 @@ private: //member } -WrappedDataSourceLabelsInFirstColumnProperty::WrappedDataSourceLabelsInFirstColumnProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : WrappedProperty("DataSourceLabelsInFirstColumn",OUString()) - , m_spChart2ModelContact( spChart2ModelContact ) +WrappedDataSourceLabelsInFirstColumnProperty::WrappedDataSourceLabelsInFirstColumnProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : WrappedProperty(u"DataSourceLabelsInFirstColumn"_ustr,OUString()) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) { m_aOuterValue = WrappedDataSourceLabelsInFirstColumnProperty::getPropertyDefault( nullptr ); } @@ -372,7 +360,7 @@ void WrappedDataSourceLabelsInFirstColumnProperty::setPropertyValue( const Any& { bool bLabelsInFirstRow = true; if( ! (rOuterValue >>= bLabelsInFirstRow) ) - throw lang::IllegalArgumentException("Property DataSourceLabelsInFirstRow requires value of type boolean", nullptr, 0 ); + throw lang::IllegalArgumentException(u"Property DataSourceLabelsInFirstRow requires value of type boolean"_ustr, nullptr, 0 ); m_aOuterValue = rOuterValue; bool bNewValue = bLabelsInFirstRow; @@ -436,7 +424,7 @@ namespace { class WrappedHasLegendProperty : public WrappedProperty { public: - explicit WrappedHasLegendProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit WrappedHasLegendProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; @@ -450,9 +438,9 @@ private: //member } -WrappedHasLegendProperty::WrappedHasLegendProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : WrappedProperty("HasLegend",OUString()) - , m_spChart2ModelContact( spChart2ModelContact ) +WrappedHasLegendProperty::WrappedHasLegendProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : WrappedProperty(u"HasLegend"_ustr,OUString()) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) { } @@ -460,19 +448,18 @@ void WrappedHasLegendProperty::setPropertyValue( const Any& rOuterValue, const R { bool bNewValue = true; if( ! (rOuterValue >>= bNewValue) ) - throw lang::IllegalArgumentException("Property HasLegend requires value of type boolean", nullptr, 0 ); + throw lang::IllegalArgumentException(u"Property HasLegend requires value of type boolean"_ustr, nullptr, 0 ); try { - Reference< chart2::XLegend > xLegend( LegendHelper::getLegend( *m_spChart2ModelContact->getDocumentModel(), m_spChart2ModelContact->m_xContext,bNewValue )); + rtl::Reference< Legend > xLegend = LegendHelper::getLegend( *m_spChart2ModelContact->getDocumentModel(), m_spChart2ModelContact->m_xContext,bNewValue ); if(xLegend.is()) { - Reference< beans::XPropertySet > xLegendProp( xLegend, uno::UNO_QUERY_THROW ); bool bOldValue = true; - Any aAOld = xLegendProp->getPropertyValue("Show"); + Any aAOld = xLegend->getPropertyValue(u"Show"_ustr); aAOld >>= bOldValue; if( bOldValue != bNewValue ) - xLegendProp->setPropertyValue("Show", uno::Any( bNewValue )); + xLegend->setPropertyValue(u"Show"_ustr, uno::Any( bNewValue )); } } catch (const uno::Exception&) @@ -486,10 +473,10 @@ Any WrappedHasLegendProperty::getPropertyValue( const Reference< beans::XPropert Any aRet; try { - Reference< beans::XPropertySet > xLegendProp( - LegendHelper::getLegend( *m_spChart2ModelContact->getDocumentModel() ), uno::UNO_QUERY ); - if( xLegendProp.is()) - aRet = xLegendProp->getPropertyValue("Show"); + rtl::Reference< Legend > xLegend = + LegendHelper::getLegend( *m_spChart2ModelContact->getDocumentModel() ); + if( xLegend.is()) + aRet = xLegend->getPropertyValue(u"Show"_ustr); else aRet <<= false; } @@ -513,7 +500,7 @@ namespace { class WrappedHasMainTitleProperty : public WrappedProperty { public: - explicit WrappedHasMainTitleProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit WrappedHasMainTitleProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; @@ -527,9 +514,9 @@ private: //member } -WrappedHasMainTitleProperty::WrappedHasMainTitleProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : WrappedProperty("HasMainTitle",OUString()) - , m_spChart2ModelContact( spChart2ModelContact ) +WrappedHasMainTitleProperty::WrappedHasMainTitleProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : WrappedProperty(u"HasMainTitle"_ustr,OUString()) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) { } @@ -537,12 +524,12 @@ void WrappedHasMainTitleProperty::setPropertyValue( const Any& rOuterValue, cons { bool bNewValue = true; if( ! (rOuterValue >>= bNewValue) ) - throw lang::IllegalArgumentException("Property HasMainTitle requires value of type boolean", nullptr, 0 ); + throw lang::IllegalArgumentException(u"Property HasMainTitle requires value of type boolean"_ustr, nullptr, 0 ); try { if( bNewValue ) - TitleHelper::createTitle( TitleHelper::MAIN_TITLE, "main-title", m_spChart2ModelContact->getDocumentModel(), m_spChart2ModelContact->m_xContext ); + TitleHelper::createTitle( TitleHelper::MAIN_TITLE, u"main-title"_ustr, m_spChart2ModelContact->getDocumentModel(), m_spChart2ModelContact->m_xContext ); else TitleHelper::removeTitle( TitleHelper::MAIN_TITLE, m_spChart2ModelContact->getDocumentModel() ); } @@ -579,7 +566,7 @@ namespace { class WrappedHasSubTitleProperty : public WrappedProperty { public: - explicit WrappedHasSubTitleProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit WrappedHasSubTitleProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; @@ -593,9 +580,9 @@ private: //member } -WrappedHasSubTitleProperty::WrappedHasSubTitleProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : WrappedProperty("HasSubTitle",OUString()) - , m_spChart2ModelContact( spChart2ModelContact ) +WrappedHasSubTitleProperty::WrappedHasSubTitleProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : WrappedProperty(u"HasSubTitle"_ustr,OUString()) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) { } @@ -603,12 +590,12 @@ void WrappedHasSubTitleProperty::setPropertyValue( const Any& rOuterValue, const { bool bNewValue = true; if( ! (rOuterValue >>= bNewValue) ) - throw lang::IllegalArgumentException("Property HasSubTitle requires value of type boolean", nullptr, 0 ); + throw lang::IllegalArgumentException(u"Property HasSubTitle requires value of type boolean"_ustr, nullptr, 0 ); try { if( bNewValue ) - TitleHelper::createTitle( TitleHelper::SUB_TITLE, "", m_spChart2ModelContact->getDocumentModel(), m_spChart2ModelContact->m_xContext ); + TitleHelper::createTitle( TitleHelper::SUB_TITLE, u""_ustr, m_spChart2ModelContact->getDocumentModel(), m_spChart2ModelContact->m_xContext ); else TitleHelper::removeTitle( TitleHelper::SUB_TITLE, m_spChart2ModelContact->getDocumentModel() ); } @@ -653,6 +640,7 @@ ChartDocumentWrapper::~ChartDocumentWrapper() } // ____ XInterface (for new interfaces) ____ +// [-loplugin:unoaggregation] uno::Any SAL_CALL ChartDocumentWrapper::queryInterface( const uno::Type& aType ) { if( m_xDelegator.is()) @@ -720,20 +708,18 @@ Reference< XDiagram > SAL_CALL ChartDocumentWrapper::getDiagram() return m_xDiagram; } -void SAL_CALL ChartDocumentWrapper::setDiagram( const Reference< XDiagram >& xDiagram ) +void SAL_CALL ChartDocumentWrapper::setDiagram( const Reference< XDiagram >& _xDiagram ) { - uno::Reference< util::XRefreshable > xAddIn( xDiagram, uno::UNO_QUERY ); - if( xAddIn.is() ) - { - setAddIn( xAddIn ); - } - else if( xDiagram.is() && xDiagram != m_xDiagram ) + if (!_xDiagram.is()) + return; + auto xDiagram = dynamic_cast<DiagramWrapper*>(_xDiagram.get()); + assert(xDiagram); + if( xDiagram != m_xDiagram ) { // set new wrapped diagram at new chart. This requires the old // diagram given as parameter to implement the new interface. If // this is not possible throw an exception - Reference< chart2::XDiagramProvider > xNewDiaProvider( xDiagram, uno::UNO_QUERY_THROW ); - Reference< chart2::XDiagram > xNewDia( xNewDiaProvider->getDiagram()); + rtl::Reference< ::chart::Diagram > xNewDia( xDiagram->getUnderlyingDiagram()); try { @@ -864,23 +850,26 @@ Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::getCurrentSelection( void SAL_CALL ChartDocumentWrapper::dispose() { if( m_bIsDisposed ) - throw lang::DisposedException("ChartDocumentWrapper is disposed", - static_cast< ::cppu::OWeakObject* >( this )); + return; m_bIsDisposed = true; try { Reference< lang::XComponent > xFormerDelegator( m_xDelegator, uno::UNO_QUERY ); - DisposeHelper::DisposeAndClear( m_xTitle ); + if (m_xTitle) + { + m_xTitle->dispose(); + m_xTitle.clear(); + } DisposeHelper::DisposeAndClear( m_xSubTitle ); DisposeHelper::DisposeAndClear( m_xLegend ); DisposeHelper::DisposeAndClear( m_xChartData ); DisposeHelper::DisposeAndClear( m_xDiagram ); DisposeHelper::DisposeAndClear( m_xArea ); - m_xChartView.set( nullptr ); - m_xShapeFactory.set( nullptr ); - m_xDelegator.set( nullptr ); + m_xChartView.clear(); + m_xShapeFactory.clear(); + m_xDelegator.clear(); clearWrappedPropertySet(); m_spChart2ModelContact->clear(); @@ -907,7 +896,7 @@ void SAL_CALL ChartDocumentWrapper::dispose() void ChartDocumentWrapper::impl_resetAddIn() { Reference< util::XRefreshable > xAddIn( m_xAddIn ); - m_xAddIn.set( nullptr ); + m_xAddIn.clear(); if( !xAddIn.is() ) return; @@ -1045,11 +1034,10 @@ rtl::Reference<SvxDrawPage> ChartDocumentWrapper::impl_getDrawPage() const namespace { -uno::Reference< lang::XMultiServiceFactory > getShapeFactory(const uno::Reference<uno::XInterface>& xChartView) +uno::Reference< lang::XMultiServiceFactory > getShapeFactory(const rtl::Reference<ChartView>& xChartView) { - auto pProvider = comphelper::getFromUnoTunnel<ExplicitValueProvider>(xChartView); - if( pProvider ) - return pProvider->getDrawModelWrapper()->getShapeFactory(); + if( xChartView ) + return xChartView->getDrawModelWrapper()->getShapeFactory(); return uno::Reference< lang::XMultiServiceFactory >(); } @@ -1083,7 +1071,7 @@ uno::Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::createInstance( if( xChartTypeManager.is()) { xTemplate = - xChartTypeManager->createTemplate("com.sun.star.chart2.template.Area"); + xChartTypeManager->createTemplate(u"com.sun.star.chart2.template.Area"_ustr); bCreateDiagram = true; } break; @@ -1093,7 +1081,7 @@ uno::Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::createInstance( // this is for bar and column (the latter is the default if // no "Vertical=false" property was set) xTemplate = - xChartTypeManager->createTemplate("com.sun.star.chart2.template.Column"); + xChartTypeManager->createTemplate(u"com.sun.star.chart2.template.Column"_ustr); bCreateDiagram = true; } break; @@ -1101,7 +1089,7 @@ uno::Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::createInstance( if( xChartTypeManager.is()) { xTemplate = - xChartTypeManager->createTemplate("com.sun.star.chart2.template.Donut"); + xChartTypeManager->createTemplate(u"com.sun.star.chart2.template.Donut"_ustr); bCreateDiagram = true; } break; @@ -1109,7 +1097,7 @@ uno::Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::createInstance( if( xChartTypeManager.is()) { xTemplate = - xChartTypeManager->createTemplate("com.sun.star.chart2.template.Line"); + xChartTypeManager->createTemplate(u"com.sun.star.chart2.template.Line"_ustr); bCreateDiagram = true; } break; @@ -1117,7 +1105,7 @@ uno::Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::createInstance( if( xChartTypeManager.is()) { xTemplate = - xChartTypeManager->createTemplate("com.sun.star.chart2.template.Net"); + xChartTypeManager->createTemplate(u"com.sun.star.chart2.template.Net"_ustr); bCreateDiagram = true; } break; @@ -1125,7 +1113,7 @@ uno::Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::createInstance( if( xChartTypeManager.is()) { xTemplate = - xChartTypeManager->createTemplate("com.sun.star.chart2.template.FilledNet"); + xChartTypeManager->createTemplate(u"com.sun.star.chart2.template.FilledNet"_ustr); bCreateDiagram = true; } break; @@ -1133,7 +1121,7 @@ uno::Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::createInstance( if( xChartTypeManager.is()) { xTemplate = - xChartTypeManager->createTemplate("com.sun.star.chart2.template.Pie"); + xChartTypeManager->createTemplate(u"com.sun.star.chart2.template.Pie"_ustr); bCreateDiagram = true; } break; @@ -1141,7 +1129,7 @@ uno::Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::createInstance( if( xChartTypeManager.is()) { xTemplate = - xChartTypeManager->createTemplate("com.sun.star.chart2.template.StockLowHighClose"); + xChartTypeManager->createTemplate(u"com.sun.star.chart2.template.StockLowHighClose"_ustr); bCreateDiagram = true; } break; @@ -1149,7 +1137,7 @@ uno::Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::createInstance( if( xChartTypeManager.is()) { xTemplate = - xChartTypeManager->createTemplate("com.sun.star.chart2.template.ScatterLineSymbol"); + xChartTypeManager->createTemplate(u"com.sun.star.chart2.template.ScatterLineSymbol"_ustr); bCreateDiagram = true; } break; @@ -1158,7 +1146,7 @@ uno::Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::createInstance( if( xChartTypeManager.is()) { xTemplate = - xChartTypeManager->createTemplate("com.sun.star.chart2.template.Bubble"); + xChartTypeManager->createTemplate(u"com.sun.star.chart2.template.Bubble"_ustr); bCreateDiagram = true; } break; @@ -1189,17 +1177,17 @@ uno::Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::createInstance( { // locked controllers ControllerLockGuardUNO aCtrlLockGuard( xChartDoc ); - rtl::Reference< Diagram > xDiagram = ChartModelHelper::findDiagram( xChartDoc ); - ThreeDLookScheme e3DScheme = ThreeDHelper::detectScheme( xDiagram ); + rtl::Reference< Diagram > xDiagram = xChartDoc->getFirstChartDiagram(); + ThreeDLookScheme e3DScheme = xDiagram->detectScheme(); rtl::Reference< ::chart::ChartTypeManager > xTemplateManager = xChartDoc->getTypeManager(); - DiagramHelper::tTemplateWithServiceName aTemplateWithService( - DiagramHelper::getTemplateForDiagram( xDiagram, xTemplateManager )); + Diagram::tTemplateWithServiceName aTemplateWithService( + xDiagram->getTemplate( xTemplateManager )); if( aTemplateWithService.xChartTypeTemplate.is()) - aTemplateWithService.xChartTypeTemplate->resetStyles( xDiagram );//#i109371# + aTemplateWithService.xChartTypeTemplate->resetStyles2( xDiagram );//#i109371# xTemplate->changeDiagram( xDiagram ); if( AllSettings::GetMathLayoutRTL() ) AxisHelper::setRTLAxisLayout( AxisHelper::getCoordinateSystemByIndex( xDiagram, 0 ) ); - ThreeDHelper::setScheme( xDiagram, e3DScheme ); + xDiagram->setScheme( e3DScheme ); } else { @@ -1257,7 +1245,7 @@ uno::Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::createInstance( { if( !m_xShapeFactory.is() && m_xChartView.is() ) { - m_xShapeFactory = getShapeFactory( static_cast<cppu::OWeakObject*>(m_xChartView.get()) ); + m_xShapeFactory = getShapeFactory( m_xChartView ); } else { @@ -1265,7 +1253,7 @@ uno::Reference< uno::XInterface > SAL_CALL ChartDocumentWrapper::createInstance( if(pModel) { m_xChartView = pModel->getChartView(); - m_xShapeFactory = getShapeFactory( static_cast<cppu::OWeakObject*>(m_xChartView.get()) ); + m_xShapeFactory = getShapeFactory( m_xChartView ); } } @@ -1325,7 +1313,7 @@ void SAL_CALL ChartDocumentWrapper::setDelegator( if( m_bIsDisposed ) { if( rDelegator.is() ) - throw lang::DisposedException("ChartDocumentWrapper is disposed", + throw lang::DisposedException(u"ChartDocumentWrapper is disposed"_ustr, static_cast< ::cppu::OWeakObject* >( this )); return; } @@ -1359,22 +1347,36 @@ uno::Any SAL_CALL ChartDocumentWrapper::queryAggregation( const uno::Type& rType // ____ ::utl::OEventListenerAdapter ____ void ChartDocumentWrapper::_disposing( const lang::EventObject& rSource ) { - if( rSource.Source == m_xTitle ) - m_xTitle.set( nullptr ); - else if( rSource.Source == m_xSubTitle ) - m_xSubTitle.set( nullptr ); - else if( rSource.Source == m_xLegend ) - m_xLegend.set( nullptr ); + if( rSource.Source == cppu::getXWeak(m_xTitle.get()) ) + m_xTitle.clear(); + else if( rSource.Source == cppu::getXWeak(m_xSubTitle.get()) ) + m_xSubTitle.clear(); + else if( rSource.Source == cppu::getXWeak(m_xLegend.get()) ) + m_xLegend.clear(); else if( rSource.Source == m_xChartData ) - m_xChartData.set( nullptr ); - else if( rSource.Source == m_xDiagram ) - m_xDiagram.set( nullptr ); + m_xChartData.clear(); + else if( rSource.Source == cppu::getXWeak(m_xDiagram.get()) ) + m_xDiagram.clear(); else if( rSource.Source == m_xArea ) - m_xArea.set( nullptr ); + m_xArea.clear(); else if( rSource.Source == m_xAddIn ) - m_xAddIn.set( nullptr ); + m_xAddIn.clear(); else if( rSource.Source == static_cast<cppu::OWeakObject*>(m_xChartView.get()) ) - m_xChartView.set( nullptr ); + m_xChartView.clear(); +} + +// ____ XPropertySet ____ +void SAL_CALL ChartDocumentWrapper::setPropertyValue(const OUString& rPropertyName, const css::uno::Any& rValue) +{ + if (rPropertyName == u"ODFImport_UpdateView") + { + // A hack used at load time to notify the view that it needs an update + // See SchXMLImport::~SchXMLImport + if (auto xChartModel = rValue.query<css::chart2::XChartDocument>()) + ChartViewHelper::setViewToDirtyState_UNO(xChartModel); + return; + } + ChartDocumentWrapper_Base::setPropertyValue(rPropertyName, rValue); } // WrappedPropertySet @@ -1384,7 +1386,7 @@ Reference< beans::XPropertySet > ChartDocumentWrapper::getInnerPropertySet() } const Sequence< beans::Property >& ChartDocumentWrapper::getPropertySequence() { - return *StaticChartDocumentWrapperPropertyArray::get(); + return StaticChartDocumentWrapperPropertyArray(); } std::vector< std::unique_ptr<WrappedProperty> > ChartDocumentWrapper::createWrappedProperties() @@ -1399,16 +1401,16 @@ std::vector< std::unique_ptr<WrappedProperty> > ChartDocumentWrapper::createWrap aWrappedProperties.emplace_back( new WrappedBaseDiagramProperty( *this ) ); aWrappedProperties.emplace_back( new WrappedAdditionalShapesProperty( *this ) ); aWrappedProperties.emplace_back( new WrappedRefreshAddInAllowedProperty( *this ) ); - aWrappedProperties.emplace_back( new WrappedIgnoreProperty("NullDate",Any() ) ); // i99104 - aWrappedProperties.emplace_back( new WrappedIgnoreProperty("EnableComplexChartTypes", uno::Any(true) ) ); - aWrappedProperties.emplace_back( new WrappedIgnoreProperty("EnableDataTableDialog", uno::Any(true) ) ); + aWrappedProperties.emplace_back( new WrappedIgnoreProperty(u"NullDate"_ustr,Any() ) ); // i99104 + aWrappedProperties.emplace_back( new WrappedIgnoreProperty(u"EnableComplexChartTypes"_ustr, uno::Any(true) ) ); + aWrappedProperties.emplace_back( new WrappedIgnoreProperty(u"EnableDataTableDialog"_ustr, uno::Any(true) ) ); return aWrappedProperties; } OUString SAL_CALL ChartDocumentWrapper::getImplementationName() { - return CHART_CHARTAPIWRAPPER_IMPLEMENTATION_NAME; + return u"com.sun.star.comp.chart2.ChartDocumentWrapper"_ustr; } sal_Bool SAL_CALL ChartDocumentWrapper::supportsService( const OUString& rServiceName ) @@ -1419,10 +1421,10 @@ sal_Bool SAL_CALL ChartDocumentWrapper::supportsService( const OUString& rServic css::uno::Sequence< OUString > SAL_CALL ChartDocumentWrapper::getSupportedServiceNames() { return { - "com.sun.star.chart.ChartDocument", - CHART_CHARTAPIWRAPPER_SERVICE_NAME, - "com.sun.star.xml.UserDefinedAttributesSupplier", - "com.sun.star.beans.PropertySet" + u"com.sun.star.chart.ChartDocument"_ustr, + u"com.sun.star.chart2.ChartDocumentWrapper"_ustr, + u"com.sun.star.xml.UserDefinedAttributesSupplier"_ustr, + u"com.sun.star.beans.PropertySet"_ustr }; } diff --git a/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx b/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx index e49239935c6d..fe2552f7f5b4 100644 --- a/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx +++ b/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.cxx @@ -19,8 +19,11 @@ #include "DataSeriesPointWrapper.hxx" #include "Chart2ModelContact.hxx" +#include <ChartType.hxx> #include <ChartTypeHelper.hxx> #include <DiagramHelper.hxx> +#include <DataSeries.hxx> +#include <DataSeriesProperties.hxx> #include <LinePropertiesHelper.hxx> #include <FillProperties.hxx> #include <CharacterProperties.hxx> @@ -37,6 +40,7 @@ #include "WrappedTextRotationProperty.hxx" #include <unonames.hxx> +#include <o3tl/safeint.hxx> #include <rtl/math.hxx> #include <algorithm> @@ -45,6 +49,7 @@ #include <com/sun/star/chart/ChartAxisAssign.hpp> #include <com/sun/star/chart/ChartErrorCategory.hpp> #include <com/sun/star/chart/ChartSymbolType.hpp> +#include <com/sun/star/chart2/XDataSeries.hpp> #include <com/sun/star/drawing/LineJoint.hpp> #include <com/sun/star/drawing/LineStyle.hpp> #include <com/sun/star/drawing/FillStyle.hpp> @@ -55,6 +60,7 @@ using namespace ::com::sun::star; using namespace ::chart::wrapper; +using namespace ::chart::DataSeriesProperties; using ::com::sun::star::uno::Reference; using ::com::sun::star::uno::Sequence; @@ -243,30 +249,16 @@ uno::Sequence< Property > lcl_GetPropertySequence( DataSeriesPointWrapper::eType return comphelper::containerToSequence( aProperties ); } -struct StaticSeriesWrapperPropertyArray_Initializer +const Sequence< Property >& StaticSeriesWrapperPropertyArray() { - Sequence< Property >* operator()() - { - static Sequence< Property > aPropSeq( lcl_GetPropertySequence( DataSeriesPointWrapper::DATA_SERIES ) ); - return &aPropSeq; - } + static Sequence< Property > aPropSeq( lcl_GetPropertySequence( DataSeriesPointWrapper::DATA_SERIES ) ); + return aPropSeq; }; -struct StaticSeriesWrapperPropertyArray : public rtl::StaticAggregate< Sequence< Property >, StaticSeriesWrapperPropertyArray_Initializer > -{ -}; - -struct StaticPointWrapperPropertyArray_Initializer -{ - Sequence< Property >* operator()() - { - static Sequence< Property > aPropSeq( lcl_GetPropertySequence( DataSeriesPointWrapper::DATA_POINT ) ); - return &aPropSeq; - } -}; - -struct StaticPointWrapperPropertyArray : public rtl::StaticAggregate< Sequence< Property >, StaticPointWrapperPropertyArray_Initializer > +const Sequence< Property >& StaticPointWrapperPropertyArray() { + static Sequence< Property > aPropSeq( lcl_GetPropertySequence( DataSeriesPointWrapper::DATA_POINT ) ); + return aPropSeq; }; //PROP_SERIES_ATTACHED_AXIS @@ -287,7 +279,7 @@ protected: WrappedAttachedAxisProperty::WrappedAttachedAxisProperty( const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact ) - : WrappedProperty("Axis",OUString()) + : WrappedProperty(u"Axis"_ustr,OUString()) , m_spChart2ModelContact( spChart2ModelContact ) { } @@ -303,8 +295,8 @@ Any WrappedAttachedAxisProperty::getPropertyValue( const Reference< beans::XProp { Any aRet; - uno::Reference< chart2::XDataSeries > xDataSeries( xInnerPropertySet, uno::UNO_QUERY ); - bool bAttachedToMainAxis = ::chart::DiagramHelper::isSeriesAttachedToMainAxis( xDataSeries ); + rtl::Reference< ::chart::DataSeries > xDataSeries( dynamic_cast<::chart::DataSeries*>(xInnerPropertySet.get()) ); + bool bAttachedToMainAxis = xDataSeries->isAttachedToMainAxis(); if( bAttachedToMainAxis ) aRet <<= css::chart::ChartAxisAssign::PRIMARY_Y; else @@ -314,20 +306,20 @@ Any WrappedAttachedAxisProperty::getPropertyValue( const Reference< beans::XProp void WrappedAttachedAxisProperty::setPropertyValue( const Any& rOuterValue, const Reference< beans::XPropertySet >& xInnerPropertySet ) const { - uno::Reference< chart2::XDataSeries > xDataSeries( xInnerPropertySet, uno::UNO_QUERY ); + rtl::Reference< ::chart::DataSeries > xDataSeries( dynamic_cast<::chart::DataSeries*>(xInnerPropertySet.get()) ); sal_Int32 nChartAxisAssign = css::chart::ChartAxisAssign::PRIMARY_Y; if( ! (rOuterValue >>= nChartAxisAssign) ) - throw lang::IllegalArgumentException("Property Axis requires value of type sal_Int32", nullptr, 0 ); + throw lang::IllegalArgumentException(u"Property Axis requires value of type sal_Int32"_ustr, nullptr, 0 ); bool bNewAttachedToMainAxis = nChartAxisAssign == css::chart::ChartAxisAssign::PRIMARY_Y; - bool bOldAttachedToMainAxis = ::chart::DiagramHelper::isSeriesAttachedToMainAxis( xDataSeries ); + bool bOldAttachedToMainAxis = xDataSeries->isAttachedToMainAxis(); if( bNewAttachedToMainAxis != bOldAttachedToMainAxis) { rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); if( xDiagram.is() ) - ::chart::DiagramHelper::attachSeriesToAxis( bNewAttachedToMainAxis, xDataSeries, xDiagram, m_spChart2ModelContact->m_xContext, false ); + xDiagram->attachSeriesToAxis( bNewAttachedToMainAxis, xDataSeries, m_spChart2ModelContact->m_xContext, false ); } } @@ -342,7 +334,7 @@ protected: }; WrappedSegmentOffsetProperty::WrappedSegmentOffsetProperty() : - WrappedProperty("SegmentOffset","Offset") + WrappedProperty(u"SegmentOffset"_ustr,u"Offset"_ustr) {} Any WrappedSegmentOffsetProperty::convertInnerToOuterValue( const Any& rInnerValue ) const @@ -387,7 +379,7 @@ protected: WrappedLineColorProperty::WrappedLineColorProperty( DataSeriesPointWrapper* pDataSeriesPointWrapper ) - : WrappedSeriesAreaOrLineProperty("LineColor","BorderColor","Color", pDataSeriesPointWrapper ) + : WrappedSeriesAreaOrLineProperty(u"LineColor"_ustr,u"BorderColor"_ustr,u"Color"_ustr, pDataSeriesPointWrapper ) , m_pDataSeriesPointWrapper( pDataSeriesPointWrapper ) , m_aDefaultValue(uno::Any(sal_Int32( 0x0099ccff ))) // blue 8 { @@ -428,7 +420,7 @@ protected: WrappedLineStyleProperty::WrappedLineStyleProperty( DataSeriesPointWrapper* pDataSeriesPointWrapper ) - : WrappedSeriesAreaOrLineProperty("LineStyle","BorderStyle", "LineStyle", pDataSeriesPointWrapper ) + : WrappedSeriesAreaOrLineProperty(u"LineStyle"_ustr,u"BorderStyle"_ustr, u"LineStyle"_ustr, pDataSeriesPointWrapper ) , m_pDataSeriesPointWrapper( pDataSeriesPointWrapper ) { } @@ -454,9 +446,8 @@ void WrappedLineStyleProperty::setPropertyToDefault( const Reference< beans::XPr namespace chart::wrapper { -DataSeriesPointWrapper::DataSeriesPointWrapper(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : m_spChart2ModelContact( spChart2ModelContact ) - , m_aEventListenerContainer( m_aMutex ) +DataSeriesPointWrapper::DataSeriesPointWrapper( std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : m_spChart2ModelContact( std::move(spChart2ModelContact) ) , m_eType( DATA_SERIES ) , m_nSeriesIndexInNewAPI( -1 ) , m_nPointIndex( -1 ) @@ -473,14 +464,18 @@ void SAL_CALL DataSeriesPointWrapper::initialize( const uno::Sequence< uno::Any m_nPointIndex = -1; if( aArguments.hasElements() ) { - aArguments[0] >>= m_xDataSeries; + uno::Reference<chart2::XDataSeries> xTmp; + aArguments[0] >>= xTmp; + auto p = dynamic_cast<DataSeries*>(xTmp.get()); + assert(p); + m_xDataSeries = p; if( aArguments.getLength() >= 2 ) aArguments[1] >>= m_nPointIndex; } if( !m_xDataSeries.is() ) throw uno::Exception( - "DataSeries index invalid", static_cast< ::cppu::OWeakObject * >( this )); + u"DataSeries index invalid"_ustr, static_cast< ::cppu::OWeakObject * >( this )); //todo: check upper border of point index @@ -493,9 +488,8 @@ void SAL_CALL DataSeriesPointWrapper::initialize( const uno::Sequence< uno::Any DataSeriesPointWrapper::DataSeriesPointWrapper(eType _eType, sal_Int32 nSeriesIndexInNewAPI , sal_Int32 nPointIndex, //ignored for series - const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : m_spChart2ModelContact( spChart2ModelContact ) - , m_aEventListenerContainer( m_aMutex ) + std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : m_spChart2ModelContact( std::move(spChart2ModelContact) ) , m_eType( _eType ) , m_nSeriesIndexInNewAPI( nSeriesIndexInNewAPI ) , m_nPointIndex( (_eType == DATA_POINT) ? nPointIndex : -1 ) @@ -510,8 +504,9 @@ DataSeriesPointWrapper::~DataSeriesPointWrapper() // ____ XComponent ____ void SAL_CALL DataSeriesPointWrapper::dispose() { + std::unique_lock g(m_aMutex); uno::Reference< uno::XInterface > xSource( static_cast< ::cppu::OWeakObject* >( this ) ); - m_aEventListenerContainer.disposeAndClear( lang::EventObject( xSource ) ); + m_aEventListenerContainer.disposeAndClear( g, lang::EventObject( xSource ) ); m_xDataSeries.clear(); clearWrappedPropertySet(); @@ -520,13 +515,15 @@ void SAL_CALL DataSeriesPointWrapper::dispose() void SAL_CALL DataSeriesPointWrapper::addEventListener( const uno::Reference< lang::XEventListener >& xListener ) { - m_aEventListenerContainer.addInterface( xListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.addInterface( g, xListener ); } void SAL_CALL DataSeriesPointWrapper::removeEventListener( const uno::Reference< lang::XEventListener >& aListener ) { - m_aEventListenerContainer.removeInterface( aListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.removeInterface( g, aListener ); } // ____ XEventListener ____ @@ -536,24 +533,25 @@ void SAL_CALL DataSeriesPointWrapper::disposing( const lang::EventObject& /*Sour bool DataSeriesPointWrapper::isSupportingAreaProperties() { - Reference< chart2::XDataSeries > xSeries( getDataSeries() ); + rtl::Reference< DataSeries > xSeries( getDataSeries() ); rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); - Reference< chart2::XChartType > xChartType( DiagramHelper::getChartTypeOfSeries( xDiagram, xSeries ) ); - sal_Int32 nDimensionCount = DiagramHelper::getDimension( xDiagram ); - - return ChartTypeHelper::isSupportingAreaProperties( xChartType, nDimensionCount ); + rtl::Reference< ::chart::ChartType > xChartType( xDiagram->getChartTypeOfSeries( xSeries ) ); + if (!xChartType.is()) + return false; + sal_Int32 nDimensionCount = xDiagram->getDimension(); + return xChartType->isSupportingAreaProperties(nDimensionCount); } -Reference< chart2::XDataSeries > DataSeriesPointWrapper::getDataSeries() +rtl::Reference< DataSeries > DataSeriesPointWrapper::getDataSeries() { - Reference< chart2::XDataSeries > xSeries( m_xDataSeries ); + rtl::Reference< DataSeries > xSeries = m_xDataSeries; if( !xSeries.is() ) { rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); - std::vector< uno::Reference< chart2::XDataSeries > > aSeriesList( - ::chart::DiagramHelper::getDataSeriesFromDiagram( xDiagram ) ); + std::vector< rtl::Reference< DataSeries > > aSeriesList = + xDiagram->getDataSeries(); - if( m_nSeriesIndexInNewAPI >= 0 && m_nSeriesIndexInNewAPI < static_cast<sal_Int32>(aSeriesList.size()) ) + if( m_nSeriesIndexInNewAPI >= 0 && o3tl::make_unsigned(m_nSeriesIndexInNewAPI) < aSeriesList.size() ) xSeries = aSeriesList[m_nSeriesIndexInNewAPI]; } @@ -564,7 +562,7 @@ Reference< beans::XPropertySet > DataSeriesPointWrapper::getDataPointProperties( { Reference< beans::XPropertySet > xPointProp; - Reference< chart2::XDataSeries > xSeries( getDataSeries() ); + rtl::Reference< DataSeries > xSeries( getDataSeries() ); // may throw an IllegalArgumentException if( xSeries.is() ) @@ -579,8 +577,8 @@ void DataSeriesPointWrapper::updateReferenceSize() Reference< beans::XPropertySet > xProp = getInnerPropertySet(); if( xProp.is() ) { - if( xProp->getPropertyValue("ReferencePageSize").hasValue() ) - xProp->setPropertyValue("ReferencePageSize", uno::Any( + if( xProp->getPropertyValue(u"ReferencePageSize"_ustr).hasValue() ) + xProp->setPropertyValue(u"ReferencePageSize"_ustr, uno::Any( m_spChart2ModelContact->GetPageSize() )); } } @@ -589,7 +587,7 @@ Any DataSeriesPointWrapper::getReferenceSize() Any aRet; Reference< beans::XPropertySet > xProp = getInnerPropertySet(); if( xProp.is() ) - aRet = xProp->getPropertyValue("ReferencePageSize"); + aRet = xProp->getPropertyValue(u"ReferencePageSize"_ustr); return aRet; } awt::Size DataSeriesPointWrapper::getCurrentSizeForReference() @@ -607,7 +605,7 @@ beans::PropertyState SAL_CALL DataSeriesPointWrapper::getPropertyState( const OU { if (rPropertyName == "SymbolBitmap" || rPropertyName == "SymbolBitmapURL") { - uno::Any aAny = WrappedPropertySet::getPropertyValue("SymbolType"); + uno::Any aAny = WrappedPropertySet::getPropertyValue(u"SymbolType"_ustr); sal_Int32 nVal = css::chart::ChartSymbolType::NONE; if (aAny >>= nVal) { @@ -622,9 +620,10 @@ beans::PropertyState SAL_CALL DataSeriesPointWrapper::getPropertyState( const OU { if( rPropertyName == "FillColor") { - Reference< beans::XPropertySet > xSeriesProp( getDataSeries(), uno::UNO_QUERY ); + rtl::Reference< DataSeries > xSeries = getDataSeries(); bool bVaryColorsByPoint = false; - if( xSeriesProp.is() && (xSeriesProp->getPropertyValue("VaryColorsByPoint") >>= bVaryColorsByPoint) + // "VaryColorsByPoint" + if( xSeries.is() && (xSeries->getFastPropertyValue(PROP_DATASERIES_VARY_COLORS_BY_POINT) >>= bVaryColorsByPoint) && bVaryColorsByPoint ) return beans::PropertyState_DIRECT_VALUE; } @@ -683,7 +682,7 @@ Any SAL_CALL DataSeriesPointWrapper::getPropertyDefault( const OUString& rProper if( nHandle > 0 ) { //always take the series current value as default for points - Reference< beans::XPropertySet > xInnerPropertySet( getDataSeries(), uno::UNO_QUERY ); + rtl::Reference< DataSeries > xInnerPropertySet = getDataSeries(); if( xInnerPropertySet.is() ) { const WrappedProperty* pWrappedProperty = getWrappedProperty( rPropertyName ); @@ -704,16 +703,16 @@ Any SAL_CALL DataSeriesPointWrapper::getPropertyDefault( const OUString& rProper Reference< beans::XPropertySet > DataSeriesPointWrapper::getInnerPropertySet() { if( m_eType == DATA_SERIES ) - return Reference< beans::XPropertySet >( getDataSeries(), uno::UNO_QUERY ); + return getDataSeries(); return getDataPointProperties(); } const Sequence< beans::Property >& DataSeriesPointWrapper::getPropertySequence() { if( m_eType == DATA_SERIES ) - return *StaticSeriesWrapperPropertyArray::get(); + return StaticSeriesWrapperPropertyArray(); else - return *StaticPointWrapperPropertyArray::get(); + return StaticPointWrapperPropertyArray(); } std::vector< std::unique_ptr<WrappedProperty> > DataSeriesPointWrapper::createWrappedProperties() @@ -737,38 +736,38 @@ std::vector< std::unique_ptr<WrappedProperty> > DataSeriesPointWrapper::createWr //add unnamed line properties (different inner names here) - aWrappedProperties.emplace_back( new WrappedProperty("FillColor","Color") ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillColor"_ustr,u"Color"_ustr) ); aWrappedProperties.emplace_back( new WrappedLineStyleProperty( this ) ); aWrappedProperties.emplace_back( new WrappedLineColorProperty( this ) ); - aWrappedProperties.emplace_back( new WrappedSeriesAreaOrLineProperty("LineDashName","BorderDashName","LineDashName", this ) ); - aWrappedProperties.emplace_back( new WrappedSeriesAreaOrLineProperty("LineTransparence","BorderTransparency","Transparency", this ) ); - aWrappedProperties.emplace_back( new WrappedSeriesAreaOrLineProperty("LineWidth","BorderWidth","LineWidth", this ) ); - aWrappedProperties.emplace_back( new WrappedSeriesAreaOrLineProperty("LineCap","LineCap","LineCap", this ) ); - aWrappedProperties.emplace_back( new WrappedProperty("FillStyle","FillStyle" ) ); - aWrappedProperties.emplace_back( new WrappedProperty("FillTransparence","Transparency") ); - - aWrappedProperties.emplace_back( new WrappedIgnoreProperty("LineJoint", uno::Any( drawing::LineJoint_ROUND ) ) ); - aWrappedProperties.emplace_back( new WrappedProperty("FillTransparenceGradientName","TransparencyGradientName") ); - aWrappedProperties.emplace_back( new WrappedProperty("FillGradientName","GradientName") ); - aWrappedProperties.emplace_back( new WrappedProperty("FillGradientStepCount","GradientStepCount") ); - aWrappedProperties.emplace_back( new WrappedProperty("FillHatchName","HatchName") ); - aWrappedProperties.emplace_back( new WrappedProperty("FillBitmapName","FillBitmapName") ); - aWrappedProperties.emplace_back( new WrappedProperty("FillBackground","FillBackground") ); + aWrappedProperties.emplace_back( new WrappedSeriesAreaOrLineProperty(u"LineDashName"_ustr,u"BorderDashName"_ustr,u"LineDashName"_ustr, this ) ); + aWrappedProperties.emplace_back( new WrappedSeriesAreaOrLineProperty(u"LineTransparence"_ustr,u"BorderTransparency"_ustr,u"Transparency"_ustr, this ) ); + aWrappedProperties.emplace_back( new WrappedSeriesAreaOrLineProperty(u"LineWidth"_ustr,u"BorderWidth"_ustr,u"LineWidth"_ustr, this ) ); + aWrappedProperties.emplace_back( new WrappedSeriesAreaOrLineProperty(u"LineCap"_ustr,u"LineCap"_ustr,u"LineCap"_ustr, this ) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillStyle"_ustr,u"FillStyle"_ustr ) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillTransparence"_ustr,u"Transparency"_ustr) ); + + aWrappedProperties.emplace_back( new WrappedIgnoreProperty(u"LineJoint"_ustr, uno::Any( drawing::LineJoint_ROUND ) ) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillTransparenceGradientName"_ustr,u"TransparencyGradientName"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillGradientName"_ustr,u"GradientName"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillGradientStepCount"_ustr,u"GradientStepCount"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillHatchName"_ustr,u"HatchName"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillBitmapName"_ustr,u"FillBitmapName"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillBackground"_ustr,u"FillBackground"_ustr) ); //bitmap properties - aWrappedProperties.emplace_back( new WrappedProperty("FillBitmapMode","FillBitmapMode") ); - aWrappedProperties.emplace_back( new WrappedProperty("FillBitmapSizeX","FillBitmapSizeX") ); - aWrappedProperties.emplace_back( new WrappedProperty("FillBitmapSizeY","FillBitmapSizeY") ); - aWrappedProperties.emplace_back( new WrappedProperty("FillBitmapLogicalSize","FillBitmapLogicalSize") ); - aWrappedProperties.emplace_back( new WrappedProperty("FillBitmapOffsetX","FillBitmapOffsetX") ); - aWrappedProperties.emplace_back( new WrappedProperty("FillBitmapOffsetY","FillBitmapOffsetY") ); - aWrappedProperties.emplace_back( new WrappedProperty("FillBitmapRectanglePoint","FillBitmapRectanglePoint") ); - aWrappedProperties.emplace_back( new WrappedProperty("FillBitmapPositionOffsetX","FillBitmapPositionOffsetX") ); - aWrappedProperties.emplace_back( new WrappedProperty("FillBitmapPositionOffsetY","FillBitmapPositionOffsetY") ); - - aWrappedProperties.emplace_back( new WrappedProperty("SolidType","Geometry3D") ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillBitmapMode"_ustr,u"FillBitmapMode"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillBitmapSizeX"_ustr,u"FillBitmapSizeX"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillBitmapSizeY"_ustr,u"FillBitmapSizeY"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillBitmapLogicalSize"_ustr,u"FillBitmapLogicalSize"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillBitmapOffsetX"_ustr,u"FillBitmapOffsetX"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillBitmapOffsetY"_ustr,u"FillBitmapOffsetY"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillBitmapRectanglePoint"_ustr,u"FillBitmapRectanglePoint"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillBitmapPositionOffsetX"_ustr,u"FillBitmapPositionOffsetX"_ustr) ); + aWrappedProperties.emplace_back( new WrappedProperty(u"FillBitmapPositionOffsetY"_ustr,u"FillBitmapPositionOffsetY"_ustr) ); + + aWrappedProperties.emplace_back( new WrappedProperty(u"SolidType"_ustr,u"Geometry3D"_ustr) ); aWrappedProperties.emplace_back( new WrappedSegmentOffsetProperty() ); - aWrappedProperties.emplace_back( new WrappedProperty("D3DPercentDiagonal","PercentDiagonal") ); + aWrappedProperties.emplace_back( new WrappedProperty(u"D3DPercentDiagonal"_ustr,u"PercentDiagonal"_ustr) ); aWrappedProperties.emplace_back( new WrappedTextRotationProperty() ); @@ -780,11 +779,11 @@ void SAL_CALL DataSeriesPointWrapper::setPropertyValue( const OUString& rPropert if(rPropertyName == "Lines") { if( ! (rValue >>= m_bLinesAllowed) ) - throw lang::IllegalArgumentException("Property Lines requires value of type sal_Bool", nullptr, 0 ); + throw lang::IllegalArgumentException(u"Property Lines requires value of type sal_Bool"_ustr, nullptr, 0 ); } sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName ); - static const sal_Int32 nErrorCategoryHandle = getInfoHelper().getHandleByName("ErrorCategory"); + static const sal_Int32 nErrorCategoryHandle = getInfoHelper().getHandleByName(u"ErrorCategory"_ustr); if( nErrorCategoryHandle == nHandle ) { css::chart::ChartErrorCategory aNewValue = css::chart::ChartErrorCategory_NONE; @@ -794,16 +793,16 @@ void SAL_CALL DataSeriesPointWrapper::setPropertyValue( const OUString& rPropert switch(aNewValue) { case css::chart::ChartErrorCategory_CONSTANT_VALUE: - aHigh = getPropertyValue("ConstantErrorHigh"); - aLow = getPropertyValue("ConstantErrorLow"); + aHigh = getPropertyValue(u"ConstantErrorHigh"_ustr); + aLow = getPropertyValue(u"ConstantErrorLow"_ustr); bSetHighAndLowValues = true; break; case css::chart::ChartErrorCategory_PERCENT: - aHigh = aLow = getPropertyValue("PercentageError"); + aHigh = aLow = getPropertyValue(u"PercentageError"_ustr); bSetHighAndLowValues = true; break; case css::chart::ChartErrorCategory_ERROR_MARGIN: - aHigh = aLow = getPropertyValue("ErrorMargin"); + aHigh = aLow = getPropertyValue(u"ErrorMargin"_ustr); bSetHighAndLowValues = true; break; default: @@ -817,14 +816,14 @@ void SAL_CALL DataSeriesPointWrapper::setPropertyValue( const OUString& rPropert switch(aNewValue) { case css::chart::ChartErrorCategory_CONSTANT_VALUE: - setPropertyValue("ConstantErrorHigh",aHigh); - setPropertyValue("ConstantErrorLow",aLow); + setPropertyValue(u"ConstantErrorHigh"_ustr,aHigh); + setPropertyValue(u"ConstantErrorLow"_ustr,aLow); break; case css::chart::ChartErrorCategory_PERCENT: - setPropertyValue("PercentageError",aHigh); + setPropertyValue(u"PercentageError"_ustr,aHigh); break; case css::chart::ChartErrorCategory_ERROR_MARGIN: - setPropertyValue("ErrorMargin",aHigh); + setPropertyValue(u"ErrorMargin"_ustr,aHigh); break; default: break; @@ -841,13 +840,14 @@ Any SAL_CALL DataSeriesPointWrapper::getPropertyValue( const OUString& rProperty { if( rPropertyName == "FillColor" ) { - Reference< beans::XPropertySet > xSeriesProp( getDataSeries(), uno::UNO_QUERY ); + rtl::Reference< DataSeries > xSeries = getDataSeries(); bool bVaryColorsByPoint = false; - if( xSeriesProp.is() && (xSeriesProp->getPropertyValue("VaryColorsByPoint") >>= bVaryColorsByPoint) + // "VaryColorsByPoint" + if( xSeries.is() && (xSeries->getFastPropertyValue(PROP_DATASERIES_VARY_COLORS_BY_POINT) >>= bVaryColorsByPoint) && bVaryColorsByPoint ) { uno::Reference< beans::XPropertyState > xPointState( DataSeriesPointWrapper::getDataPointProperties(), uno::UNO_QUERY ); - if( xPointState.is() && xPointState->getPropertyState("Color") == beans::PropertyState_DEFAULT_VALUE ) + if( xPointState.is() && xPointState->getPropertyState(u"Color"_ustr) == beans::PropertyState_DEFAULT_VALUE ) { rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); if( xDiagram.is() ) @@ -865,7 +865,7 @@ Any SAL_CALL DataSeriesPointWrapper::getPropertyValue( const OUString& rProperty OUString SAL_CALL DataSeriesPointWrapper::getImplementationName() { - return "com.sun.star.comp.chart.DataSeries"; + return u"com.sun.star.comp.chart.DataSeries"_ustr; } sal_Bool SAL_CALL DataSeriesPointWrapper::supportsService( const OUString& rServiceName ) @@ -876,13 +876,13 @@ sal_Bool SAL_CALL DataSeriesPointWrapper::supportsService( const OUString& rServ css::uno::Sequence< OUString > SAL_CALL DataSeriesPointWrapper::getSupportedServiceNames() { return { - "com.sun.star.chart.ChartDataRowProperties", - "com.sun.star.chart.ChartDataPointProperties", - "com.sun.star.xml.UserDefinedAttributesSupplier", - "com.sun.star.beans.PropertySet", - "com.sun.star.drawing.FillProperties", - "com.sun.star.drawing.LineProperties", - "com.sun.star.style.CharacterProperties" + u"com.sun.star.chart.ChartDataRowProperties"_ustr, + u"com.sun.star.chart.ChartDataPointProperties"_ustr, + u"com.sun.star.xml.UserDefinedAttributesSupplier"_ustr, + u"com.sun.star.beans.PropertySet"_ustr, + u"com.sun.star.drawing.FillProperties"_ustr, + u"com.sun.star.drawing.LineProperties"_ustr, + u"com.sun.star.style.CharacterProperties"_ustr }; } diff --git a/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.hxx b/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.hxx index f5fbab3f332b..52322dfe46c9 100644 --- a/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.hxx +++ b/chart2/source/controller/chartapiwrapper/DataSeriesPointWrapper.hxx @@ -21,15 +21,15 @@ #include <WrappedPropertySet.hxx> #include "ReferenceSizePropertyProvider.hxx" #include <cppuhelper/implbase.hxx> -#include <comphelper/interfacecontainer3.hxx> +#include <comphelper/interfacecontainer4.hxx> #include <com/sun/star/lang/XComponent.hpp> #include <com/sun/star/lang/XEventListener.hpp> #include <com/sun/star/lang/XInitialization.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> - +#include <rtl/ref.hxx> #include <memory> -namespace com::sun::star::chart2 { class XDataSeries; } +namespace chart { class DataSeries; } namespace chart::wrapper { @@ -54,12 +54,12 @@ public: }; //this constructor needs an initialize call afterwards - explicit DataSeriesPointWrapper(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit DataSeriesPointWrapper(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); DataSeriesPointWrapper(eType eType , sal_Int32 nSeriesIndexInNewAPI , sal_Int32 nPointIndex //ignored for series - , const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + , std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual ~DataSeriesPointWrapper() override; @@ -100,11 +100,11 @@ private: virtual css::uno::Any SAL_CALL getPropertyDefault( const OUString& aPropertyName ) override; //own methods - css::uno::Reference< css::chart2::XDataSeries > getDataSeries(); + rtl::Reference< ::chart::DataSeries > getDataSeries(); css::uno::Reference< css::beans::XPropertySet > getDataPointProperties(); std::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; - ::comphelper::OInterfaceContainerHelper3<css::lang::XEventListener> m_aEventListenerContainer; + ::comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> m_aEventListenerContainer; eType m_eType; sal_Int32 m_nSeriesIndexInNewAPI; @@ -115,7 +115,7 @@ private: //this should only be used, if the DataSeriesPointWrapper is initialized via the XInitialize interface //because a big change in the chartmodel may lead to a dataseriespointer that is not connected to the model anymore //with the indices instead we can always get the new dataseries - css::uno::Reference< css::chart2::XDataSeries > m_xDataSeries; + rtl::Reference< ::chart::DataSeries > m_xDataSeries; }; } // namespace chart::wrapper diff --git a/chart2/source/controller/chartapiwrapper/DiagramWrapper.cxx b/chart2/source/controller/chartapiwrapper/DiagramWrapper.cxx index d9deba9857d4..217921db9f00 100644 --- a/chart2/source/controller/chartapiwrapper/DiagramWrapper.cxx +++ b/chart2/source/controller/chartapiwrapper/DiagramWrapper.cxx @@ -20,14 +20,17 @@ #include "DiagramWrapper.hxx" #include <servicenames_charttypes.hxx> #include "DataSeriesPointWrapper.hxx" +#include <DataSeriesProperties.hxx> #include "AxisWrapper.hxx" #include "Chart2ModelContact.hxx" #include "WallFloorWrapper.hxx" #include "MinMaxLineWrapper.hxx" #include "UpDownBarWrapper.hxx" +#include <Diagram.hxx> #include <DiagramHelper.hxx> #include <DataSourceHelper.hxx> -#include <ChartModelHelper.hxx> +#include <ChartType.hxx> +#include <DataSeries.hxx> #include <WrappedIgnoreProperty.hxx> #include "WrappedAxisAndGridExistenceProperties.hxx" #include "WrappedStatisticProperties.hxx" @@ -50,10 +53,9 @@ #include <com/sun/star/chart/ChartDataRowSource.hpp> #include <com/sun/star/chart2/RelativeSize.hpp> #include <com/sun/star/chart2/RelativePosition.hpp> -#include <com/sun/star/chart2/XChartDocument.hpp> +#include <com/sun/star/chart2/PieChartSubType.hpp> #include <com/sun/star/chart/ChartSolidType.hpp> #include <com/sun/star/lang/IndexOutOfBoundsException.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <LinePropertiesHelper.hxx> #include <FillProperties.hxx> @@ -64,17 +66,19 @@ #include <map> #include <com/sun/star/lang/XServiceName.hpp> #include <com/sun/star/util/XRefreshable.hpp> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> +#include <o3tl/string_view.hxx> +#include <utility> using namespace ::com::sun::star; using namespace ::chart::wrapper; +using namespace ::chart::DataSeriesProperties; using ::com::sun::star::uno::Reference; using ::com::sun::star::uno::Any; using ::com::sun::star::uno::Sequence; using ::com::sun::star::beans::Property; using ::com::sun::star::chart::XAxis; -using ::osl::MutexGuard; namespace { @@ -98,6 +102,8 @@ enum PROP_DIAGRAM_SORT_BY_X_VALUES, PROP_DIAGRAM_STARTING_ANGLE, + PROP_DIAGRAM_OF_PIE_TYPE, + PROP_DIAGRAM_SPLIT_POS, PROP_DIAGRAM_RIGHT_ANGLED_AXES, PROP_DIAGRAM_PERSPECTIVE, @@ -134,9 +140,6 @@ enum PROP_DIAGRAM_HAS_SECOND_Y_AXIS_TITLE, PROP_DIAGRAM_AUTOMATIC_SIZE, - PROP_DIAGRAM_DATATABLEHBORDER, - PROP_DIAGRAM_DATATABLEVBORDER, - PROP_DIAGRAM_DATATABLEOUTLINE, PROP_DIAGRAM_EXTERNALDATA }; @@ -227,6 +230,16 @@ void lcl_AddPropertiesToVector( cppu::UnoType<sal_Int32>::get(), beans::PropertyAttribute::BOUND | beans::PropertyAttribute::MAYBEDEFAULT ); + rOutProperties.emplace_back( "SubPieType", + PROP_DIAGRAM_OF_PIE_TYPE, + cppu::UnoType<chart2::PieChartSubType>::get(), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT ); + rOutProperties.emplace_back( "SplitPos", + PROP_DIAGRAM_SPLIT_POS, + cppu::UnoType<sal_Int32>::get(), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEDEFAULT ); //new for 3D charts rOutProperties.emplace_back( "RightAngledAxes", @@ -378,21 +391,7 @@ void lcl_AddPropertiesToVector( cppu::UnoType<bool>::get(), beans::PropertyAttribute::BOUND | beans::PropertyAttribute::MAYBEDEFAULT ); - rOutProperties.emplace_back( "DataTableHBorder", - PROP_DIAGRAM_DATATABLEHBORDER, - cppu::UnoType<bool>::get(), - beans::PropertyAttribute::BOUND - | beans::PropertyAttribute::MAYBEDEFAULT ); - rOutProperties.emplace_back( "DataTableVBorder", - PROP_DIAGRAM_DATATABLEVBORDER, - cppu::UnoType<bool>::get(), - beans::PropertyAttribute::BOUND - | beans::PropertyAttribute::MAYBEDEFAULT ); - rOutProperties.emplace_back( "DataTableOutline", - PROP_DIAGRAM_DATATABLEOUTLINE, - cppu::UnoType<bool>::get(), - beans::PropertyAttribute::BOUND - | beans::PropertyAttribute::MAYBEDEFAULT ); + rOutProperties.emplace_back( "ExternalData", PROP_DIAGRAM_EXTERNALDATA, cppu::UnoType<OUString>::get(), @@ -400,45 +399,35 @@ void lcl_AddPropertiesToVector( | beans::PropertyAttribute::MAYBEVOID ); } -struct StaticDiagramWrapperPropertyArray_Initializer -{ - Sequence< Property >* operator()() - { - static Sequence< Property > aPropSeq( lcl_GetPropertySequence() ); - return &aPropSeq; - } - -private: - static uno::Sequence< Property > lcl_GetPropertySequence() - { - std::vector< css::beans::Property > aProperties; - lcl_AddPropertiesToVector( aProperties ); - ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); - ::chart::FillProperties::AddPropertiesToVector( aProperties ); - ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); - ::chart::SceneProperties::AddPropertiesToVector( aProperties ); - WrappedStatisticProperties::addProperties( aProperties ); - WrappedSymbolProperties::addProperties( aProperties ); - WrappedDataCaptionProperties::addProperties( aProperties ); - WrappedSplineProperties::addProperties( aProperties ); - WrappedStockProperties::addProperties( aProperties ); - WrappedAutomaticPositionProperties::addProperties( aProperties ); - - std::sort( aProperties.begin(), aProperties.end(), - ::chart::PropertyNameLess() ); - - return comphelper::containerToSequence( aProperties ); - } -}; - -struct StaticDiagramWrapperPropertyArray : public rtl::StaticAggregate< Sequence< Property >, StaticDiagramWrapperPropertyArray_Initializer > +const Sequence< Property >& StaticDiagramWrapperPropertyArray() { + static Sequence< Property > aPropSeq = []() + { + std::vector< css::beans::Property > aProperties; + lcl_AddPropertiesToVector( aProperties ); + ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); + ::chart::FillProperties::AddPropertiesToVector( aProperties ); + ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); + ::chart::SceneProperties::AddPropertiesToVector( aProperties ); + WrappedStatisticProperties::addProperties( aProperties ); + WrappedSymbolProperties::addProperties( aProperties ); + WrappedDataCaptionProperties::addProperties( aProperties ); + WrappedSplineProperties::addProperties( aProperties ); + WrappedStockProperties::addProperties( aProperties ); + WrappedAutomaticPositionProperties::addProperties( aProperties ); + + std::sort( aProperties.begin(), aProperties.end(), + ::chart::PropertyNameLess() ); + + return comphelper::containerToSequence( aProperties ); + }(); + return aPropSeq; }; -bool lcl_isXYChart( const Reference< chart2::XDiagram >& rDiagram ) +bool lcl_isXYChart( const rtl::Reference< ::chart::Diagram >& xDiagram ) { bool bRet = false; - Reference< chart2::XChartType > xChartType( ::chart::DiagramHelper::getChartTypeByIndex( rDiagram, 0 ) ); + rtl::Reference< ::chart::ChartType > xChartType( xDiagram->getChartTypeByIndex( 0 ) ); if( xChartType.is() ) { OUString aChartType( xChartType->getChartType() ); @@ -450,7 +439,7 @@ bool lcl_isXYChart( const Reference< chart2::XDiagram >& rDiagram ) sal_Int32 lcl_getNewAPIIndexForOldAPIIndex( sal_Int32 nOldAPIIndex - , const Reference< chart2::XDiagram >& xDiagram ) + , const rtl::Reference< ::chart::Diagram >& xDiagram ) { sal_Int32 nNewAPIIndex = nOldAPIIndex; @@ -460,30 +449,39 @@ sal_Int32 lcl_getNewAPIIndexForOldAPIIndex( nNewAPIIndex -= 1; } - std::vector< uno::Reference< chart2::XDataSeries > > aSeriesList( - ::chart::DiagramHelper::getDataSeriesFromDiagram( xDiagram ) ); + std::vector< rtl::Reference< ::chart::DataSeries > > aSeriesList = + xDiagram->getDataSeries(); if( nNewAPIIndex >= static_cast<sal_Int32>(aSeriesList.size()) ) nNewAPIIndex = -1; return nNewAPIIndex; } -OUString lcl_getDiagramType( const OUString & rTemplateServiceName ) +OUString lcl_getDiagramType( std::u16string_view rTemplateServiceName ) { - static const OUStringLiteral aPrefix(u"com.sun.star.chart2.template."); + static constexpr OUString aPrefix(u"com.sun.star.chart2.template."_ustr); - if( rTemplateServiceName.match( aPrefix )) + if( o3tl::starts_with(rTemplateServiceName, aPrefix) ) { - const OUString aName( rTemplateServiceName.copy( aPrefix.getLength())); + const std::u16string_view aName( rTemplateServiceName.substr( aPrefix.getLength())); // "Area" "StackedArea" "PercentStackedArea" "ThreeDArea" // "StackedThreeDArea" "PercentStackedThreeDArea" - if( aName.indexOf( "Area" ) != -1 ) - return "com.sun.star.chart.AreaDiagram"; + if( aName.find( u"Area" ) != std::u16string_view::npos ) + return u"com.sun.star.chart.AreaDiagram"_ustr; + + // Handle bar-of-pie and pie-of-pie before simple pie + // "BarOfPie" + if( aName.find( u"BarOfPie" ) != std::u16string_view::npos ) + return u"com.sun.star.chart.BarOfPieDiagram"_ustr; + + // "PieOfPie" + if( aName.find( u"PieOfPie" ) != std::u16string_view::npos ) + return u"com.sun.star.chart.PieOfPieDiagram"_ustr; // "Pie" "PieAllExploded" "ThreeDPie" "ThreeDPieAllExploded" - if( aName.indexOf( "Pie" ) != -1 ) - return "com.sun.star.chart.PieDiagram"; + if( aName.find( u"Pie" ) != std::u16string_view::npos ) + return u"com.sun.star.chart.PieDiagram"_ustr; // "Column" "StackedColumn" "PercentStackedColumn" "ThreeDColumnDeep" // "ThreeDColumnFlat" "StackedThreeDColumnFlat" @@ -491,34 +489,34 @@ OUString lcl_getDiagramType( const OUString & rTemplateServiceName ) // "PercentStackedBar" "ThreeDBarDeep" "ThreeDBarFlat" // "StackedThreeDBarFlat" "PercentStackedThreeDBarFlat" "ColumnWithLine" // "StackedColumnWithLine" - if( aName.indexOf( "Column" ) != -1 || aName.indexOf( "Bar" ) != -1 ) - return "com.sun.star.chart.BarDiagram"; + if( aName.find( u"Column" ) != std::u16string_view::npos || aName.find( u"Bar" ) != std::u16string_view::npos ) + return u"com.sun.star.chart.BarDiagram"_ustr; // "Donut" "DonutAllExploded" "ThreeDDonut" "ThreeDDonutAllExploded" - if( aName.indexOf( "Donut" ) != -1 ) - return "com.sun.star.chart.DonutDiagram"; + if( aName.find( u"Donut" ) != std::u16string_view::npos ) + return u"com.sun.star.chart.DonutDiagram"_ustr; // "ScatterLineSymbol" "ScatterLine" "ScatterSymbol" "ThreeDScatter" - if( aName.indexOf( "Scatter" ) != -1 ) - return "com.sun.star.chart.XYDiagram"; + if( aName.find( u"Scatter" ) != std::u16string_view::npos ) + return u"com.sun.star.chart.XYDiagram"_ustr; // "FilledNet" "StackedFilledNet" "PercentStackedFilledNet" - if( aName.indexOf( "FilledNet" ) != -1 ) - return "com.sun.star.chart.FilledNetDiagram"; + if( aName.find( u"FilledNet" ) != std::u16string_view::npos ) + return u"com.sun.star.chart.FilledNetDiagram"_ustr; // "Net" "NetSymbol" "NetLine" "StackedNet" "StackedNetSymbol" // "StackedNetLine" "PercentStackedNet" "PercentStackedNetSymbol" // "PercentStackedNetLine" - if( aName.indexOf( "Net" ) != -1 ) - return "com.sun.star.chart.NetDiagram"; + if( aName.find( u"Net" ) != std::u16string_view::npos ) + return u"com.sun.star.chart.NetDiagram"_ustr; // "StockLowHighClose" "StockOpenLowHighClose" "StockVolumeLowHighClose" // "StockVolumeOpenLowHighClose" - if( aName.indexOf( "Stock" ) != -1 ) - return "com.sun.star.chart.StockDiagram"; + if( aName.find( u"Stock" ) != std::u16string_view::npos ) + return u"com.sun.star.chart.StockDiagram"_ustr; - if( aName.indexOf( "Bubble" ) != -1 ) - return "com.sun.star.chart.BubbleDiagram"; + if( aName.find( u"Bubble" ) != std::u16string_view::npos ) + return u"com.sun.star.chart.BubbleDiagram"_ustr; // Note: this must be checked after Bar, Net and Scatter @@ -526,8 +524,11 @@ OUString lcl_getDiagramType( const OUString & rTemplateServiceName ) // "PercentStackedLine" "LineSymbol" "StackedLineSymbol" // "PercentStackedLineSymbol" "ThreeDLine" "StackedThreeDLine" // "PercentStackedThreeDLine" "ThreeDLineDeep" - if( aName.indexOf( "Line" ) != -1 || aName.indexOf( "Symbol" ) != -1 ) - return "com.sun.star.chart.LineDiagram"; + if( aName.find(u"Line") != std::u16string_view::npos || aName.find( u"Symbol" ) != std::u16string_view::npos ) + return u"com.sun.star.chart.LineDiagram"_ustr; + + if (aName.find(u"Histogram") != std::u16string_view::npos) + return u"com.sun.star.chart.HistogramDiagram"_ustr; OSL_FAIL( "unknown template" ); } @@ -543,6 +544,7 @@ const tMakeStringStringMap& lcl_getChartTypeNameMap() {"com.sun.star.chart2.LineChartType", "com.sun.star.chart.LineDiagram"}, {"com.sun.star.chart2.AreaChartType", "com.sun.star.chart.AreaDiagram"}, {"com.sun.star.chart2.ColumnChartType", "com.sun.star.chart.BarDiagram"}, + {"com.sun.star.chart2.HistogramChartType", "com.sun.star.chart.HistogramDiagram"}, {"com.sun.star.chart2.PieChartType", "com.sun.star.chart.PieDiagram"}, {"com.sun.star.chart2.DonutChartType", "com.sun.star.chart.DonutDiagram"}, {"com.sun.star.chart2.ScatterChartType", "com.sun.star.chart.XYDiagram"}, @@ -572,9 +574,8 @@ OUString lcl_getOldChartTypeName( const OUString & rNewChartTypeName ) namespace chart::wrapper { -DiagramWrapper::DiagramWrapper(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : m_spChart2ModelContact(spChart2ModelContact) - , m_aEventListenerContainer(m_aMutex) +DiagramWrapper::DiagramWrapper(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : m_spChart2ModelContact(std::move(spChart2ModelContact)) { } @@ -594,7 +595,7 @@ OUString SAL_CALL DiagramWrapper::getDiagramType() if( xChartDocProp.is() ) { uno::Reference< util::XRefreshable > xAddIn; - if( xChartDocProp->getPropertyValue( "AddIn" ) >>= xAddIn ) + if( xChartDocProp->getPropertyValue( u"AddIn"_ustr ) >>= xAddIn ) { uno::Reference< lang::XServiceName > xServiceName( xAddIn, uno::UNO_QUERY ); if( xServiceName.is()) @@ -603,26 +604,29 @@ OUString SAL_CALL DiagramWrapper::getDiagramType() } rtl::Reference< ::chart::ChartTypeManager > xChartTypeManager = xChartDoc->getTypeManager(); - DiagramHelper::tTemplateWithServiceName aTemplateAndService = - DiagramHelper::getTemplateForDiagram( xDiagram, xChartTypeManager ); + Diagram::tTemplateWithServiceName aTemplateAndService = + xDiagram->getTemplate( xChartTypeManager ); aRet = lcl_getDiagramType( aTemplateAndService.sServiceName ); } - if( aRet.isEmpty()) + if( !aRet.isEmpty()) + return aRet; + + // none of the standard templates matched + // use first chart type + if (xDiagram) { - // none of the standard templates matched - // use first chart type - Reference< chart2::XChartType > xChartType( DiagramHelper::getChartTypeByIndex( xDiagram, 0 ) ); + rtl::Reference< ChartType > xChartType( xDiagram->getChartTypeByIndex( 0 ) ); if( xChartType.is() ) { aRet = xChartType->getChartType(); if( !aRet.isEmpty() ) aRet = lcl_getOldChartTypeName( aRet ); } - if( aRet.isEmpty()) - aRet = "com.sun.star.chart.BarDiagram"; } + if( aRet.isEmpty()) + aRet = "com.sun.star.chart.BarDiagram"; return aRet; } @@ -631,12 +635,12 @@ Reference< beans::XPropertySet > SAL_CALL DiagramWrapper::getDataRowProperties( sal_Int32 nRow ) { if( nRow < 0 ) - throw lang::IndexOutOfBoundsException("DataSeries index invalid", + throw lang::IndexOutOfBoundsException(u"DataSeries index invalid"_ustr, static_cast< ::cppu::OWeakObject * >( this )); sal_Int32 nNewAPIIndex = lcl_getNewAPIIndexForOldAPIIndex( nRow, m_spChart2ModelContact->getDiagram() ); if( nNewAPIIndex < 0 ) - throw lang::IndexOutOfBoundsException("DataSeries index invalid", + throw lang::IndexOutOfBoundsException(u"DataSeries index invalid"_ustr, static_cast< ::cppu::OWeakObject * >( this )); Reference< beans::XPropertySet > xRet( new DataSeriesPointWrapper( @@ -648,12 +652,12 @@ Reference< beans::XPropertySet > SAL_CALL DiagramWrapper::getDataPointProperties( sal_Int32 nCol, sal_Int32 nRow ) { if( nCol < 0 || nRow < 0 ) - throw lang::IndexOutOfBoundsException("DataSeries index invalid", + throw lang::IndexOutOfBoundsException(u"DataSeries index invalid"_ustr, static_cast< ::cppu::OWeakObject * >( this )); sal_Int32 nNewAPIIndex = lcl_getNewAPIIndexForOldAPIIndex( nRow, m_spChart2ModelContact->getDiagram() ); if( nNewAPIIndex < 0 ) - throw lang::IndexOutOfBoundsException("DataSeries index invalid", + throw lang::IndexOutOfBoundsException(u"DataSeries index invalid"_ustr, static_cast< ::cppu::OWeakObject * >( this )); //todo: check borders of point index @@ -688,11 +692,11 @@ void SAL_CALL DiagramWrapper::setPosition( const awt::Point& aPosition ) { OSL_FAIL("DiagramWrapper::setPosition called with a position out of range -> automatic values are taken instead" ); uno::Any aEmpty; - xProp->setPropertyValue( "RelativePosition", aEmpty ); + xProp->setPropertyValue( u"RelativePosition"_ustr, aEmpty ); return; } - xProp->setPropertyValue( "RelativePosition", uno::Any(aRelativePosition) ); - xProp->setPropertyValue( "PosSizeExcludeAxes", uno::Any(false) ); + xProp->setPropertyValue( u"RelativePosition"_ustr, uno::Any(aRelativePosition) ); + xProp->setPropertyValue( u"PosSizeExcludeAxes"_ustr, uno::Any(false) ); } awt::Size SAL_CALL DiagramWrapper::getSize() @@ -718,18 +722,18 @@ void SAL_CALL DiagramWrapper::setSize( const awt::Size& aSize ) { OSL_FAIL("DiagramWrapper::setSize called with sizes bigger than page -> automatic values are taken instead" ); uno::Any aEmpty; - xProp->setPropertyValue( "RelativeSize", aEmpty ); + xProp->setPropertyValue( u"RelativeSize"_ustr, aEmpty ); return; } - xProp->setPropertyValue( "RelativeSize", uno::Any(aRelativeSize) ); - xProp->setPropertyValue( "PosSizeExcludeAxes", uno::Any(false) ); + xProp->setPropertyValue( u"RelativeSize"_ustr, uno::Any(aRelativeSize) ); + xProp->setPropertyValue( u"PosSizeExcludeAxes"_ustr, uno::Any(false) ); } // ____ XShapeDescriptor (base of XShape) ____ OUString SAL_CALL DiagramWrapper::getShapeType() { - return "com.sun.star.chart.Diagram"; + return u"com.sun.star.chart.Diagram"_ustr; } // ____ XDiagramPositioning ____ @@ -740,8 +744,8 @@ void SAL_CALL DiagramWrapper::setAutomaticDiagramPositioning() uno::Reference< beans::XPropertySet > xDiaProps( getDiagram(), uno::UNO_QUERY ); if( xDiaProps.is() ) { - xDiaProps->setPropertyValue( "RelativeSize", Any() ); - xDiaProps->setPropertyValue( "RelativePosition", Any() ); + xDiaProps->setPropertyValue( u"RelativeSize"_ustr, Any() ); + xDiaProps->setPropertyValue( u"RelativePosition"_ustr, Any() ); } } sal_Bool SAL_CALL DiagramWrapper::isAutomaticDiagramPositioning( ) @@ -749,8 +753,8 @@ sal_Bool SAL_CALL DiagramWrapper::isAutomaticDiagramPositioning( ) uno::Reference< beans::XPropertySet > xDiaProps( getDiagram(), uno::UNO_QUERY ); if( xDiaProps.is() ) { - Any aRelativeSize( xDiaProps->getPropertyValue( "RelativeSize" ) ); - Any aRelativePosition( xDiaProps->getPropertyValue( "RelativePosition" ) ); + Any aRelativeSize( xDiaProps->getPropertyValue( u"RelativeSize"_ustr ) ); + Any aRelativePosition( xDiaProps->getPropertyValue( u"RelativePosition"_ustr ) ); if( aRelativeSize.hasValue() && aRelativePosition.hasValue() ) return false; } @@ -762,19 +766,19 @@ void SAL_CALL DiagramWrapper::setDiagramPositionExcludingAxes( const awt::Rectan DiagramHelper::setDiagramPositioning( m_spChart2ModelContact->getDocumentModel(), rPositionRect ); uno::Reference< beans::XPropertySet > xDiaProps( getDiagram(), uno::UNO_QUERY ); if( xDiaProps.is() ) - xDiaProps->setPropertyValue("PosSizeExcludeAxes", uno::Any(true) ); + xDiaProps->setPropertyValue(u"PosSizeExcludeAxes"_ustr, uno::Any(true) ); } sal_Bool SAL_CALL DiagramWrapper::isExcludingDiagramPositioning() { uno::Reference< beans::XPropertySet > xDiaProps( getDiagram(), uno::UNO_QUERY ); if( xDiaProps.is() ) { - Any aRelativeSize( xDiaProps->getPropertyValue( "RelativeSize" ) ); - Any aRelativePosition( xDiaProps->getPropertyValue( "RelativePosition" ) ); + Any aRelativeSize( xDiaProps->getPropertyValue( u"RelativeSize"_ustr ) ); + Any aRelativePosition( xDiaProps->getPropertyValue( u"RelativePosition"_ustr ) ); if( aRelativeSize.hasValue() && aRelativePosition.hasValue() ) { bool bPosSizeExcludeAxes = false; - xDiaProps->getPropertyValue( "PosSizeExcludeAxes" ) >>= bPosSizeExcludeAxes; + xDiaProps->getPropertyValue( u"PosSizeExcludeAxes"_ustr ) >>= bPosSizeExcludeAxes; return bPosSizeExcludeAxes; } } @@ -790,7 +794,7 @@ void SAL_CALL DiagramWrapper::setDiagramPositionIncludingAxes( const awt::Rectan DiagramHelper::setDiagramPositioning( m_spChart2ModelContact->getDocumentModel(), rPositionRect ); uno::Reference< beans::XPropertySet > xDiaProps( getDiagram(), uno::UNO_QUERY ); if( xDiaProps.is() ) - xDiaProps->setPropertyValue("PosSizeExcludeAxes", uno::Any(false) ); + xDiaProps->setPropertyValue(u"PosSizeExcludeAxes"_ustr, uno::Any(false) ); } awt::Rectangle SAL_CALL DiagramWrapper::calculateDiagramPositionIncludingAxes( ) { @@ -810,7 +814,7 @@ css::awt::Rectangle SAL_CALL DiagramWrapper::calculateDiagramPositionIncludingAx // ____ XAxisSupplier ____ Reference< XAxis > SAL_CALL DiagramWrapper::getAxis( sal_Int32 nDimensionIndex ) { - Reference< XAxis > xAxis; + rtl::Reference< AxisWrapper > xAxis; if(!nDimensionIndex) { if( !m_xXAxis.is() ) @@ -834,7 +838,7 @@ Reference< XAxis > SAL_CALL DiagramWrapper::getAxis( sal_Int32 nDimensionIndex ) Reference< XAxis > SAL_CALL DiagramWrapper::getSecondaryAxis( sal_Int32 nDimensionIndex ) { - Reference< XAxis > xAxis; + rtl::Reference< AxisWrapper > xAxis; if(!nDimensionIndex) { if( !m_xSecondXAxis.is() ) @@ -882,7 +886,7 @@ Reference< beans::XPropertySet > SAL_CALL DiagramWrapper::getZAxis() { if( ! m_xZAxis.is()) m_xZAxis = new AxisWrapper( AxisWrapper::Z_AXIS, m_spChart2ModelContact ); - return Reference< beans::XPropertySet >( m_xZAxis, uno::UNO_QUERY ); + return m_xZAxis; } // ____ XTwoAxisXSupplier ____ @@ -890,7 +894,7 @@ Reference< beans::XPropertySet > SAL_CALL DiagramWrapper::getSecondaryXAxis() { if( ! m_xSecondXAxis.is()) m_xSecondXAxis = new AxisWrapper( AxisWrapper::SECOND_X_AXIS, m_spChart2ModelContact ); - return Reference< beans::XPropertySet >( m_xSecondXAxis, uno::UNO_QUERY ); + return m_xSecondXAxis; } // ____ XAxisXSupplier (base of XTwoAxisXSupplier) ____ @@ -907,7 +911,7 @@ Reference< beans::XPropertySet > SAL_CALL DiagramWrapper::getXAxis() { if( ! m_xXAxis.is()) m_xXAxis = new AxisWrapper( AxisWrapper::X_AXIS, m_spChart2ModelContact ); - return Reference< beans::XPropertySet >( m_xXAxis, uno::UNO_QUERY ); + return m_xXAxis; } Reference< beans::XPropertySet > SAL_CALL DiagramWrapper::getXMainGrid() @@ -933,7 +937,7 @@ Reference< beans::XPropertySet > SAL_CALL DiagramWrapper::getSecondaryYAxis() { if( ! m_xSecondYAxis.is()) m_xSecondYAxis = new AxisWrapper( AxisWrapper::SECOND_Y_AXIS, m_spChart2ModelContact ); - return Reference< beans::XPropertySet >( m_xSecondYAxis, uno::UNO_QUERY ); + return m_xSecondYAxis; } // ____ XAxisYSupplier (base of XTwoAxisYSupplier) ____ @@ -950,7 +954,7 @@ Reference< beans::XPropertySet > SAL_CALL DiagramWrapper::getYAxis() { if( ! m_xYAxis.is()) m_xYAxis = new AxisWrapper( AxisWrapper::Y_AXIS, m_spChart2ModelContact ); - return Reference< beans::XPropertySet >( m_xYAxis, uno::UNO_QUERY ); + return m_xYAxis; } Reference< beans::XPropertySet > SAL_CALL DiagramWrapper::getYMainGrid() @@ -1066,9 +1070,8 @@ void SAL_CALL DiagramWrapper::setDefaultIllumination() // ____ XComponent ____ void SAL_CALL DiagramWrapper::dispose() { - m_aEventListenerContainer.disposeAndClear( lang::EventObject( static_cast< ::cppu::OWeakObject* >( this ))); - - MutexGuard aGuard( m_aMutex); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.disposeAndClear( g, lang::EventObject( static_cast< ::cppu::OWeakObject* >( this ))); DisposeHelper::DisposeAndClear( m_xXAxis ); DisposeHelper::DisposeAndClear( m_xYAxis ); @@ -1087,13 +1090,15 @@ void SAL_CALL DiagramWrapper::dispose() void SAL_CALL DiagramWrapper::addEventListener( const Reference< lang::XEventListener >& xListener ) { - m_aEventListenerContainer.addInterface( xListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.addInterface( g, xListener ); } void SAL_CALL DiagramWrapper::removeEventListener( const Reference< lang::XEventListener >& aListener ) { - m_aEventListenerContainer.removeInterface( aListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.removeInterface( g, aListener ); } namespace { @@ -1102,7 +1107,7 @@ namespace { class WrappedDataRowSourceProperty : public WrappedProperty { public: - explicit WrappedDataRowSourceProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit WrappedDataRowSourceProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; @@ -1117,9 +1122,9 @@ private: //member } -WrappedDataRowSourceProperty::WrappedDataRowSourceProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : WrappedProperty("DataRowSource",OUString()) - , m_spChart2ModelContact( spChart2ModelContact ) +WrappedDataRowSourceProperty::WrappedDataRowSourceProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : WrappedProperty(u"DataRowSource"_ustr,OUString()) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) { m_aOuterValue = WrappedDataRowSourceProperty::getPropertyDefault( nullptr ); } @@ -1131,7 +1136,7 @@ void WrappedDataRowSourceProperty::setPropertyValue( const Any& rOuterValue, con { sal_Int32 nNew = sal_Int32(css::chart::ChartDataRowSource_ROWS); if( !(rOuterValue >>= nNew) ) - throw lang::IllegalArgumentException( "Property DataRowSource requires css::chart::ChartDataRowSource value", nullptr, 0 ); + throw lang::IllegalArgumentException( u"Property DataRowSource requires css::chart::ChartDataRowSource value"_ustr, nullptr, 0 ); eChartDataRowSource = css::chart::ChartDataRowSource(nNew); } @@ -1195,7 +1200,7 @@ namespace { class WrappedStackingProperty : public WrappedProperty { public: - WrappedStackingProperty(StackMode eStackMode, const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + WrappedStackingProperty(StackMode eStackMode, std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; @@ -1214,9 +1219,9 @@ std::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; } -WrappedStackingProperty::WrappedStackingProperty(StackMode eStackMode, const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) +WrappedStackingProperty::WrappedStackingProperty(StackMode eStackMode, std::shared_ptr<Chart2ModelContact> spChart2ModelContact) : WrappedProperty(OUString(),OUString()) - , m_spChart2ModelContact( spChart2ModelContact ) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) , m_eStackMode( eStackMode ) { switch( m_eStackMode ) @@ -1240,8 +1245,8 @@ bool WrappedStackingProperty::detectInnerValue( StackMode& eStackMode ) const { bool bHasDetectableInnerValue = false; bool bIsAmbiguous = false; - eStackMode = DiagramHelper::getStackMode( m_spChart2ModelContact->getDiagram() - , bHasDetectableInnerValue, bIsAmbiguous ); + rtl::Reference<Diagram> xDiagram = m_spChart2ModelContact->getDiagram(); + eStackMode = xDiagram ? xDiagram->getStackMode( bHasDetectableInnerValue, bIsAmbiguous ) : StackMode::NONE; return bHasDetectableInnerValue; } @@ -1249,7 +1254,7 @@ void WrappedStackingProperty::setPropertyValue( const Any& rOuterValue, const Re { bool bNewValue = false; if( ! (rOuterValue >>= bNewValue) ) - throw lang::IllegalArgumentException( "Stacking Properties require boolean values", nullptr, 0 ); + throw lang::IllegalArgumentException( u"Stacking Properties require boolean values"_ustr, nullptr, 0 ); StackMode eInnerStackMode; bool bHasDetectableInnerValue = detectInnerValue( eInnerStackMode ); @@ -1269,7 +1274,7 @@ void WrappedStackingProperty::setPropertyValue( const Any& rOuterValue, const Re if( xDiagram.is() ) { StackMode eNewStackMode = bNewValue ? m_eStackMode : StackMode::NONE; - DiagramHelper::setStackMode( xDiagram, eNewStackMode ); + xDiagram->setStackMode( eNewStackMode ); } } @@ -1297,7 +1302,7 @@ namespace { class WrappedDim3DProperty : public WrappedProperty { public: - explicit WrappedDim3DProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit WrappedDim3DProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; @@ -1312,9 +1317,9 @@ private: //member } -WrappedDim3DProperty::WrappedDim3DProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : WrappedProperty("Dim3D",OUString()) - , m_spChart2ModelContact( spChart2ModelContact ) +WrappedDim3DProperty::WrappedDim3DProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : WrappedProperty(u"Dim3D"_ustr,OUString()) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) { m_aOuterValue = WrappedDim3DProperty::getPropertyDefault( nullptr ); } @@ -1323,7 +1328,7 @@ void WrappedDim3DProperty::setPropertyValue( const Any& rOuterValue, const Refer { bool bNew3D = false; if( ! (rOuterValue >>= bNew3D) ) - throw lang::IllegalArgumentException( "Property Dim3D requires boolean value", nullptr, 0 ); + throw lang::IllegalArgumentException( u"Property Dim3D requires boolean value"_ustr, nullptr, 0 ); m_aOuterValue = rOuterValue; @@ -1331,9 +1336,9 @@ void WrappedDim3DProperty::setPropertyValue( const Any& rOuterValue, const Refer if( !xDiagram.is() ) return; - bool bOld3D = DiagramHelper::getDimension( xDiagram ) == 3; + bool bOld3D = xDiagram->getDimension() == 3; if( bOld3D != bNew3D ) - DiagramHelper::setDimension( xDiagram, bNew3D ? 3 : 2 ); + xDiagram->setDimension( bNew3D ? 3 : 2 ); } Any WrappedDim3DProperty::getPropertyValue( const Reference< beans::XPropertySet >& /*xInnerPropertySet*/ ) const @@ -1341,7 +1346,7 @@ Any WrappedDim3DProperty::getPropertyValue( const Reference< beans::XPropertySet rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); if( xDiagram.is() ) { - bool b3D = DiagramHelper::getDimension( xDiagram ) == 3; + bool b3D = xDiagram->getDimension() == 3; m_aOuterValue <<= b3D; } return m_aOuterValue; @@ -1360,7 +1365,7 @@ namespace { class WrappedVerticalProperty : public WrappedProperty { public: - explicit WrappedVerticalProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit WrappedVerticalProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; @@ -1375,9 +1380,9 @@ private: //member } -WrappedVerticalProperty::WrappedVerticalProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : WrappedProperty("Vertical",OUString()) - , m_spChart2ModelContact( spChart2ModelContact ) +WrappedVerticalProperty::WrappedVerticalProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : WrappedProperty(u"Vertical"_ustr,OUString()) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) { m_aOuterValue = WrappedVerticalProperty::getPropertyDefault( nullptr ); } @@ -1386,7 +1391,7 @@ void WrappedVerticalProperty::setPropertyValue( const Any& rOuterValue, const Re { bool bNewVertical = false; if( ! (rOuterValue >>= bNewVertical) ) - throw lang::IllegalArgumentException( "Property Vertical requires boolean value", nullptr, 0 ); + throw lang::IllegalArgumentException( u"Property Vertical requires boolean value"_ustr, nullptr, 0 ); m_aOuterValue = rOuterValue; @@ -1396,9 +1401,9 @@ void WrappedVerticalProperty::setPropertyValue( const Any& rOuterValue, const Re bool bFound = false; bool bAmbiguous = false; - bool bOldVertical = DiagramHelper::getVertical( xDiagram, bFound, bAmbiguous ); + bool bOldVertical = xDiagram->getVertical( bFound, bAmbiguous ); if( bFound && ( bOldVertical != bNewVertical || bAmbiguous ) ) - DiagramHelper::setVertical( xDiagram, bNewVertical ); + xDiagram->setVertical( bNewVertical ); } Any WrappedVerticalProperty::getPropertyValue( const Reference< beans::XPropertySet >& /*xInnerPropertySet*/ ) const @@ -1408,7 +1413,7 @@ Any WrappedVerticalProperty::getPropertyValue( const Reference< beans::XProperty { bool bFound = false; bool bAmbiguous = false; - bool bVertical = DiagramHelper::getVertical( xDiagram, bFound, bAmbiguous ); + bool bVertical = xDiagram->getVertical( bFound, bAmbiguous ); if( bFound ) m_aOuterValue <<= bVertical; } @@ -1428,7 +1433,7 @@ namespace { class WrappedNumberOfLinesProperty : public WrappedProperty { public: - explicit WrappedNumberOfLinesProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit WrappedNumberOfLinesProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; @@ -1446,9 +1451,9 @@ private: //member } -WrappedNumberOfLinesProperty::WrappedNumberOfLinesProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : WrappedProperty("NumberOfLines",OUString()) - , m_spChart2ModelContact( spChart2ModelContact ) +WrappedNumberOfLinesProperty::WrappedNumberOfLinesProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : WrappedProperty(u"NumberOfLines"_ustr,OUString()) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) , m_aOuterValue( getPropertyDefault(nullptr) ) { } @@ -1461,13 +1466,13 @@ bool WrappedNumberOfLinesProperty::detectInnerValue( uno::Any& rInnerValue ) con rtl::Reference< ChartModel > xChartDoc( m_spChart2ModelContact->getDocumentModel() ); if( xDiagram.is() && xChartDoc.is() ) { - std::vector< uno::Reference< chart2::XDataSeries > > aSeriesVector( - DiagramHelper::getDataSeriesFromDiagram( xDiagram ) ); + std::vector< rtl::Reference< DataSeries > > aSeriesVector = + xDiagram->getDataSeries(); if( !aSeriesVector.empty() ) { rtl::Reference< ::chart::ChartTypeManager > xChartTypeManager = xChartDoc->getTypeManager(); - DiagramHelper::tTemplateWithServiceName aTemplateAndService = - DiagramHelper::getTemplateForDiagram( xDiagram, xChartTypeManager ); + Diagram::tTemplateWithServiceName aTemplateAndService = + xDiagram->getTemplate( xChartTypeManager ); if( aTemplateAndService.sServiceName == "com.sun.star.chart2.template.ColumnWithLine" ) { try @@ -1492,19 +1497,21 @@ void WrappedNumberOfLinesProperty::setPropertyValue( const Any& rOuterValue, con { sal_Int32 nNewValue; if( ! (rOuterValue >>= nNewValue) ) - throw lang::IllegalArgumentException( "property NumberOfLines requires sal_Int32 value", nullptr, 0 ); + throw lang::IllegalArgumentException( u"property NumberOfLines requires sal_Int32 value"_ustr, nullptr, 0 ); m_aOuterValue = rOuterValue; rtl::Reference< ChartModel > xChartDoc( m_spChart2ModelContact->getDocumentModel() ); rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); - sal_Int32 nDimension = ::chart::DiagramHelper::getDimension( xDiagram ); - if( !(xChartDoc.is() && xDiagram.is() && nDimension == 2) ) + if( !xChartDoc || !xDiagram ) + return; + sal_Int32 nDimension = xDiagram->getDimension(); + if( nDimension != 2 ) return; rtl::Reference< ::chart::ChartTypeManager > xChartTypeManager = xChartDoc->getTypeManager(); - DiagramHelper::tTemplateWithServiceName aTemplateAndService = - DiagramHelper::getTemplateForDiagram( xDiagram, xChartTypeManager ); + Diagram::tTemplateWithServiceName aTemplateAndService = + xDiagram->getTemplate( xChartTypeManager ); rtl::Reference< ChartTypeTemplate > xTemplate; if( aTemplateAndService.sServiceName == "com.sun.star.chart2.template.ColumnWithLine" ) @@ -1527,14 +1534,14 @@ void WrappedNumberOfLinesProperty::setPropertyValue( const Any& rOuterValue, con } else { - xTemplate = xChartTypeManager->createTemplate("com.sun.star.chart2.template.Column"); + xTemplate = xChartTypeManager->createTemplate(u"com.sun.star.chart2.template.Column"_ustr); } } else if( aTemplateAndService.sServiceName == "com.sun.star.chart2.template.Column" ) { if( nNewValue == 0 ) return; - xTemplate = xChartTypeManager->createTemplate( "com.sun.star.chart2.template.ColumnWithLine" ); + xTemplate = xChartTypeManager->createTemplate( u"com.sun.star.chart2.template.ColumnWithLine"_ustr ); } if(!xTemplate.is()) @@ -1545,7 +1552,7 @@ void WrappedNumberOfLinesProperty::setPropertyValue( const Any& rOuterValue, con // locked controllers ControllerLockGuardUNO aCtrlLockGuard( m_spChart2ModelContact->getDocumentModel() ); uno::Reference< beans::XPropertySet > xProp( static_cast<cppu::OWeakObject*>(xTemplate.get()), uno::UNO_QUERY ); - xProp->setPropertyValue( "NumberOfLines", uno::Any(nNewValue) ); + xProp->setPropertyValue( u"NumberOfLines"_ustr, uno::Any(nNewValue) ); xTemplate->changeDiagram( xDiagram ); } catch( const uno::Exception & ) @@ -1575,7 +1582,7 @@ namespace { class WrappedAttributedDataPointsProperty : public WrappedProperty { public: - explicit WrappedAttributedDataPointsProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit WrappedAttributedDataPointsProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; @@ -1590,9 +1597,9 @@ private: //member } -WrappedAttributedDataPointsProperty::WrappedAttributedDataPointsProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : WrappedProperty("AttributedDataPoints",OUString()) - , m_spChart2ModelContact( spChart2ModelContact ) +WrappedAttributedDataPointsProperty::WrappedAttributedDataPointsProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : WrappedProperty(u"AttributedDataPoints"_ustr,OUString()) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) { m_aOuterValue = WrappedAttributedDataPointsProperty::getPropertyDefault( nullptr ); } @@ -1601,7 +1608,7 @@ void WrappedAttributedDataPointsProperty::setPropertyValue( const Any& rOuterVal { uno::Sequence< uno::Sequence< sal_Int32 > > aNewValue; if( ! (rOuterValue >>= aNewValue) ) - throw lang::IllegalArgumentException( "Property AttributedDataPoints requires value of type uno::Sequence< uno::Sequence< sal_Int32 > >", nullptr, 0 ); + throw lang::IllegalArgumentException( u"Property AttributedDataPoints requires value of type uno::Sequence< uno::Sequence< sal_Int32 > >"_ustr, nullptr, 0 ); m_aOuterValue = rOuterValue; @@ -1610,25 +1617,21 @@ void WrappedAttributedDataPointsProperty::setPropertyValue( const Any& rOuterVal if( !xDiagram ) return; - std::vector< Reference< chart2::XDataSeries > > aSeriesVector( - ::chart::DiagramHelper::getDataSeriesFromDiagram( xDiagram ) ); + std::vector< rtl::Reference< DataSeries > > aSeriesVector = + xDiagram->getDataSeries(); sal_Int32 i = 0; for (auto const& series : aSeriesVector) { - Reference< beans::XPropertySet > xProp(series, uno::UNO_QUERY); - if( xProp.is()) + uno::Any aVal; + if( i < aNewValue.getLength() ) + aVal <<= aNewValue[i]; + else { - uno::Any aVal; - if( i < aNewValue.getLength() ) - aVal <<= aNewValue[i]; - else - { - //set empty sequence - uno::Sequence< sal_Int32 > aSeq; - aVal <<= aSeq; - } - xProp->setPropertyValue( "AttributedDataPoints", aVal ); + //set empty sequence + uno::Sequence< sal_Int32 > aSeq; + aVal <<= aSeq; } + series->setFastPropertyValue( PROP_DATASERIES_ATTRIBUTED_DATA_POINTS, aVal ); // "AttributedDataPoints" ++i; } } @@ -1639,23 +1642,19 @@ Any WrappedAttributedDataPointsProperty::getPropertyValue( const Reference< bean if( xDiagram ) { - std::vector< Reference< chart2::XDataSeries > > aSeriesVector( - ::chart::DiagramHelper::getDataSeriesFromDiagram( xDiagram ) ); + std::vector< rtl::Reference< DataSeries > > aSeriesVector = + xDiagram->getDataSeries(); uno::Sequence< uno::Sequence< sal_Int32 > > aResult( aSeriesVector.size() ); auto aResultRange = asNonConstRange(aResult); sal_Int32 i = 0; for (auto const& series : aSeriesVector) { - Reference< beans::XPropertySet > xProp(series, uno::UNO_QUERY); - if( xProp.is()) - { - uno::Any aVal( - xProp->getPropertyValue("AttributedDataPoints")); - uno::Sequence< sal_Int32 > aSeq; - if( aVal >>= aSeq ) - aResultRange[ i ] = aSeq; - } + uno::Any aVal( + series->getFastPropertyValue(PROP_DATASERIES_ATTRIBUTED_DATA_POINTS)); // "AttributedDataPoints" + uno::Sequence< sal_Int32 > aSeq; + if( aVal >>= aSeq ) + aResultRange[ i ] = std::move(aSeq); ++i; } m_aOuterValue <<= aResult; @@ -1677,7 +1676,7 @@ namespace { class WrappedSolidTypeProperty : public WrappedProperty { public: - explicit WrappedSolidTypeProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit WrappedSolidTypeProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; @@ -1692,9 +1691,9 @@ private: //member } -WrappedSolidTypeProperty::WrappedSolidTypeProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : WrappedProperty( "SolidType", OUString() ) - , m_spChart2ModelContact( spChart2ModelContact ) +WrappedSolidTypeProperty::WrappedSolidTypeProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : WrappedProperty( u"SolidType"_ustr, OUString() ) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) { m_aOuterValue = WrappedSolidTypeProperty::getPropertyDefault( nullptr ); } @@ -1703,7 +1702,7 @@ void WrappedSolidTypeProperty::setPropertyValue( const Any& rOuterValue, const R { sal_Int32 nNewSolidType = css::chart::ChartSolidType::RECTANGULAR_SOLID; if( ! (rOuterValue >>= nNewSolidType) ) - throw lang::IllegalArgumentException( "Property SolidType requires integer value", nullptr, 0 ); + throw lang::IllegalArgumentException( u"Property SolidType requires integer value"_ustr, nullptr, 0 ); m_aOuterValue = rOuterValue; @@ -1713,9 +1712,9 @@ void WrappedSolidTypeProperty::setPropertyValue( const Any& rOuterValue, const R bool bFound = false; bool bAmbiguous = false; - sal_Int32 nOldSolidType = DiagramHelper::getGeometry3D( xDiagram, bFound, bAmbiguous ); + sal_Int32 nOldSolidType = xDiagram->getGeometry3D( bFound, bAmbiguous ); if( bFound && ( nOldSolidType != nNewSolidType || bAmbiguous ) ) - DiagramHelper::setGeometry3D( xDiagram, nNewSolidType ); + xDiagram->setGeometry3D( nNewSolidType ); } Any WrappedSolidTypeProperty::getPropertyValue( const Reference< beans::XPropertySet >& /*xInnerPropertySet*/ ) const @@ -1725,7 +1724,7 @@ Any WrappedSolidTypeProperty::getPropertyValue( const Reference< beans::XPropert { bool bFound = false; bool bAmbiguous = false; - sal_Int32 nGeometry = DiagramHelper::getGeometry3D( xDiagram, bFound, bAmbiguous ); + sal_Int32 nGeometry = xDiagram->getGeometry3D( bFound, bAmbiguous ); if( bFound ) m_aOuterValue <<= nGeometry; } @@ -1754,7 +1753,7 @@ public: } WrappedAutomaticSizeProperty::WrappedAutomaticSizeProperty() - : WrappedProperty( "AutomaticSize", OUString() ) + : WrappedProperty( u"AutomaticSize"_ustr, OUString() ) { } @@ -1765,15 +1764,15 @@ void WrappedAutomaticSizeProperty::setPropertyValue( const Any& rOuterValue, con bool bNewValue = true; if( ! (rOuterValue >>= bNewValue) ) - throw lang::IllegalArgumentException( "Property AutomaticSize requires value of type boolean", nullptr, 0 ); + throw lang::IllegalArgumentException( u"Property AutomaticSize requires value of type boolean"_ustr, nullptr, 0 ); try { if( bNewValue ) { - Any aRelativeSize( xInnerPropertySet->getPropertyValue( "RelativeSize" ) ); + Any aRelativeSize( xInnerPropertySet->getPropertyValue( u"RelativeSize"_ustr ) ); if( aRelativeSize.hasValue() ) - xInnerPropertySet->setPropertyValue( "RelativeSize", Any() ); + xInnerPropertySet->setPropertyValue( u"RelativeSize"_ustr, Any() ); } } catch( const uno::Exception & ) @@ -1787,7 +1786,7 @@ Any WrappedAutomaticSizeProperty::getPropertyValue( const Reference< beans::XPro Any aRet( getPropertyDefault( Reference< beans::XPropertyState >( xInnerPropertySet, uno::UNO_QUERY ) ) ); if( xInnerPropertySet.is() ) { - Any aRelativeSize( xInnerPropertySet->getPropertyValue( "RelativeSize" ) ); + Any aRelativeSize( xInnerPropertySet->getPropertyValue( u"RelativeSize"_ustr ) ); if( !aRelativeSize.hasValue() ) aRet <<= true; } @@ -1807,7 +1806,7 @@ namespace { class WrappedIncludeHiddenCellsProperty : public WrappedProperty { public: - explicit WrappedIncludeHiddenCellsProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit WrappedIncludeHiddenCellsProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; virtual Any getPropertyValue(const Reference<beans::XPropertySet>& xInnerPropertySet) const override; @@ -1818,9 +1817,9 @@ private: //member } -WrappedIncludeHiddenCellsProperty::WrappedIncludeHiddenCellsProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : WrappedProperty("IncludeHiddenCells","IncludeHiddenCells") - , m_spChart2ModelContact( spChart2ModelContact ) +WrappedIncludeHiddenCellsProperty::WrappedIncludeHiddenCellsProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : WrappedProperty(u"IncludeHiddenCells"_ustr,u"IncludeHiddenCells"_ustr) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) { } @@ -1828,14 +1827,14 @@ void WrappedIncludeHiddenCellsProperty::setPropertyValue( const Any& rOuterValue { bool bNewValue = false; if( ! (rOuterValue >>= bNewValue) ) - throw lang::IllegalArgumentException( "Property IncludeHiddenCells requires boolean value", nullptr, 0 ); + throw lang::IllegalArgumentException( u"Property IncludeHiddenCells requires boolean value"_ustr, nullptr, 0 ); - ChartModelHelper::setIncludeHiddenCells( bNewValue, *m_spChart2ModelContact->getDocumentModel() ); + m_spChart2ModelContact->getDocumentModel()->setIncludeHiddenCells(bNewValue); } Any WrappedIncludeHiddenCellsProperty::getPropertyValue( const Reference< beans::XPropertySet >& /*xInnerPropertySet*/ ) const { - bool bValue = ChartModelHelper::isIncludeHiddenCells( m_spChart2ModelContact->getDocumentModel() ); + bool bValue = m_spChart2ModelContact->getDocumentModel()->isIncludeHiddenCells(); return uno::Any(bValue); } @@ -1845,6 +1844,11 @@ Reference< chart2::XDiagram > SAL_CALL DiagramWrapper::getDiagram() return m_spChart2ModelContact->getDiagram(); } +rtl::Reference< ::chart::Diagram > DiagramWrapper::getUnderlyingDiagram() +{ + return m_spChart2ModelContact->getDiagram(); +} + void SAL_CALL DiagramWrapper::setDiagram( const Reference< chart2::XDiagram >& /*xDiagram*/ ) { @@ -1859,7 +1863,7 @@ Reference< beans::XPropertySet > DiagramWrapper::getInnerPropertySet() const Sequence< beans::Property >& DiagramWrapper::getPropertySequence() { - return *StaticDiagramWrapperPropertyArray::get(); + return StaticDiagramWrapperPropertyArray(); } std::vector< std::unique_ptr<WrappedProperty> > DiagramWrapper::createWrappedProperties() @@ -1887,7 +1891,7 @@ std::vector< std::unique_ptr<WrappedProperty> > DiagramWrapper::createWrappedPro aWrappedProperties.emplace_back( new WrappedVerticalProperty( m_spChart2ModelContact ) ); aWrappedProperties.emplace_back( new WrappedNumberOfLinesProperty( m_spChart2ModelContact ) ); aWrappedProperties.emplace_back( new WrappedAttributedDataPointsProperty( m_spChart2ModelContact ) ); - aWrappedProperties.emplace_back( new WrappedProperty( "StackedBarsConnected", "ConnectBars" ) ); + aWrappedProperties.emplace_back( new WrappedProperty( u"StackedBarsConnected"_ustr, u"ConnectBars"_ustr ) ); aWrappedProperties.emplace_back( new WrappedSolidTypeProperty( m_spChart2ModelContact ) ); aWrappedProperties.emplace_back( new WrappedAutomaticSizeProperty() ); aWrappedProperties.emplace_back( new WrappedIncludeHiddenCellsProperty( m_spChart2ModelContact ) ); @@ -1897,7 +1901,7 @@ std::vector< std::unique_ptr<WrappedProperty> > DiagramWrapper::createWrappedPro OUString SAL_CALL DiagramWrapper::getImplementationName() { - return "com.sun.star.comp.chart.Diagram"; + return u"com.sun.star.comp.chart.Diagram"_ustr; } sal_Bool SAL_CALL DiagramWrapper::supportsService( const OUString& rServiceName ) @@ -1908,14 +1912,14 @@ sal_Bool SAL_CALL DiagramWrapper::supportsService( const OUString& rServiceName css::uno::Sequence< OUString > SAL_CALL DiagramWrapper::getSupportedServiceNames() { return { - "com.sun.star.chart.Diagram", - "com.sun.star.xml.UserDefinedAttributesSupplier", - "com.sun.star.chart.StackableDiagram", - "com.sun.star.chart.ChartAxisXSupplier", - "com.sun.star.chart.ChartAxisYSupplier", - "com.sun.star.chart.ChartAxisZSupplier", - "com.sun.star.chart.ChartTwoAxisXSupplier", - "com.sun.star.chart.ChartTwoAxisYSupplier" + u"com.sun.star.chart.Diagram"_ustr, + u"com.sun.star.xml.UserDefinedAttributesSupplier"_ustr, + u"com.sun.star.chart.StackableDiagram"_ustr, + u"com.sun.star.chart.ChartAxisXSupplier"_ustr, + u"com.sun.star.chart.ChartAxisYSupplier"_ustr, + u"com.sun.star.chart.ChartAxisZSupplier"_ustr, + u"com.sun.star.chart.ChartTwoAxisXSupplier"_ustr, + u"com.sun.star.chart.ChartTwoAxisYSupplier"_ustr }; } diff --git a/chart2/source/controller/chartapiwrapper/DiagramWrapper.hxx b/chart2/source/controller/chartapiwrapper/DiagramWrapper.hxx index bef53a739386..99fdf7fa02d4 100644 --- a/chart2/source/controller/chartapiwrapper/DiagramWrapper.hxx +++ b/chart2/source/controller/chartapiwrapper/DiagramWrapper.hxx @@ -20,7 +20,7 @@ #include <WrappedPropertySet.hxx> -#include <comphelper/interfacecontainer3.hxx> +#include <comphelper/interfacecontainer4.hxx> #include <com/sun/star/chart/XDiagramPositioning.hpp> #include <com/sun/star/chart2/XDiagramProvider.hpp> #include <com/sun/star/chart/XDiagram.hpp> @@ -33,16 +33,20 @@ #include <com/sun/star/lang/XServiceInfo.hpp> #include <com/sun/star/lang/XComponent.hpp> #include <com/sun/star/chart/XSecondAxisTitleSupplier.hpp> - #include <com/sun/star/chart/X3DDefaultSetter.hpp> +#include <rtl/ref.hxx> #include <memory> namespace com::sun::star::chart2 { class XDiagram; } namespace com::sun::star::lang { class XEventListener; } +namespace chart { class Diagram; } namespace chart::wrapper { - +class AxisWrapper; +class WallFloorWrapper; +class MinMaxLineWrapper; +class UpDownBarWrapper; class Chart2ModelContact; class DiagramWrapper : public cppu::ImplInheritanceHelper< @@ -63,7 +67,7 @@ class DiagramWrapper : public cppu::ImplInheritanceHelper< > { public: - explicit DiagramWrapper(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit DiagramWrapper(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual ~DiagramWrapper() override; /// XServiceInfo declarations @@ -178,6 +182,8 @@ public: virtual css::uno::Reference< css::chart2::XDiagram > SAL_CALL getDiagram() override; virtual void SAL_CALL setDiagram( const css::uno::Reference< css::chart2::XDiagram >& xDiagram ) override; + rtl::Reference< ::chart::Diagram > getUnderlyingDiagram(); + protected: // ____ WrappedPropertySet ____ virtual const css::uno::Sequence< css::beans::Property >& getPropertySequence() override; @@ -186,30 +192,18 @@ protected: private: std::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; - ::comphelper::OInterfaceContainerHelper3<css::lang::XEventListener> m_aEventListenerContainer; - - css::uno::Reference< - css::chart::XAxis > m_xXAxis; - css::uno::Reference< - css::chart::XAxis > m_xYAxis; - css::uno::Reference< - css::chart::XAxis > m_xZAxis; - css::uno::Reference< - css::chart::XAxis > m_xSecondXAxis; - css::uno::Reference< - css::chart::XAxis > m_xSecondYAxis; - - css::uno::Reference< - css::beans::XPropertySet > m_xWall; - css::uno::Reference< - css::beans::XPropertySet > m_xFloor; - - css::uno::Reference< - css::beans::XPropertySet > m_xMinMaxLineWrapper; - css::uno::Reference< - css::beans::XPropertySet > m_xUpBarWrapper; - css::uno::Reference< - css::beans::XPropertySet > m_xDownBarWrapper; + ::comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> m_aEventListenerContainer; + + rtl::Reference< AxisWrapper > m_xXAxis; + rtl::Reference< AxisWrapper > m_xYAxis; + rtl::Reference< AxisWrapper > m_xZAxis; + rtl::Reference< AxisWrapper > m_xSecondXAxis; + rtl::Reference< AxisWrapper > m_xSecondYAxis; + rtl::Reference< WallFloorWrapper > m_xWall; + rtl::Reference< WallFloorWrapper > m_xFloor; + rtl::Reference< MinMaxLineWrapper > m_xMinMaxLineWrapper; + rtl::Reference< UpDownBarWrapper > m_xUpBarWrapper; + rtl::Reference< UpDownBarWrapper > m_xDownBarWrapper; }; } // namespace chart::wrapper diff --git a/chart2/source/controller/chartapiwrapper/GridWrapper.cxx b/chart2/source/controller/chartapiwrapper/GridWrapper.cxx index 0cf33baa5848..4931b661cc53 100644 --- a/chart2/source/controller/chartapiwrapper/GridWrapper.cxx +++ b/chart2/source/controller/chartapiwrapper/GridWrapper.cxx @@ -30,51 +30,20 @@ #include <comphelper/sequence.hxx> #include <cppuhelper/supportsservice.hxx> #include <algorithm> -#include <tools/diagnose_ex.h> +#include <utility> +#include <comphelper/diagnose_ex.hxx> using namespace ::com::sun::star; -using namespace ::com::sun::star::chart2; using ::com::sun::star::beans::Property; using ::com::sun::star::uno::Reference; using ::com::sun::star::uno::Sequence; -namespace -{ - -struct StaticGridWrapperPropertyArray_Initializer -{ - Sequence< Property >* operator()() - { - static Sequence< Property > aPropSeq( lcl_GetPropertySequence() ); - return &aPropSeq; - } -private: - static Sequence< Property > lcl_GetPropertySequence() - { - std::vector< css::beans::Property > aProperties; - ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); - ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); - - std::sort( aProperties.begin(), aProperties.end(), - ::chart::PropertyNameLess() ); - - return comphelper::containerToSequence( aProperties ); - } -}; - -struct StaticGridWrapperPropertyArray : public rtl::StaticAggregate< Sequence< Property >, StaticGridWrapperPropertyArray_Initializer > -{ -}; - -} // anonymous namespace - namespace chart::wrapper { -GridWrapper::GridWrapper(tGridType eType, const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : m_spChart2ModelContact(spChart2ModelContact) - , m_aEventListenerContainer(m_aMutex) +GridWrapper::GridWrapper(tGridType eType, std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : m_spChart2ModelContact(std::move(spChart2ModelContact)) , m_eType(eType) { } @@ -107,8 +76,9 @@ void GridWrapper::getDimensionAndSubGridBool( tGridType eType, sal_Int32& rnDime // ____ XComponent ____ void SAL_CALL GridWrapper::dispose() { + std::unique_lock g(m_aMutex); Reference< uno::XInterface > xSource( static_cast< ::cppu::OWeakObject* >( this ) ); - m_aEventListenerContainer.disposeAndClear( lang::EventObject( xSource ) ); + m_aEventListenerContainer.disposeAndClear( g, lang::EventObject( xSource ) ); clearWrappedPropertySet(); } @@ -116,31 +86,33 @@ void SAL_CALL GridWrapper::dispose() void SAL_CALL GridWrapper::addEventListener( const Reference< lang::XEventListener >& xListener ) { - m_aEventListenerContainer.addInterface( xListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.addInterface( g, xListener ); } void SAL_CALL GridWrapper::removeEventListener( const Reference< lang::XEventListener >& aListener ) { - m_aEventListenerContainer.removeInterface( aListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.removeInterface( g, aListener ); } // WrappedPropertySet Reference< beans::XPropertySet > GridWrapper::getInnerPropertySet() { - Reference< beans::XPropertySet > xRet; + rtl::Reference< GridProperties > xRet; try { rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); - uno::Reference< XCoordinateSystem > xCooSys( AxisHelper::getCoordinateSystemByIndex( xDiagram, 0 /*nCooSysIndex*/ ) ); + rtl::Reference< BaseCoordinateSystem > xCooSys( AxisHelper::getCoordinateSystemByIndex( xDiagram, 0 /*nCooSysIndex*/ ) ); sal_Int32 nDimensionIndex = 1; bool bSubGrid = false; getDimensionAndSubGridBool( m_eType, nDimensionIndex, bSubGrid ); sal_Int32 nSubGridIndex = bSubGrid ? 0 : -1; - xRet.set( AxisHelper::getGridProperties( xCooSys , nDimensionIndex, MAIN_AXIS_INDEX, nSubGridIndex ) ); + xRet = AxisHelper::getGridProperties( xCooSys , nDimensionIndex, MAIN_AXIS_INDEX, nSubGridIndex ); } catch( const uno::Exception & ) { @@ -151,21 +123,32 @@ Reference< beans::XPropertySet > GridWrapper::getInnerPropertySet() const Sequence< beans::Property >& GridWrapper::getPropertySequence() { - return *StaticGridWrapperPropertyArray::get(); + static Sequence< Property > aPropSeq = []() + { + std::vector< css::beans::Property > aProperties; + ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); + ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); + + std::sort( aProperties.begin(), aProperties.end(), + ::chart::PropertyNameLess() ); + + return comphelper::containerToSequence( aProperties ); + }(); + return aPropSeq; } std::vector< std::unique_ptr<WrappedProperty> > GridWrapper::createWrappedProperties() { std::vector< std::unique_ptr<WrappedProperty> > aWrappedProperties; - aWrappedProperties.emplace_back( new WrappedDefaultProperty( "LineColor", "LineColor", uno::Any( sal_Int32( 0x000000) ) ) ); // black + aWrappedProperties.emplace_back( new WrappedDefaultProperty( u"LineColor"_ustr, u"LineColor"_ustr, uno::Any( sal_Int32( 0x000000) ) ) ); // black return aWrappedProperties; } OUString SAL_CALL GridWrapper::getImplementationName() { - return "com.sun.star.comp.chart.Grid"; + return u"com.sun.star.comp.chart.Grid"_ustr; } sal_Bool SAL_CALL GridWrapper::supportsService( const OUString& rServiceName ) @@ -176,10 +159,10 @@ sal_Bool SAL_CALL GridWrapper::supportsService( const OUString& rServiceName ) css::uno::Sequence< OUString > SAL_CALL GridWrapper::getSupportedServiceNames() { return { - "com.sun.star.chart.ChartGrid", - "com.sun.star.xml.UserDefinedAttributesSupplier", - "com.sun.star.drawing.LineProperties", - "com.sun.star.beans.PropertySet" + u"com.sun.star.chart.ChartGrid"_ustr, + u"com.sun.star.xml.UserDefinedAttributesSupplier"_ustr, + u"com.sun.star.drawing.LineProperties"_ustr, + u"com.sun.star.beans.PropertySet"_ustr }; } diff --git a/chart2/source/controller/chartapiwrapper/GridWrapper.hxx b/chart2/source/controller/chartapiwrapper/GridWrapper.hxx index 0a16368e9ccf..c978f3bb8d83 100644 --- a/chart2/source/controller/chartapiwrapper/GridWrapper.hxx +++ b/chart2/source/controller/chartapiwrapper/GridWrapper.hxx @@ -20,7 +20,7 @@ #include <WrappedPropertySet.hxx> #include <cppuhelper/implbase.hxx> -#include <comphelper/interfacecontainer3.hxx> +#include <comphelper/interfacecontainer4.hxx> #include <com/sun/star/lang/XComponent.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> @@ -48,7 +48,7 @@ public: Z_MINOR_GRID }; - GridWrapper(tGridType eType, const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + GridWrapper(tGridType eType, std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual ~GridWrapper() override; static void getDimensionAndSubGridBool( tGridType eType, sal_Int32& rnDimensionIndex, bool& rbSubGrid ); @@ -71,7 +71,7 @@ protected: private: std::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; - ::comphelper::OInterfaceContainerHelper3<css::lang::XEventListener> m_aEventListenerContainer; + ::comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> m_aEventListenerContainer; tGridType m_eType; }; diff --git a/chart2/source/controller/chartapiwrapper/LegendWrapper.cxx b/chart2/source/controller/chartapiwrapper/LegendWrapper.cxx index ca5a25005152..5d17f3a609c0 100644 --- a/chart2/source/controller/chartapiwrapper/LegendWrapper.cxx +++ b/chart2/source/controller/chartapiwrapper/LegendWrapper.cxx @@ -26,7 +26,6 @@ #include <com/sun/star/chart2/LegendPosition.hpp> #include <com/sun/star/chart/ChartLegendExpansion.hpp> #include <com/sun/star/chart2/RelativePosition.hpp> -#include <com/sun/star/chart2/XDiagram.hpp> #include <CharacterProperties.hxx> #include <LinePropertiesHelper.hxx> @@ -39,10 +38,10 @@ #include "WrappedScaleTextProperties.hxx" #include <algorithm> +#include <utility> using namespace ::com::sun::star; using ::com::sun::star::beans::Property; -using ::osl::MutexGuard; using ::com::sun::star::uno::Any; using ::com::sun::star::uno::Reference; using ::com::sun::star::uno::Sequence; @@ -67,7 +66,7 @@ protected: } WrappedLegendAlignmentProperty::WrappedLegendAlignmentProperty() - : ::chart::WrappedProperty( "Alignment", "AnchorPosition" ) + : ::chart::WrappedProperty( u"Alignment"_ustr, u"AnchorPosition"_ustr ) { } @@ -77,7 +76,7 @@ Any WrappedLegendAlignmentProperty::getPropertyValue( const Reference< beans::XP if( xInnerPropertySet.is() ) { bool bShowLegend = true; - xInnerPropertySet->getPropertyValue( "Show" ) >>= bShowLegend; + xInnerPropertySet->getPropertyValue( u"Show"_ustr ) >>= bShowLegend; if(!bShowLegend) { aRet <<= css::chart::ChartLegendPosition_NONE; @@ -102,11 +101,11 @@ void WrappedLegendAlignmentProperty::setPropertyValue( const Any& rOuterValue, c css::chart::ChartLegendPosition eOuterPos(css::chart::ChartLegendPosition_NONE); if( (rOuterValue >>= eOuterPos) && eOuterPos == css::chart::ChartLegendPosition_NONE ) bNewShowLegend = false; - xInnerPropertySet->getPropertyValue( "Show" ) >>= bOldShowLegend; + xInnerPropertySet->getPropertyValue( u"Show"_ustr ) >>= bOldShowLegend; } if(bNewShowLegend!=bOldShowLegend) { - xInnerPropertySet->setPropertyValue( "Show", uno::Any(bNewShowLegend) ); + xInnerPropertySet->setPropertyValue( u"Show"_ustr, uno::Any(bNewShowLegend) ); } if(!bNewShowLegend) return; @@ -127,17 +126,17 @@ void WrappedLegendAlignmentProperty::setPropertyValue( const Any& rOuterValue, c css::chart::ChartLegendExpansion eOldExpansion( css::chart::ChartLegendExpansion_HIGH ); bool bExpansionWasSet( - xInnerPropertySet->getPropertyValue( "Expansion" ) >>= eOldExpansion ); + xInnerPropertySet->getPropertyValue( u"Expansion"_ustr ) >>= eOldExpansion ); if( !bExpansionWasSet || (eOldExpansion != eNewExpansion)) - xInnerPropertySet->setPropertyValue( "Expansion", uno::Any( eNewExpansion )); + xInnerPropertySet->setPropertyValue( u"Expansion"_ustr, uno::Any( eNewExpansion )); } //correct RelativePosition - Any aRelativePosition( xInnerPropertySet->getPropertyValue("RelativePosition") ); + Any aRelativePosition( xInnerPropertySet->getPropertyValue(u"RelativePosition"_ustr) ); if(aRelativePosition.hasValue()) { - xInnerPropertySet->setPropertyValue( "RelativePosition", Any() ); + xInnerPropertySet->setPropertyValue( u"RelativePosition"_ustr, Any() ); } } @@ -225,35 +224,25 @@ void lcl_AddPropertiesToVector( beans::PropertyAttribute::MAYBEDEFAULT ); } -struct StaticLegendWrapperPropertyArray_Initializer -{ - Sequence< Property >* operator()() - { - static Sequence< Property > aPropSeq( lcl_GetPropertySequence() ); - return &aPropSeq; - } - -private: - static Sequence< Property > lcl_GetPropertySequence() - { - std::vector< css::beans::Property > aProperties; - lcl_AddPropertiesToVector( aProperties ); - ::chart::CharacterProperties::AddPropertiesToVector( aProperties ); - ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); - ::chart::FillProperties::AddPropertiesToVector( aProperties ); - ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); - ::chart::wrapper::WrappedAutomaticPositionProperties::addProperties( aProperties ); - ::chart::wrapper::WrappedScaleTextProperties::addProperties( aProperties ); - - std::sort( aProperties.begin(), aProperties.end(), - ::chart::PropertyNameLess() ); - - return comphelper::containerToSequence( aProperties ); - } -}; - -struct StaticLegendWrapperPropertyArray : public rtl::StaticAggregate< Sequence< Property >, StaticLegendWrapperPropertyArray_Initializer > +const Sequence< Property >& StaticLegendWrapperPropertyArray() { + static Sequence< Property > aPropSeq = []() + { + std::vector< css::beans::Property > aProperties; + lcl_AddPropertiesToVector( aProperties ); + ::chart::CharacterProperties::AddPropertiesToVector( aProperties ); + ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); + ::chart::FillProperties::AddPropertiesToVector( aProperties ); + ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); + ::chart::wrapper::WrappedAutomaticPositionProperties::addProperties( aProperties ); + ::chart::wrapper::WrappedScaleTextProperties::addProperties( aProperties ); + + std::sort( aProperties.begin(), aProperties.end(), + ::chart::PropertyNameLess() ); + + return comphelper::containerToSequence( aProperties ); + }(); + return aPropSeq; }; } // anonymous namespace @@ -261,9 +250,8 @@ struct StaticLegendWrapperPropertyArray : public rtl::StaticAggregate< Sequence< namespace chart::wrapper { -LegendWrapper::LegendWrapper(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : m_spChart2ModelContact(spChart2ModelContact) - , m_aEventListenerContainer(m_aMutex) +LegendWrapper::LegendWrapper(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : m_spChart2ModelContact(std::move(spChart2ModelContact)) { } @@ -288,7 +276,7 @@ void SAL_CALL LegendWrapper::setPosition( const awt::Point& aPosition ) aRelativePosition.Anchor = drawing::Alignment_TOP_LEFT; aRelativePosition.Primary = aPageSize.Width == 0 ? 0 : double(aPosition.X)/double(aPageSize.Width); aRelativePosition.Secondary = aPageSize.Height == 0 ? 0 : double(aPosition.Y)/double(aPageSize.Height); - xProp->setPropertyValue( "RelativePosition", uno::Any(aRelativePosition) ); + xProp->setPropertyValue( u"RelativePosition"_ustr, uno::Any(aRelativePosition) ); } } @@ -316,29 +304,31 @@ void SAL_CALL LegendWrapper::setSize( const awt::Size& aSize ) // ____ XShapeDescriptor (base of XShape) ____ OUString SAL_CALL LegendWrapper::getShapeType() { - return "com.sun.star.chart.ChartLegend"; + return u"com.sun.star.chart.ChartLegend"_ustr; } // ____ XComponent ____ void SAL_CALL LegendWrapper::dispose() { + std::unique_lock g(m_aMutex); Reference< uno::XInterface > xSource( static_cast< ::cppu::OWeakObject* >( this ) ); - m_aEventListenerContainer.disposeAndClear( lang::EventObject( xSource ) ); + m_aEventListenerContainer.disposeAndClear( g, lang::EventObject( xSource ) ); - MutexGuard aGuard( m_aMutex); clearWrappedPropertySet(); } void SAL_CALL LegendWrapper::addEventListener( const Reference< lang::XEventListener >& xListener ) { - m_aEventListenerContainer.addInterface( xListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.addInterface( g, xListener ); } void SAL_CALL LegendWrapper::removeEventListener( const Reference< lang::XEventListener >& aListener ) { - m_aEventListenerContainer.removeInterface( aListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.removeInterface( g, aListener ); } //ReferenceSizePropertyProvider @@ -347,8 +337,8 @@ void LegendWrapper::updateReferenceSize() Reference< beans::XPropertySet > xProp = getInnerPropertySet(); if( xProp.is() ) { - if( xProp->getPropertyValue( "ReferencePageSize" ).hasValue() ) - xProp->setPropertyValue( "ReferencePageSize", uno::Any( + if( xProp->getPropertyValue( u"ReferencePageSize"_ustr ).hasValue() ) + xProp->setPropertyValue( u"ReferencePageSize"_ustr, uno::Any( m_spChart2ModelContact->GetPageSize() )); } } @@ -357,7 +347,7 @@ Any LegendWrapper::getReferenceSize() Any aRet; Reference< beans::XPropertySet > xProp = getInnerPropertySet(); if( xProp.is() ) - aRet = xProp->getPropertyValue( "ReferencePageSize" ); + aRet = xProp->getPropertyValue( u"ReferencePageSize"_ustr ); return aRet; } @@ -379,7 +369,7 @@ Reference< beans::XPropertySet > LegendWrapper::getInnerPropertySet() const Sequence< beans::Property >& LegendWrapper::getPropertySequence() { - return *StaticLegendWrapperPropertyArray::get(); + return StaticLegendWrapperPropertyArray(); } std::vector< std::unique_ptr<WrappedProperty> > LegendWrapper::createWrappedProperties() @@ -387,11 +377,11 @@ std::vector< std::unique_ptr<WrappedProperty> > LegendWrapper::createWrappedProp std::vector< std::unique_ptr<WrappedProperty> > aWrappedProperties; aWrappedProperties.emplace_back( new WrappedLegendAlignmentProperty() ); - aWrappedProperties.emplace_back( new WrappedProperty( "Expansion", "Expansion")); + aWrappedProperties.emplace_back( new WrappedProperty( u"Expansion"_ustr, u"Expansion"_ustr)); WrappedCharacterHeightProperty::addWrappedProperties( aWrappedProperties, this ); //same problem as for wall: the defaults in the old chart are different for different charttypes, so we need to export explicitly - aWrappedProperties.emplace_back( new WrappedDirectStateProperty("FillStyle", "FillStyle")); - aWrappedProperties.emplace_back( new WrappedDirectStateProperty("FillColor", "FillColor")); + aWrappedProperties.emplace_back( new WrappedDirectStateProperty(u"FillStyle"_ustr, u"FillStyle"_ustr)); + aWrappedProperties.emplace_back( new WrappedDirectStateProperty(u"FillColor"_ustr, u"FillColor"_ustr)); WrappedAutomaticPositionProperties::addWrappedProperties( aWrappedProperties ); WrappedScaleTextProperties::addWrappedProperties( aWrappedProperties, m_spChart2ModelContact ); @@ -400,7 +390,7 @@ std::vector< std::unique_ptr<WrappedProperty> > LegendWrapper::createWrappedProp OUString SAL_CALL LegendWrapper::getImplementationName() { - return "com.sun.star.comp.chart.Legend"; + return u"com.sun.star.comp.chart.Legend"_ustr; } sal_Bool SAL_CALL LegendWrapper::supportsService( const OUString& rServiceName ) @@ -411,10 +401,10 @@ sal_Bool SAL_CALL LegendWrapper::supportsService( const OUString& rServiceName ) css::uno::Sequence< OUString > SAL_CALL LegendWrapper::getSupportedServiceNames() { return { - "com.sun.star.chart.ChartLegend", - "com.sun.star.drawing.Shape", - "com.sun.star.xml.UserDefinedAttributesSupplier", - "com.sun.star.style.CharacterProperties" + u"com.sun.star.chart.ChartLegend"_ustr, + u"com.sun.star.drawing.Shape"_ustr, + u"com.sun.star.xml.UserDefinedAttributesSupplier"_ustr, + u"com.sun.star.style.CharacterProperties"_ustr }; } diff --git a/chart2/source/controller/chartapiwrapper/LegendWrapper.hxx b/chart2/source/controller/chartapiwrapper/LegendWrapper.hxx index 128c5fbcf970..5b4deac2a1f9 100644 --- a/chart2/source/controller/chartapiwrapper/LegendWrapper.hxx +++ b/chart2/source/controller/chartapiwrapper/LegendWrapper.hxx @@ -21,7 +21,7 @@ #include <WrappedPropertySet.hxx> #include "ReferenceSizePropertyProvider.hxx" #include <cppuhelper/implbase.hxx> -#include <comphelper/interfacecontainer3.hxx> +#include <comphelper/interfacecontainer4.hxx> #include <com/sun/star/drawing/XShape.hpp> #include <com/sun/star/lang/XComponent.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> @@ -42,7 +42,7 @@ class LegendWrapper : public ::cppu::ImplInheritanceHelper< , public ReferenceSizePropertyProvider { public: - explicit LegendWrapper(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit LegendWrapper(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual ~LegendWrapper() override; /// XServiceInfo declarations @@ -79,7 +79,7 @@ protected: private: std::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; - ::comphelper::OInterfaceContainerHelper3<css::lang::XEventListener> m_aEventListenerContainer; + ::comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> m_aEventListenerContainer; }; } // namespace chart::wrapper diff --git a/chart2/source/controller/chartapiwrapper/MinMaxLineWrapper.cxx b/chart2/source/controller/chartapiwrapper/MinMaxLineWrapper.cxx index 516a96b2a042..fa34ef63a825 100644 --- a/chart2/source/controller/chartapiwrapper/MinMaxLineWrapper.cxx +++ b/chart2/source/controller/chartapiwrapper/MinMaxLineWrapper.cxx @@ -19,21 +19,19 @@ #include "MinMaxLineWrapper.hxx" #include "Chart2ModelContact.hxx" -#include <DiagramHelper.hxx> +#include <ChartType.hxx> #include <servicenames_charttypes.hxx> #include <cppuhelper/propshlp.hxx> #include <cppuhelper/supportsservice.hxx> -#include <com/sun/star/chart2/XChartType.hpp> -#include <com/sun/star/chart2/XDataSeriesContainer.hpp> #include <com/sun/star/drawing/LineJoint.hpp> #include <comphelper/sequence.hxx> - +#include <DataSeries.hxx> #include <LinePropertiesHelper.hxx> #include <UserDefinedProperties.hxx> -#include <tools/diagnose_ex.h> +#include <utility> +#include <comphelper/diagnose_ex.hxx> using namespace ::com::sun::star; -using namespace ::com::sun::star::chart2; using ::com::sun::star::beans::Property; using ::com::sun::star::uno::Reference; @@ -43,72 +41,34 @@ using ::com::sun::star::uno::Any; namespace { -struct StaticMinMaxLineWrapperDefaults_Initializer -{ - ::chart::tPropertyValueMap* operator()() - { - static ::chart::tPropertyValueMap aStaticDefaults; - ::chart::LinePropertiesHelper::AddDefaultsToMap( aStaticDefaults ); - return &aStaticDefaults; - } -}; - -struct StaticMinMaxLineWrapperDefaults : public rtl::StaticAggregate< ::chart::tPropertyValueMap, StaticMinMaxLineWrapperDefaults_Initializer > -{ -}; - -struct StaticMinMaxLineWrapperPropertyArray_Initializer +Sequence< Property >& StaticMinMaxLineWrapperPropertyArray() { - Sequence< Property >* operator()() - { - static Sequence< Property > aPropSeq( lcl_GetPropertySequence() ); - return &aPropSeq; - } - -private: - static Sequence< Property > lcl_GetPropertySequence() - { - std::vector< css::beans::Property > aProperties; - - ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); - ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); - - std::sort( aProperties.begin(), aProperties.end(), - ::chart::PropertyNameLess() ); - - return comphelper::containerToSequence( aProperties ); - } -}; + static Sequence< Property > aPropSeq = []() + { + std::vector< css::beans::Property > aProperties; -struct StaticMinMaxLineWrapperPropertyArray : public rtl::StaticAggregate< Sequence< Property >, StaticMinMaxLineWrapperPropertyArray_Initializer > -{ -}; + ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); + ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); -struct StaticMinMaxLineWrapperInfoHelper_Initializer -{ - ::cppu::OPropertyArrayHelper* operator()() - { - static ::cppu::OPropertyArrayHelper aPropHelper( *StaticMinMaxLineWrapperPropertyArray::get() ); - return &aPropHelper; - } -}; + std::sort( aProperties.begin(), aProperties.end(), + ::chart::PropertyNameLess() ); -struct StaticMinMaxLineWrapperInfoHelper : public rtl::StaticAggregate< ::cppu::OPropertyArrayHelper, StaticMinMaxLineWrapperInfoHelper_Initializer > -{ + return comphelper::containerToSequence( aProperties ); + }(); + return aPropSeq; }; -struct StaticMinMaxLineWrapperInfo_Initializer +::cppu::OPropertyArrayHelper& StaticMinMaxLineWrapperInfoHelper() { - uno::Reference< beans::XPropertySetInfo >* operator()() - { - static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo( - ::cppu::OPropertySetHelper::createPropertySetInfo(*StaticMinMaxLineWrapperInfoHelper::get() ) ); - return &xPropertySetInfo; - } + static ::cppu::OPropertyArrayHelper aPropHelper( StaticMinMaxLineWrapperPropertyArray() ); + return aPropHelper; }; -struct StaticMinMaxLineWrapperInfo : public rtl::StaticAggregate< uno::Reference< beans::XPropertySetInfo >, StaticMinMaxLineWrapperInfo_Initializer > +uno::Reference< beans::XPropertySetInfo >& StaticMinMaxLineWrapperInfo() { + static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo( + ::cppu::OPropertySetHelper::createPropertySetInfo( StaticMinMaxLineWrapperInfoHelper() ) ); + return xPropertySetInfo; }; } // anonymous namespace @@ -116,10 +76,9 @@ struct StaticMinMaxLineWrapperInfo : public rtl::StaticAggregate< uno::Reference namespace chart::wrapper { -MinMaxLineWrapper::MinMaxLineWrapper(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : m_spChart2ModelContact( spChart2ModelContact ) - , m_aEventListenerContainer( m_aMutex ) - , m_aWrappedLineJointProperty( "LineJoint", uno::Any( drawing::LineJoint_NONE )) +MinMaxLineWrapper::MinMaxLineWrapper(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : m_spChart2ModelContact(std::move( spChart2ModelContact )) + , m_aWrappedLineJointProperty( u"LineJoint"_ustr, uno::Any( drawing::LineJoint_NONE )) { } @@ -130,58 +89,53 @@ MinMaxLineWrapper::~MinMaxLineWrapper() // ____ XComponent ____ void SAL_CALL MinMaxLineWrapper::dispose() { + std::unique_lock g(m_aMutex); Reference< uno::XInterface > xSource( static_cast< ::cppu::OWeakObject* >( this ) ); - m_aEventListenerContainer.disposeAndClear( lang::EventObject( xSource ) ); + m_aEventListenerContainer.disposeAndClear( g, lang::EventObject( xSource ) ); } void SAL_CALL MinMaxLineWrapper::addEventListener( const Reference< lang::XEventListener >& xListener ) { - m_aEventListenerContainer.addInterface( xListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.addInterface( g, xListener ); } void SAL_CALL MinMaxLineWrapper::removeEventListener( const Reference< lang::XEventListener >& aListener ) { - m_aEventListenerContainer.removeInterface( aListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.removeInterface( g, aListener ); } //XPropertySet uno::Reference< beans::XPropertySetInfo > SAL_CALL MinMaxLineWrapper::getPropertySetInfo() { - return *StaticMinMaxLineWrapperInfo::get(); + return StaticMinMaxLineWrapperInfo(); } void SAL_CALL MinMaxLineWrapper::setPropertyValue( const OUString& rPropertyName, const uno::Any& rValue ) { - Reference< beans::XPropertySet > xPropSet; - rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); - const Sequence< Reference< chart2::XChartType > > aTypes( - ::chart::DiagramHelper::getChartTypesFromDiagram( xDiagram ) ); - for( Reference< chart2::XChartType > const & xType : aTypes ) + const std::vector< rtl::Reference< ChartType > > aTypes = xDiagram->getChartTypes(); + for( rtl::Reference< ChartType > const & xType : aTypes ) { if( xType->getChartType() == CHART2_SERVICE_NAME_CHARTTYPE_CANDLESTICK ) { - Reference< chart2::XDataSeriesContainer > xSeriesContainer(xType,uno::UNO_QUERY); - if( xSeriesContainer.is() ) + const std::vector< rtl::Reference< DataSeries > > & aSeriesSeq( xType->getDataSeries2() ); + if(!aSeriesSeq.empty()) { - Sequence< Reference< chart2::XDataSeries > > aSeriesSeq( xSeriesContainer->getDataSeries() ); - if(aSeriesSeq.hasElements()) + if(aSeriesSeq[0].is()) { - xPropSet.set(aSeriesSeq[0],uno::UNO_QUERY); - if(xPropSet.is()) - { - if( rPropertyName == "LineColor" ) - xPropSet->setPropertyValue( "Color", rValue ); - else if( rPropertyName == "LineTransparence" ) - xPropSet->setPropertyValue( "Transparency", rValue ); - else if( rPropertyName == m_aWrappedLineJointProperty.getOuterName() ) - m_aWrappedLineJointProperty.setPropertyValue( rValue, xPropSet ); - else - xPropSet->setPropertyValue( rPropertyName, rValue ); - return; - } + if( rPropertyName == "LineColor" ) + aSeriesSeq[0]->setPropertyValue( u"Color"_ustr, rValue ); + else if( rPropertyName == "LineTransparence" ) + aSeriesSeq[0]->setPropertyValue( u"Transparency"_ustr, rValue ); + else if( rPropertyName == m_aWrappedLineJointProperty.getOuterName() ) + m_aWrappedLineJointProperty.setPropertyValue( rValue, aSeriesSeq[0] ); + else + aSeriesSeq[0]->setPropertyValue( rPropertyName, rValue ); + return; } } } @@ -191,33 +145,28 @@ uno::Any SAL_CALL MinMaxLineWrapper::getPropertyValue( const OUString& rProperty { Any aRet; - Reference< beans::XPropertySet > xPropSet; + rtl::Reference< DataSeries > xPropSet; rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); - const Sequence< Reference< chart2::XChartType > > aTypes( - ::chart::DiagramHelper::getChartTypesFromDiagram( xDiagram ) ); - for( Reference< chart2::XChartType > const & xType : aTypes ) + const std::vector< rtl::Reference< ChartType > > aTypes = xDiagram->getChartTypes(); + for( rtl::Reference< ChartType > const & xType : aTypes ) { if( xType->getChartType() == CHART2_SERVICE_NAME_CHARTTYPE_CANDLESTICK ) { - Reference< chart2::XDataSeriesContainer > xSeriesContainer(xType,uno::UNO_QUERY); - if( xSeriesContainer.is() ) + const std::vector< rtl::Reference< DataSeries > > & aSeriesSeq( xType->getDataSeries2() ); + if(!aSeriesSeq.empty()) { - Sequence< Reference< chart2::XDataSeries > > aSeriesSeq( xSeriesContainer->getDataSeries() ); - if(aSeriesSeq.hasElements()) - { - xPropSet.set(aSeriesSeq[0],uno::UNO_QUERY); - break; - } + xPropSet = aSeriesSeq[0]; + break; } } } if(xPropSet.is()) { if( rPropertyName == "LineColor" ) - aRet = xPropSet->getPropertyValue( "Color" ); + aRet = xPropSet->getPropertyValue( u"Color"_ustr ); else if( rPropertyName == "LineTransparence" ) - aRet = xPropSet->getPropertyValue( "Transparency" ); + aRet = xPropSet->getPropertyValue( u"Transparency"_ustr ); else if( rPropertyName == m_aWrappedLineJointProperty.getOuterName() ) aRet = m_aWrappedLineJointProperty.getPropertyValue( xPropSet ); else @@ -251,7 +200,7 @@ void SAL_CALL MinMaxLineWrapper::setPropertyValues( const uno::Sequence< OUStrin sal_Int32 nMinCount = std::min( rValueSeq.getLength(), rNameSeq.getLength() ); for(sal_Int32 nN=0; nN<nMinCount; nN++) { - OUString aPropertyName( rNameSeq[nN] ); + const OUString& aPropertyName( rNameSeq[nN] ); try { setPropertyValue( aPropertyName, rValueSeq[nN] ); @@ -272,7 +221,7 @@ uno::Sequence< uno::Any > SAL_CALL MinMaxLineWrapper::getPropertyValues( const u auto pRetSeq = aRetSeq.getArray(); for(sal_Int32 nN=0; nN<rNameSeq.getLength(); nN++) { - OUString aPropertyName( rNameSeq[nN] ); + const OUString& aPropertyName( rNameSeq[nN] ); pRetSeq[nN] = getPropertyValue( aPropertyName ); } } @@ -319,7 +268,7 @@ uno::Sequence< beans::PropertyState > SAL_CALL MinMaxLineWrapper::getPropertySta auto pRetSeq = aRetSeq.getArray(); for(sal_Int32 nN=0; nN<rNameSeq.getLength(); nN++) { - OUString aPropertyName( rNameSeq[nN] ); + const OUString& aPropertyName( rNameSeq[nN] ); pRetSeq[nN] = getPropertyState( aPropertyName ); } } @@ -332,9 +281,14 @@ void SAL_CALL MinMaxLineWrapper::setPropertyToDefault( const OUString& rProperty uno::Any SAL_CALL MinMaxLineWrapper::getPropertyDefault( const OUString& rPropertyName ) { - const tPropertyValueMap& rStaticDefaults = *StaticMinMaxLineWrapperDefaults::get(); - tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( StaticMinMaxLineWrapperInfoHelper::get()->getHandleByName( rPropertyName ) ) ); - if( aFound == rStaticDefaults.end() ) + static const ::chart::tPropertyValueMap aStaticDefaults = [] + { + ::chart::tPropertyValueMap aTmp; + ::chart::LinePropertiesHelper::AddDefaultsToMap( aTmp ); + return aTmp; + }(); + tPropertyValueMap::const_iterator aFound( aStaticDefaults.find( StaticMinMaxLineWrapperInfoHelper().getHandleByName( rPropertyName ) ) ); + if( aFound == aStaticDefaults.end() ) return uno::Any(); return (*aFound).second; } @@ -343,7 +297,7 @@ uno::Any SAL_CALL MinMaxLineWrapper::getPropertyDefault( const OUString& rProper //getPropertyStates() already declared in XPropertyState void SAL_CALL MinMaxLineWrapper::setAllPropertiesToDefault( ) { - const Sequence< beans::Property >& rPropSeq = *StaticMinMaxLineWrapperPropertyArray::get(); + const Sequence< beans::Property >& rPropSeq = StaticMinMaxLineWrapperPropertyArray(); for(beans::Property const & prop : rPropSeq) { setPropertyToDefault( prop.Name ); @@ -365,7 +319,7 @@ uno::Sequence< uno::Any > SAL_CALL MinMaxLineWrapper::getPropertyDefaults( const auto pRetSeq = aRetSeq.getArray(); for(sal_Int32 nN=0; nN<rNameSeq.getLength(); nN++) { - OUString aPropertyName( rNameSeq[nN] ); + const OUString& aPropertyName( rNameSeq[nN] ); pRetSeq[nN] = getPropertyDefault( aPropertyName ); } } @@ -374,7 +328,7 @@ uno::Sequence< uno::Any > SAL_CALL MinMaxLineWrapper::getPropertyDefaults( const OUString SAL_CALL MinMaxLineWrapper::getImplementationName() { - return "com.sun.star.comp.chart.ChartLine"; + return u"com.sun.star.comp.chart.ChartLine"_ustr; } sal_Bool SAL_CALL MinMaxLineWrapper::supportsService( const OUString& rServiceName ) @@ -385,9 +339,9 @@ sal_Bool SAL_CALL MinMaxLineWrapper::supportsService( const OUString& rServiceNa css::uno::Sequence< OUString > SAL_CALL MinMaxLineWrapper::getSupportedServiceNames() { return { - "com.sun.star.chart.ChartLine", - "com.sun.star.xml.UserDefinedAttributesSupplier", - "com.sun.star.drawing.LineProperties" + u"com.sun.star.chart.ChartLine"_ustr, + u"com.sun.star.xml.UserDefinedAttributesSupplier"_ustr, + u"com.sun.star.drawing.LineProperties"_ustr }; } diff --git a/chart2/source/controller/chartapiwrapper/MinMaxLineWrapper.hxx b/chart2/source/controller/chartapiwrapper/MinMaxLineWrapper.hxx index 33cabe1743e2..337ca8bdebd7 100644 --- a/chart2/source/controller/chartapiwrapper/MinMaxLineWrapper.hxx +++ b/chart2/source/controller/chartapiwrapper/MinMaxLineWrapper.hxx @@ -19,9 +19,8 @@ #pragma once #include <WrappedIgnoreProperty.hxx> -#include <comphelper/interfacecontainer3.hxx> +#include <comphelper/interfacecontainer4.hxx> -#include <cppuhelper/basemutex.hxx> #include <cppuhelper/implbase.hxx> #include <com/sun/star/beans/XMultiPropertySet.hpp> #include <com/sun/star/beans/XMultiPropertyStates.hpp> @@ -37,8 +36,7 @@ namespace chart::wrapper class Chart2ModelContact; -class MinMaxLineWrapper : public cppu::BaseMutex - , public ::cppu::WeakImplHelper +class MinMaxLineWrapper : public ::cppu::WeakImplHelper < css::lang::XComponent , css::lang::XServiceInfo , css::beans::XPropertySet @@ -48,7 +46,7 @@ class MinMaxLineWrapper : public cppu::BaseMutex > { public: - explicit MinMaxLineWrapper(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit MinMaxLineWrapper(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual ~MinMaxLineWrapper() override; /// XServiceInfo declarations @@ -93,8 +91,9 @@ public: virtual css::uno::Sequence< css::uno::Any > SAL_CALL getPropertyDefaults( const css::uno::Sequence< OUString >& aPropertyNames ) override; private: //member + std::mutex m_aMutex; std::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; - ::comphelper::OInterfaceContainerHelper3<css::lang::XEventListener> m_aEventListenerContainer; + ::comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> m_aEventListenerContainer; WrappedIgnoreProperty m_aWrappedLineJointProperty; }; diff --git a/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx b/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx index 074a37778e65..e4ca74c37f19 100644 --- a/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx +++ b/chart2/source/controller/chartapiwrapper/TitleWrapper.cxx @@ -26,7 +26,6 @@ #include <com/sun/star/beans/PropertyAttribute.hpp> #include <com/sun/star/chart2/RelativePosition.hpp> #include <com/sun/star/chart2/XTitle.hpp> -#include <com/sun/star/chart2/XChartDocument.hpp> #include <CharacterProperties.hxx> #include <LinePropertiesHelper.hxx> @@ -40,10 +39,10 @@ #include <algorithm> #include <rtl/ustrbuf.hxx> #include <cppuhelper/propshlp.hxx> +#include <utility> using namespace ::com::sun::star; using ::com::sun::star::beans::Property; -using ::osl::MutexGuard; using ::com::sun::star::uno::Any; using ::com::sun::star::uno::Reference; using ::com::sun::star::uno::Sequence; @@ -68,19 +67,19 @@ protected: } WrappedTitleStringProperty::WrappedTitleStringProperty( const Reference< uno::XComponentContext >& xContext ) - : ::chart::WrappedProperty( "String", OUString() ) + : ::chart::WrappedProperty( u"String"_ustr, OUString() ) , m_xContext( xContext ) { } void WrappedTitleStringProperty::setPropertyValue( const Any& rOuterValue, const Reference< beans::XPropertySet >& xInnerPropertySet ) const { - Reference< chart2::XTitle > xTitle(xInnerPropertySet,uno::UNO_QUERY); - if(xTitle.is()) + Title* pTitle = dynamic_cast<Title*>(xInnerPropertySet.get()); + if(pTitle) { OUString aString; rOuterValue >>= aString; - TitleHelper::setCompleteString( aString, xTitle, m_xContext ); + TitleHelper::setCompleteString( aString, pTitle, m_xContext ); } } Any WrappedTitleStringProperty::getPropertyValue( const Reference< beans::XPropertySet >& xInnerPropertySet ) const @@ -107,6 +106,51 @@ Any WrappedTitleStringProperty::getPropertyDefault( const Reference< beans::XPro namespace { + class WrappedTitleFormStringsProperty : public WrappedProperty + { + public: + explicit WrappedTitleFormStringsProperty(); + + virtual void setPropertyValue( const Any& rOuterValue, const Reference< beans::XPropertySet >& xInnerPropertySet ) const override; + virtual Any getPropertyValue( const Reference< beans::XPropertySet >& xInnerPropertySet ) const override; + virtual Any getPropertyDefault( const Reference< beans::XPropertyState >& xInnerPropertyState ) const override; + }; + +} + +WrappedTitleFormStringsProperty::WrappedTitleFormStringsProperty() + : ::chart::WrappedProperty( u"FormattedStrings"_ustr, OUString() ) +{ +} + +void WrappedTitleFormStringsProperty::setPropertyValue( const Any& rOuterValue, const Reference< beans::XPropertySet >& xInnerPropertySet ) const +{ + Title* pTitle = dynamic_cast<Title*>(xInnerPropertySet.get()); + if (pTitle) + { + Sequence< Reference< chart2::XFormattedString >> xFormattedStrings; + rOuterValue >>= xFormattedStrings; + TitleHelper::setFormattedString(pTitle, xFormattedStrings); + } +} +Any WrappedTitleFormStringsProperty::getPropertyValue( const Reference< beans::XPropertySet >& xInnerPropertySet ) const +{ + Any aRet(getPropertyDefault(Reference< beans::XPropertyState >(xInnerPropertySet, uno::UNO_QUERY))); + Reference< chart2::XTitle > xTitle(xInnerPropertySet, uno::UNO_QUERY); + if (xTitle.is()) + { + const Sequence< Reference< chart2::XFormattedString > > aStrings(xTitle->getText()); + aRet <<= aStrings; + } + return aRet; +} +Any WrappedTitleFormStringsProperty::getPropertyDefault( const Reference< beans::XPropertyState >& /*xInnerPropertyState*/ ) const +{ + return uno::Any(Sequence< Reference< chart2::XFormattedString > >()); //default title is an empty Sequence of XFormattedStrings +} + +namespace { + class WrappedStackedTextProperty : public WrappedProperty { public: @@ -116,7 +160,7 @@ public: } WrappedStackedTextProperty::WrappedStackedTextProperty() - : ::chart::WrappedProperty( "StackedText", "StackCharacters" ) + : ::chart::WrappedProperty( u"StackedText"_ustr, u"StackCharacters"_ustr ) { } @@ -128,6 +172,8 @@ namespace enum { PROP_TITLE_STRING, + PROP_TITLE_FORMATTED_STRINGS, + PROP_TITLE_VISIBLE, PROP_TITLE_TEXT_ROTATION, PROP_TITLE_TEXT_STACKED }; @@ -141,6 +187,18 @@ void lcl_AddPropertiesToVector( beans::PropertyAttribute::BOUND | beans::PropertyAttribute::MAYBEVOID ); + rOutProperties.emplace_back( "FormattedStrings", + PROP_TITLE_FORMATTED_STRINGS, + cppu::UnoType< Sequence< Reference< chart2::XFormattedString >>>::get(), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEVOID ); + + rOutProperties.emplace_back( "Visible", + PROP_TITLE_VISIBLE, + cppu::UnoType<OUString>::get(), + beans::PropertyAttribute::BOUND + | beans::PropertyAttribute::MAYBEVOID ); + rOutProperties.emplace_back( "TextRotation", PROP_TITLE_TEXT_ROTATION, cppu::UnoType<sal_Int32>::get(), @@ -153,36 +211,27 @@ void lcl_AddPropertiesToVector( | beans::PropertyAttribute::MAYBEDEFAULT ); } -struct StaticTitleWrapperPropertyArray_Initializer +const Sequence< Property > & StaticTitleWrapperPropertyArray() { - Sequence< Property >* operator()() - { - static Sequence< Property > aPropSeq( lcl_GetPropertySequence() ); - return &aPropSeq; - } - -private: - static Sequence< Property > lcl_GetPropertySequence() - { - std::vector< beans::Property > aProperties; - lcl_AddPropertiesToVector( aProperties ); - ::chart::CharacterProperties::AddPropertiesToVector( aProperties ); - ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); - ::chart::FillProperties::AddPropertiesToVector( aProperties ); - ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); - ::chart::wrapper::WrappedAutomaticPositionProperties::addProperties( aProperties ); - ::chart::wrapper::WrappedScaleTextProperties::addProperties( aProperties ); - - std::sort( aProperties.begin(), aProperties.end(), - ::chart::PropertyNameLess() ); - - return comphelper::containerToSequence( aProperties ); - } + static Sequence< Property > aPropSeq = []() + { + std::vector< beans::Property > aProperties; + lcl_AddPropertiesToVector( aProperties ); + ::chart::CharacterProperties::AddPropertiesToVector( aProperties ); + ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); + ::chart::FillProperties::AddPropertiesToVector( aProperties ); + ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); + ::chart::wrapper::WrappedAutomaticPositionProperties::addProperties( aProperties ); + ::chart::wrapper::WrappedScaleTextProperties::addProperties( aProperties ); + + std::sort( aProperties.begin(), aProperties.end(), + ::chart::PropertyNameLess() ); + + return comphelper::containerToSequence( aProperties ); + }(); + return aPropSeq; }; -struct StaticTitleWrapperPropertyArray : public rtl::StaticAggregate< Sequence< Property >, StaticTitleWrapperPropertyArray_Initializer > -{ -}; } // anonymous namespace @@ -190,9 +239,8 @@ namespace chart::wrapper { TitleWrapper::TitleWrapper( ::chart::TitleHelper::eTitleType eTitleType, - const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact ) : - m_spChart2ModelContact( spChart2ModelContact ), - m_aEventListenerContainer( m_aMutex ), + std::shared_ptr<Chart2ModelContact> spChart2ModelContact ) : + m_spChart2ModelContact(std::move( spChart2ModelContact )), m_eTitleType(eTitleType) { ControllerLockGuardUNO aCtrlLockGuard( m_spChart2ModelContact->getDocumentModel() ); @@ -221,7 +269,7 @@ void SAL_CALL TitleWrapper::setPosition( const awt::Point& aPosition ) aRelativePosition.Anchor = drawing::Alignment_TOP_LEFT; aRelativePosition.Primary = double(aPosition.X)/double(aPageSize.Width); aRelativePosition.Secondary = double(aPosition.Y)/double(aPageSize.Height); - xPropertySet->setPropertyValue( "RelativePosition", uno::Any(aRelativePosition) ); + xPropertySet->setPropertyValue( u"RelativePosition"_ustr, uno::Any(aRelativePosition) ); } } @@ -238,44 +286,31 @@ void SAL_CALL TitleWrapper::setSize( const awt::Size& /*aSize*/ ) // ____ XShapeDescriptor (base of XShape) ____ OUString SAL_CALL TitleWrapper::getShapeType() { - return "com.sun.star.chart.ChartTitle"; + return u"com.sun.star.chart.ChartTitle"_ustr; } // ____ XComponent ____ void SAL_CALL TitleWrapper::dispose() { + std::unique_lock g(m_aMutex); Reference< uno::XInterface > xSource( static_cast< ::cppu::OWeakObject* >( this ) ); - m_aEventListenerContainer.disposeAndClear( lang::EventObject( xSource ) ); + m_aEventListenerContainer.disposeAndClear( g, lang::EventObject( xSource ) ); - MutexGuard aGuard( m_aMutex); clearWrappedPropertySet(); } void SAL_CALL TitleWrapper::addEventListener( const Reference< lang::XEventListener >& xListener ) { - m_aEventListenerContainer.addInterface( xListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.addInterface( g, xListener ); } void SAL_CALL TitleWrapper::removeEventListener( const Reference< lang::XEventListener >& aListener ) { - m_aEventListenerContainer.removeInterface( aListener ); -} - -Reference< beans::XPropertySet > TitleWrapper::getFirstCharacterPropertySet() -{ - Reference< beans::XPropertySet > xProp; - - Reference< chart2::XTitle > xTitle( getTitleObject() ); - if( xTitle.is()) - { - Sequence< Reference< chart2::XFormattedString > > aStrings( xTitle->getText()); - if( aStrings.hasElements() ) - xProp.set( aStrings[0], uno::UNO_QUERY ); - } - - return xProp; + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.removeInterface( g, aListener ); } void TitleWrapper::getFastCharacterPropertyValue( sal_Int32 nHandle, Any& rValue ) @@ -283,7 +318,7 @@ void TitleWrapper::getFastCharacterPropertyValue( sal_Int32 nHandle, Any& rValue OSL_ASSERT( FAST_PROPERTY_ID_START_CHAR_PROP <= nHandle && nHandle < CharacterProperties::FAST_PROPERTY_ID_END_CHAR_PROP ); - Reference< beans::XPropertySet > xProp = getFirstCharacterPropertySet(); + Reference< beans::XPropertySet > xProp = getInnerPropertySet(); Reference< beans::XFastPropertySet > xFastProp( xProp, uno::UNO_QUERY ); if(xProp.is()) { @@ -323,6 +358,16 @@ void TitleWrapper::setFastCharacterPropertyValue( else if( xFastPropertySet.is() ) xFastPropertySet->setFastPropertyValue( nHandle, rValue ); } + + Reference< beans::XPropertySet > xInnerProp = getInnerPropertySet(); + Reference< beans::XFastPropertySet > xFastInnerProp( xInnerProp, uno::UNO_QUERY ); + if (xInnerProp.is()) + { + if (pWrappedProperty) + pWrappedProperty->setPropertyValue(rValue, xInnerProp); + else if (xFastInnerProp.is()) + xFastInnerProp->setFastPropertyValue(nHandle, rValue); + } } // WrappedPropertySet @@ -356,7 +401,7 @@ beans::PropertyState SAL_CALL TitleWrapper::getPropertyState( const OUString& rP sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName ); if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) ) { - Reference< beans::XPropertyState > xPropState( getFirstCharacterPropertySet(), uno::UNO_QUERY ); + Reference< beans::XPropertyState > xPropState( getInnerPropertySet(), uno::UNO_QUERY); if( xPropState.is() ) { const WrappedProperty* pWrappedProperty = getWrappedProperty( rPropertyName ); @@ -389,7 +434,7 @@ Any SAL_CALL TitleWrapper::getPropertyDefault( const OUString& rPropertyName ) sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName ); if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) ) { - Reference< beans::XPropertyState > xPropState( getFirstCharacterPropertySet(), uno::UNO_QUERY ); + Reference< beans::XPropertyState > xPropState( getInnerPropertySet(), uno::UNO_QUERY ); if( xPropState.is() ) { const WrappedProperty* pWrappedProperty = getWrappedProperty( rPropertyName ); @@ -410,7 +455,7 @@ void SAL_CALL TitleWrapper::addPropertyChangeListener( const OUString& rProperty sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName ); if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) ) { - Reference< beans::XPropertySet > xPropSet = getFirstCharacterPropertySet(); + Reference< beans::XPropertySet > xPropSet = getInnerPropertySet(); if( xPropSet.is() ) xPropSet->addPropertyChangeListener( rPropertyName, xListener ); } @@ -422,7 +467,7 @@ void SAL_CALL TitleWrapper::removePropertyChangeListener( const OUString& rPrope sal_Int32 nHandle = getInfoHelper().getHandleByName( rPropertyName ); if( CharacterProperties::IsCharacterPropertyHandle( nHandle ) ) { - Reference< beans::XPropertySet > xPropSet = getFirstCharacterPropertySet(); + Reference< beans::XPropertySet > xPropSet = getInnerPropertySet(); if( xPropSet.is() ) xPropSet->removePropertyChangeListener( rPropertyName, xListener ); } @@ -436,8 +481,8 @@ void TitleWrapper::updateReferenceSize() Reference< beans::XPropertySet > xProp( getTitleObject(), uno::UNO_QUERY ); if( xProp.is() ) { - if( xProp->getPropertyValue( "ReferencePageSize" ).hasValue() ) - xProp->setPropertyValue( "ReferencePageSize", uno::Any( + if( xProp->getPropertyValue( u"ReferencePageSize"_ustr ).hasValue() ) + xProp->setPropertyValue( u"ReferencePageSize"_ustr, uno::Any( m_spChart2ModelContact->GetPageSize() )); } } @@ -446,7 +491,7 @@ Any TitleWrapper::getReferenceSize() Any aRet; Reference< beans::XPropertySet > xProp( getTitleObject(), uno::UNO_QUERY ); if( xProp.is() ) - aRet = xProp->getPropertyValue( "ReferencePageSize" ); + aRet = xProp->getPropertyValue( u"ReferencePageSize"_ustr ); return aRet; } @@ -469,7 +514,7 @@ Reference< beans::XPropertySet > TitleWrapper::getInnerPropertySet() const Sequence< beans::Property >& TitleWrapper::getPropertySequence() { - return *StaticTitleWrapperPropertyArray::get(); + return StaticTitleWrapperPropertyArray(); } std::vector< std::unique_ptr<WrappedProperty> > TitleWrapper::createWrappedProperties() @@ -477,6 +522,7 @@ std::vector< std::unique_ptr<WrappedProperty> > TitleWrapper::createWrappedPrope std::vector< std::unique_ptr<WrappedProperty> > aWrappedProperties; aWrappedProperties.emplace_back( new WrappedTitleStringProperty( m_spChart2ModelContact->m_xContext ) ); + aWrappedProperties.emplace_back( new WrappedTitleFormStringsProperty() ); aWrappedProperties.emplace_back( new WrappedTextRotationProperty( true ) ); aWrappedProperties.emplace_back( new WrappedStackedTextProperty() ); WrappedCharacterHeightProperty::addWrappedProperties( aWrappedProperties, this ); @@ -488,7 +534,7 @@ std::vector< std::unique_ptr<WrappedProperty> > TitleWrapper::createWrappedPrope OUString SAL_CALL TitleWrapper::getImplementationName() { - return "com.sun.star.comp.chart.Title"; + return u"com.sun.star.comp.chart.Title"_ustr; } sal_Bool SAL_CALL TitleWrapper::supportsService( const OUString& rServiceName ) @@ -499,10 +545,10 @@ sal_Bool SAL_CALL TitleWrapper::supportsService( const OUString& rServiceName ) css::uno::Sequence< OUString > SAL_CALL TitleWrapper::getSupportedServiceNames() { return { - "com.sun.star.chart.ChartTitle", - "com.sun.star.drawing.Shape", - "com.sun.star.xml.UserDefinedAttributesSupplier", - "com.sun.star.style.CharacterProperties" + u"com.sun.star.chart.ChartTitle"_ustr, + u"com.sun.star.drawing.Shape"_ustr, + u"com.sun.star.xml.UserDefinedAttributesSupplier"_ustr, + u"com.sun.star.style.CharacterProperties"_ustr }; } diff --git a/chart2/source/controller/chartapiwrapper/TitleWrapper.hxx b/chart2/source/controller/chartapiwrapper/TitleWrapper.hxx index 5cc3ed477d01..03c551fcf52d 100644 --- a/chart2/source/controller/chartapiwrapper/TitleWrapper.hxx +++ b/chart2/source/controller/chartapiwrapper/TitleWrapper.hxx @@ -22,7 +22,7 @@ #include "ReferenceSizePropertyProvider.hxx" #include <TitleHelper.hxx> #include <cppuhelper/implbase.hxx> -#include <comphelper/interfacecontainer3.hxx> +#include <comphelper/interfacecontainer4.hxx> #include <com/sun/star/drawing/XShape.hpp> #include <com/sun/star/lang/XComponent.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> @@ -45,7 +45,7 @@ class TitleWrapper final : public ::cppu::ImplInheritanceHelper< { public: TitleWrapper( ::chart::TitleHelper::eTitleType eTitleType, - const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact ); + std::shared_ptr<Chart2ModelContact> spChart2ModelContact ); virtual ~TitleWrapper() override; /// XServiceInfo declarations @@ -58,7 +58,6 @@ public: virtual css::uno::Any getReferenceSize() override; virtual css::awt::Size getCurrentSizeForReference() override; -private: // ____ XShape ____ virtual css::awt::Point SAL_CALL getPosition() override; virtual void SAL_CALL setPosition( const css::awt::Point& aPosition ) override; @@ -95,12 +94,11 @@ private: virtual const css::uno::Sequence< css::beans::Property >& getPropertySequence() override; virtual std::vector< std::unique_ptr<WrappedProperty> > createWrappedProperties() override; - css::uno::Reference< css::beans::XPropertySet > getFirstCharacterPropertySet(); - +private: css::uno::Reference< css::chart2::XTitle > getTitleObject(); std::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; - ::comphelper::OInterfaceContainerHelper3<css::lang::XEventListener> m_aEventListenerContainer; + ::comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> m_aEventListenerContainer; ::chart::TitleHelper::eTitleType m_eTitleType; }; diff --git a/chart2/source/controller/chartapiwrapper/UpDownBarWrapper.cxx b/chart2/source/controller/chartapiwrapper/UpDownBarWrapper.cxx index 2922f91c466b..92128857b891 100644 --- a/chart2/source/controller/chartapiwrapper/UpDownBarWrapper.cxx +++ b/chart2/source/controller/chartapiwrapper/UpDownBarWrapper.cxx @@ -19,20 +19,19 @@ #include "UpDownBarWrapper.hxx" #include "Chart2ModelContact.hxx" -#include <DiagramHelper.hxx> +#include <ChartType.hxx> #include <servicenames_charttypes.hxx> #include <cppuhelper/supportsservice.hxx> #include <cppuhelper/propshlp.hxx> -#include <com/sun/star/chart2/XChartType.hpp> #include <comphelper/sequence.hxx> #include <LinePropertiesHelper.hxx> #include <FillProperties.hxx> #include <UserDefinedProperties.hxx> -#include <tools/diagnose_ex.h> +#include <utility> +#include <comphelper/diagnose_ex.hxx> using namespace ::com::sun::star; -using namespace ::com::sun::star::chart2; using ::com::sun::star::beans::Property; using ::com::sun::star::uno::Reference; @@ -42,79 +41,28 @@ using ::com::sun::star::uno::Any; namespace { -struct StaticUpDownBarWrapperPropertyArray_Initializer +const Sequence< Property > & StaticUpDownBarWrapperPropertyArray() { - Sequence< Property >* operator()() - { - static Sequence< Property > aPropSeq( lcl_GetPropertySequence() ); - return &aPropSeq; - } - -private: - static Sequence< Property > lcl_GetPropertySequence() - { - std::vector< css::beans::Property > aProperties; - - ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); - ::chart::FillProperties::AddPropertiesToVector( aProperties ); - ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); - - std::sort( aProperties.begin(), aProperties.end(), - ::chart::PropertyNameLess() ); - - return comphelper::containerToSequence( aProperties ); - } -}; - -struct StaticUpDownBarWrapperPropertyArray : public rtl::StaticAggregate< Sequence< Property >, StaticUpDownBarWrapperPropertyArray_Initializer > -{ -}; - -struct StaticUpDownBarWrapperInfoHelper_Initializer -{ - ::cppu::OPropertyArrayHelper* operator()() - { - static ::cppu::OPropertyArrayHelper aPropHelper( *StaticUpDownBarWrapperPropertyArray::get() ); - return &aPropHelper; - } -}; + static Sequence< Property > aPropSeq = []() + { + std::vector< css::beans::Property > aProperties; -struct StaticUpDownBarWrapperInfoHelper : public rtl::StaticAggregate< ::cppu::OPropertyArrayHelper, StaticUpDownBarWrapperInfoHelper_Initializer > -{ -}; + ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); + ::chart::FillProperties::AddPropertiesToVector( aProperties ); + ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); -struct StaticUpDownBarWrapperInfo_Initializer -{ - uno::Reference< beans::XPropertySetInfo >* operator()() - { - static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo( - ::cppu::OPropertySetHelper::createPropertySetInfo(*StaticUpDownBarWrapperInfoHelper::get() ) ); - return &xPropertySetInfo; - } -}; + std::sort( aProperties.begin(), aProperties.end(), + ::chart::PropertyNameLess() ); -struct StaticUpDownBarWrapperInfo : public rtl::StaticAggregate< uno::Reference< beans::XPropertySetInfo >, StaticUpDownBarWrapperInfo_Initializer > -{ + return comphelper::containerToSequence( aProperties ); + }(); + return aPropSeq; }; -struct StaticUpDownBarWrapperDefaults_Initializer -{ - ::chart::tPropertyValueMap* operator()() - { - static ::chart::tPropertyValueMap aStaticDefaults; - lcl_AddDefaultsToMap( aStaticDefaults ); - return &aStaticDefaults; - } -private: - static void lcl_AddDefaultsToMap( ::chart::tPropertyValueMap & rOutMap ) - { - ::chart::LinePropertiesHelper::AddDefaultsToMap( rOutMap ); - ::chart::FillProperties::AddDefaultsToMap( rOutMap ); - } -}; - -struct StaticUpDownBarWrapperDefaults : public rtl::StaticAggregate< ::chart::tPropertyValueMap, StaticUpDownBarWrapperDefaults_Initializer > +::cppu::OPropertyArrayHelper& StaticUpDownBarWrapperInfoHelper() { + static ::cppu::OPropertyArrayHelper aPropHelper( StaticUpDownBarWrapperPropertyArray() ); + return aPropHelper; }; } // anonymous namespace @@ -123,10 +71,9 @@ namespace chart::wrapper { UpDownBarWrapper::UpDownBarWrapper( - bool bUp, const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : m_spChart2ModelContact( spChart2ModelContact ) - , m_aEventListenerContainer( m_aMutex ) - , m_aPropertySetName( bUp ? OUString( "WhiteDay" ) : OUString( "BlackDay" )) + bool bUp, std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : m_spChart2ModelContact(std::move( spChart2ModelContact )) + , m_aPropertySetName( bUp ? u"WhiteDay"_ustr : u"BlackDay"_ustr) { } @@ -137,42 +84,44 @@ UpDownBarWrapper::~UpDownBarWrapper() // ____ XComponent ____ void SAL_CALL UpDownBarWrapper::dispose() { + std::unique_lock g(m_aMutex); Reference< uno::XInterface > xSource( static_cast< ::cppu::OWeakObject* >( this ) ); - m_aEventListenerContainer.disposeAndClear( lang::EventObject( xSource ) ); + m_aEventListenerContainer.disposeAndClear( g, lang::EventObject( xSource ) ); } void SAL_CALL UpDownBarWrapper::addEventListener( const Reference< lang::XEventListener >& xListener ) { - m_aEventListenerContainer.addInterface( xListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.addInterface( g, xListener ); } void SAL_CALL UpDownBarWrapper::removeEventListener( const Reference< lang::XEventListener >& aListener ) { - m_aEventListenerContainer.removeInterface( aListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.removeInterface( g, aListener ); } //XPropertySet uno::Reference< beans::XPropertySetInfo > SAL_CALL UpDownBarWrapper::getPropertySetInfo() { - return *StaticUpDownBarWrapperInfo::get(); + static uno::Reference< beans::XPropertySetInfo > xPropertySetInfo( + ::cppu::OPropertySetHelper::createPropertySetInfo(StaticUpDownBarWrapperInfoHelper() ) ); + return xPropertySetInfo; } + void SAL_CALL UpDownBarWrapper::setPropertyValue( const OUString& rPropertyName, const uno::Any& rValue ) { Reference< beans::XPropertySet > xPropSet; - const Sequence< Reference< chart2::XChartType > > aTypes( - ::chart::DiagramHelper::getChartTypesFromDiagram( m_spChart2ModelContact->getDiagram() ) ); - for( Reference< chart2::XChartType > const & xType : aTypes ) + const std::vector< rtl::Reference< ChartType > > aTypes = + m_spChart2ModelContact->getDiagram()->getChartTypes(); + for( rtl::Reference< ChartType > const & xType : aTypes ) { if( xType->getChartType() == CHART2_SERVICE_NAME_CHARTTYPE_CANDLESTICK ) { - Reference< beans::XPropertySet > xTypeProps( xType, uno::UNO_QUERY ); - if(xTypeProps.is()) - { - xTypeProps->getPropertyValue( m_aPropertySetName ) >>= xPropSet; - } + xType->getPropertyValue( m_aPropertySetName ) >>= xPropSet; } } if(xPropSet.is()) @@ -184,17 +133,13 @@ uno::Any SAL_CALL UpDownBarWrapper::getPropertyValue( const OUString& rPropertyN Reference< beans::XPropertySet > xPropSet; - const Sequence< Reference< chart2::XChartType > > aTypes( - ::chart::DiagramHelper::getChartTypesFromDiagram( m_spChart2ModelContact->getDiagram() ) ); - for( Reference< chart2::XChartType > const & xType : aTypes ) + const std::vector< rtl::Reference< ChartType > > aTypes = + m_spChart2ModelContact->getDiagram()->getChartTypes(); + for( rtl::Reference<ChartType > const & xType : aTypes ) { if( xType->getChartType() == CHART2_SERVICE_NAME_CHARTTYPE_CANDLESTICK ) { - Reference< beans::XPropertySet > xTypeProps( xType, uno::UNO_QUERY ); - if(xTypeProps.is()) - { - xTypeProps->getPropertyValue( m_aPropertySetName ) >>= xPropSet; - } + xType->getPropertyValue( m_aPropertySetName ) >>= xPropSet; } } if(xPropSet.is()) @@ -226,7 +171,7 @@ void SAL_CALL UpDownBarWrapper::setPropertyValues( const uno::Sequence< OUString sal_Int32 nMinCount = std::min( rValueSeq.getLength(), rNameSeq.getLength() ); for(sal_Int32 nN=0; nN<nMinCount; nN++) { - OUString aPropertyName( rNameSeq[nN] ); + const OUString& aPropertyName( rNameSeq[nN] ); try { setPropertyValue( aPropertyName, rValueSeq[nN] ); @@ -247,7 +192,7 @@ uno::Sequence< uno::Any > SAL_CALL UpDownBarWrapper::getPropertyValues( const un auto pRetSeq = aRetSeq.getArray(); for(sal_Int32 nN=0; nN<rNameSeq.getLength(); nN++) { - OUString aPropertyName( rNameSeq[nN] ); + const OUString& aPropertyName( rNameSeq[nN] ); pRetSeq[nN] = getPropertyValue( aPropertyName ); } } @@ -286,7 +231,7 @@ uno::Sequence< beans::PropertyState > SAL_CALL UpDownBarWrapper::getPropertyStat auto pRetSeq = aRetSeq.getArray(); for(sal_Int32 nN=0; nN<rNameSeq.getLength(); nN++) { - OUString aPropertyName( rNameSeq[nN] ); + const OUString& aPropertyName( rNameSeq[nN] ); pRetSeq[nN] = getPropertyState( aPropertyName ); } } @@ -299,9 +244,15 @@ void SAL_CALL UpDownBarWrapper::setPropertyToDefault( const OUString& rPropertyN uno::Any SAL_CALL UpDownBarWrapper::getPropertyDefault( const OUString& rPropertyName ) { - const tPropertyValueMap& rStaticDefaults = *StaticUpDownBarWrapperDefaults::get(); - tPropertyValueMap::const_iterator aFound( rStaticDefaults.find( StaticUpDownBarWrapperInfoHelper::get()->getHandleByName( rPropertyName ) ) ); - if( aFound == rStaticDefaults.end() ) + static const ::chart::tPropertyValueMap aStaticDefaults = []() + { + ::chart::tPropertyValueMap aTmp; + ::chart::LinePropertiesHelper::AddDefaultsToMap( aTmp ); + ::chart::FillProperties::AddDefaultsToMap( aTmp ); + return aTmp; + }(); + tPropertyValueMap::const_iterator aFound( aStaticDefaults.find( StaticUpDownBarWrapperInfoHelper().getHandleByName( rPropertyName ) ) ); + if( aFound == aStaticDefaults.end() ) return uno::Any(); return (*aFound).second; } @@ -310,7 +261,7 @@ uno::Any SAL_CALL UpDownBarWrapper::getPropertyDefault( const OUString& rPropert //getPropertyStates() already declared in XPropertyState void SAL_CALL UpDownBarWrapper::setAllPropertiesToDefault( ) { - const Sequence< beans::Property >& rPropSeq = *StaticUpDownBarWrapperPropertyArray::get(); + const Sequence< beans::Property >& rPropSeq = StaticUpDownBarWrapperPropertyArray(); for(beans::Property const & prop : rPropSeq) { setPropertyToDefault( prop.Name ); @@ -332,7 +283,7 @@ uno::Sequence< uno::Any > SAL_CALL UpDownBarWrapper::getPropertyDefaults( const auto pRetSeq = aRetSeq.getArray(); for(sal_Int32 nN=0; nN<rNameSeq.getLength(); nN++) { - OUString aPropertyName( rNameSeq[nN] ); + const OUString& aPropertyName( rNameSeq[nN] ); pRetSeq[nN] = getPropertyDefault( aPropertyName ); } } @@ -341,7 +292,7 @@ uno::Sequence< uno::Any > SAL_CALL UpDownBarWrapper::getPropertyDefaults( const OUString SAL_CALL UpDownBarWrapper::getImplementationName() { - return "com.sun.star.comp.chart.ChartArea"; + return u"com.sun.star.comp.chart.ChartArea"_ustr; } sal_Bool SAL_CALL UpDownBarWrapper::supportsService( const OUString& rServiceName ) @@ -352,10 +303,10 @@ sal_Bool SAL_CALL UpDownBarWrapper::supportsService( const OUString& rServiceNam css::uno::Sequence< OUString > SAL_CALL UpDownBarWrapper::getSupportedServiceNames() { return { - "com.sun.star.chart.ChartArea", - "com.sun.star.drawing.LineProperties", - "com.sun.star.drawing.FillProperties", - "com.sun.star.xml.UserDefinedAttributesSupplier" + u"com.sun.star.chart.ChartArea"_ustr, + u"com.sun.star.drawing.LineProperties"_ustr, + u"com.sun.star.drawing.FillProperties"_ustr, + u"com.sun.star.xml.UserDefinedAttributesSupplier"_ustr }; } diff --git a/chart2/source/controller/chartapiwrapper/UpDownBarWrapper.hxx b/chart2/source/controller/chartapiwrapper/UpDownBarWrapper.hxx index 63e1c44db4d8..517a2406fe2c 100644 --- a/chart2/source/controller/chartapiwrapper/UpDownBarWrapper.hxx +++ b/chart2/source/controller/chartapiwrapper/UpDownBarWrapper.hxx @@ -18,9 +18,8 @@ */ #pragma once -#include <comphelper/interfacecontainer3.hxx> +#include <comphelper/interfacecontainer4.hxx> -#include <cppuhelper/basemutex.hxx> #include <cppuhelper/implbase.hxx> #include <com/sun/star/beans/XMultiPropertySet.hpp> #include <com/sun/star/beans/XMultiPropertyStates.hpp> @@ -36,8 +35,7 @@ namespace chart::wrapper class Chart2ModelContact; -class UpDownBarWrapper : public cppu::BaseMutex - , public ::cppu::WeakImplHelper +class UpDownBarWrapper : public ::cppu::WeakImplHelper < css::lang::XComponent , css::lang::XServiceInfo , css::beans::XPropertySet @@ -47,7 +45,7 @@ class UpDownBarWrapper : public cppu::BaseMutex > { public: - UpDownBarWrapper(bool bUp, const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + UpDownBarWrapper(bool bUp, std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual ~UpDownBarWrapper() override; /// XServiceInfo declarations @@ -94,8 +92,9 @@ public: virtual css::uno::Sequence< css::uno::Any > SAL_CALL getPropertyDefaults( const css::uno::Sequence< OUString >& aPropertyNames ) override; private: //member + std::mutex m_aMutex; std::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; - ::comphelper::OInterfaceContainerHelper3<css::lang::XEventListener> m_aEventListenerContainer; + ::comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> m_aEventListenerContainer; OUString m_aPropertySetName; }; diff --git a/chart2/source/controller/chartapiwrapper/WallFloorWrapper.cxx b/chart2/source/controller/chartapiwrapper/WallFloorWrapper.cxx index 711f68201727..23ef0780ccae 100644 --- a/chart2/source/controller/chartapiwrapper/WallFloorWrapper.cxx +++ b/chart2/source/controller/chartapiwrapper/WallFloorWrapper.cxx @@ -21,7 +21,6 @@ #include "Chart2ModelContact.hxx" #include <comphelper/sequence.hxx> #include <cppuhelper/supportsservice.hxx> -#include <com/sun/star/chart2/XDiagram.hpp> #include <FillProperties.hxx> #include <LinePropertiesHelper.hxx> @@ -29,54 +28,20 @@ #include <WrappedDirectStateProperty.hxx> #include <algorithm> +#include <utility> using namespace ::com::sun::star; -using namespace ::com::sun::star::chart2; using ::com::sun::star::beans::Property; -using ::osl::MutexGuard; using ::com::sun::star::uno::Reference; using ::com::sun::star::uno::Sequence; -namespace -{ - -struct StaticWallFloorWrapperPropertyArray_Initializer -{ - Sequence< Property >* operator()() - { - static Sequence< Property > aPropSeq( lcl_GetPropertySequence() ); - return &aPropSeq; - } - -private: - static Sequence< Property > lcl_GetPropertySequence() - { - std::vector< css::beans::Property > aProperties; - ::chart::FillProperties::AddPropertiesToVector( aProperties ); - ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); - ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); - - std::sort( aProperties.begin(), aProperties.end(), - ::chart::PropertyNameLess() ); - - return comphelper::containerToSequence( aProperties ); - } -}; - -struct StaticWallFloorWrapperPropertyArray : public rtl::StaticAggregate< Sequence< Property >, StaticWallFloorWrapperPropertyArray_Initializer > -{ -}; - -} // anonymous namespace - namespace chart::wrapper { WallFloorWrapper::WallFloorWrapper( bool bWall, - const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact ) : - m_spChart2ModelContact( spChart2ModelContact ), - m_aEventListenerContainer( m_aMutex ), + std::shared_ptr<Chart2ModelContact> spChart2ModelContact ) : + m_spChart2ModelContact(std::move( spChart2ModelContact )), m_bWall( bWall ) { @@ -89,23 +54,25 @@ WallFloorWrapper::~WallFloorWrapper() // ____ XComponent ____ void SAL_CALL WallFloorWrapper::dispose() { + std::unique_lock g(m_aMutex); Reference< uno::XInterface > xSource( static_cast< ::cppu::OWeakObject* >( this ) ); - m_aEventListenerContainer.disposeAndClear( lang::EventObject( xSource ) ); + m_aEventListenerContainer.disposeAndClear( g, lang::EventObject( xSource ) ); - MutexGuard aGuard( m_aMutex); clearWrappedPropertySet(); } void SAL_CALL WallFloorWrapper::addEventListener( const Reference< lang::XEventListener >& xListener ) { - m_aEventListenerContainer.addInterface( xListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.addInterface( g, xListener ); } void SAL_CALL WallFloorWrapper::removeEventListener( const Reference< lang::XEventListener >& aListener ) { - m_aEventListenerContainer.removeInterface( aListener ); + std::unique_lock g(m_aMutex); + m_aEventListenerContainer.removeInterface( g, aListener ); } // WrappedPropertySet @@ -127,7 +94,19 @@ Reference< beans::XPropertySet > WallFloorWrapper::getInnerPropertySet() const Sequence< beans::Property >& WallFloorWrapper::getPropertySequence() { - return *StaticWallFloorWrapperPropertyArray::get(); + static Sequence< Property > aPropSeq = []() + { + std::vector< css::beans::Property > aProperties; + ::chart::FillProperties::AddPropertiesToVector( aProperties ); + ::chart::LinePropertiesHelper::AddPropertiesToVector( aProperties ); + ::chart::UserDefinedProperties::AddPropertiesToVector( aProperties ); + + std::sort( aProperties.begin(), aProperties.end(), + ::chart::PropertyNameLess() ); + + return comphelper::containerToSequence( aProperties ); + }(); + return aPropSeq; } std::vector< std::unique_ptr<WrappedProperty> > WallFloorWrapper::createWrappedProperties() @@ -138,15 +117,15 @@ std::vector< std::unique_ptr<WrappedProperty> > WallFloorWrapper::createWrappedP // exported. Because in the old chart the defaults is as follows: // Floor: SOLID (new and old model default), Wall: NONE, except for some chart types (line, scatter) if( m_bWall ) - aWrappedProperties.emplace_back( new WrappedDirectStateProperty( "FillStyle", "FillStyle" )); - aWrappedProperties.emplace_back( new WrappedDirectStateProperty( "FillColor", "FillColor" )); + aWrappedProperties.emplace_back( new WrappedDirectStateProperty( u"FillStyle"_ustr, u"FillStyle"_ustr )); + aWrappedProperties.emplace_back( new WrappedDirectStateProperty( u"FillColor"_ustr, u"FillColor"_ustr )); return aWrappedProperties; } OUString SAL_CALL WallFloorWrapper::getImplementationName() { - return "com.sun.star.comp.chart.WallOrFloor"; + return u"com.sun.star.comp.chart.WallOrFloor"_ustr; } sal_Bool SAL_CALL WallFloorWrapper::supportsService( const OUString& rServiceName ) @@ -157,10 +136,10 @@ sal_Bool SAL_CALL WallFloorWrapper::supportsService( const OUString& rServiceNam css::uno::Sequence< OUString > SAL_CALL WallFloorWrapper::getSupportedServiceNames() { return { - "com.sun.star.xml.UserDefinedAttributesSupplier", - "com.sun.star.drawing.FillProperties", - "com.sun.star.drawing.LineProperties", - "com.sun.star.beans.PropertySet" + u"com.sun.star.xml.UserDefinedAttributesSupplier"_ustr, + u"com.sun.star.drawing.FillProperties"_ustr, + u"com.sun.star.drawing.LineProperties"_ustr, + u"com.sun.star.beans.PropertySet"_ustr }; } diff --git a/chart2/source/controller/chartapiwrapper/WallFloorWrapper.hxx b/chart2/source/controller/chartapiwrapper/WallFloorWrapper.hxx index 3df4a9f1af0b..4a85bd8d5b37 100644 --- a/chart2/source/controller/chartapiwrapper/WallFloorWrapper.hxx +++ b/chart2/source/controller/chartapiwrapper/WallFloorWrapper.hxx @@ -20,7 +20,7 @@ #include <WrappedPropertySet.hxx> #include <cppuhelper/implbase.hxx> -#include <comphelper/interfacecontainer3.hxx> +#include <comphelper/interfacecontainer4.hxx> #include <com/sun/star/lang/XComponent.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> @@ -38,7 +38,7 @@ class WallFloorWrapper : public ::cppu::ImplInheritanceHelper< > { public: - WallFloorWrapper(bool bWall, const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + WallFloorWrapper(bool bWall, std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual ~WallFloorWrapper() override; /// XServiceInfo declarations @@ -59,7 +59,7 @@ protected: private: std::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; - ::comphelper::OInterfaceContainerHelper3<css::lang::XEventListener> m_aEventListenerContainer; + ::comphelper::OInterfaceContainerHelper4<css::lang::XEventListener> m_aEventListenerContainer; bool m_bWall; }; diff --git a/chart2/source/controller/chartapiwrapper/WrappedAddInProperty.cxx b/chart2/source/controller/chartapiwrapper/WrappedAddInProperty.cxx index 24a6dfb78a1c..261826eb0497 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedAddInProperty.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedAddInProperty.cxx @@ -29,7 +29,7 @@ namespace chart::wrapper { WrappedAddInProperty::WrappedAddInProperty( ChartDocumentWrapper& rChartDocumentWrapper ) - : ::chart::WrappedProperty( "AddIn", OUString() ) + : ::chart::WrappedProperty( u"AddIn"_ustr, OUString() ) , m_rChartDocumentWrapper( rChartDocumentWrapper ) { } @@ -41,7 +41,7 @@ void WrappedAddInProperty::setPropertyValue( const Any& rOuterValue, const Refer { Reference< util::XRefreshable > xAddIn; if( ! (rOuterValue >>= xAddIn) ) - throw lang::IllegalArgumentException( "AddIn properties require type XRefreshable", nullptr, 0 ); + throw lang::IllegalArgumentException( u"AddIn properties require type XRefreshable"_ustr, nullptr, 0 ); m_rChartDocumentWrapper.setAddIn( xAddIn ); } @@ -52,7 +52,7 @@ Any WrappedAddInProperty::getPropertyValue( const Reference< beans::XPropertySet } WrappedBaseDiagramProperty::WrappedBaseDiagramProperty( ChartDocumentWrapper& rChartDocumentWrapper ) - : ::chart::WrappedProperty( "BaseDiagram" , OUString() ) + : ::chart::WrappedProperty( u"BaseDiagram"_ustr , OUString() ) , m_rChartDocumentWrapper( rChartDocumentWrapper ) { } @@ -64,7 +64,7 @@ void WrappedBaseDiagramProperty::setPropertyValue( const Any& rOuterValue, const { OUString aBaseDiagram; if( ! (rOuterValue >>= aBaseDiagram) ) - throw lang::IllegalArgumentException( "BaseDiagram properties require type OUString", nullptr, 0 ); + throw lang::IllegalArgumentException( u"BaseDiagram properties require type OUString"_ustr, nullptr, 0 ); m_rChartDocumentWrapper.setBaseDiagram( aBaseDiagram ); } @@ -75,7 +75,7 @@ Any WrappedBaseDiagramProperty::getPropertyValue( const Reference< beans::XPrope } WrappedAdditionalShapesProperty::WrappedAdditionalShapesProperty( ChartDocumentWrapper& rChartDocumentWrapper ) - : ::chart::WrappedProperty( "AdditionalShapes" , OUString() ) + : ::chart::WrappedProperty( u"AdditionalShapes"_ustr , OUString() ) , m_rChartDocumentWrapper( rChartDocumentWrapper ) { } @@ -85,7 +85,7 @@ WrappedAdditionalShapesProperty::~WrappedAdditionalShapesProperty() void WrappedAdditionalShapesProperty::setPropertyValue( const Any& /*rOuterValue*/, const Reference< beans::XPropertySet >& /*xInnerPropertySet*/ ) const { - throw lang::IllegalArgumentException( "AdditionalShapes is a read only property", nullptr, 0 ); + throw lang::IllegalArgumentException( u"AdditionalShapes is a read only property"_ustr, nullptr, 0 ); } Any WrappedAdditionalShapesProperty::getPropertyValue( const Reference< beans::XPropertySet >& /*xInnerPropertySet*/ ) const @@ -94,7 +94,7 @@ Any WrappedAdditionalShapesProperty::getPropertyValue( const Reference< beans::X } WrappedRefreshAddInAllowedProperty::WrappedRefreshAddInAllowedProperty( ChartDocumentWrapper& rChartDocumentWrapper ) - : ::chart::WrappedProperty( "RefreshAddInAllowed" , OUString() ) + : ::chart::WrappedProperty( u"RefreshAddInAllowed"_ustr , OUString() ) , m_rChartDocumentWrapper( rChartDocumentWrapper ) { } @@ -106,7 +106,7 @@ void WrappedRefreshAddInAllowedProperty::setPropertyValue( const Any& rOuterValu { bool bUpdateAddIn = true; if( ! (rOuterValue >>= bUpdateAddIn) ) - throw lang::IllegalArgumentException( "The property RefreshAddInAllowed requires type boolean", nullptr, 0 ); + throw lang::IllegalArgumentException( u"The property RefreshAddInAllowed requires type boolean"_ustr, nullptr, 0 ); m_rChartDocumentWrapper.setUpdateAddIn( bUpdateAddIn ); } diff --git a/chart2/source/controller/chartapiwrapper/WrappedAutomaticPositionProperties.cxx b/chart2/source/controller/chartapiwrapper/WrappedAutomaticPositionProperties.cxx index 2bfb5ed42211..0434e6dc041e 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedAutomaticPositionProperties.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedAutomaticPositionProperties.cxx @@ -23,7 +23,7 @@ #include <com/sun/star/beans/PropertyAttribute.hpp> #include <com/sun/star/beans/XPropertyState.hpp> #include <com/sun/star/beans/XPropertySet.hpp> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> using namespace ::com::sun::star; using ::com::sun::star::uno::Any; @@ -48,7 +48,7 @@ public: } WrappedAutomaticPositionProperty::WrappedAutomaticPositionProperty() - : ::chart::WrappedProperty( "AutomaticPosition" , OUString() ) + : ::chart::WrappedProperty( u"AutomaticPosition"_ustr , OUString() ) { } @@ -59,15 +59,15 @@ void WrappedAutomaticPositionProperty::setPropertyValue( const Any& rOuterValue, bool bNewValue = true; if( ! (rOuterValue >>= bNewValue) ) - throw lang::IllegalArgumentException( "Property AutomaticPosition requires value of type boolean", nullptr, 0 ); + throw lang::IllegalArgumentException( u"Property AutomaticPosition requires value of type boolean"_ustr, nullptr, 0 ); try { if( bNewValue ) { - Any aRelativePosition( xInnerPropertySet->getPropertyValue( "RelativePosition" ) ); + Any aRelativePosition( xInnerPropertySet->getPropertyValue( u"RelativePosition"_ustr ) ); if( aRelativePosition.hasValue() ) - xInnerPropertySet->setPropertyValue( "RelativePosition", Any() ); + xInnerPropertySet->setPropertyValue( u"RelativePosition"_ustr, Any() ); } } catch( const uno::Exception & ) @@ -81,7 +81,7 @@ Any WrappedAutomaticPositionProperty::getPropertyValue( const Reference< beans:: Any aRet( getPropertyDefault( Reference< beans::XPropertyState >( xInnerPropertySet, uno::UNO_QUERY ) ) ); if( xInnerPropertySet.is() ) { - Any aRelativePosition( xInnerPropertySet->getPropertyValue( "RelativePosition" ) ); + Any aRelativePosition( xInnerPropertySet->getPropertyValue( u"RelativePosition"_ustr ) ); if( !aRelativePosition.hasValue() ) aRet <<= true; } diff --git a/chart2/source/controller/chartapiwrapper/WrappedAxisAndGridExistenceProperties.cxx b/chart2/source/controller/chartapiwrapper/WrappedAxisAndGridExistenceProperties.cxx index 4895e1c40b9d..1208ad539d3e 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedAxisAndGridExistenceProperties.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedAxisAndGridExistenceProperties.cxx @@ -23,13 +23,12 @@ #include "WrappedAxisAndGridExistenceProperties.hxx" #include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/chart2/XAxis.hpp> -#include <com/sun/star/chart2/XDiagram.hpp> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <WrappedProperty.hxx> #include "Chart2ModelContact.hxx" #include <TitleHelper.hxx> -#include <ChartView.hxx> +#include <utility> #include <osl/diagnose.h> using namespace ::com::sun::star; @@ -45,7 +44,7 @@ class WrappedAxisAndGridExistenceProperty : public WrappedProperty { public: WrappedAxisAndGridExistenceProperty( bool bAxis, bool bMain, sal_Int32 nDimensionIndex - , const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact ); + , std::shared_ptr<Chart2ModelContact> spChart2ModelContact ); virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; @@ -81,9 +80,9 @@ void WrappedAxisAndGridExistenceProperties::addWrappedProperties( std::vector< s } WrappedAxisAndGridExistenceProperty::WrappedAxisAndGridExistenceProperty( bool bAxis, bool bMain, sal_Int32 nDimensionIndex - , const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact ) + , std::shared_ptr<Chart2ModelContact> spChart2ModelContact ) : WrappedProperty(OUString(),OUString()) - , m_spChart2ModelContact( spChart2ModelContact ) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) , m_bAxis( bAxis ) , m_bMain( bMain ) , m_nDimensionIndex( nDimensionIndex ) @@ -150,7 +149,7 @@ void WrappedAxisAndGridExistenceProperty::setPropertyValue( const Any& rOuterVal { bool bNewValue = false; if( ! (rOuterValue >>= bNewValue) ) - throw lang::IllegalArgumentException( "Has axis or grid properties require boolean values", nullptr, 0 ); + throw lang::IllegalArgumentException( u"Has axis or grid properties require boolean values"_ustr, nullptr, 0 ); bool bOldValue = false; getPropertyValue( xInnerPropertySet ) >>= bOldValue; @@ -205,7 +204,7 @@ class WrappedAxisTitleExistenceProperty : public WrappedProperty { public: WrappedAxisTitleExistenceProperty( sal_Int32 nTitleIndex - , const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact ); + , std::shared_ptr<Chart2ModelContact> spChart2ModelContact ); virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; @@ -231,9 +230,9 @@ void WrappedAxisTitleExistenceProperties::addWrappedProperties( std::vector< std } WrappedAxisTitleExistenceProperty::WrappedAxisTitleExistenceProperty(sal_Int32 nTitleIndex - , const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) + , std::shared_ptr<Chart2ModelContact> spChart2ModelContact) : WrappedProperty(OUString(),OUString()) - , m_spChart2ModelContact( spChart2ModelContact ) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) , m_eTitleType( TitleHelper::Y_AXIS_TITLE ) { switch( nTitleIndex ) @@ -265,7 +264,7 @@ void WrappedAxisTitleExistenceProperty::setPropertyValue( const Any& rOuterValue { bool bNewValue = false; if( ! (rOuterValue >>= bNewValue) ) - throw lang::IllegalArgumentException( "Has axis or grid properties require boolean values", nullptr, 0 ); + throw lang::IllegalArgumentException( u"Has axis or grid properties require boolean values"_ustr, nullptr, 0 ); bool bOldValue = false; getPropertyValue( xInnerPropertySet ) >>= bOldValue; @@ -288,7 +287,7 @@ Any WrappedAxisTitleExistenceProperty::getPropertyValue( const Reference< beans: { bool bHasTitle = false; - Reference< chart2::XTitle > xTitle( TitleHelper::getTitle( m_eTitleType, m_spChart2ModelContact->getDocumentModel() ) ); + rtl::Reference< Title > xTitle( TitleHelper::getTitle( m_eTitleType, m_spChart2ModelContact->getDocumentModel() ) ); if( xTitle.is() && !TitleHelper::getCompleteString( xTitle ).isEmpty() ) bHasTitle = true; @@ -311,7 +310,7 @@ class WrappedAxisLabelExistenceProperty : public WrappedProperty { public: WrappedAxisLabelExistenceProperty( bool bMain, sal_Int32 nDimensionIndex - , const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact ); + , std::shared_ptr<Chart2ModelContact> spChart2ModelContact ); virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; @@ -338,9 +337,9 @@ void WrappedAxisLabelExistenceProperties::addWrappedProperties( std::vector< std } WrappedAxisLabelExistenceProperty::WrappedAxisLabelExistenceProperty(bool bMain, sal_Int32 nDimensionIndex - , const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) + , std::shared_ptr<Chart2ModelContact> spChart2ModelContact) : WrappedProperty(OUString(),OUString()) - , m_spChart2ModelContact( spChart2ModelContact ) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) , m_bMain( bMain ) , m_nDimensionIndex( nDimensionIndex ) { @@ -363,7 +362,7 @@ void WrappedAxisLabelExistenceProperty::setPropertyValue( const Any& rOuterValue { bool bNewValue = false; if( ! (rOuterValue >>= bNewValue) ) - throw lang::IllegalArgumentException( "Has axis or grid properties require boolean values", nullptr, 0 ); + throw lang::IllegalArgumentException( u"Has axis or grid properties require boolean values"_ustr, nullptr, 0 ); bool bOldValue = false; getPropertyValue( xInnerPropertySet ) >>= bOldValue; @@ -372,25 +371,25 @@ void WrappedAxisLabelExistenceProperty::setPropertyValue( const Any& rOuterValue return; rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); - Reference< beans::XPropertySet > xProp( AxisHelper::getAxis( m_nDimensionIndex, m_bMain, xDiagram ), uno::UNO_QUERY ); + rtl::Reference< Axis > xProp = AxisHelper::getAxis( m_nDimensionIndex, m_bMain, xDiagram ); if( !xProp.is() && bNewValue ) { //create axis if needed - xProp.set( AxisHelper::createAxis( m_nDimensionIndex, m_bMain, xDiagram, m_spChart2ModelContact->m_xContext ), uno::UNO_QUERY ); + xProp = AxisHelper::createAxis( m_nDimensionIndex, m_bMain, xDiagram, m_spChart2ModelContact->m_xContext ); if( xProp.is() ) - xProp->setPropertyValue( "Show", uno::Any( false ) ); + xProp->setPropertyValue( u"Show"_ustr, uno::Any( false ) ); } if( xProp.is() ) - xProp->setPropertyValue( "DisplayLabels", rOuterValue ); + xProp->setPropertyValue( u"DisplayLabels"_ustr, rOuterValue ); } Any WrappedAxisLabelExistenceProperty::getPropertyValue( const Reference< beans::XPropertySet >& /*xInnerPropertySet*/ ) const { Any aRet; rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); - Reference< beans::XPropertySet > xProp( AxisHelper::getAxis( m_nDimensionIndex, m_bMain, xDiagram ), uno::UNO_QUERY ); + rtl::Reference< Axis > xProp = AxisHelper::getAxis( m_nDimensionIndex, m_bMain, xDiagram ); if( xProp.is() ) - aRet = xProp->getPropertyValue( "DisplayLabels" ); + aRet = xProp->getPropertyValue( u"DisplayLabels"_ustr ); else aRet <<= false; return aRet; diff --git a/chart2/source/controller/chartapiwrapper/WrappedCharacterHeightProperty.cxx b/chart2/source/controller/chartapiwrapper/WrappedCharacterHeightProperty.cxx index 67ea51b0e913..6e09285dfd62 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedCharacterHeightProperty.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedCharacterHeightProperty.cxx @@ -110,7 +110,7 @@ Any WrappedCharacterHeightProperty_Base::convertOuterToInnerValue( const Any& rO } WrappedCharacterHeightProperty::WrappedCharacterHeightProperty( ReferenceSizePropertyProvider* pRefSizePropProvider ) - : WrappedCharacterHeightProperty_Base( "CharHeight", pRefSizePropProvider ) + : WrappedCharacterHeightProperty_Base( u"CharHeight"_ustr, pRefSizePropProvider ) { } WrappedCharacterHeightProperty::~WrappedCharacterHeightProperty() @@ -118,7 +118,7 @@ WrappedCharacterHeightProperty::~WrappedCharacterHeightProperty() } WrappedAsianCharacterHeightProperty::WrappedAsianCharacterHeightProperty( ReferenceSizePropertyProvider* pRefSizePropProvider ) - : WrappedCharacterHeightProperty_Base( "CharHeightAsian", pRefSizePropProvider ) + : WrappedCharacterHeightProperty_Base( u"CharHeightAsian"_ustr, pRefSizePropProvider ) { } WrappedAsianCharacterHeightProperty::~WrappedAsianCharacterHeightProperty() @@ -126,7 +126,7 @@ WrappedAsianCharacterHeightProperty::~WrappedAsianCharacterHeightProperty() } WrappedComplexCharacterHeightProperty::WrappedComplexCharacterHeightProperty( ReferenceSizePropertyProvider* pRefSizePropProvider ) - : WrappedCharacterHeightProperty_Base( "CharHeightComplex", pRefSizePropProvider ) + : WrappedCharacterHeightProperty_Base( u"CharHeightComplex"_ustr, pRefSizePropProvider ) { } WrappedComplexCharacterHeightProperty::~WrappedComplexCharacterHeightProperty() diff --git a/chart2/source/controller/chartapiwrapper/WrappedCharacterHeightProperty.hxx b/chart2/source/controller/chartapiwrapper/WrappedCharacterHeightProperty.hxx index 7eee90a2c209..be9457d0ffd7 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedCharacterHeightProperty.hxx +++ b/chart2/source/controller/chartapiwrapper/WrappedCharacterHeightProperty.hxx @@ -45,7 +45,7 @@ protected: virtual css::uno::Any convertInnerToOuterValue( const css::uno::Any& rInnerValue ) const override; virtual css::uno::Any convertOuterToInnerValue( const css::uno::Any& rOuterValue ) const override; -protected: +private: ReferenceSizePropertyProvider* m_pRefSizePropProvider; }; diff --git a/chart2/source/controller/chartapiwrapper/WrappedDataCaptionProperties.cxx b/chart2/source/controller/chartapiwrapper/WrappedDataCaptionProperties.cxx index d317210c3608..792bfdfadcb4 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedDataCaptionProperties.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedDataCaptionProperties.cxx @@ -127,7 +127,7 @@ void WrappedDataCaptionProperties::addWrappedPropertiesForDiagram( std::vector< WrappedDataCaptionProperty::WrappedDataCaptionProperty( const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact , tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedSeriesOrDiagramProperty< sal_Int32 >( "DataCaption" + : WrappedSeriesOrDiagramProperty< sal_Int32 >( u"DataCaption"_ustr , uno::Any( sal_Int32(0) ), spChart2ModelContact, ePropertyType ) { } diff --git a/chart2/source/controller/chartapiwrapper/WrappedGapwidthProperty.cxx b/chart2/source/controller/chartapiwrapper/WrappedGapwidthProperty.cxx index c0f100d335a7..1da4fe9195cb 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedGapwidthProperty.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedGapwidthProperty.cxx @@ -17,10 +17,15 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <sal/config.h> + +#include <cstddef> + #include "WrappedGapwidthProperty.hxx" #include "Chart2ModelContact.hxx" -#include <DiagramHelper.hxx> +#include <ChartType.hxx> #include <tools/long.hxx> +#include <utility> using namespace ::com::sun::star; using ::com::sun::star::uno::Reference; @@ -35,15 +40,15 @@ const sal_Int32 DEFAULT_OVERLAP = 0; WrappedBarPositionProperty_Base::WrappedBarPositionProperty_Base( const OUString& rOuterName - , const OUString& rInnerSequencePropertyName + , OUString aInnerSequencePropertyName , sal_Int32 nDefaultValue - , const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact ) + , std::shared_ptr<Chart2ModelContact> spChart2ModelContact ) : WrappedDefaultProperty( rOuterName, OUString(), uno::Any( nDefaultValue ) ) , m_nDimensionIndex(0) , m_nAxisIndex(0) - , m_spChart2ModelContact( spChart2ModelContact ) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) , m_nDefaultValue( nDefaultValue ) - , m_InnerSequencePropertyName( rInnerSequencePropertyName ) + , m_InnerSequencePropertyName(std::move( aInnerSequencePropertyName )) { } @@ -61,7 +66,7 @@ void WrappedBarPositionProperty_Base::setPropertyValue( const Any& rOuterValue, { sal_Int32 nNewValue = 0; if( ! (rOuterValue >>= nNewValue) ) - throw lang::IllegalArgumentException( "GapWidth and Overlap property require value of type sal_Int32", nullptr, 0 ); + throw lang::IllegalArgumentException( u"GapWidth and Overlap property require value of type sal_Int32"_ustr, nullptr, 0 ); m_aOuterValue = rOuterValue; @@ -72,29 +77,25 @@ void WrappedBarPositionProperty_Base::setPropertyValue( const Any& rOuterValue, if( m_nDimensionIndex!=1 ) return; - const Sequence< Reference< chart2::XChartType > > aChartTypeList( DiagramHelper::getChartTypesFromDiagram( xDiagram ) ); - for( Reference< chart2::XChartType > const & chartType : aChartTypeList ) + const std::vector< rtl::Reference< ChartType > > aChartTypeList( xDiagram->getChartTypes() ); + for( rtl::Reference< ChartType > const & chartType : aChartTypeList ) { try { - Reference< beans::XPropertySet > xProp( chartType, uno::UNO_QUERY ); - if( xProp.is() ) + Sequence< sal_Int32 > aBarPositionSequence; + chartType->getPropertyValue( m_InnerSequencePropertyName ) >>= aBarPositionSequence; + + tools::Long nOldLength = aBarPositionSequence.getLength(); + if( nOldLength <= m_nAxisIndex ) + aBarPositionSequence.realloc( m_nAxisIndex+1 ); + auto pBarPositionSequence = aBarPositionSequence.getArray(); + for( sal_Int32 i=nOldLength; i<m_nAxisIndex; i++ ) { - Sequence< sal_Int32 > aBarPositionSequence; - xProp->getPropertyValue( m_InnerSequencePropertyName ) >>= aBarPositionSequence; - - tools::Long nOldLength = aBarPositionSequence.getLength(); - if( nOldLength <= m_nAxisIndex ) - aBarPositionSequence.realloc( m_nAxisIndex+1 ); - auto pBarPositionSequence = aBarPositionSequence.getArray(); - for( sal_Int32 i=nOldLength; i<m_nAxisIndex; i++ ) - { - pBarPositionSequence[i] = m_nDefaultValue; - } - pBarPositionSequence[m_nAxisIndex] = nNewValue; - - xProp->setPropertyValue( m_InnerSequencePropertyName, uno::Any( aBarPositionSequence ) ); + pBarPositionSequence[i] = m_nDefaultValue; } + pBarPositionSequence[m_nAxisIndex] = nNewValue; + + chartType->setPropertyValue( m_InnerSequencePropertyName, uno::Any( aBarPositionSequence ) ); } catch( uno::Exception& e ) { @@ -115,21 +116,17 @@ Any WrappedBarPositionProperty_Base::getPropertyValue( const Reference< beans::X if( m_nDimensionIndex==1 ) { - Sequence< Reference< chart2::XChartType > > aChartTypeList( DiagramHelper::getChartTypesFromDiagram( xDiagram ) ); - for( sal_Int32 nN = 0; nN < aChartTypeList.getLength() && !bInnerValueDetected; nN++ ) + std::vector< rtl::Reference< ChartType > > aChartTypeList = xDiagram->getChartTypes(); + for( std::size_t nN = 0; nN < aChartTypeList.size() && !bInnerValueDetected; nN++ ) { try { - Reference< beans::XPropertySet > xProp( aChartTypeList[nN], uno::UNO_QUERY ); - if( xProp.is() ) + Sequence< sal_Int32 > aBarPositionSequence; + aChartTypeList[nN]->getPropertyValue( m_InnerSequencePropertyName ) >>= aBarPositionSequence; + if( m_nAxisIndex < aBarPositionSequence.getLength() ) { - Sequence< sal_Int32 > aBarPositionSequence; - xProp->getPropertyValue( m_InnerSequencePropertyName ) >>= aBarPositionSequence; - if( m_nAxisIndex < aBarPositionSequence.getLength() ) - { - nInnerValue = aBarPositionSequence[m_nAxisIndex]; - bInnerValueDetected = true; - } + nInnerValue = aBarPositionSequence[m_nAxisIndex]; + bInnerValueDetected = true; } } catch( uno::Exception& e ) @@ -150,7 +147,7 @@ Any WrappedBarPositionProperty_Base::getPropertyValue( const Reference< beans::X WrappedGapwidthProperty::WrappedGapwidthProperty( const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : WrappedBarPositionProperty_Base( "GapWidth", "GapwidthSequence", DEFAULT_GAPWIDTH, spChart2ModelContact ) + : WrappedBarPositionProperty_Base( u"GapWidth"_ustr, u"GapwidthSequence"_ustr, DEFAULT_GAPWIDTH, spChart2ModelContact ) { } WrappedGapwidthProperty::~WrappedGapwidthProperty() @@ -159,7 +156,7 @@ WrappedGapwidthProperty::~WrappedGapwidthProperty() WrappedBarOverlapProperty::WrappedBarOverlapProperty( const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact ) - : WrappedBarPositionProperty_Base( "Overlap", "OverlapSequence", DEFAULT_OVERLAP, spChart2ModelContact ) + : WrappedBarPositionProperty_Base( u"Overlap"_ustr, u"OverlapSequence"_ustr, DEFAULT_OVERLAP, spChart2ModelContact ) { } WrappedBarOverlapProperty::~WrappedBarOverlapProperty() diff --git a/chart2/source/controller/chartapiwrapper/WrappedGapwidthProperty.hxx b/chart2/source/controller/chartapiwrapper/WrappedGapwidthProperty.hxx index 550b0ce6ad9d..6ac43e9f7635 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedGapwidthProperty.hxx +++ b/chart2/source/controller/chartapiwrapper/WrappedGapwidthProperty.hxx @@ -32,9 +32,9 @@ class WrappedBarPositionProperty_Base : public WrappedDefaultProperty public: WrappedBarPositionProperty_Base( const OUString& rOuterName - , const OUString& rInnerSequencePropertyName + , OUString aInnerSequencePropertyName , sal_Int32 nDefaultValue - , const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact ); + , std::shared_ptr<Chart2ModelContact> spChart2ModelContact ); virtual ~WrappedBarPositionProperty_Base() override; virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; @@ -43,7 +43,7 @@ public: void setDimensionAndAxisIndex( sal_Int32 nDimensionIndex, sal_Int32 nAxisIndex ); -protected: +private: sal_Int32 m_nDimensionIndex; sal_Int32 m_nAxisIndex; std::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; diff --git a/chart2/source/controller/chartapiwrapper/WrappedNumberFormatProperty.cxx b/chart2/source/controller/chartapiwrapper/WrappedNumberFormatProperty.cxx index 1ce277c321ba..bc1f5aed14f6 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedNumberFormatProperty.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedNumberFormatProperty.cxx @@ -19,9 +19,11 @@ #include "WrappedNumberFormatProperty.hxx" #include "Chart2ModelContact.hxx" -#include <com/sun/star/chart2/XAxis.hpp> +#include <Axis.hxx> +#include <DataSeries.hxx> #include <com/sun/star/chart2/XDataSeries.hpp> #include <unonames.hxx> +#include <utility> #include <osl/diagnose.h> using namespace ::com::sun::star; @@ -31,9 +33,9 @@ using ::com::sun::star::uno::Any; namespace chart::wrapper { -WrappedNumberFormatProperty::WrappedNumberFormatProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) +WrappedNumberFormatProperty::WrappedNumberFormatProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) : WrappedDirectStateProperty( CHART_UNONAME_NUMFMT, CHART_UNONAME_NUMFMT ) - , m_spChart2ModelContact(spChart2ModelContact) + , m_spChart2ModelContact(std::move(spChart2ModelContact)) { } @@ -45,7 +47,7 @@ void WrappedNumberFormatProperty::setPropertyValue( const Any& rOuterValue, cons { sal_Int32 nFormat = 0; if( ! (rOuterValue >>= nFormat) ) - throw lang::IllegalArgumentException( "Property 'NumberFormat' requires value of type sal_Int32", nullptr, 0 ); + throw lang::IllegalArgumentException( u"Property 'NumberFormat' requires value of type sal_Int32"_ustr, nullptr, 0 ); if(xInnerPropertySet.is()) xInnerPropertySet->setPropertyValue(getInnerName(), convertOuterToInnerValue(rOuterValue)); @@ -63,11 +65,12 @@ Any WrappedNumberFormatProperty::getPropertyValue( const Reference< beans::XProp { sal_Int32 nKey = 0; Reference< chart2::XDataSeries > xSeries( xInnerPropertySet, uno::UNO_QUERY ); - if( xSeries.is() ) - nKey = Chart2ModelContact::getExplicitNumberFormatKeyForSeries( xSeries ); + if( ::chart::DataSeries* pDataSeries = dynamic_cast<DataSeries*>(xSeries.get()) ) + nKey = pDataSeries->getExplicitNumberFormatKeyForDataLabel(); else { - Reference< chart2::XAxis > xAxis( xInnerPropertySet, uno::UNO_QUERY ); + rtl::Reference< Axis > xAxis = dynamic_cast<Axis*>(xInnerPropertySet.get()); + assert(xAxis || !xInnerPropertySet); nKey = m_spChart2ModelContact->getExplicitNumberFormatKeyForAxis( xAxis ); } aRet <<= nKey; diff --git a/chart2/source/controller/chartapiwrapper/WrappedNumberFormatProperty.hxx b/chart2/source/controller/chartapiwrapper/WrappedNumberFormatProperty.hxx index fa4042ceaedf..cf2f706c61c7 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedNumberFormatProperty.hxx +++ b/chart2/source/controller/chartapiwrapper/WrappedNumberFormatProperty.hxx @@ -31,7 +31,7 @@ namespace chart::wrapper class WrappedNumberFormatProperty : public WrappedDirectStateProperty { public: - explicit WrappedNumberFormatProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit WrappedNumberFormatProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual ~WrappedNumberFormatProperty() override; virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; diff --git a/chart2/source/controller/chartapiwrapper/WrappedScaleProperty.cxx b/chart2/source/controller/chartapiwrapper/WrappedScaleProperty.cxx index 27e07256e51d..35b8cd3040ea 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedScaleProperty.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedScaleProperty.cxx @@ -20,11 +20,13 @@ #include "WrappedScaleProperty.hxx" #include "Chart2ModelContact.hxx" #include <CommonConverters.hxx> +#include <Axis.hxx> #include <AxisHelper.hxx> #include <com/sun/star/chart2/AxisType.hpp> #include <com/sun/star/chart2/XAxis.hpp> #include <com/sun/star/chart/ChartAxisType.hpp> #include <chartview/ExplicitScaleValues.hxx> +#include <utility> #include <osl/diagnose.h> using namespace ::com::sun::star; @@ -38,9 +40,9 @@ namespace chart::wrapper { WrappedScaleProperty::WrappedScaleProperty(tScaleProperty eScaleProperty - , const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) + , std::shared_ptr<Chart2ModelContact> spChart2ModelContact) : WrappedProperty(OUString(),OUString()) - , m_spChart2ModelContact( spChart2ModelContact ) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) , m_eScaleProperty( eScaleProperty ) { switch( m_eScaleProperty ) @@ -295,7 +297,7 @@ void WrappedScaleProperty::setPropertyValue( tScaleProperty eScaleProperty, cons { TimeIncrement aTimeIncrement; rOuterValue >>= aTimeIncrement; - aScaleData.TimeIncrement = aTimeIncrement; + aScaleData.TimeIncrement = std::move(aTimeIncrement); bSetScaleData = true; break; } @@ -348,7 +350,7 @@ Any WrappedScaleProperty::getPropertyValue( tScaleProperty eScaleProperty, const { Any aRet( m_aOuterValue ); - Reference< chart2::XAxis > xAxis( xInnerPropertySet, uno::UNO_QUERY ); + rtl::Reference< Axis > xAxis = dynamic_cast<Axis*>(xInnerPropertySet.get()); OSL_ENSURE(xAxis.is(),"need an XAxis"); if(!xAxis.is()) return aRet; diff --git a/chart2/source/controller/chartapiwrapper/WrappedScaleProperty.hxx b/chart2/source/controller/chartapiwrapper/WrappedScaleProperty.hxx index 64e8071b5345..eca52953552d 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedScaleProperty.hxx +++ b/chart2/source/controller/chartapiwrapper/WrappedScaleProperty.hxx @@ -51,7 +51,7 @@ public: , SCALE_PROP_REVERSEDIRECTION }; - WrappedScaleProperty(tScaleProperty eScaleProperty, const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + WrappedScaleProperty(tScaleProperty eScaleProperty, std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual ~WrappedScaleProperty() override; static void addWrappedProperties( std::vector< std::unique_ptr<WrappedProperty> >& rList, const std::shared_ptr< Chart2ModelContact >& spChart2ModelContact ); diff --git a/chart2/source/controller/chartapiwrapper/WrappedScaleTextProperties.cxx b/chart2/source/controller/chartapiwrapper/WrappedScaleTextProperties.cxx index 8551915d9c88..60a026c2fcaf 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedScaleTextProperties.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedScaleTextProperties.cxx @@ -25,7 +25,8 @@ #include <com/sun/star/beans/PropertyAttribute.hpp> #include <com/sun/star/beans/XPropertyState.hpp> #include <com/sun/star/beans/XPropertySet.hpp> -#include <tools/diagnose_ex.h> +#include <utility> +#include <comphelper/diagnose_ex.hxx> using namespace ::com::sun::star; using ::com::sun::star::uno::Any; @@ -40,7 +41,7 @@ namespace { class WrappedScaleTextProperty : public WrappedProperty { public: - explicit WrappedScaleTextProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + explicit WrappedScaleTextProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual void setPropertyValue( const Any& rOuterValue, const Reference< beans::XPropertySet >& xInnerPropertySet ) const override; virtual Any getPropertyValue( const Reference< beans::XPropertySet >& xInnerPropertySet ) const override; @@ -52,15 +53,15 @@ private: } -WrappedScaleTextProperty::WrappedScaleTextProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : ::chart::WrappedProperty( "ScaleText" , OUString() ) - , m_spChart2ModelContact( spChart2ModelContact ) +WrappedScaleTextProperty::WrappedScaleTextProperty(std::shared_ptr<Chart2ModelContact> spChart2ModelContact) + : ::chart::WrappedProperty( u"ScaleText"_ustr , OUString() ) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) { } void WrappedScaleTextProperty::setPropertyValue( const Any& rOuterValue, const Reference< beans::XPropertySet >& xInnerPropertySet ) const { - static constexpr OUStringLiteral aRefSizeName = u"ReferencePageSize"; + static constexpr OUString aRefSizeName = u"ReferencePageSize"_ustr; if( !xInnerPropertySet.is() ) return; @@ -69,7 +70,7 @@ void WrappedScaleTextProperty::setPropertyValue( const Any& rOuterValue, const R if( ! (rOuterValue >>= bNewValue) ) { if( rOuterValue.hasValue() ) - throw lang::IllegalArgumentException( "Property ScaleText requires value of type boolean", nullptr, 0 ); + throw lang::IllegalArgumentException( u"Property ScaleText requires value of type boolean"_ustr, nullptr, 0 ); } try @@ -93,7 +94,7 @@ Any WrappedScaleTextProperty::getPropertyValue( const Reference< beans::XPropert Any aRet( getPropertyDefault( Reference< beans::XPropertyState >( xInnerPropertySet, uno::UNO_QUERY ) ) ); if( xInnerPropertySet.is() ) { - if( xInnerPropertySet->getPropertyValue( "ReferencePageSize" ).hasValue() ) + if( xInnerPropertySet->getPropertyValue( u"ReferencePageSize"_ustr ).hasValue() ) aRet <<= true; else aRet <<= false; diff --git a/chart2/source/controller/chartapiwrapper/WrappedSceneProperty.cxx b/chart2/source/controller/chartapiwrapper/WrappedSceneProperty.cxx index 2430dcba7ac6..cf7a820115c3 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedSceneProperty.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedSceneProperty.cxx @@ -19,8 +19,8 @@ #include "WrappedSceneProperty.hxx" #include "Chart2ModelContact.hxx" -#include <DiagramHelper.hxx> #include <BaseGFXHelper.hxx> +#include <utility> using namespace ::com::sun::star; using ::com::sun::star::uno::Any; @@ -36,9 +36,9 @@ void WrappedSceneProperty::addWrappedProperties( std::vector< std::unique_ptr<Wr } WrappedD3DTransformMatrixProperty::WrappedD3DTransformMatrixProperty( - const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact ) - : WrappedProperty("D3DTransformMatrix","D3DTransformMatrix") - , m_spChart2ModelContact( spChart2ModelContact ) + std::shared_ptr<Chart2ModelContact> spChart2ModelContact ) + : WrappedProperty(u"D3DTransformMatrix"_ustr,u"D3DTransformMatrix"_ustr) + , m_spChart2ModelContact(std::move( spChart2ModelContact )) { } @@ -48,7 +48,7 @@ WrappedD3DTransformMatrixProperty::~WrappedD3DTransformMatrixProperty() void WrappedD3DTransformMatrixProperty::setPropertyValue( const Any& rOuterValue, const Reference< beans::XPropertySet >& xInnerPropertySet ) const { - if( DiagramHelper::isPieOrDonutChart( m_spChart2ModelContact->getDiagram() ) ) + if( m_spChart2ModelContact->getDiagram()->isPieOrDonutChart() ) { drawing::HomogenMatrix aHM; if( rOuterValue >>= aHM ) @@ -73,7 +73,7 @@ void WrappedD3DTransformMatrixProperty::setPropertyValue( const Any& rOuterValue Any WrappedD3DTransformMatrixProperty::getPropertyValue( const Reference< beans::XPropertySet >& xInnerPropertySet ) const { - if( DiagramHelper::isPieOrDonutChart( m_spChart2ModelContact->getDiagram() ) ) + if( m_spChart2ModelContact->getDiagram()->isPieOrDonutChart() ) { uno::Any aAMatrix( WrappedProperty::getPropertyValue( xInnerPropertySet ) ); drawing::HomogenMatrix aHM; diff --git a/chart2/source/controller/chartapiwrapper/WrappedSceneProperty.hxx b/chart2/source/controller/chartapiwrapper/WrappedSceneProperty.hxx index 7e6679016537..31ef35abc566 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedSceneProperty.hxx +++ b/chart2/source/controller/chartapiwrapper/WrappedSceneProperty.hxx @@ -39,7 +39,7 @@ class WrappedD3DTransformMatrixProperty : public WrappedProperty { public: explicit WrappedD3DTransformMatrixProperty( - const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact); + std::shared_ptr<Chart2ModelContact> spChart2ModelContact); virtual ~WrappedD3DTransformMatrixProperty() override; virtual void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; diff --git a/chart2/source/controller/chartapiwrapper/WrappedSeriesAreaOrLineProperty.cxx b/chart2/source/controller/chartapiwrapper/WrappedSeriesAreaOrLineProperty.cxx index 88fa72696c03..5b073ca80152 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedSeriesAreaOrLineProperty.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedSeriesAreaOrLineProperty.cxx @@ -17,6 +17,8 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <utility> + #include "WrappedSeriesAreaOrLineProperty.hxx" #include "DataSeriesPointWrapper.hxx" @@ -25,13 +27,13 @@ namespace chart::wrapper WrappedSeriesAreaOrLineProperty::WrappedSeriesAreaOrLineProperty( const OUString& rOuterName - , const OUString& rInnerAreaTypeName - , const OUString& rInnerLineTypeName + , OUString aInnerAreaTypeName + , OUString aInnerLineTypeName , DataSeriesPointWrapper* pDataSeriesPointWrapper ) : WrappedProperty( rOuterName, OUString() ) , m_pDataSeriesPointWrapper( pDataSeriesPointWrapper ) - , m_aInnerAreaTypeName( rInnerAreaTypeName ) - , m_aInnerLineTypeName( rInnerLineTypeName ) + , m_aInnerAreaTypeName(std::move( aInnerAreaTypeName )) + , m_aInnerLineTypeName(std::move( aInnerLineTypeName )) { } WrappedSeriesAreaOrLineProperty::~WrappedSeriesAreaOrLineProperty() diff --git a/chart2/source/controller/chartapiwrapper/WrappedSeriesAreaOrLineProperty.hxx b/chart2/source/controller/chartapiwrapper/WrappedSeriesAreaOrLineProperty.hxx index ba77b6939f34..f3561e7361d4 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedSeriesAreaOrLineProperty.hxx +++ b/chart2/source/controller/chartapiwrapper/WrappedSeriesAreaOrLineProperty.hxx @@ -28,7 +28,7 @@ class WrappedSeriesAreaOrLineProperty : public WrappedProperty { public: WrappedSeriesAreaOrLineProperty( const OUString& rOuterName - , const OUString& rInnerAreaTypeName, const OUString& rInnerLineTypeName + , OUString aInnerAreaTypeName, OUString aInnerLineTypeName , DataSeriesPointWrapper* pDataSeriesPointWrapper ); virtual ~WrappedSeriesAreaOrLineProperty() override; diff --git a/chart2/source/controller/chartapiwrapper/WrappedSeriesOrDiagramProperty.hxx b/chart2/source/controller/chartapiwrapper/WrappedSeriesOrDiagramProperty.hxx index 88dc862ea2d9..61946ea5d75f 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedSeriesOrDiagramProperty.hxx +++ b/chart2/source/controller/chartapiwrapper/WrappedSeriesOrDiagramProperty.hxx @@ -20,13 +20,12 @@ #include <WrappedProperty.hxx> #include "Chart2ModelContact.hxx" -#include <DiagramHelper.hxx> +#include <DataSeries.hxx> #include <memory> +#include <utility> #include <vector> -namespace com::sun::star::chart2 { class XDataSeries; } - namespace chart::wrapper { @@ -46,10 +45,10 @@ public: virtual void setValueToSeries( const css::uno::Reference< css::beans::XPropertySet >& xSeriesPropertySet, const PROPERTYTYPE & aNewValue ) const =0; explicit WrappedSeriesOrDiagramProperty( const OUString& rName, const css::uno::Any& rDefaulValue - , const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact + , std::shared_ptr<Chart2ModelContact> spChart2ModelContact , tSeriesOrDiagramPropertyType ePropertyType ) : WrappedProperty(rName,OUString()) - , m_spChart2ModelContact(spChart2ModelContact) + , m_spChart2ModelContact(std::move(spChart2ModelContact)) , m_aOuterValue(rDefaulValue) , m_aDefaultValue(rDefaulValue) , m_ePropertyType( ePropertyType ) @@ -58,30 +57,31 @@ public: bool detectInnerValue( PROPERTYTYPE& rValue, bool& rHasAmbiguousValue ) const { - bool bHasDetectableInnerValue = false; rHasAmbiguousValue = false; - if( m_ePropertyType == DIAGRAM && - m_spChart2ModelContact ) + if( m_ePropertyType != DIAGRAM || !m_spChart2ModelContact ) + return false; + bool bHasDetectableInnerValue = false; + rtl::Reference<Diagram> xDiagram = m_spChart2ModelContact->getDiagram(); + if (!xDiagram) + return false; + std::vector< rtl::Reference< DataSeries > > aSeriesVector = + xDiagram->getDataSeries(); + for (auto const& series : aSeriesVector) { - std::vector< css::uno::Reference< css::chart2::XDataSeries > > aSeriesVector( - ::chart::DiagramHelper::getDataSeriesFromDiagram( m_spChart2ModelContact->getDiagram() ) ); - for (auto const& series : aSeriesVector) + PROPERTYTYPE aCurValue = getValueFromSeries( series ); + if( !bHasDetectableInnerValue ) + rValue = aCurValue; + else { - PROPERTYTYPE aCurValue = getValueFromSeries( css::uno::Reference< css::beans::XPropertySet >::query(series) ); - if( !bHasDetectableInnerValue ) - rValue = aCurValue; - else + if( rValue != aCurValue ) { - if( rValue != aCurValue ) - { - rHasAmbiguousValue = true; - break; - } - else - rValue = aCurValue; + rHasAmbiguousValue = true; + break; } - bHasDetectableInnerValue = true; + else + rValue = aCurValue; } + bHasDetectableInnerValue = true; } return bHasDetectableInnerValue; } @@ -90,15 +90,11 @@ public: if( m_ePropertyType == DIAGRAM && m_spChart2ModelContact ) { - std::vector< css::uno::Reference< css::chart2::XDataSeries > > aSeriesVector( - ::chart::DiagramHelper::getDataSeriesFromDiagram( m_spChart2ModelContact->getDiagram() ) ); + std::vector< rtl::Reference< DataSeries > > aSeriesVector = + m_spChart2ModelContact->getDiagram()->getDataSeries(); for (auto const& series : aSeriesVector) { - css::uno::Reference< css::beans::XPropertySet > xSeriesPropertySet(series, css::uno::UNO_QUERY); - if( xSeriesPropertySet.is() ) - { - setValueToSeries( xSeriesPropertySet, aNewValue ); - } + setValueToSeries( series, aNewValue ); } } } @@ -106,7 +102,7 @@ public: { PROPERTYTYPE aNewValue = PROPERTYTYPE(); if( ! (rOuterValue >>= aNewValue) ) - throw css::lang::IllegalArgumentException( "statistic property requires different type", nullptr, 0 ); + throw css::lang::IllegalArgumentException( u"statistic property requires different type"_ustr, nullptr, 0 ); if( m_ePropertyType == DIAGRAM ) { diff --git a/chart2/source/controller/chartapiwrapper/WrappedSplineProperties.cxx b/chart2/source/controller/chartapiwrapper/WrappedSplineProperties.cxx index 6d088a50bd81..f40b9edd7fb2 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedSplineProperties.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedSplineProperties.cxx @@ -20,7 +20,7 @@ #include "WrappedSplineProperties.hxx" #include "Chart2ModelContact.hxx" #include <FastPropertyIdRanges.hxx> -#include <DiagramHelper.hxx> +#include <ChartType.hxx> #include <WrappedProperty.hxx> #include <unonames.hxx> @@ -29,10 +29,10 @@ #include <com/sun/star/chart2/CurveStyle.hpp> #include <com/sun/star/beans/PropertyAttribute.hpp> #include <com/sun/star/beans/XPropertySet.hpp> +#include <utility> using namespace ::com::sun::star; using ::com::sun::star::uno::Any; -using ::com::sun::star::uno::Sequence; using ::com::sun::star::beans::Property; namespace chart::wrapper @@ -47,32 +47,30 @@ template< typename PROPERTYTYPE > class WrappedSplineProperty : public WrappedProperty { public: - explicit WrappedSplineProperty( const OUString& rOuterName, const OUString& rInnerName + explicit WrappedSplineProperty( const OUString& rOuterName, OUString aInnerName , const css::uno::Any& rDefaulValue - , const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact ) + , std::shared_ptr<Chart2ModelContact> spChart2ModelContact ) : WrappedProperty(rOuterName,OUString()) - , m_spChart2ModelContact(spChart2ModelContact) + , m_spChart2ModelContact(std::move(spChart2ModelContact)) , m_aOuterValue(rDefaulValue) , m_aDefaultValue(rDefaulValue) - , m_aOwnInnerName(rInnerName) + , m_aOwnInnerName(std::move(aInnerName)) { } bool detectInnerValue( PROPERTYTYPE& rValue, bool& rHasAmbiguousValue ) const { - bool bHasDetectableInnerValue = false; rHasAmbiguousValue = false; - Sequence< css::uno::Reference< css::chart2::XChartType > > aChartTypes( - ::chart::DiagramHelper::getChartTypesFromDiagram( m_spChart2ModelContact->getDiagram() ) ); - for( sal_Int32 nN = aChartTypes.getLength(); nN--; ) + rtl::Reference<Diagram> xDiagram = m_spChart2ModelContact->getDiagram(); + if (!xDiagram) + return false; + bool bHasDetectableInnerValue = false; + std::vector< rtl::Reference< ChartType > > aChartTypes = xDiagram->getChartTypes(); + for( sal_Int32 nN = aChartTypes.size(); nN--; ) { try { - uno::Reference<beans::XPropertySet> xChartTypePropertySet(aChartTypes[nN], uno::UNO_QUERY); - if (!xChartTypePropertySet.is()) - continue; - - Any aSingleValue = convertInnerToOuterValue( xChartTypePropertySet->getPropertyValue(m_aOwnInnerName) ); + Any aSingleValue = convertInnerToOuterValue( aChartTypes[nN]->getPropertyValue(m_aOwnInnerName) ); PROPERTYTYPE aCurValue = PROPERTYTYPE(); aSingleValue >>= aCurValue; if( !bHasDetectableInnerValue ) @@ -102,7 +100,7 @@ public: { PROPERTYTYPE aNewValue; if( ! (rOuterValue >>= aNewValue) ) - throw css::lang::IllegalArgumentException( "spline property requires different type", nullptr, 0 ); + throw css::lang::IllegalArgumentException( u"spline property requires different type"_ustr, nullptr, 0 ); m_aOuterValue = rOuterValue; @@ -114,17 +112,13 @@ public: if( !(bHasAmbiguousValue || aNewValue != aOldValue) ) return; - Sequence< css::uno::Reference< css::chart2::XChartType > > aChartTypes( - ::chart::DiagramHelper::getChartTypesFromDiagram( m_spChart2ModelContact->getDiagram() ) ); - for( sal_Int32 nN = aChartTypes.getLength(); nN--; ) + std::vector< rtl::Reference< ChartType > > aChartTypes = + m_spChart2ModelContact->getDiagram()->getChartTypes(); + for( sal_Int32 nN = aChartTypes.size(); nN--; ) { try { - css::uno::Reference< css::beans::XPropertySet > xChartTypePropertySet( aChartTypes[nN], css::uno::UNO_QUERY ); - if( xChartTypePropertySet.is() ) - { - xChartTypePropertySet->setPropertyValue(m_aOwnInnerName,convertOuterToInnerValue(uno::Any(aNewValue))); - } + aChartTypes[nN]->setPropertyValue(m_aOwnInnerName,convertOuterToInnerValue(uno::Any(aNewValue))); } catch( uno::Exception & ex ) { diff --git a/chart2/source/controller/chartapiwrapper/WrappedStatisticProperties.cxx b/chart2/source/controller/chartapiwrapper/WrappedStatisticProperties.cxx index bc83ba60df87..c17f6c50c263 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedStatisticProperties.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedStatisticProperties.cxx @@ -21,6 +21,7 @@ #include "WrappedSeriesOrDiagramProperty.hxx" #include <FastPropertyIdRanges.hxx> #include <RegressionCurveHelper.hxx> +#include <RegressionCurveModel.hxx> #include <ErrorBar.hxx> #include <StatisticsHelper.hxx> #include <unonames.hxx> @@ -31,7 +32,6 @@ #include <com/sun/star/chart/ErrorBarStyle.hpp> #include <com/sun/star/chart/ChartErrorIndicatorType.hpp> #include <com/sun/star/chart/ChartRegressionCurveType.hpp> -#include <com/sun/star/chart2/XChartDocument.hpp> #include <com/sun/star/chart2/data/XRangeXMLConversion.hpp> #include <com/sun/star/chart2/XRegressionCurveContainer.hpp> #include <utility> @@ -116,7 +116,7 @@ sal_Int32 lcl_getErrorBarStyle( const uno::Reference< beans::XPropertySet >& xEr { sal_Int32 nStyle = css::chart::ErrorBarStyle::NONE; if(xErrorBarProperties.is()) - xErrorBarProperties->getPropertyValue( "ErrorBarStyle" ) >>= nStyle; + xErrorBarProperties->getPropertyValue( u"ErrorBarStyle"_ustr ) >>= nStyle; return nStyle; } @@ -144,8 +144,7 @@ void lcl_ConvertRangeFromXML( lcl_getDataProviderFromContact( spChart2ModelContact ), uno::UNO_QUERY ); if( xConverter.is()) { - OUString aResult = xConverter->convertRangeFromXML( rInOutRange ); - rInOutRange = aResult; + rInOutRange = xConverter->convertRangeFromXML( rInOutRange ); } } } @@ -160,8 +159,7 @@ void lcl_ConvertRangeToXML( lcl_getDataProviderFromContact( spChart2ModelContact ), uno::UNO_QUERY ); if( xConverter.is()) { - OUString aResult = xConverter->convertRangeToXML( rInOutRange ); - rInOutRange = aResult; + rInOutRange = xConverter->convertRangeToXML( rInOutRange ); } } } @@ -189,9 +187,9 @@ protected: { xErrorBarProperties = new ::chart::ErrorBar; //default in new and old api are different - xErrorBarProperties->setPropertyValue( "ShowPositiveError" , uno::Any(false) ); - xErrorBarProperties->setPropertyValue( "ShowNegativeError" , uno::Any(false) ); - xErrorBarProperties->setPropertyValue( "ErrorBarStyle" , uno::Any(css::chart::ErrorBarStyle::NONE) ); + xErrorBarProperties->setPropertyValue( u"ShowPositiveError"_ustr , uno::Any(false) ); + xErrorBarProperties->setPropertyValue( u"ShowNegativeError"_ustr , uno::Any(false) ); + xErrorBarProperties->setPropertyValue( u"ErrorBarStyle"_ustr , uno::Any(css::chart::ErrorBarStyle::NONE) ); xSeriesPropertySet->setPropertyValue( CHART_UNONAME_ERRORBAR_Y , uno::Any( xErrorBarProperties ) ); } return xErrorBarProperties; @@ -218,7 +216,7 @@ private: WrappedConstantErrorLowProperty::WrappedConstantErrorLowProperty( std::shared_ptr< Chart2ModelContact > spChart2ModelContact, tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedStatisticProperty< double >( "ConstantErrorLow" + : WrappedStatisticProperty< double >( u"ConstantErrorLow"_ustr , uno::Any( 0.0 ), std::move(spChart2ModelContact), ePropertyType ) { } @@ -231,7 +229,7 @@ double WrappedConstantErrorLowProperty::getValueFromSeries( const Reference< bea if( xSeriesPropertySet.is() && ( xSeriesPropertySet->getPropertyValue( CHART_UNONAME_ERRORBAR_Y ) >>= xErrorBarProperties ) && xErrorBarProperties.is()) { if( lcl_getErrorBarStyle( xErrorBarProperties ) == css::chart::ErrorBarStyle::ABSOLUTE ) - xErrorBarProperties->getPropertyValue( "NegativeError" ) >>= aRet; + xErrorBarProperties->getPropertyValue( u"NegativeError"_ustr ) >>= aRet; else m_aOuterValue >>= aRet; } @@ -246,7 +244,7 @@ void WrappedConstantErrorLowProperty::setValueToSeries( const Reference< beans:: m_aOuterValue <<= aNewValue; if( lcl_getErrorBarStyle( xErrorBarProperties ) == css::chart::ErrorBarStyle::ABSOLUTE ) { - xErrorBarProperties->setPropertyValue( "NegativeError", m_aOuterValue ); + xErrorBarProperties->setPropertyValue( u"NegativeError"_ustr, m_aOuterValue ); } } } @@ -272,7 +270,7 @@ private: WrappedConstantErrorHighProperty::WrappedConstantErrorHighProperty( std::shared_ptr< Chart2ModelContact > spChart2ModelContact, tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedStatisticProperty< double >( "ConstantErrorHigh" + : WrappedStatisticProperty< double >( u"ConstantErrorHigh"_ustr , uno::Any( 0.0 ), std::move(spChart2ModelContact), ePropertyType ) { } @@ -285,7 +283,7 @@ double WrappedConstantErrorHighProperty::getValueFromSeries( const Reference< be if( xSeriesPropertySet.is() && ( xSeriesPropertySet->getPropertyValue( CHART_UNONAME_ERRORBAR_Y ) >>= xErrorBarProperties ) && xErrorBarProperties.is()) { if( lcl_getErrorBarStyle( xErrorBarProperties ) == css::chart::ErrorBarStyle::ABSOLUTE ) - xErrorBarProperties->getPropertyValue( "PositiveError" ) >>= aRet; + xErrorBarProperties->getPropertyValue( u"PositiveError"_ustr ) >>= aRet; else m_aOuterValue >>= aRet; } @@ -300,7 +298,7 @@ void WrappedConstantErrorHighProperty::setValueToSeries( const Reference< beans: m_aOuterValue <<= aNewValue; if( lcl_getErrorBarStyle( xErrorBarProperties ) == css::chart::ErrorBarStyle::ABSOLUTE ) { - xErrorBarProperties->setPropertyValue( "PositiveError" , m_aOuterValue ); + xErrorBarProperties->setPropertyValue( u"PositiveError"_ustr , m_aOuterValue ); } } } @@ -323,7 +321,7 @@ public: WrappedMeanValueProperty::WrappedMeanValueProperty( std::shared_ptr< Chart2ModelContact > spChart2ModelContact, tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedStatisticProperty< bool >( "MeanValue", uno::Any( false ), std::move(spChart2ModelContact), ePropertyType ) + : WrappedStatisticProperty< bool >( u"MeanValue"_ustr, uno::Any( false ), std::move(spChart2ModelContact), ePropertyType ) { } @@ -367,7 +365,7 @@ public: WrappedErrorCategoryProperty::WrappedErrorCategoryProperty( std::shared_ptr< Chart2ModelContact > spChart2ModelContact, tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedStatisticProperty< css::chart::ChartErrorCategory >( "ErrorCategory" + : WrappedStatisticProperty< css::chart::ChartErrorCategory >( u"ErrorCategory"_ustr , uno::Any( css::chart::ChartErrorCategory_NONE ), std::move(spChart2ModelContact), ePropertyType ) { } @@ -380,7 +378,7 @@ css::chart::ChartErrorCategory WrappedErrorCategoryProperty::getValueFromSeries( if( xSeriesPropertySet.is() && ( xSeriesPropertySet->getPropertyValue( CHART_UNONAME_ERRORBAR_Y ) >>= xErrorBarProperties ) && xErrorBarProperties.is()) { sal_Int32 nStyle = css::chart::ErrorBarStyle::NONE; - xErrorBarProperties->getPropertyValue( "ErrorBarStyle" ) >>= nStyle; + xErrorBarProperties->getPropertyValue( u"ErrorBarStyle"_ustr ) >>= nStyle; switch(nStyle) { case css::chart::ErrorBarStyle::NONE: @@ -444,7 +442,7 @@ void WrappedErrorCategoryProperty::setValueToSeries( const Reference< beans::XPr default: break; } - xErrorBarProperties->setPropertyValue( "ErrorBarStyle" , uno::Any(nNewStyle) ); + xErrorBarProperties->setPropertyValue( u"ErrorBarStyle"_ustr , uno::Any(nNewStyle) ); } namespace { @@ -468,7 +466,7 @@ private: WrappedPercentageErrorProperty::WrappedPercentageErrorProperty( std::shared_ptr< Chart2ModelContact > spChart2ModelContact, tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedStatisticProperty< double >( "PercentageError" + : WrappedStatisticProperty< double >( u"PercentageError"_ustr , uno::Any( 0.0 ), std::move(spChart2ModelContact), ePropertyType ) { } @@ -481,7 +479,7 @@ double WrappedPercentageErrorProperty::getValueFromSeries( const Reference< bean if( xSeriesPropertySet.is() && ( xSeriesPropertySet->getPropertyValue( CHART_UNONAME_ERRORBAR_Y ) >>= xErrorBarProperties ) && xErrorBarProperties.is()) { if( lcl_getErrorBarStyle( xErrorBarProperties ) == css::chart::ErrorBarStyle::RELATIVE ) - xErrorBarProperties->getPropertyValue( "PositiveError" ) >>= aRet; + xErrorBarProperties->getPropertyValue( u"PositiveError"_ustr ) >>= aRet; else m_aOuterValue >>= aRet; } @@ -495,8 +493,8 @@ void WrappedPercentageErrorProperty::setValueToSeries( const Reference< beans::X m_aOuterValue <<= aNewValue; if( lcl_getErrorBarStyle( xErrorBarProperties ) == css::chart::ErrorBarStyle::RELATIVE ) { - xErrorBarProperties->setPropertyValue( "PositiveError" , m_aOuterValue ); - xErrorBarProperties->setPropertyValue( "NegativeError" , m_aOuterValue ); + xErrorBarProperties->setPropertyValue( u"PositiveError"_ustr , m_aOuterValue ); + xErrorBarProperties->setPropertyValue( u"NegativeError"_ustr , m_aOuterValue ); } } } @@ -522,7 +520,7 @@ private: WrappedErrorMarginProperty::WrappedErrorMarginProperty( std::shared_ptr< Chart2ModelContact > spChart2ModelContact, tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedStatisticProperty< double >( "ErrorMargin" + : WrappedStatisticProperty< double >( u"ErrorMargin"_ustr , uno::Any( 0.0 ), std::move(spChart2ModelContact), ePropertyType ) { } @@ -535,7 +533,7 @@ double WrappedErrorMarginProperty::getValueFromSeries( const Reference< beans::X if( xSeriesPropertySet.is() && ( xSeriesPropertySet->getPropertyValue( CHART_UNONAME_ERRORBAR_Y ) >>= xErrorBarProperties ) && xErrorBarProperties.is()) { if( lcl_getErrorBarStyle( xErrorBarProperties ) == css::chart::ErrorBarStyle::ERROR_MARGIN ) - xErrorBarProperties->getPropertyValue( "PositiveError" ) >>= aRet; + xErrorBarProperties->getPropertyValue( u"PositiveError"_ustr ) >>= aRet; else m_aOuterValue >>= aRet; } @@ -549,8 +547,8 @@ void WrappedErrorMarginProperty::setValueToSeries( const Reference< beans::XProp m_aOuterValue <<= aNewValue; if( lcl_getErrorBarStyle( xErrorBarProperties ) == css::chart::ErrorBarStyle::ERROR_MARGIN ) { - xErrorBarProperties->setPropertyValue( "PositiveError" , m_aOuterValue ); - xErrorBarProperties->setPropertyValue( "NegativeError" , m_aOuterValue ); + xErrorBarProperties->setPropertyValue( u"PositiveError"_ustr , m_aOuterValue ); + xErrorBarProperties->setPropertyValue( u"NegativeError"_ustr , m_aOuterValue ); } } } @@ -573,7 +571,7 @@ public: WrappedErrorIndicatorProperty::WrappedErrorIndicatorProperty( std::shared_ptr< Chart2ModelContact > spChart2ModelContact, tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedStatisticProperty< css::chart::ChartErrorIndicatorType >( "ErrorIndicator" + : WrappedStatisticProperty< css::chart::ChartErrorIndicatorType >( u"ErrorIndicator"_ustr , uno::Any( css::chart::ChartErrorIndicatorType_NONE ), std::move(spChart2ModelContact), ePropertyType ) { } @@ -587,8 +585,8 @@ css::chart::ChartErrorIndicatorType WrappedErrorIndicatorProperty::getValueFromS { bool bPositive = false; bool bNegative = false; - xErrorBarProperties->getPropertyValue( "ShowPositiveError" ) >>= bPositive; - xErrorBarProperties->getPropertyValue( "ShowNegativeError" ) >>= bNegative; + xErrorBarProperties->getPropertyValue( u"ShowPositiveError"_ustr ) >>= bPositive; + xErrorBarProperties->getPropertyValue( u"ShowNegativeError"_ustr ) >>= bNegative; if( bPositive && bNegative ) aRet = css::chart::ChartErrorIndicatorType_TOP_AND_BOTTOM; @@ -623,8 +621,8 @@ void WrappedErrorIndicatorProperty::setValueToSeries( const Reference< beans::XP break; } - xErrorBarProperties->setPropertyValue( "ShowPositiveError" , uno::Any(bPositive) ); - xErrorBarProperties->setPropertyValue( "ShowNegativeError" , uno::Any(bNegative) ); + xErrorBarProperties->setPropertyValue( u"ShowPositiveError"_ustr , uno::Any(bPositive) ); + xErrorBarProperties->setPropertyValue( u"ShowNegativeError"_ustr , uno::Any(bNegative) ); } namespace { @@ -646,7 +644,7 @@ public: WrappedErrorBarStyleProperty::WrappedErrorBarStyleProperty( std::shared_ptr< Chart2ModelContact > spChart2ModelContact, tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedStatisticProperty< sal_Int32 >( "ErrorBarStyle" + : WrappedStatisticProperty< sal_Int32 >( u"ErrorBarStyle"_ustr , uno::Any( css::chart::ErrorBarStyle::NONE ), std::move(spChart2ModelContact), ePropertyType ) { } @@ -658,7 +656,7 @@ sal_Int32 WrappedErrorBarStyleProperty::getValueFromSeries( const Reference< bea uno::Reference< beans::XPropertySet > xErrorBarProperties; if( xSeriesPropertySet.is() && ( xSeriesPropertySet->getPropertyValue( CHART_UNONAME_ERRORBAR_Y ) >>= xErrorBarProperties ) && xErrorBarProperties.is()) { - xErrorBarProperties->getPropertyValue( "ErrorBarStyle" ) >>= nRet; + xErrorBarProperties->getPropertyValue( u"ErrorBarStyle"_ustr ) >>= nRet; } return nRet; } @@ -670,7 +668,7 @@ void WrappedErrorBarStyleProperty::setValueToSeries( const Reference< beans::XPr uno::Reference< beans::XPropertySet > xErrorBarProperties( getOrCreateErrorBarProperties(xSeriesPropertySet) ); if( xErrorBarProperties.is() ) { - xErrorBarProperties->setPropertyValue( "ErrorBarStyle" , uno::Any( nNewValue )); + xErrorBarProperties->setPropertyValue( u"ErrorBarStyle"_ustr , uno::Any( nNewValue )); } } @@ -692,7 +690,7 @@ public: WrappedErrorBarRangePositiveProperty::WrappedErrorBarRangePositiveProperty( std::shared_ptr< Chart2ModelContact > spChart2ModelContact, tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedStatisticProperty< OUString >( "ErrorBarRangePositive" + : WrappedStatisticProperty< OUString >( u"ErrorBarRangePositive"_ustr , uno::Any( OUString() ), std::move(spChart2ModelContact), ePropertyType ) { } @@ -730,7 +728,7 @@ void WrappedErrorBarRangePositiveProperty::setValueToSeries( const Reference< be if( xDataSource.is() && xDataProvider.is()) { OUString aTmp( aNewValue ); - OUString aXMLRange( aNewValue ); + const OUString& aXMLRange( aNewValue ); lcl_ConvertRangeFromXML( aTmp, m_spChart2ModelContact ); StatisticsHelper::setErrorDataSequence( xDataSource, xDataProvider, aTmp, true /* positive */, true /* y-error */, &aXMLRange ); @@ -756,7 +754,7 @@ public: WrappedErrorBarRangeNegativeProperty::WrappedErrorBarRangeNegativeProperty( std::shared_ptr< Chart2ModelContact > spChart2ModelContact, tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedStatisticProperty< OUString >( "ErrorBarRangeNegative" + : WrappedStatisticProperty< OUString >( u"ErrorBarRangeNegative"_ustr , uno::Any( OUString() ), std::move(spChart2ModelContact), ePropertyType ) { } @@ -794,7 +792,7 @@ void WrappedErrorBarRangeNegativeProperty::setValueToSeries( const Reference< be if( xDataSource.is() && xDataProvider.is()) { OUString aTmp( aNewValue ); - OUString aXMLRange( aNewValue ); + const OUString& aXMLRange( aNewValue ); lcl_ConvertRangeFromXML( aTmp, m_spChart2ModelContact ); StatisticsHelper::setErrorDataSequence( xDataSource, xDataProvider, aTmp, false /* positive */, true /* y-error */, &aXMLRange ); @@ -820,7 +818,7 @@ public: WrappedRegressionCurvesProperty::WrappedRegressionCurvesProperty( std::shared_ptr< Chart2ModelContact > spChart2ModelContact, tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedStatisticProperty< css::chart::ChartRegressionCurveType >( "RegressionCurves" + : WrappedStatisticProperty< css::chart::ChartRegressionCurveType >( u"RegressionCurves"_ustr , lcl_getRegressionDefault(), std::move(spChart2ModelContact), ePropertyType ) { } @@ -840,9 +838,10 @@ css::chart::ChartRegressionCurveType WrappedRegressionCurvesProperty::getValueFr void WrappedRegressionCurvesProperty::setValueToSeries( const Reference< beans::XPropertySet >& xSeriesPropertySet, const css::chart::ChartRegressionCurveType& aNewValue ) const { uno::Reference< chart2::XRegressionCurveContainer > xRegressionCurveContainer( xSeriesPropertySet, uno::UNO_QUERY ); - uno::Reference< chart2::XRegressionCurve > xRegressionCurve( xSeriesPropertySet, uno::UNO_QUERY ); - - if( xRegressionCurveContainer.is() && xRegressionCurve.is() ) + if (!xRegressionCurveContainer) + return; + rtl::Reference< ::chart::RegressionCurveModel> xRegressionCurve = RegressionCurveHelper::getFirstCurveNotMeanValueLine( xRegressionCurveContainer ); + if( xRegressionCurve.is() ) { SvxChartRegress eNewRegressionType = lcl_getRegressionType( aNewValue ); @@ -888,10 +887,10 @@ WrappedStatisticPropertySetProperty::WrappedStatisticPropertySetProperty( , tSeriesOrDiagramPropertyType ePropertyType ) : WrappedStatisticProperty< Reference< beans::XPropertySet > >( (ePropertySetType == PROPERTY_SET_TYPE_REGRESSION) - ? OUString("DataRegressionProperties") + ? u"DataRegressionProperties"_ustr : (ePropertySetType == PROPERTY_SET_TYPE_ERROR_BAR) - ? OUString("DataErrorProperties") - : OUString("DataMeanValueProperties") + ? u"DataErrorProperties"_ustr + : u"DataMeanValueProperties"_ustr , uno::Any(), std::move(spChart2ModelContact), ePropertyType ) , m_eType( ePropertySetType ) { @@ -906,7 +905,7 @@ Reference< beans::XPropertySet > WrappedStatisticPropertySetProperty::getValueFr { case PROPERTY_SET_TYPE_REGRESSION: if( xRegCnt.is() ) - xResult.set( RegressionCurveHelper::getFirstCurveNotMeanValueLine( xRegCnt ), uno::UNO_QUERY ); + xResult = RegressionCurveHelper::getFirstCurveNotMeanValueLine( xRegCnt ); break; case PROPERTY_SET_TYPE_ERROR_BAR: if( xSeriesPropertySet.is()) @@ -914,7 +913,7 @@ Reference< beans::XPropertySet > WrappedStatisticPropertySetProperty::getValueFr break; case PROPERTY_SET_TYPE_MEAN_VALUE: if( xRegCnt.is() ) - xResult.set( RegressionCurveHelper::getMeanValueLine( xRegCnt ), uno::UNO_QUERY ); + xResult = RegressionCurveHelper::getMeanValueLine( xRegCnt ); break; } diff --git a/chart2/source/controller/chartapiwrapper/WrappedStockProperties.cxx b/chart2/source/controller/chartapiwrapper/WrappedStockProperties.cxx index 3a8068ec984a..afd0d0d7e85a 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedStockProperties.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedStockProperties.cxx @@ -20,15 +20,14 @@ #include "WrappedStockProperties.hxx" #include "Chart2ModelContact.hxx" #include <FastPropertyIdRanges.hxx> -#include <DiagramHelper.hxx> +#include <DataSeries.hxx> #include <ControllerLockGuard.hxx> #include <WrappedProperty.hxx> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/chart2/XChartDocument.hpp> #include <com/sun/star/beans/PropertyAttribute.hpp> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> #include <ChartTypeManager.hxx> #include <ChartTypeTemplate.hxx> +#include <utility> using namespace ::com::sun::star; using ::com::sun::star::uno::Reference; @@ -43,14 +42,14 @@ class WrappedStockProperty : public WrappedProperty { public: explicit WrappedStockProperty( const OUString& rOuterName - , const css::uno::Any& rDefaulValue - , const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact ); + , css::uno::Any aDefaultValue + , std::shared_ptr<Chart2ModelContact> spChart2ModelContact ); void setPropertyValue( const css::uno::Any& rOuterValue, const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; css::uno::Any getPropertyDefault( const css::uno::Reference< css::beans::XPropertyState >& xInnerPropertyState ) const override; - virtual uno::Reference< chart2::XChartTypeTemplate > getNewTemplate( bool bNewValue, const OUString& rCurrentTemplate, const Reference< lang::XMultiServiceFactory >& xFactory ) const = 0; + virtual rtl::Reference< ::chart::ChartTypeTemplate > getNewTemplate( bool bNewValue, const OUString& rCurrentTemplate, const rtl::Reference< ::chart::ChartTypeManager >& xFactory ) const = 0; protected: std::shared_ptr< Chart2ModelContact > m_spChart2ModelContact; @@ -61,11 +60,11 @@ protected: } WrappedStockProperty::WrappedStockProperty( const OUString& rOuterName - , const css::uno::Any& rDefaulValue - , const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact ) + , css::uno::Any aDefaultValue + , std::shared_ptr<Chart2ModelContact> spChart2ModelContact ) : WrappedProperty(rOuterName,OUString()) - , m_spChart2ModelContact(spChart2ModelContact) - , m_aDefaultValue(rDefaulValue) + , m_spChart2ModelContact(std::move(spChart2ModelContact)) + , m_aDefaultValue(std::move(aDefaultValue)) { } @@ -73,21 +72,23 @@ void WrappedStockProperty::setPropertyValue( const css::uno::Any& rOuterValue, c { bool bNewValue = false; if( ! (rOuterValue >>= bNewValue) ) - throw lang::IllegalArgumentException( "stock properties require type sal_Bool", nullptr, 0 ); + throw lang::IllegalArgumentException( u"stock properties require type sal_Bool"_ustr, nullptr, 0 ); m_aOuterValue = rOuterValue; rtl::Reference< ChartModel > xChartDoc( m_spChart2ModelContact->getDocumentModel() ); rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); - sal_Int32 nDimension = ::chart::DiagramHelper::getDimension( xDiagram ); - if( !(xChartDoc.is() && xDiagram.is() && nDimension==2) ) + if( !xChartDoc || !xDiagram ) + return; + sal_Int32 nDimension = xDiagram->getDimension(); + if( nDimension != 2 ) return; rtl::Reference< ::chart::ChartTypeManager > xChartTypeManager = xChartDoc->getTypeManager(); - DiagramHelper::tTemplateWithServiceName aTemplateAndService = - DiagramHelper::getTemplateForDiagram( xDiagram, xChartTypeManager ); + Diagram::tTemplateWithServiceName aTemplateAndService = + xDiagram->getTemplate( xChartTypeManager ); - uno::Reference< chart2::XChartTypeTemplate > xTemplate = + rtl::Reference< ::chart::ChartTypeTemplate > xTemplate = getNewTemplate( bNewValue, aTemplateAndService.sServiceName, xChartTypeManager ); if(!xTemplate.is()) @@ -119,13 +120,13 @@ public: css::uno::Any getPropertyValue( const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; - uno::Reference< chart2::XChartTypeTemplate > getNewTemplate( bool bNewValue, const OUString& rCurrentTemplate, const Reference< lang::XMultiServiceFactory >& xFactory ) const override; + rtl::Reference< ::chart::ChartTypeTemplate > getNewTemplate( bool bNewValue, const OUString& rCurrentTemplate, const rtl::Reference< ::chart::ChartTypeManager >& xFactory ) const override; }; } WrappedVolumeProperty::WrappedVolumeProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : WrappedStockProperty( "Volume", uno::Any(false) , spChart2ModelContact ) + : WrappedStockProperty( u"Volume"_ustr, uno::Any(false) , spChart2ModelContact ) { } @@ -135,13 +136,13 @@ css::uno::Any WrappedVolumeProperty::getPropertyValue( const css::uno::Reference rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); if( xDiagram.is() && xChartDoc.is() ) { - std::vector< uno::Reference< chart2::XDataSeries > > aSeriesVector( - DiagramHelper::getDataSeriesFromDiagram( xDiagram ) ); + std::vector< rtl::Reference< DataSeries > > aSeriesVector = + xDiagram->getDataSeries(); if( !aSeriesVector.empty() ) { rtl::Reference< ::chart::ChartTypeManager > xChartTypeManager = xChartDoc->getTypeManager(); - DiagramHelper::tTemplateWithServiceName aTemplateAndService = - DiagramHelper::getTemplateForDiagram( xDiagram, xChartTypeManager ); + Diagram::tTemplateWithServiceName aTemplateAndService = + xDiagram->getTemplate( xChartTypeManager ); if( aTemplateAndService.sServiceName == "com.sun.star.chart2.template.StockVolumeLowHighClose" || aTemplateAndService.sServiceName == "com.sun.star.chart2.template.StockVolumeOpenLowHighClose" ) @@ -155,9 +156,9 @@ css::uno::Any WrappedVolumeProperty::getPropertyValue( const css::uno::Reference return m_aOuterValue; } -uno::Reference< chart2::XChartTypeTemplate > WrappedVolumeProperty::getNewTemplate( bool bNewValue, const OUString& rCurrentTemplate, const Reference< lang::XMultiServiceFactory >& xFactory ) const +rtl::Reference< ::chart::ChartTypeTemplate > WrappedVolumeProperty::getNewTemplate( bool bNewValue, const OUString& rCurrentTemplate, const rtl::Reference< ::chart::ChartTypeManager >& xFactory ) const { - uno::Reference< chart2::XChartTypeTemplate > xTemplate; + rtl::Reference< ::chart::ChartTypeTemplate > xTemplate; if(!xFactory.is()) return xTemplate; @@ -165,16 +166,16 @@ uno::Reference< chart2::XChartTypeTemplate > WrappedVolumeProperty::getNewTempla if( bNewValue ) //add volume { if( rCurrentTemplate == "com.sun.star.chart2.template.StockLowHighClose" ) - xTemplate.set( xFactory->createInstance( "com.sun.star.chart2.template.StockVolumeLowHighClose" ), uno::UNO_QUERY ); + xTemplate = xFactory->createTemplate( u"com.sun.star.chart2.template.StockVolumeLowHighClose"_ustr ); else if( rCurrentTemplate == "com.sun.star.chart2.template.StockOpenLowHighClose" ) - xTemplate.set( xFactory->createInstance( "com.sun.star.chart2.template.StockVolumeOpenLowHighClose" ), uno::UNO_QUERY ); + xTemplate = xFactory->createTemplate( u"com.sun.star.chart2.template.StockVolumeOpenLowHighClose"_ustr ); } else //remove volume { if( rCurrentTemplate == "com.sun.star.chart2.template.StockVolumeLowHighClose" ) - xTemplate.set( xFactory->createInstance( "com.sun.star.chart2.template.StockLowHighClose" ), uno::UNO_QUERY ); + xTemplate = xFactory->createTemplate( u"com.sun.star.chart2.template.StockLowHighClose"_ustr ); else if( rCurrentTemplate == "com.sun.star.chart2.template.StockVolumeOpenLowHighClose" ) - xTemplate.set( xFactory->createInstance( "com.sun.star.chart2.template.StockOpenLowHighClose" ), uno::UNO_QUERY ); + xTemplate = xFactory->createTemplate( u"com.sun.star.chart2.template.StockOpenLowHighClose"_ustr ); } return xTemplate; } @@ -188,13 +189,13 @@ public: css::uno::Any getPropertyValue( const css::uno::Reference< css::beans::XPropertySet >& xInnerPropertySet ) const override; - uno::Reference< chart2::XChartTypeTemplate > getNewTemplate( bool bNewValue, const OUString& rCurrentTemplate, const Reference< lang::XMultiServiceFactory >& xFactory ) const override; + rtl::Reference< ::chart::ChartTypeTemplate > getNewTemplate( bool bNewValue, const OUString& rCurrentTemplate, const rtl::Reference< ChartTypeManager >& xFactory ) const override; }; } WrappedUpDownProperty::WrappedUpDownProperty(const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact) - : WrappedStockProperty( "UpDown", uno::Any(false) , spChart2ModelContact ) + : WrappedStockProperty( u"UpDown"_ustr, uno::Any(false) , spChart2ModelContact ) { } @@ -204,13 +205,13 @@ css::uno::Any WrappedUpDownProperty::getPropertyValue( const css::uno::Reference rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); if( xDiagram.is() && xChartDoc.is() ) { - std::vector< uno::Reference< chart2::XDataSeries > > aSeriesVector( - DiagramHelper::getDataSeriesFromDiagram( xDiagram ) ); + std::vector< rtl::Reference< DataSeries > > aSeriesVector = + xDiagram->getDataSeries(); if( !aSeriesVector.empty() ) { rtl::Reference< ::chart::ChartTypeManager > xChartTypeManager = xChartDoc->getTypeManager(); - DiagramHelper::tTemplateWithServiceName aTemplateAndService = - DiagramHelper::getTemplateForDiagram( xDiagram, xChartTypeManager ); + Diagram::tTemplateWithServiceName aTemplateAndService = + xDiagram->getTemplate( xChartTypeManager ); if( aTemplateAndService.sServiceName == "com.sun.star.chart2.template.StockOpenLowHighClose" || aTemplateAndService.sServiceName == "com.sun.star.chart2.template.StockVolumeOpenLowHighClose" ) @@ -223,22 +224,22 @@ css::uno::Any WrappedUpDownProperty::getPropertyValue( const css::uno::Reference } return m_aOuterValue; } -uno::Reference< chart2::XChartTypeTemplate > WrappedUpDownProperty::getNewTemplate( bool bNewValue, const OUString& rCurrentTemplate, const Reference< lang::XMultiServiceFactory >& xFactory ) const +rtl::Reference< ::chart::ChartTypeTemplate > WrappedUpDownProperty::getNewTemplate( bool bNewValue, const OUString& rCurrentTemplate, const rtl::Reference< ChartTypeManager >& xFactory ) const { - uno::Reference< chart2::XChartTypeTemplate > xTemplate; + rtl::Reference< ::chart::ChartTypeTemplate > xTemplate; if( bNewValue ) //add open series { if( rCurrentTemplate == "com.sun.star.chart2.template.StockLowHighClose" ) - xTemplate.set( xFactory->createInstance( "com.sun.star.chart2.template.StockOpenLowHighClose" ), uno::UNO_QUERY ); + xTemplate = xFactory->createTemplate( u"com.sun.star.chart2.template.StockOpenLowHighClose"_ustr ); else if( rCurrentTemplate == "com.sun.star.chart2.template.StockVolumeLowHighClose" ) - xTemplate.set( xFactory->createInstance( "com.sun.star.chart2.template.StockVolumeOpenLowHighClose" ), uno::UNO_QUERY ); + xTemplate = xFactory->createTemplate( u"com.sun.star.chart2.template.StockVolumeOpenLowHighClose"_ustr ); } else //remove open series { if( rCurrentTemplate == "com.sun.star.chart2.template.StockOpenLowHighClose" ) - xTemplate.set( xFactory->createInstance( "com.sun.star.chart2.template.StockLowHighClose" ), uno::UNO_QUERY ); + xTemplate = xFactory->createTemplate( u"com.sun.star.chart2.template.StockLowHighClose"_ustr ); else if( rCurrentTemplate == "com.sun.star.chart2.template.StockVolumeOpenLowHighClose" ) - xTemplate.set( xFactory->createInstance( "com.sun.star.chart2.template.StockVolumeLowHighClose" ), uno::UNO_QUERY ); + xTemplate = xFactory->createTemplate( u"com.sun.star.chart2.template.StockVolumeLowHighClose"_ustr ); } return xTemplate; } diff --git a/chart2/source/controller/chartapiwrapper/WrappedSymbolProperties.cxx b/chart2/source/controller/chartapiwrapper/WrappedSymbolProperties.cxx index 484861b68338..19c05e5274bc 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedSymbolProperties.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedSymbolProperties.cxx @@ -20,6 +20,7 @@ #include "WrappedSymbolProperties.hxx" #include "WrappedSeriesOrDiagramProperty.hxx" #include <FastPropertyIdRanges.hxx> +#include <ChartType.hxx> #include <ChartTypeHelper.hxx> #include <com/sun/star/chart2/Symbol.hpp> #include <com/sun/star/chart2/SymbolStyle.hpp> @@ -31,7 +32,7 @@ #include <vcl/GraphicLoader.hxx> #include <vcl/graph.hxx> -#include <tools/diagnose_ex.h> +#include <comphelper/diagnose_ex.hxx> using namespace ::com::sun::star; using ::com::sun::star::uno::Any; @@ -117,14 +118,12 @@ sal_Int32 lcl_getSymbolType( const css::chart2::Symbol& rSymbol ) case chart2::SymbolStyle_NONE: break; case chart2::SymbolStyle_AUTO: + case chart2::SymbolStyle_POLYGON://new feature nSymbol = css::chart::ChartSymbolType::AUTO; break; case chart2::SymbolStyle_STANDARD: nSymbol = rSymbol.StandardSymbol%15; break; - case chart2::SymbolStyle_POLYGON://new feature - nSymbol = css::chart::ChartSymbolType::AUTO; - break; case chart2::SymbolStyle_GRAPHIC: nSymbol = css::chart::ChartSymbolType::BITMAPURL; break; @@ -215,7 +214,7 @@ void WrappedSymbolProperties::addWrappedPropertiesForDiagram( std::vector< std:: WrappedSymbolTypeProperty::WrappedSymbolTypeProperty( const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact, tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedSeriesOrDiagramProperty< sal_Int32 >( "SymbolType" + : WrappedSeriesOrDiagramProperty< sal_Int32 >( u"SymbolType"_ustr , uno::Any( css::chart::ChartSymbolType::NONE ) , spChart2ModelContact , ePropertyType ) @@ -227,7 +226,7 @@ sal_Int32 WrappedSymbolTypeProperty::getValueFromSeries( const Reference< beans: sal_Int32 aRet = 0; m_aDefaultValue >>= aRet; chart2::Symbol aSymbol; - if( xSeriesPropertySet.is() && ( xSeriesPropertySet->getPropertyValue("Symbol") >>= aSymbol ) ) + if( xSeriesPropertySet.is() && ( xSeriesPropertySet->getPropertyValue(u"Symbol"_ustr) >>= aSymbol ) ) aRet = lcl_getSymbolType( aSymbol ); return aRet; } @@ -238,10 +237,10 @@ void WrappedSymbolTypeProperty::setValueToSeries( const Reference< beans::XPrope return; chart2::Symbol aSymbol; - xSeriesPropertySet->getPropertyValue("Symbol") >>= aSymbol; + xSeriesPropertySet->getPropertyValue(u"Symbol"_ustr) >>= aSymbol; lcl_setSymbolTypeToSymbol( nSymbolType, aSymbol ); - xSeriesPropertySet->setPropertyValue( "Symbol", uno::Any( aSymbol ) ); + xSeriesPropertySet->setPropertyValue( u"Symbol"_ustr, uno::Any( aSymbol ) ); } Any WrappedSymbolTypeProperty::getPropertyValue( const Reference< beans::XPropertySet >& xInnerPropertySet ) const @@ -285,9 +284,9 @@ beans::PropertyState WrappedSymbolTypeProperty::getPropertyState( const Referenc m_spChart2ModelContact) { rtl::Reference< ::chart::Diagram > xDiagram( m_spChart2ModelContact->getDiagram() ); - Reference< chart2::XDataSeries > xSeries( xInnerPropertyState, uno::UNO_QUERY ); - Reference< chart2::XChartType > xChartType( DiagramHelper::getChartTypeOfSeries( xDiagram, xSeries ) ); - if( ChartTypeHelper::isSupportingSymbolProperties( xChartType, 2 ) ) + rtl::Reference< ::chart::DataSeries > xSeries( dynamic_cast<DataSeries*>(xInnerPropertyState.get()) ); + rtl::Reference< ChartType > xChartType( xDiagram->getChartTypeOfSeries( xSeries ) ); + if (xChartType.is() && xChartType->isSupportingSymbolProperties(2)) return beans::PropertyState_DIRECT_VALUE; } return WrappedProperty::getPropertyState( xInnerPropertyState ); @@ -296,7 +295,7 @@ beans::PropertyState WrappedSymbolTypeProperty::getPropertyState( const Referenc WrappedSymbolBitmapURLProperty::WrappedSymbolBitmapURLProperty( const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact, tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedSeriesOrDiagramProperty<OUString>("SymbolBitmapURL", + : WrappedSeriesOrDiagramProperty<OUString>(u"SymbolBitmapURL"_ustr, uno::Any(OUString()), spChart2ModelContact, ePropertyType) { } @@ -314,13 +313,13 @@ void WrappedSymbolBitmapURLProperty::setValueToSeries( return; chart2::Symbol aSymbol; - if (xSeriesPropertySet->getPropertyValue("Symbol") >>= aSymbol) + if (xSeriesPropertySet->getPropertyValue(u"Symbol"_ustr) >>= aSymbol) { if (!xNewGraphicURL.isEmpty()) { Graphic aGraphic = vcl::graphic::loadFromURL(xNewGraphicURL); aSymbol.Graphic.set(aGraphic.GetXGraphic()); - xSeriesPropertySet->setPropertyValue("Symbol", uno::Any(aSymbol)); + xSeriesPropertySet->setPropertyValue(u"Symbol"_ustr, uno::Any(aSymbol)); } } } @@ -328,7 +327,7 @@ void WrappedSymbolBitmapURLProperty::setValueToSeries( WrappedSymbolBitmapProperty::WrappedSymbolBitmapProperty( const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact, tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedSeriesOrDiagramProperty<uno::Reference<graphic::XGraphic>>("SymbolBitmap", + : WrappedSeriesOrDiagramProperty<uno::Reference<graphic::XGraphic>>(u"SymbolBitmap"_ustr, uno::Any(uno::Reference<graphic::XGraphic>()), spChart2ModelContact, ePropertyType) { } @@ -339,7 +338,7 @@ uno::Reference<graphic::XGraphic> WrappedSymbolBitmapProperty::getValueFromSerie m_aDefaultValue >>= xGraphic; chart2::Symbol aSymbol; - if (xSeriesPropertySet.is() && (xSeriesPropertySet->getPropertyValue("Symbol") >>= aSymbol) + if (xSeriesPropertySet.is() && (xSeriesPropertySet->getPropertyValue(u"Symbol"_ustr) >>= aSymbol) && aSymbol.Graphic.is()) { xGraphic = aSymbol.Graphic; @@ -355,12 +354,12 @@ void WrappedSymbolBitmapProperty::setValueToSeries( return; chart2::Symbol aSymbol; - if (xSeriesPropertySet->getPropertyValue("Symbol") >>= aSymbol) + if (xSeriesPropertySet->getPropertyValue(u"Symbol"_ustr) >>= aSymbol) { if (xNewGraphic.is()) { aSymbol.Graphic.set(xNewGraphic); - xSeriesPropertySet->setPropertyValue("Symbol", uno::Any(aSymbol)); + xSeriesPropertySet->setPropertyValue(u"Symbol"_ustr, uno::Any(aSymbol)); } } } @@ -388,7 +387,7 @@ void lcl_correctSymbolSizeForBitmaps( chart2::Symbol& rSymbol ) bool bFoundSize = false; try { - if( xProp->getPropertyValue( "Size100thMM" ) >>= aSize ) + if( xProp->getPropertyValue( u"Size100thMM"_ustr ) >>= aSize ) { if( aSize.Width == 0 && aSize.Height == 0 ) aSize = aDefaultSize; @@ -404,7 +403,7 @@ void lcl_correctSymbolSizeForBitmaps( chart2::Symbol& rSymbol ) if(!bFoundSize) { awt::Size aAWTPixelSize(10,10); - if( xProp->getPropertyValue( "SizePixel" ) >>= aAWTPixelSize ) + if( xProp->getPropertyValue( u"SizePixel"_ustr ) >>= aAWTPixelSize ) { Size aPixelSize(aAWTPixelSize.Width,aAWTPixelSize.Height); Size aNewSize = o3tl::convert(aPixelSize, o3tl::Length::pt, o3tl::Length::mm100); @@ -429,7 +428,7 @@ void lcl_correctSymbolSizeForBitmaps( chart2::Symbol& rSymbol ) WrappedSymbolSizeProperty::WrappedSymbolSizeProperty( const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact, tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedSeriesOrDiagramProperty< awt::Size >( "SymbolSize" + : WrappedSeriesOrDiagramProperty< awt::Size >( u"SymbolSize"_ustr , uno::Any( awt::Size(250,250) ), spChart2ModelContact, ePropertyType ) { } @@ -439,7 +438,7 @@ awt::Size WrappedSymbolSizeProperty::getValueFromSeries( const Reference< beans: awt::Size aRet; m_aDefaultValue >>= aRet; chart2::Symbol aSymbol; - if( xSeriesPropertySet.is() && ( xSeriesPropertySet->getPropertyValue("Symbol") >>= aSymbol )) + if( xSeriesPropertySet.is() && ( xSeriesPropertySet->getPropertyValue(u"Symbol"_ustr) >>= aSymbol )) aRet = aSymbol.Size; return aRet; } @@ -452,11 +451,11 @@ void WrappedSymbolSizeProperty::setValueToSeries( return; chart2::Symbol aSymbol; - if( xSeriesPropertySet->getPropertyValue("Symbol") >>= aSymbol ) + if( xSeriesPropertySet->getPropertyValue(u"Symbol"_ustr) >>= aSymbol ) { aSymbol.Size = aNewSize; lcl_correctSymbolSizeForBitmaps(aSymbol); - xSeriesPropertySet->setPropertyValue( "Symbol", uno::Any( aSymbol ) ); + xSeriesPropertySet->setPropertyValue( u"Symbol"_ustr, uno::Any( aSymbol ) ); } } @@ -470,7 +469,7 @@ beans::PropertyState WrappedSymbolSizeProperty::getPropertyState( const Referenc { chart2::Symbol aSymbol; Reference< beans::XPropertySet > xSeriesPropertySet( xInnerPropertyState, uno::UNO_QUERY ); - if( xSeriesPropertySet.is() && ( xSeriesPropertySet->getPropertyValue("Symbol") >>= aSymbol )) + if( xSeriesPropertySet.is() && ( xSeriesPropertySet->getPropertyValue(u"Symbol"_ustr) >>= aSymbol )) { if( aSymbol.Style != chart2::SymbolStyle_NONE ) return beans::PropertyState_DIRECT_VALUE; @@ -486,7 +485,7 @@ beans::PropertyState WrappedSymbolSizeProperty::getPropertyState( const Referenc WrappedSymbolAndLinesProperty::WrappedSymbolAndLinesProperty( const std::shared_ptr<Chart2ModelContact>& spChart2ModelContact, tSeriesOrDiagramPropertyType ePropertyType ) - : WrappedSeriesOrDiagramProperty< bool >( "Lines" + : WrappedSeriesOrDiagramProperty< bool >( u"Lines"_ustr , uno::Any( true ), spChart2ModelContact, ePropertyType ) { } @@ -505,17 +504,17 @@ void WrappedSymbolAndLinesProperty::setValueToSeries( return; drawing::LineStyle eOldLineStyle( drawing::LineStyle_SOLID ); - xSeriesPropertySet->getPropertyValue( "LineStyle" ) >>= eOldLineStyle; + xSeriesPropertySet->getPropertyValue( u"LineStyle"_ustr ) >>= eOldLineStyle; if( bDrawLines ) { //#i114298# don't overwrite dashed lines with solid lines here if( eOldLineStyle == drawing::LineStyle_NONE ) - xSeriesPropertySet->setPropertyValue( "LineStyle", uno::Any( drawing::LineStyle_SOLID ) ); + xSeriesPropertySet->setPropertyValue( u"LineStyle"_ustr, uno::Any( drawing::LineStyle_SOLID ) ); } else { if( eOldLineStyle != drawing::LineStyle_NONE ) - xSeriesPropertySet->setPropertyValue( "LineStyle", uno::Any( drawing::LineStyle_NONE ) ); + xSeriesPropertySet->setPropertyValue( u"LineStyle"_ustr, uno::Any( drawing::LineStyle_NONE ) ); } } diff --git a/chart2/source/controller/chartapiwrapper/WrappedTextRotationProperty.cxx b/chart2/source/controller/chartapiwrapper/WrappedTextRotationProperty.cxx index c35a75e31a54..850e916eaf0f 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedTextRotationProperty.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedTextRotationProperty.cxx @@ -28,7 +28,7 @@ namespace chart { WrappedTextRotationProperty::WrappedTextRotationProperty( bool bDirectState ) - : ::chart::WrappedProperty( "TextRotation" , "TextRotation" ) + : ::chart::WrappedProperty( u"TextRotation"_ustr , u"TextRotation"_ustr ) , m_bDirectState( bDirectState ) { } |