1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski #include "precompiled_reportdesign.hxx"
24*b1cdbd2cSJim Jagielski #include "xmlFormatCondition.hxx"
25*b1cdbd2cSJim Jagielski #include "xmlfilter.hxx"
26*b1cdbd2cSJim Jagielski #include <xmloff/xmltoken.hxx>
27*b1cdbd2cSJim Jagielski #include <xmloff/xmlnmspe.hxx>
28*b1cdbd2cSJim Jagielski #include <xmloff/nmspmap.hxx>
29*b1cdbd2cSJim Jagielski #include <xmloff/xmluconv.hxx>
30*b1cdbd2cSJim Jagielski #include "xmlEnums.hxx"
31*b1cdbd2cSJim Jagielski #include "xmlHelper.hxx"
32*b1cdbd2cSJim Jagielski #include <com/sun/star/report/XReportControlFormat.hpp>
33*b1cdbd2cSJim Jagielski #include <comphelper/genericpropertyset.hxx>
34*b1cdbd2cSJim Jagielski #include <com/sun/star/awt/FontDescriptor.hpp>
35*b1cdbd2cSJim Jagielski #ifndef _COM_SUN_STAR_BEANS_PROPERTYATTRIBUTE_HXX_
36*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/PropertyAttribute.hpp>
37*b1cdbd2cSJim Jagielski #endif
38*b1cdbd2cSJim Jagielski #ifndef RPT_SHARED_XMLSTRINGS_HRC
39*b1cdbd2cSJim Jagielski #include "xmlstrings.hrc"
40*b1cdbd2cSJim Jagielski #endif
41*b1cdbd2cSJim Jagielski #include "xmlStyleImport.hxx"
42*b1cdbd2cSJim Jagielski #include <tools/debug.hxx>
43*b1cdbd2cSJim Jagielski 
44*b1cdbd2cSJim Jagielski namespace rptxml
45*b1cdbd2cSJim Jagielski {
46*b1cdbd2cSJim Jagielski 	using namespace ::comphelper;
47*b1cdbd2cSJim Jagielski 	using namespace ::com::sun::star;
48*b1cdbd2cSJim Jagielski 	using namespace ::com::sun::star::report;
49*b1cdbd2cSJim Jagielski 	using namespace ::com::sun::star::uno;
50*b1cdbd2cSJim Jagielski 	using namespace ::com::sun::star::xml::sax;
51*b1cdbd2cSJim Jagielski 	using namespace ::com::sun::star::beans;
52*b1cdbd2cSJim Jagielski 
DBG_NAME(rpt_OXMLFormatCondition)53*b1cdbd2cSJim Jagielski DBG_NAME( rpt_OXMLFormatCondition )
54*b1cdbd2cSJim Jagielski 
55*b1cdbd2cSJim Jagielski OXMLFormatCondition::OXMLFormatCondition( ORptFilter& rImport,
56*b1cdbd2cSJim Jagielski 				sal_uInt16 nPrfx, const ::rtl::OUString& rLName,
57*b1cdbd2cSJim Jagielski 				const Reference< XAttributeList > & _xAttrList
58*b1cdbd2cSJim Jagielski 				,const Reference< XFormatCondition > & _xComponent ) :
59*b1cdbd2cSJim Jagielski 	SvXMLImportContext( rImport, nPrfx, rLName )
60*b1cdbd2cSJim Jagielski ,m_rImport(rImport)
61*b1cdbd2cSJim Jagielski ,m_xComponent(_xComponent)
62*b1cdbd2cSJim Jagielski {
63*b1cdbd2cSJim Jagielski     DBG_CTOR( rpt_OXMLFormatCondition,NULL);
64*b1cdbd2cSJim Jagielski 
65*b1cdbd2cSJim Jagielski 	OSL_ENSURE(m_xComponent.is(),"Component is NULL!");
66*b1cdbd2cSJim Jagielski 	const SvXMLNamespaceMap& rMap = rImport.GetNamespaceMap();
67*b1cdbd2cSJim Jagielski 	const SvXMLTokenMap& rTokenMap = rImport.GetFormatElemTokenMap();
68*b1cdbd2cSJim Jagielski 	static const ::rtl::OUString s_sTRUE = ::xmloff::token::GetXMLToken(XML_TRUE);
69*b1cdbd2cSJim Jagielski 	const sal_Int16 nLength = (_xAttrList.is()) ? _xAttrList->getLength() : 0;
70*b1cdbd2cSJim Jagielski 	try
71*b1cdbd2cSJim Jagielski 	{
72*b1cdbd2cSJim Jagielski 		for(sal_Int16 i = 0; i < nLength; ++i)
73*b1cdbd2cSJim Jagielski 		{
74*b1cdbd2cSJim Jagielski 		 ::rtl::OUString sLocalName;
75*b1cdbd2cSJim Jagielski 			const rtl::OUString sAttrName = _xAttrList->getNameByIndex( i );
76*b1cdbd2cSJim Jagielski 			const sal_uInt16 nPrefix = rMap.GetKeyByAttrName( sAttrName,&sLocalName );
77*b1cdbd2cSJim Jagielski 			const rtl::OUString sValue = _xAttrList->getValueByIndex( i );
78*b1cdbd2cSJim Jagielski 
79*b1cdbd2cSJim Jagielski 			switch( rTokenMap.Get( nPrefix, sLocalName ) )
80*b1cdbd2cSJim Jagielski 			{
81*b1cdbd2cSJim Jagielski 				case XML_TOK_ENABLED:
82*b1cdbd2cSJim Jagielski 					m_xComponent->setEnabled(sValue == s_sTRUE);
83*b1cdbd2cSJim Jagielski 					break;
84*b1cdbd2cSJim Jagielski 				case XML_TOK_FORMULA:
85*b1cdbd2cSJim Jagielski                     m_xComponent->setFormula(ORptFilter::convertFormula(sValue));
86*b1cdbd2cSJim Jagielski 					break;
87*b1cdbd2cSJim Jagielski 				case XML_TOK_FORMAT_STYLE_NAME:
88*b1cdbd2cSJim Jagielski 					m_sStyleName = sValue;
89*b1cdbd2cSJim Jagielski 					break;
90*b1cdbd2cSJim Jagielski                 default:
91*b1cdbd2cSJim Jagielski                     break;
92*b1cdbd2cSJim Jagielski 			}
93*b1cdbd2cSJim Jagielski 		}
94*b1cdbd2cSJim Jagielski 	}
95*b1cdbd2cSJim Jagielski 	catch(Exception&)
96*b1cdbd2cSJim Jagielski 	{
97*b1cdbd2cSJim Jagielski 		OSL_ENSURE(0,"Exception catched while filling the report definition props");
98*b1cdbd2cSJim Jagielski 	}
99*b1cdbd2cSJim Jagielski }
100*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
101*b1cdbd2cSJim Jagielski 
~OXMLFormatCondition()102*b1cdbd2cSJim Jagielski OXMLFormatCondition::~OXMLFormatCondition()
103*b1cdbd2cSJim Jagielski {
104*b1cdbd2cSJim Jagielski 
105*b1cdbd2cSJim Jagielski     DBG_DTOR( rpt_OXMLFormatCondition,NULL);
106*b1cdbd2cSJim Jagielski }
107*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
EndElement()108*b1cdbd2cSJim Jagielski void OXMLFormatCondition::EndElement()
109*b1cdbd2cSJim Jagielski {
110*b1cdbd2cSJim Jagielski     OXMLHelper::copyStyleElements(m_rImport.isOldFormat(),m_sStyleName,GetImport().GetAutoStyles(),m_xComponent.get());
111*b1cdbd2cSJim Jagielski }
112*b1cdbd2cSJim Jagielski //----------------------------------------------------------------------------
113*b1cdbd2cSJim Jagielski } // namespace rptxml
114*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------------
115