1*ecfe53c5SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*ecfe53c5SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*ecfe53c5SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*ecfe53c5SAndrew Rist * distributed with this work for additional information 6*ecfe53c5SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*ecfe53c5SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*ecfe53c5SAndrew Rist * "License"); you may not use this file except in compliance 9*ecfe53c5SAndrew Rist * with the License. You may obtain a copy of the License at 10*ecfe53c5SAndrew Rist * 11*ecfe53c5SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*ecfe53c5SAndrew Rist * 13*ecfe53c5SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*ecfe53c5SAndrew Rist * software distributed under the License is distributed on an 15*ecfe53c5SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*ecfe53c5SAndrew Rist * KIND, either express or implied. See the License for the 17*ecfe53c5SAndrew Rist * specific language governing permissions and limitations 18*ecfe53c5SAndrew Rist * under the License. 19*ecfe53c5SAndrew Rist * 20*ecfe53c5SAndrew Rist *************************************************************/ 21*ecfe53c5SAndrew Rist 22*ecfe53c5SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir #ifndef _XMLOFF_XMLINDEXTEMPLATECONTEXT_HXX_ 25cdf0e10cSrcweir #define _XMLOFF_XMLINDEXTEMPLATECONTEXT_HXX_ 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include <xmloff/xmlictxt.hxx> 28cdf0e10cSrcweir #include <xmloff/xmltoken.hxx> 29cdf0e10cSrcweir 30cdf0e10cSrcweir #include <vector> 31cdf0e10cSrcweir #include <com/sun/star/uno/Reference.h> 32cdf0e10cSrcweir #include <com/sun/star/uno/Sequence.h> 33cdf0e10cSrcweir #include <com/sun/star/beans/PropertyValues.hpp> 34cdf0e10cSrcweir 35cdf0e10cSrcweir 36cdf0e10cSrcweir namespace com { namespace sun { namespace star { 37cdf0e10cSrcweir namespace xml { namespace sax { class XAttributeList; } } 38cdf0e10cSrcweir namespace beans { class XPropertySet; } 39cdf0e10cSrcweir } } } 40cdf0e10cSrcweir namespace rtl { class OUString; } 41cdf0e10cSrcweir struct SvXMLEnumMapEntry; 42cdf0e10cSrcweir 43cdf0e10cSrcweir 44cdf0e10cSrcweir // constants for the XMLIndexTemplateContext constructor 45cdf0e10cSrcweir 46cdf0e10cSrcweir // TOC and user defined index: 47cdf0e10cSrcweir extern const SvXMLEnumMapEntry aLevelNameTOCMap[]; 48cdf0e10cSrcweir extern const sal_Char* aLevelStylePropNameTOCMap[]; 49cdf0e10cSrcweir extern const sal_Bool aAllowedTokenTypesTOC[]; 50cdf0e10cSrcweir extern const sal_Bool aAllowedTokenTypesUser[]; 51cdf0e10cSrcweir 52cdf0e10cSrcweir // alphabetical index: 53cdf0e10cSrcweir extern const SvXMLEnumMapEntry aLevelNameAlphaMap[]; 54cdf0e10cSrcweir extern const sal_Char* aLevelStylePropNameAlphaMap[]; 55cdf0e10cSrcweir extern const sal_Bool aAllowedTokenTypesAlpha[]; 56cdf0e10cSrcweir 57cdf0e10cSrcweir // bibliography: 58cdf0e10cSrcweir extern const SvXMLEnumMapEntry aLevelNameBibliographyMap[]; 59cdf0e10cSrcweir extern const sal_Char* aLevelStylePropNameBibliographyMap[]; 60cdf0e10cSrcweir extern const sal_Bool aAllowedTokenTypesBibliography[]; 61cdf0e10cSrcweir 62cdf0e10cSrcweir // table, illustration and object tables: 63cdf0e10cSrcweir extern const SvXMLEnumMapEntry* aLevelNameTableMap; // NULL: no outline-level 64cdf0e10cSrcweir extern const sal_Char* aLevelStylePropNameTableMap[]; 65cdf0e10cSrcweir extern const sal_Bool aAllowedTokenTypesTable[]; 66cdf0e10cSrcweir 67cdf0e10cSrcweir 68cdf0e10cSrcweir /** 69cdf0e10cSrcweir * Import index entry templates 70cdf0e10cSrcweir */ 71cdf0e10cSrcweir class XMLIndexTemplateContext : public SvXMLImportContext 72cdf0e10cSrcweir { 73cdf0e10cSrcweir // pick up PropertyValues to be turned into a sequence. 74cdf0e10cSrcweir ::std::vector< ::com::sun::star::beans::PropertyValues > aValueVector; 75cdf0e10cSrcweir 76cdf0e10cSrcweir ::rtl::OUString sStyleName; 77cdf0e10cSrcweir 78cdf0e10cSrcweir const SvXMLEnumMapEntry* pOutlineLevelNameMap; 79cdf0e10cSrcweir enum ::xmloff::token::XMLTokenEnum eOutlineLevelAttrName; 80cdf0e10cSrcweir const sal_Char** pOutlineLevelStylePropMap; 81cdf0e10cSrcweir const sal_Bool* pAllowedTokenTypesMap; 82cdf0e10cSrcweir 83cdf0e10cSrcweir sal_Int32 nOutlineLevel; 84cdf0e10cSrcweir sal_Bool bStyleNameOK; 85cdf0e10cSrcweir sal_Bool bOutlineLevelOK; 86cdf0e10cSrcweir sal_Bool bTOC; 87cdf0e10cSrcweir 88cdf0e10cSrcweir // PropertySet of current index 89cdf0e10cSrcweir ::com::sun::star::uno::Reference< 90cdf0e10cSrcweir ::com::sun::star::beans::XPropertySet> & rPropertySet; 91cdf0e10cSrcweir 92cdf0e10cSrcweir public: 93cdf0e10cSrcweir 94cdf0e10cSrcweir // constants made available to other contexts (template entry 95cdf0e10cSrcweir // contexts, in particular) 96cdf0e10cSrcweir const ::rtl::OUString sTokenEntryNumber; 97cdf0e10cSrcweir const ::rtl::OUString sTokenEntryText; 98cdf0e10cSrcweir const ::rtl::OUString sTokenTabStop; 99cdf0e10cSrcweir const ::rtl::OUString sTokenText; 100cdf0e10cSrcweir const ::rtl::OUString sTokenPageNumber; 101cdf0e10cSrcweir const ::rtl::OUString sTokenChapterInfo; 102cdf0e10cSrcweir const ::rtl::OUString sTokenHyperlinkStart; 103cdf0e10cSrcweir const ::rtl::OUString sTokenHyperlinkEnd; 104cdf0e10cSrcweir const ::rtl::OUString sTokenBibliographyDataField; 105cdf0e10cSrcweir 106cdf0e10cSrcweir const ::rtl::OUString sCharacterStyleName; 107cdf0e10cSrcweir const ::rtl::OUString sTokenType; 108cdf0e10cSrcweir const ::rtl::OUString sText; 109cdf0e10cSrcweir const ::rtl::OUString sTabStopRightAligned; 110cdf0e10cSrcweir const ::rtl::OUString sTabStopPosition; 111cdf0e10cSrcweir const ::rtl::OUString sTabStopFillCharacter; 112cdf0e10cSrcweir const ::rtl::OUString sBibliographyDataField; 113cdf0e10cSrcweir const ::rtl::OUString sChapterFormat; 114cdf0e10cSrcweir const ::rtl::OUString sChapterLevel;//i53420 115cdf0e10cSrcweir 116cdf0e10cSrcweir const ::rtl::OUString sLevelFormat; 117cdf0e10cSrcweir const ::rtl::OUString sParaStyleLevel; 118cdf0e10cSrcweir 119cdf0e10cSrcweir 120cdf0e10cSrcweir TYPEINFO(); 121cdf0e10cSrcweir 122cdf0e10cSrcweir XMLIndexTemplateContext( 123cdf0e10cSrcweir SvXMLImport& rImport, 124cdf0e10cSrcweir ::com::sun::star::uno::Reference< 125cdf0e10cSrcweir ::com::sun::star::beans::XPropertySet> & rPropSet, 126cdf0e10cSrcweir sal_uInt16 nPrfx, 127cdf0e10cSrcweir const ::rtl::OUString& rLocalName, 128cdf0e10cSrcweir const SvXMLEnumMapEntry* aLevelNameMap, 129cdf0e10cSrcweir enum ::xmloff::token::XMLTokenEnum eLevelAttrName, 130cdf0e10cSrcweir const sal_Char** aLevelStylePropNameMap, 131cdf0e10cSrcweir const sal_Bool* aAllowedTokenTypes, 132cdf0e10cSrcweir sal_Bool bTOC=sal_False); 133cdf0e10cSrcweir 134cdf0e10cSrcweir ~XMLIndexTemplateContext(); 135cdf0e10cSrcweir 136cdf0e10cSrcweir /** add template; to be called by child template entry contexts */ 137cdf0e10cSrcweir void addTemplateEntry( 138cdf0e10cSrcweir const ::com::sun::star::beans::PropertyValues& aValues); 139cdf0e10cSrcweir 140cdf0e10cSrcweir protected: 141cdf0e10cSrcweir 142cdf0e10cSrcweir virtual void StartElement( 143cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 144cdf0e10cSrcweir ::com::sun::star::xml::sax::XAttributeList> & xAttrList); 145cdf0e10cSrcweir 146cdf0e10cSrcweir virtual void EndElement(); 147cdf0e10cSrcweir 148cdf0e10cSrcweir virtual SvXMLImportContext *CreateChildContext( 149cdf0e10cSrcweir sal_uInt16 nPrefix, 150cdf0e10cSrcweir const ::rtl::OUString& rLocalName, 151cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 152cdf0e10cSrcweir ::com::sun::star::xml::sax::XAttributeList> & xAttrList ); 153cdf0e10cSrcweir }; 154cdf0e10cSrcweir 155cdf0e10cSrcweir #endif 156