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
SetAttribute(sal_uInt16 nPrefixKey,const::rtl::OUString & rLocalName,const::rtl::OUString & rValue)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
XMLChartStyleContext(SvXMLImport & rImport,sal_uInt16 nPrfx,const::rtl::OUString & rLName,const uno::Reference<xml::sax::XAttributeList> & xAttrList,SvXMLStylesContext & rStyles,sal_uInt16 nFamily)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
~XMLChartStyleContext()81 XMLChartStyleContext::~XMLChartStyleContext()
82 {}
83
84 namespace
85 {
86
lcl_NumberFormatStyleToProperty(const::rtl::OUString & rStyleName,const::rtl::OUString & rPropertyName,const SvXMLStylesContext & rStylesContext,const uno::Reference<beans::XPropertySet> & rPropSet)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
FillPropertySet(const uno::Reference<beans::XPropertySet> & rPropSet)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
CreateChildContext(sal_uInt16 nPrefix,const::rtl::OUString & rLocalName,const uno::Reference<xml::sax::XAttributeList> & xAttrList)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