xref: /AOO41X/main/xmloff/source/text/XMLIndexObjectSourceContext.cxx (revision 63bba73cc51e0afb45f8a8d578158724bb5afee8)
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 
27 
28 #include "XMLIndexObjectSourceContext.hxx"
29 #include <com/sun/star/beans/XPropertySet.hpp>
30 #include <com/sun/star/container/XIndexReplace.hpp>
31 #include "XMLIndexTemplateContext.hxx"
32 #include "XMLIndexTitleTemplateContext.hxx"
33 #include "XMLIndexTOCStylesContext.hxx"
34 #include <xmloff/xmlictxt.hxx>
35 #include <xmloff/xmlimp.hxx>
36 #include <xmloff/txtimp.hxx>
37 #include "xmloff/xmlnmspe.hxx"
38 #include <xmloff/nmspmap.hxx>
39 #include <xmloff/xmltoken.hxx>
40 #include <xmloff/xmluconv.hxx>
41 #include <tools/debug.hxx>
42 #include <rtl/ustring.hxx>
43 
44 
45 using ::rtl::OUString;
46 using ::com::sun::star::beans::XPropertySet;
47 using ::com::sun::star::uno::Reference;
48 using ::com::sun::star::uno::Any;
49 using ::com::sun::star::xml::sax::XAttributeList;
50 using ::xmloff::token::IsXMLToken;
51 using ::xmloff::token::XML_OBJECT_INDEX_ENTRY_TEMPLATE;
52 using ::xmloff::token::XML_TOKEN_INVALID;
53 
54 const sal_Char sAPI_CreateFromStarCalc[] = "CreateFromStarCalc";
55 const sal_Char sAPI_CreateFromStarChart[] = "CreateFromStarChart";
56 const sal_Char sAPI_CreateFromStarDraw[] = "CreateFromStarDraw";
57 const sal_Char sAPI_CreateFromStarImage[] = "CreateFromStarImage";
58 const sal_Char sAPI_CreateFromStarMath[] = "CreateFromStarMath";
59 const sal_Char sAPI_CreateFromOtherEmbeddedObjects[] = "CreateFromOtherEmbeddedObjects";
60 
61 
62 TYPEINIT1( XMLIndexObjectSourceContext, XMLIndexSourceBaseContext );
63 
XMLIndexObjectSourceContext(SvXMLImport & rImport,sal_uInt16 nPrfx,const OUString & rLocalName,Reference<XPropertySet> & rPropSet)64 XMLIndexObjectSourceContext::XMLIndexObjectSourceContext(
65     SvXMLImport& rImport,
66     sal_uInt16 nPrfx,
67     const OUString& rLocalName,
68     Reference<XPropertySet> & rPropSet) :
69         XMLIndexSourceBaseContext(rImport, nPrfx, rLocalName,
70                                   rPropSet, sal_False),
71         sCreateFromStarCalc(RTL_CONSTASCII_USTRINGPARAM(
72             sAPI_CreateFromStarCalc)),
73         sCreateFromStarChart(RTL_CONSTASCII_USTRINGPARAM(
74             sAPI_CreateFromStarChart)),
75         sCreateFromStarDraw(RTL_CONSTASCII_USTRINGPARAM(
76             sAPI_CreateFromStarDraw)),
77         sCreateFromStarMath(RTL_CONSTASCII_USTRINGPARAM(
78             sAPI_CreateFromStarMath)),
79         sCreateFromOtherEmbeddedObjects(RTL_CONSTASCII_USTRINGPARAM(
80             sAPI_CreateFromOtherEmbeddedObjects)),
81         bUseCalc(sal_False),
82         bUseChart(sal_False),
83         bUseDraw(sal_False),
84         bUseMath(sal_False),
85         bUseOtherObjects(sal_False)
86 {
87 }
88 
~XMLIndexObjectSourceContext()89 XMLIndexObjectSourceContext::~XMLIndexObjectSourceContext()
90 {
91 }
92 
ProcessAttribute(enum IndexSourceParamEnum eParam,const OUString & rValue)93 void XMLIndexObjectSourceContext::ProcessAttribute(
94     enum IndexSourceParamEnum eParam,
95     const OUString& rValue)
96 {
97     switch (eParam)
98     {
99         sal_Bool bTmp;
100 
101         case XML_TOK_INDEXSOURCE_USE_OTHER_OBJECTS:
102             if (SvXMLUnitConverter::convertBool(bTmp, rValue))
103             {
104                 bUseOtherObjects = bTmp;
105             }
106             break;
107 
108         case XML_TOK_INDEXSOURCE_USE_SHEET:
109             if (SvXMLUnitConverter::convertBool(bTmp, rValue))
110             {
111                 bUseCalc = bTmp;
112             }
113             break;
114 
115         case XML_TOK_INDEXSOURCE_USE_CHART:
116             if (SvXMLUnitConverter::convertBool(bTmp, rValue))
117             {
118                 bUseChart = bTmp;
119             }
120             break;
121 
122         case XML_TOK_INDEXSOURCE_USE_DRAW:
123             if (SvXMLUnitConverter::convertBool(bTmp, rValue))
124             {
125                 bUseDraw = bTmp;
126             }
127             break;
128 
129         case XML_TOK_INDEXSOURCE_USE_MATH:
130             if (SvXMLUnitConverter::convertBool(bTmp, rValue))
131             {
132                 bUseMath = bTmp;
133             }
134             break;
135 
136         default:
137             XMLIndexSourceBaseContext::ProcessAttribute(eParam, rValue);
138             break;
139     }
140 }
141 
EndElement()142 void XMLIndexObjectSourceContext::EndElement()
143 {
144     Any aAny;
145 
146     aAny.setValue(&bUseCalc, ::getBooleanCppuType());
147     rIndexPropertySet->setPropertyValue(sCreateFromStarCalc, aAny);
148 
149     aAny.setValue(&bUseChart, ::getBooleanCppuType());
150     rIndexPropertySet->setPropertyValue(sCreateFromStarChart, aAny);
151 
152     aAny.setValue(&bUseDraw, ::getBooleanCppuType());
153     rIndexPropertySet->setPropertyValue(sCreateFromStarDraw, aAny);
154 
155     aAny.setValue(&bUseMath, ::getBooleanCppuType());
156     rIndexPropertySet->setPropertyValue(sCreateFromStarMath, aAny);
157 
158     aAny.setValue(&bUseOtherObjects, ::getBooleanCppuType());
159     rIndexPropertySet->setPropertyValue(sCreateFromOtherEmbeddedObjects, aAny);
160 
161     XMLIndexSourceBaseContext::EndElement();
162 }
163 
CreateChildContext(sal_uInt16 nPrefix,const OUString & rLocalName,const Reference<XAttributeList> & xAttrList)164 SvXMLImportContext* XMLIndexObjectSourceContext::CreateChildContext(
165     sal_uInt16 nPrefix,
166     const OUString& rLocalName,
167     const Reference<XAttributeList> & xAttrList )
168 {
169     if ( (XML_NAMESPACE_TEXT == nPrefix) &&
170          (IsXMLToken(rLocalName, XML_OBJECT_INDEX_ENTRY_TEMPLATE)) )
171     {
172         return new XMLIndexTemplateContext(GetImport(), rIndexPropertySet,
173                                            nPrefix, rLocalName,
174                                            aLevelNameTableMap,
175                                            XML_TOKEN_INVALID, // no outline-level attr
176                                            aLevelStylePropNameTableMap,
177                                            aAllowedTokenTypesTable);
178     }
179     else
180     {
181         return XMLIndexSourceBaseContext::CreateChildContext(nPrefix,
182                                                              rLocalName,
183                                                              xAttrList);
184     }
185 
186 }
187