xref: /AOO41X/main/xmloff/source/text/XMLIndexSourceBaseContext.hxx (revision ecfe53c5d1886e1e0d215b0d140d05282ab1c477)
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 #ifndef _XMLOFF_XMLINDEXSOURCEBASECONTEXT_HXX_
25 #define _XMLOFF_XMLINDEXSOURCEBASECONTEXT_HXX_
26 
27 #include <xmloff/xmlictxt.hxx>
28 #include <com/sun/star/uno/Reference.h>
29 #include <rtl/ustring.hxx>
30 
31 
32 namespace com { namespace sun { namespace star {
33     namespace xml { namespace sax { class XAttributeList; } }
34     namespace beans { class XPropertySet; }
35 } } }
36 
37 enum IndexSourceParamEnum
38 {
39     XML_TOK_INDEXSOURCE_OUTLINE_LEVEL,
40     XML_TOK_INDEXSOURCE_USE_INDEX_MARKS,
41     XML_TOK_INDEXSOURCE_INDEX_SCOPE,
42     XML_TOK_INDEXSOURCE_RELATIVE_TABS,
43     XML_TOK_INDEXSOURCE_USE_OTHER_OBJECTS,
44     XML_TOK_INDEXSOURCE_USE_SHEET,
45     XML_TOK_INDEXSOURCE_USE_CHART,
46     XML_TOK_INDEXSOURCE_USE_DRAW,
47     XML_TOK_INDEXSOURCE_USE_IMAGE,
48     XML_TOK_INDEXSOURCE_USE_MATH,
49     XML_TOK_INDEXSOURCE_MAIN_ENTRY_STYLE,
50     XML_TOK_INDEXSOURCE_IGNORE_CASE,
51     XML_TOK_INDEXSOURCE_SEPARATORS,
52     XML_TOK_INDEXSOURCE_COMBINE_ENTRIES,
53     XML_TOK_INDEXSOURCE_COMBINE_WITH_DASH,
54     XML_TOK_INDEXSOURCE_KEYS_AS_ENTRIES,
55     XML_TOK_INDEXSOURCE_COMBINE_WITH_PP,
56     XML_TOK_INDEXSOURCE_CAPITALIZE,
57     XML_TOK_INDEXSOURCE_USE_OBJECTS,
58     XML_TOK_INDEXSOURCE_USE_GRAPHICS,
59     XML_TOK_INDEXSOURCE_USE_TABLES,
60     XML_TOK_INDEXSOURCE_USE_FRAMES,
61     XML_TOK_INDEXSOURCE_COPY_OUTLINE_LEVELS,
62     XML_TOK_INDEXSOURCE_USE_CAPTION,
63     XML_TOK_INDEXSOURCE_SEQUENCE_NAME,
64     XML_TOK_INDEXSOURCE_SEQUENCE_FORMAT,
65     XML_TOK_INDEXSOURCE_COMMA_SEPARATED,
66     XML_TOK_INDEXSOURCE_USE_INDEX_SOURCE_STYLES,
67     XML_TOK_INDEXSOURCE_SORT_ALGORITHM,
68     XML_TOK_INDEXSOURCE_LANGUAGE,
69     XML_TOK_INDEXSOURCE_COUNTRY,
70     XML_TOK_INDEXSOURCE_USER_INDEX_NAME,
71     XML_TOK_INDEXSOURCE_USE_OUTLINE_LEVEL
72 };
73 
74 
75 /**
76  * Superclass for index source elements
77  */
78 class XMLIndexSourceBaseContext : public SvXMLImportContext
79 {
80     const ::rtl::OUString sCreateFromChapter;
81     const ::rtl::OUString sIsRelativeTabstops;
82 
83     sal_Bool bUseLevelFormats;
84 
85     sal_Bool bChapterIndex;     /// chapter-wise or document index?
86     sal_Bool bRelativeTabs;     /// tab stops relative to margin or indent?
87 
88 protected:
89 
90     /// property set of index; must be accessible to subclasses
91     ::com::sun::star::uno::Reference<
92         ::com::sun::star::beans::XPropertySet> & rIndexPropertySet;
93 
94 public:
95 
96     TYPEINFO();
97 
98     XMLIndexSourceBaseContext(
99         SvXMLImport& rImport,
100         sal_uInt16 nPrfx,
101         const ::rtl::OUString& rLocalName,
102         ::com::sun::star::uno::Reference<
103             ::com::sun::star::beans::XPropertySet> & rPropSet,
104         sal_Bool bLevelFormats);
105 
106     ~XMLIndexSourceBaseContext();
107 
108 protected:
109 
110     virtual void StartElement(
111         const ::com::sun::star::uno::Reference<
112             ::com::sun::star::xml::sax::XAttributeList> & xAttrList);
113 
114     virtual void ProcessAttribute(
115         enum IndexSourceParamEnum eParam,
116         const ::rtl::OUString& rValue);
117 
118     virtual void EndElement();
119 
120     virtual SvXMLImportContext* CreateChildContext(
121         sal_uInt16 nPrefix,
122         const ::rtl::OUString& rLocalName,
123         const ::com::sun::star::uno::Reference<
124             ::com::sun::star::xml::sax::XAttributeList> & xAttrList );
125 };
126 
127 #endif
128