1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_chart2.hxx" 26 27 #include "WrappedDataCaptionProperties.hxx" 28 #include "WrappedSeriesOrDiagramProperty.hxx" 29 #include "macros.hxx" 30 #include "FastPropertyIdRanges.hxx" 31 #include <com/sun/star/chart2/DataPointLabel.hpp> 32 #include <com/sun/star/chart/ChartDataCaption.hpp> 33 #include <com/sun/star/beans/PropertyAttribute.hpp> 34 35 using namespace ::com::sun::star; 36 using ::com::sun::star::uno::Any; 37 using ::com::sun::star::uno::Reference; 38 using ::com::sun::star::uno::Sequence; 39 using ::com::sun::star::beans::Property; 40 using ::rtl::OUString; 41 42 //............................................................................. 43 namespace chart 44 { 45 namespace wrapper 46 { 47 48 //----------------------------------------------------------------------------- 49 //----------------------------------------------------------------------------- 50 //----------------------------------------------------------------------------- 51 52 class WrappedDataCaptionProperty : public WrappedSeriesOrDiagramProperty< sal_Int32 > 53 { 54 public: 55 virtual sal_Int32 getValueFromSeries( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xSeriesPropertySet ) const; 56 virtual void setValueToSeries( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xSeriesPropertySet, sal_Int32 aNewValue ) const; 57 58 explicit WrappedDataCaptionProperty( ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact, 59 tSeriesOrDiagramPropertyType ePropertyType ); 60 virtual ~WrappedDataCaptionProperty(); 61 }; 62 63 namespace 64 { 65 enum 66 { 67 //data caption properties 68 PROP_CHART_DATAPOINT_DATA_CAPTION = FAST_PROPERTY_ID_START_CHART_DATACAPTION_PROP 69 }; 70 71 sal_Int32 lcl_LabelToCaption( const chart2::DataPointLabel& rLabel ) 72 { 73 sal_Int32 nCaption=0; 74 75 if( rLabel.ShowNumber ) 76 nCaption |= ::com::sun::star::chart::ChartDataCaption::VALUE; 77 if( rLabel.ShowNumberInPercent ) 78 nCaption |= ::com::sun::star::chart::ChartDataCaption::PERCENT; 79 if( rLabel.ShowCategoryName ) 80 nCaption |= ::com::sun::star::chart::ChartDataCaption::TEXT; 81 if( rLabel.ShowLegendSymbol ) 82 nCaption |= ::com::sun::star::chart::ChartDataCaption::SYMBOL; 83 84 return nCaption; 85 } 86 87 chart2::DataPointLabel lcl_CaptionToLabel( sal_Int32 nCaption ) 88 { 89 chart2::DataPointLabel aLabel(false,false,false,false); 90 91 if( nCaption & ::com::sun::star::chart::ChartDataCaption::VALUE ) 92 aLabel.ShowNumber = true; 93 if( nCaption & ::com::sun::star::chart::ChartDataCaption::PERCENT ) 94 aLabel.ShowNumberInPercent = true; 95 if( nCaption & ::com::sun::star::chart::ChartDataCaption::TEXT ) 96 aLabel.ShowCategoryName = true; 97 if( nCaption & ::com::sun::star::chart::ChartDataCaption::SYMBOL ) 98 aLabel.ShowLegendSymbol = true; 99 100 return aLabel; 101 } 102 103 void lcl_addWrappedProperties( std::vector< WrappedProperty* >& rList 104 , ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact 105 , tSeriesOrDiagramPropertyType ePropertyType ) 106 { 107 //if !spChart2ModelContact.get() is then the created properties do belong to a single series or single datapoint 108 //otherwise they do belong to the whole diagram 109 110 rList.push_back( new WrappedDataCaptionProperty( spChart2ModelContact, ePropertyType ) ); 111 } 112 113 }//anonymous namespace 114 115 //----------------------------------------------------------------------------- 116 //----------------------------------------------------------------------------- 117 //----------------------------------------------------------------------------- 118 void WrappedDataCaptionProperties::addProperties( ::std::vector< Property > & rOutProperties ) 119 { 120 rOutProperties.push_back( 121 Property( C2U( "DataCaption" ), 122 PROP_CHART_DATAPOINT_DATA_CAPTION, 123 ::getCppuType( reinterpret_cast< sal_Int32 * >(0)), 124 beans::PropertyAttribute::BOUND 125 | beans::PropertyAttribute::MAYBEDEFAULT )); 126 } 127 128 //----------------------------------------------------------------------------- 129 //----------------------------------------------------------------------------- 130 131 void WrappedDataCaptionProperties::addWrappedPropertiesForSeries( std::vector< WrappedProperty* >& rList 132 , ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact ) 133 { 134 lcl_addWrappedProperties( rList, spChart2ModelContact, DATA_SERIES ); 135 } 136 137 //----------------------------------------------------------------------------- 138 //----------------------------------------------------------------------------- 139 140 void WrappedDataCaptionProperties::addWrappedPropertiesForDiagram( std::vector< WrappedProperty* >& rList 141 , ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact ) 142 { 143 lcl_addWrappedProperties( rList, spChart2ModelContact, DIAGRAM ); 144 } 145 146 //----------------------------------------------------------------------------- 147 //----------------------------------------------------------------------------- 148 //----------------------------------------------------------------------------- 149 150 WrappedDataCaptionProperty::WrappedDataCaptionProperty( 151 ::boost::shared_ptr< Chart2ModelContact > spChart2ModelContact 152 , tSeriesOrDiagramPropertyType ePropertyType ) 153 : WrappedSeriesOrDiagramProperty< sal_Int32 >( C2U("DataCaption") 154 , uno::makeAny( sal_Int32(0) ), spChart2ModelContact, ePropertyType ) 155 { 156 } 157 WrappedDataCaptionProperty::~WrappedDataCaptionProperty() 158 { 159 } 160 161 sal_Int32 WrappedDataCaptionProperty::getValueFromSeries( const Reference< beans::XPropertySet >& xSeriesPropertySet ) const 162 { 163 sal_Int32 aRet = 0; 164 m_aDefaultValue >>= aRet; 165 chart2::DataPointLabel aLabel; 166 if( xSeriesPropertySet.is() && ( xSeriesPropertySet->getPropertyValue(C2U("Label")) >>= aLabel ) ) 167 aRet = lcl_LabelToCaption( aLabel ); 168 return aRet; 169 } 170 171 void WrappedDataCaptionProperty::setValueToSeries( const Reference< beans::XPropertySet >& xSeriesPropertySet, sal_Int32 nCaption ) const 172 { 173 if(!xSeriesPropertySet.is()) 174 return; 175 176 chart2::DataPointLabel aLabel = lcl_CaptionToLabel( nCaption ); 177 xSeriesPropertySet->setPropertyValue( C2U("Label"), uno::makeAny( aLabel ) ); 178 } 179 180 //----------------------------------------------------------------------------- 181 //----------------------------------------------------------------------------- 182 //----------------------------------------------------------------------------- 183 184 } //namespace wrapper 185 } //namespace chart 186 //............................................................................. 187