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_xmloff.hxx" 26 #include "XMLChartStyleContext.hxx" 27 #include <xmloff/xmltoken.hxx> 28 #include "xmloff/xmlnmspe.hxx" 29 #include <xmloff/xmlnumfi.hxx> 30 #include <xmloff/families.hxx> 31 32 #include "XMLChartPropertyContext.hxx" 33 34 using namespace com::sun::star; 35 using ::xmloff::token::IsXMLToken; 36 using ::xmloff::token::XML_DATA_STYLE_NAME; 37 using ::xmloff::token::XML_PERCENTAGE_DATA_STYLE_NAME; 38 using ::xmloff::token::XML_TEXT_PROPERTIES; 39 using ::xmloff::token::XML_PARAGRAPH_PROPERTIES; 40 using ::xmloff::token::XML_GRAPHIC_PROPERTIES; 41 using ::xmloff::token::XML_CHART_PROPERTIES; 42 43 44 TYPEINIT1( XMLChartStyleContext, XMLPropStyleContext ); 45 46 // protected 47 48 void XMLChartStyleContext::SetAttribute( 49 sal_uInt16 nPrefixKey, 50 const ::rtl::OUString& rLocalName, 51 const ::rtl::OUString& rValue ) 52 { 53 if( IsXMLToken( rLocalName, XML_DATA_STYLE_NAME ) ) 54 { 55 msDataStyleName =rValue; 56 } 57 else if( IsXMLToken( rLocalName, XML_PERCENTAGE_DATA_STYLE_NAME ) ) 58 { 59 msPercentageDataStyleName =rValue; 60 } 61 else 62 { 63 XMLShapeStyleContext::SetAttribute( nPrefixKey, rLocalName, rValue ); 64 } 65 } 66 67 //public 68 69 // CTOR 70 XMLChartStyleContext::XMLChartStyleContext( 71 SvXMLImport& rImport, sal_uInt16 nPrfx, 72 const ::rtl::OUString& rLName, 73 const uno::Reference< xml::sax::XAttributeList > & xAttrList, 74 SvXMLStylesContext& rStyles, sal_uInt16 nFamily ) : 75 76 XMLShapeStyleContext( rImport, nPrfx, rLName, xAttrList, rStyles, nFamily ), 77 mrStyles( rStyles ) 78 {} 79 80 // DTOR 81 XMLChartStyleContext::~XMLChartStyleContext() 82 {} 83 84 namespace 85 { 86 87 void lcl_NumberFormatStyleToProperty( const ::rtl::OUString& rStyleName, const ::rtl::OUString& rPropertyName, 88 const SvXMLStylesContext& rStylesContext, 89 const uno::Reference< beans::XPropertySet >& rPropSet ) 90 { 91 if( rStyleName.getLength()) 92 { 93 SvXMLNumFormatContext* pStyle = (SvXMLNumFormatContext *)rStylesContext.FindStyleChildContext( 94 XML_STYLE_FAMILY_DATA_STYLE, rStyleName, sal_True ); 95 if( pStyle ) 96 { 97 uno::Any aNumberFormat; 98 sal_Int32 nNumberFormat = pStyle->GetKey(); 99 aNumberFormat <<= nNumberFormat; 100 rPropSet->setPropertyValue( rPropertyName, aNumberFormat ); 101 } 102 } 103 } 104 105 }// anonymous namespace 106 107 void XMLChartStyleContext::FillPropertySet( 108 const uno::Reference< beans::XPropertySet > & rPropSet ) 109 { 110 try 111 { 112 XMLShapeStyleContext::FillPropertySet( rPropSet ); 113 } 114 catch( beans::UnknownPropertyException& ) 115 { 116 DBG_ASSERT( false, "unknown property exception -> shape style not completly imported for chart style" ); 117 } 118 119 lcl_NumberFormatStyleToProperty( msDataStyleName, rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "NumberFormat" )), mrStyles, rPropSet ); 120 lcl_NumberFormatStyleToProperty( msPercentageDataStyleName, rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PercentageNumberFormat" )), mrStyles, rPropSet ); 121 } 122 123 SvXMLImportContext *XMLChartStyleContext::CreateChildContext( 124 sal_uInt16 nPrefix, 125 const ::rtl::OUString& rLocalName, 126 const uno::Reference< xml::sax::XAttributeList > & xAttrList ) 127 { 128 SvXMLImportContext* pContext = NULL; 129 130 if( XML_NAMESPACE_STYLE == nPrefix ) 131 { 132 sal_uInt32 nFamily = 0; 133 if( IsXMLToken( rLocalName, XML_TEXT_PROPERTIES ) ) 134 nFamily = XML_TYPE_PROP_TEXT; 135 else if( IsXMLToken( rLocalName, XML_PARAGRAPH_PROPERTIES ) ) 136 nFamily = XML_TYPE_PROP_PARAGRAPH; 137 else if( IsXMLToken( rLocalName, XML_GRAPHIC_PROPERTIES ) ) 138 nFamily = XML_TYPE_PROP_GRAPHIC; 139 else if( IsXMLToken( rLocalName, XML_CHART_PROPERTIES ) ) 140 nFamily = XML_TYPE_PROP_CHART; 141 if( nFamily ) 142 { 143 UniReference < SvXMLImportPropertyMapper > xImpPrMap = 144 GetStyles()->GetImportPropertyMapper( GetFamily() ); 145 if( xImpPrMap.is() ) 146 pContext = new XMLChartPropertyContext( 147 GetImport(), nPrefix, rLocalName, xAttrList, nFamily, 148 GetProperties(), xImpPrMap ); 149 } 150 } 151 152 if( !pContext ) 153 pContext = XMLShapeStyleContext::CreateChildContext( nPrefix, rLocalName, 154 xAttrList ); 155 156 return pContext; 157 } 158