chart2/source/controller/chartapiwrapper/DiagramWrapper.cxx | 1 chart2/source/controller/chartapiwrapper/WrappedGL3DProperties.cxx | 146 ++++++++++ chart2/source/controller/chartapiwrapper/WrappedGL3DProperties.hxx | 38 ++ chart2/source/controller/chartapiwrapper/WrappedSplineProperties.cxx | 2 4 files changed, 186 insertions(+), 1 deletion(-)
New commits: commit 90b586223341b1c365235710cd04a32206b2a145 Author: Kohei Yoshida <kohei.yosh...@collabora.com> Date: Fri Mar 28 14:57:34 2014 -0400 Add API wrapper to handle properties of new GL3D chart type. Now the new proprety gets properly imported and exported to and from ODF. Change-Id: I4b773d68610a8aeaeb239901dac166e4dc2dd80d diff --git a/chart2/source/controller/chartapiwrapper/DiagramWrapper.cxx b/chart2/source/controller/chartapiwrapper/DiagramWrapper.cxx index 1f93f13..822d32c 100644 --- a/chart2/source/controller/chartapiwrapper/DiagramWrapper.cxx +++ b/chart2/source/controller/chartapiwrapper/DiagramWrapper.cxx @@ -2047,6 +2047,7 @@ const std::vector< WrappedProperty* > DiagramWrapper::createWrappedProperties() WrappedSplineProperties::addWrappedProperties( aWrappedProperties, m_spChart2ModelContact ); WrappedStockProperties::addWrappedProperties( aWrappedProperties, m_spChart2ModelContact ); WrappedAutomaticPositionProperties::addWrappedProperties( aWrappedProperties ); + WrappedGL3DProperties::addWrappedProperties(aWrappedProperties, m_spChart2ModelContact); aWrappedProperties.push_back( new WrappedDataRowSourceProperty( m_spChart2ModelContact ) ); aWrappedProperties.push_back( new WrappedStackingProperty( StackMode_Y_STACKED,m_spChart2ModelContact ) ); diff --git a/chart2/source/controller/chartapiwrapper/WrappedGL3DProperties.cxx b/chart2/source/controller/chartapiwrapper/WrappedGL3DProperties.cxx new file mode 100644 index 0000000..a4beaf5 --- /dev/null +++ b/chart2/source/controller/chartapiwrapper/WrappedGL3DProperties.cxx @@ -0,0 +1,146 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include "WrappedGL3DProperties.hxx" +#include "Chart2ModelContact.hxx" +#include <unonames.hxx> +#include <WrappedProperty.hxx> +#include <DiagramHelper.hxx> + +#include <com/sun/star/beans/PropertyAttribute.hpp> +#include <com/sun/star/chart2/XDiagram.hpp> + +using namespace com::sun::star; + +namespace chart { namespace wrapper { + +namespace { + +enum +{ + PROP_GL3DCHARTTYPE_ROUNDED_EDGE +}; + +class WrappedGL3DProperty : public WrappedProperty +{ + uno::Any maDefault; + boost::shared_ptr<Chart2ModelContact> mpModelContact; + +private: + uno::Reference<chart2::XChartType> getChartType() const + { + uno::Reference<chart2::XDiagram> xDiagram = mpModelContact->getChart2Diagram(); + uno::Sequence<uno::Reference<chart2::XChartType> > aCTs = + DiagramHelper::getChartTypesFromDiagram(xDiagram); + + for (sal_Int32 i = 0; i < aCTs.getLength(); ++i) + { + uno::Reference<chart2::XChartType> xThisCT = aCTs[i]; + if (xThisCT->getChartType() == "com.sun.star.chart2.GL3DBarChartType") + // Found the right chart type. + return xThisCT; + } + + return uno::Reference<chart2::XChartType>(); + } + +public: + WrappedGL3DProperty( const OUString& rInName, const OUString& rOutName, const uno::Any& rDefault, const boost::shared_ptr<Chart2ModelContact>& pContact ) : + WrappedProperty(rInName, rOutName), maDefault(rDefault), mpModelContact(pContact) {} + + virtual ~WrappedGL3DProperty() {} + + virtual uno::Any getPropertyValue( const uno::Reference<beans::XPropertySet>& /*xInnerPS*/ ) const + throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) + { + uno::Reference<chart2::XChartType> xCT = getChartType(); + if (!xCT.is()) + return uno::Any(); + + try + { + uno::Reference<beans::XPropertySet> xPS(xCT, uno::UNO_QUERY_THROW); + return xPS->getPropertyValue(CHART_UNONAME_ROUNDED_EDGE); + } + catch ( const uno::Exception& ) {} + + return uno::Any(); + }; + + virtual void setPropertyValue( + const uno::Any& rOutValue, const uno::Reference<beans::XPropertySet>& /*xInnerPS*/ ) const + throw (beans::UnknownPropertyException, beans::PropertyVetoException, + lang::IllegalArgumentException, lang::WrappedTargetException, + uno::RuntimeException) + { + uno::Reference<chart2::XChartType> xCT = getChartType(); + if (!xCT.is()) + return; + + try + { + uno::Reference<beans::XPropertySet> xPS(xCT, uno::UNO_QUERY_THROW); + return xPS->setPropertyValue(CHART_UNONAME_ROUNDED_EDGE, rOutValue); + } + catch ( const uno::Exception& ) {} + } + + virtual void setPropertyToDefault( const uno::Reference<beans::XPropertyState>& /*xInnerPropState*/ ) const + throw (beans::UnknownPropertyException, uno::RuntimeException) + { + uno::Reference<chart2::XChartType> xCT = getChartType(); + if (!xCT.is()) + return; + + try + { + uno::Reference<beans::XPropertySet> xPS(xCT, uno::UNO_QUERY_THROW); + return xPS->setPropertyValue(CHART_UNONAME_ROUNDED_EDGE, maDefault); + } + catch ( const uno::Exception& ) {} + } + + virtual uno::Any getPropertyDefault( const uno::Reference<beans::XPropertyState>& /*xInnerPS*/ ) const + throw (beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) + { + return maDefault; + } + + virtual beans::PropertyState getPropertyState( const uno::Reference<beans::XPropertyState>& /*xInnerPS*/ ) const + throw (beans::UnknownPropertyException, uno::RuntimeException) + { + return beans::PropertyState_DIRECT_VALUE; + } +}; + +} + +void WrappedGL3DProperties::addProperties( std::vector<css::beans::Property> & rOutProps ) +{ + rOutProps.push_back( + beans::Property( + CHART_UNONAME_ROUNDED_EDGE, + PROP_GL3DCHARTTYPE_ROUNDED_EDGE, + ::getCppuBooleanType(), + beans::PropertyAttribute::BOUND | beans::PropertyAttribute::MAYBEDEFAULT + ) + ); +} + +void WrappedGL3DProperties::addWrappedProperties( + std::vector<WrappedProperty*>& rList, const boost::shared_ptr<Chart2ModelContact>& pChart2ModelContact ) +{ + rList.push_back( + new WrappedGL3DProperty( + CHART_UNONAME_ROUNDED_EDGE, CHART_UNONAME_ROUNDED_EDGE, uno::makeAny(false), pChart2ModelContact)); +} + +}} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/chart2/source/controller/chartapiwrapper/WrappedGL3DProperties.hxx b/chart2/source/controller/chartapiwrapper/WrappedGL3DProperties.hxx new file mode 100644 index 0000000..90034a0 --- /dev/null +++ b/chart2/source/controller/chartapiwrapper/WrappedGL3DProperties.hxx @@ -0,0 +1,38 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef CHART2_WRAPPEDGL3DPROPERTIES_HXX +#define CHART2_WRAPPEDGL3DPROPERTIES_HXX + +#include <vector> +#include <boost/shared_ptr.hpp> + +#include <com/sun/star/beans/Property.hpp> + +namespace chart { + +class WrappedProperty; + +namespace wrapper { + +class Chart2ModelContact; + +class WrappedGL3DProperties +{ +public: + static void addProperties( std::vector<css::beans::Property> & rOutProps ); + static void addWrappedProperties( + std::vector<WrappedProperty*>& rList, const boost::shared_ptr<Chart2ModelContact>& pChart2ModelContact ); +}; + +}} + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/chart2/source/controller/chartapiwrapper/WrappedSplineProperties.cxx b/chart2/source/controller/chartapiwrapper/WrappedSplineProperties.cxx index a72e9e7..8ae43c4 100644 --- a/chart2/source/controller/chartapiwrapper/WrappedSplineProperties.cxx +++ b/chart2/source/controller/chartapiwrapper/WrappedSplineProperties.cxx @@ -212,7 +212,7 @@ void WrappedSplineProperties::addWrappedProperties( std::vector< WrappedProperty rList.push_back( new WrappedSplineTypeProperty( spChart2ModelContact ) ); rList.push_back( new WrappedSplineProperty<sal_Int32>( - CHART_UNONAME_SPLINE_ORDER, CHART_UNONAME_SPLINE_ORDER, // same name ? + CHART_UNONAME_SPLINE_ORDER, CHART_UNONAME_SPLINE_ORDER, uno::makeAny(sal_Int32(3)), spChart2ModelContact)); rList.push_back( new WrappedSplineProperty<sal_Int32>( _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits