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 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 89 XMLIndexObjectSourceContext::~XMLIndexObjectSourceContext() 90 { 91 } 92 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 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 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