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 
24*b1cdbd2cSJim Jagielski #ifndef _XMLOFF_XMLSECTIONEXPORT_HXX_
25*b1cdbd2cSJim Jagielski #define _XMLOFF_XMLSECTIONEXPORT_HXX_
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <rtl/ustring.hxx>
28*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Reference.h>
29*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Sequence.h>
30*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/PropertyValue.hpp>
31*b1cdbd2cSJim Jagielski #include <xmloff/xmltoken.hxx>
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski class SvXMLExport;
34*b1cdbd2cSJim Jagielski class XMLTextParagraphExport;
35*b1cdbd2cSJim Jagielski namespace com { namespace sun { namespace star {
36*b1cdbd2cSJim Jagielski 	namespace text
37*b1cdbd2cSJim Jagielski 	{
38*b1cdbd2cSJim Jagielski 		class XTextSection;
39*b1cdbd2cSJim Jagielski 		class XDocumentIndex;
40*b1cdbd2cSJim Jagielski 		class XTextContent;
41*b1cdbd2cSJim Jagielski 	}
42*b1cdbd2cSJim Jagielski 	namespace beans
43*b1cdbd2cSJim Jagielski 	{
44*b1cdbd2cSJim Jagielski 		class XPropertySet;
45*b1cdbd2cSJim Jagielski 	}
46*b1cdbd2cSJim Jagielski 	namespace container
47*b1cdbd2cSJim Jagielski 	{
48*b1cdbd2cSJim Jagielski 		class XIndexReplace;
49*b1cdbd2cSJim Jagielski 	}
50*b1cdbd2cSJim Jagielski } } }
51*b1cdbd2cSJim Jagielski 
52*b1cdbd2cSJim Jagielski 
53*b1cdbd2cSJim Jagielski enum SectionTypeEnum
54*b1cdbd2cSJim Jagielski {
55*b1cdbd2cSJim Jagielski 	TEXT_SECTION_TYPE_SECTION,
56*b1cdbd2cSJim Jagielski 
57*b1cdbd2cSJim Jagielski 	// indices: keep index valued together and do not change order,
58*b1cdbd2cSJim Jagielski 	// because they are used to index into array
59*b1cdbd2cSJim Jagielski 	TEXT_SECTION_TYPE_TOC,
60*b1cdbd2cSJim Jagielski 	TEXT_SECTION_TYPE_TABLE,
61*b1cdbd2cSJim Jagielski 	TEXT_SECTION_TYPE_ILLUSTRATION,
62*b1cdbd2cSJim Jagielski 	TEXT_SECTION_TYPE_OBJECT,
63*b1cdbd2cSJim Jagielski 	TEXT_SECTION_TYPE_USER,
64*b1cdbd2cSJim Jagielski 	TEXT_SECTION_TYPE_ALPHABETICAL,
65*b1cdbd2cSJim Jagielski 	TEXT_SECTION_TYPE_BIBLIOGRAPHY,
66*b1cdbd2cSJim Jagielski 
67*b1cdbd2cSJim Jagielski 	// index header sections:
68*b1cdbd2cSJim Jagielski 	TEXT_SECTION_TYPE_HEADER,
69*b1cdbd2cSJim Jagielski 
70*b1cdbd2cSJim Jagielski 	TEXT_SECTION_TYPE_UNKNOWN
71*b1cdbd2cSJim Jagielski };
72*b1cdbd2cSJim Jagielski 
73*b1cdbd2cSJim Jagielski 
74*b1cdbd2cSJim Jagielski /**
75*b1cdbd2cSJim Jagielski  * This class handles the export of sections and indices (which are,
76*b1cdbd2cSJim Jagielski  * internally, just sections). It is intended to be used only from
77*b1cdbd2cSJim Jagielski  * within the XMLTextParagraphExport class.
78*b1cdbd2cSJim Jagielski  */
79*b1cdbd2cSJim Jagielski class XMLSectionExport
80*b1cdbd2cSJim Jagielski {
81*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sCondition;
82*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sCreateFromChapter;
83*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sCreateFromEmbeddedObjects;
84*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sCreateFromGraphicObjects;
85*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sCreateFromLabels;
86*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sCreateFromMarks;
87*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sCreateFromOtherEmbeddedObjects;
88*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sCreateFromOutline;
89*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sCreateFromStarCalc;
90*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sCreateFromStarChart;
91*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sCreateFromStarDraw;
92*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sCreateFromStarImage;
93*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sCreateFromStarMath;
94*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sCreateFromTables;
95*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sCreateFromTextFrames;
96*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sDdeCommandElement;
97*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sDdeCommandFile;
98*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sDdeCommandType;
99*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sFileLink;
100*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sIsCaseSensitive;
101*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sIsProtected;
102*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sIsVisible;
103*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sLabelCategory;
104*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sLabelDisplayType;
105*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sLevel;
106*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sLevelFormat;
107*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sLevelParagraphStyles;
108*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sLinkRegion;
109*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sMainEntryCharacterStyleName;
110*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sParaStyleHeading;
111*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sParaStyleLevel;
112*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sTitle;
113*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sName;
114*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sUseAlphabeticalSeparators;
115*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sUseCombinedEntries;
116*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sUseDash;
117*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sUseKeyAsEntry;
118*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sUseLevelFromSource;
119*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sUsePP;
120*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sUseUpperCase;
121*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sIsCommaSeparated;
122*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sIsAutomaticUpdate;
123*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sIsRelativeTabstops;
124*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sCreateFromLevelParagraphStyles;
125*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sDocumentIndex;
126*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sContentSection;
127*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sHeaderSection;
128*b1cdbd2cSJim Jagielski 
129*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sTextSection;
130*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sIsGlobalDocumentSection;
131*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sProtectionKey;
132*b1cdbd2cSJim Jagielski     const ::rtl::OUString sSortAlgorithm;
133*b1cdbd2cSJim Jagielski     const ::rtl::OUString sLocale;
134*b1cdbd2cSJim Jagielski     const ::rtl::OUString sUserIndexName;
135*b1cdbd2cSJim Jagielski 
136*b1cdbd2cSJim Jagielski     const ::rtl::OUString sIsCurrentlyVisible;
137*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sHeadingStyleName;
138*b1cdbd2cSJim Jagielski 
139*b1cdbd2cSJim Jagielski 	const ::rtl::OUString sEmpty;
140*b1cdbd2cSJim Jagielski 
141*b1cdbd2cSJim Jagielski 	SvXMLExport& rExport;
142*b1cdbd2cSJim Jagielski 	XMLTextParagraphExport& rParaExport;
143*b1cdbd2cSJim Jagielski 
144*b1cdbd2cSJim Jagielski 	sal_Bool bHeadingDummiesExported;
145*b1cdbd2cSJim Jagielski 
146*b1cdbd2cSJim Jagielski public:
147*b1cdbd2cSJim Jagielski 	XMLSectionExport(SvXMLExport& rExp,
148*b1cdbd2cSJim Jagielski 					 XMLTextParagraphExport& rParaExp);
149*b1cdbd2cSJim Jagielski 
150*b1cdbd2cSJim Jagielski 	/**
151*b1cdbd2cSJim Jagielski 	 * export section or index start and source elements. This
152*b1cdbd2cSJim Jagielski 	 * method handles the section styles, and delegates to the
153*b1cdbd2cSJim Jagielski 	 * appropriate section or index method.
154*b1cdbd2cSJim Jagielski 	 */
155*b1cdbd2cSJim Jagielski 	void ExportSectionStart(
156*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
157*b1cdbd2cSJim Jagielski 			::com::sun::star::text::XTextSection > & rSection,
158*b1cdbd2cSJim Jagielski 		sal_Bool bAutoStyles);
159*b1cdbd2cSJim Jagielski 
160*b1cdbd2cSJim Jagielski 	/**
161*b1cdbd2cSJim Jagielski 	 * export section or index end elements
162*b1cdbd2cSJim Jagielski 	 */
163*b1cdbd2cSJim Jagielski 	void ExportSectionEnd(
164*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
165*b1cdbd2cSJim Jagielski 			::com::sun::star::text::XTextSection > & rSection,
166*b1cdbd2cSJim Jagielski 		sal_Bool bAutoStyles);
167*b1cdbd2cSJim Jagielski 
168*b1cdbd2cSJim Jagielski 	/**
169*b1cdbd2cSJim Jagielski 	 * Should the content of this section be exported?
170*b1cdbd2cSJim Jagielski 	 * (E.g. linked sections in global documents are not always exported)
171*b1cdbd2cSJim Jagielski 	 */
172*b1cdbd2cSJim Jagielski 	sal_Bool IsMuteSection(
173*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
174*b1cdbd2cSJim Jagielski 			::com::sun::star::text::XTextSection > & rSection) const;
175*b1cdbd2cSJim Jagielski 
176*b1cdbd2cSJim Jagielski 	/**
177*b1cdbd2cSJim Jagielski 	 * XTextContent-version of IsMuteSection(Reference<XTextSection>&)
178*b1cdbd2cSJim Jagielski 	 * returns *true* for all non-section elements
179*b1cdbd2cSJim Jagielski 	 */
180*b1cdbd2cSJim Jagielski 	sal_Bool IsMuteSection(
181*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
182*b1cdbd2cSJim Jagielski 			::com::sun::star::text::XTextContent > & rSection,
183*b1cdbd2cSJim Jagielski 		/// return value if this content doesn't support the section property
184*b1cdbd2cSJim Jagielski 		sal_Bool bDefault) const;
185*b1cdbd2cSJim Jagielski 
186*b1cdbd2cSJim Jagielski 	/**
187*b1cdbd2cSJim Jagielski 	 * Determine whether rContent is contained in rEnclosingSection. If the
188*b1cdbd2cSJim Jagielski 	 * current section of rContent can not be determined, return bDefault.
189*b1cdbd2cSJim Jagielski 	 */
190*b1cdbd2cSJim Jagielski 	sal_Bool IsInSection(
191*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
192*b1cdbd2cSJim Jagielski 			::com::sun::star::text::XTextSection > & rEnclosingSection,
193*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
194*b1cdbd2cSJim Jagielski 			::com::sun::star::text::XTextContent > & rContent,
195*b1cdbd2cSJim Jagielski 		/// return value if this content doesn't support the section property
196*b1cdbd2cSJim Jagielski 		sal_Bool bDefault);
197*b1cdbd2cSJim Jagielski 
198*b1cdbd2cSJim Jagielski 	/**
199*b1cdbd2cSJim Jagielski 	 * Export the configuration element for bibliography indices.
200*b1cdbd2cSJim Jagielski 	 *
201*b1cdbd2cSJim Jagielski 	 * (This is part of XMLSectionExport because all section- and
202*b1cdbd2cSJim Jagielski 	 *  index-related items are handled here.)
203*b1cdbd2cSJim Jagielski 	 */
204*b1cdbd2cSJim Jagielski 	static void ExportBibliographyConfiguration(SvXMLExport& rExport);
205*b1cdbd2cSJim Jagielski 
206*b1cdbd2cSJim Jagielski 	/** export a heading for every level. This is used by master documents
207*b1cdbd2cSJim Jagielski 	 * 	to not loose the heading information if master documents are exported
208*b1cdbd2cSJim Jagielski 	 *  without section contents
209*b1cdbd2cSJim Jagielski 	 */
210*b1cdbd2cSJim Jagielski 	void ExportMasterDocHeadingDummies();
211*b1cdbd2cSJim Jagielski 
212*b1cdbd2cSJim Jagielski 
213*b1cdbd2cSJim Jagielski 
214*b1cdbd2cSJim Jagielski protected:
215*b1cdbd2cSJim Jagielski 
GetExport()216*b1cdbd2cSJim Jagielski 	inline SvXMLExport& GetExport() { return rExport; }
GetParaExport()217*b1cdbd2cSJim Jagielski 	inline XMLTextParagraphExport& GetParaExport() { return rParaExport; }
218*b1cdbd2cSJim Jagielski 
219*b1cdbd2cSJim Jagielski 	// export methods for section and index start:
220*b1cdbd2cSJim Jagielski 
221*b1cdbd2cSJim Jagielski 	/// export an index start element.
222*b1cdbd2cSJim Jagielski 	void ExportIndexStart(
223*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
224*b1cdbd2cSJim Jagielski 			::com::sun::star::text::XDocumentIndex > & rSection);
225*b1cdbd2cSJim Jagielski 
226*b1cdbd2cSJim Jagielski 	/// export an index header start element.
227*b1cdbd2cSJim Jagielski 	void ExportIndexHeaderStart(
228*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
229*b1cdbd2cSJim Jagielski 			::com::sun::star::text::XTextSection > & rSection);
230*b1cdbd2cSJim Jagielski 
231*b1cdbd2cSJim Jagielski 	/// export a proper section (and source elements)
232*b1cdbd2cSJim Jagielski 	void ExportRegularSectionStart(
233*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
234*b1cdbd2cSJim Jagielski 			::com::sun::star::text::XTextSection > & rSection);
235*b1cdbd2cSJim Jagielski 
236*b1cdbd2cSJim Jagielski 	/// export a table of content (and source element)
237*b1cdbd2cSJim Jagielski 	void ExportTableOfContentStart(
238*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
239*b1cdbd2cSJim Jagielski 			::com::sun::star::beans::XPropertySet > & rSection);
240*b1cdbd2cSJim Jagielski 
241*b1cdbd2cSJim Jagielski 	/// export a table index (and source element)
242*b1cdbd2cSJim Jagielski 	void ExportTableIndexStart(
243*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
244*b1cdbd2cSJim Jagielski 			::com::sun::star::beans::XPropertySet > & rSection);
245*b1cdbd2cSJim Jagielski 
246*b1cdbd2cSJim Jagielski 	/// export an object index (and source element)
247*b1cdbd2cSJim Jagielski 	void ExportObjectIndexStart(
248*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
249*b1cdbd2cSJim Jagielski 			::com::sun::star::beans::XPropertySet > & rSection);
250*b1cdbd2cSJim Jagielski 
251*b1cdbd2cSJim Jagielski 	/// export an illustration index (and source element)
252*b1cdbd2cSJim Jagielski 	void ExportIllustrationIndexStart(
253*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
254*b1cdbd2cSJim Jagielski 			::com::sun::star::beans::XPropertySet > & rSection);
255*b1cdbd2cSJim Jagielski 
256*b1cdbd2cSJim Jagielski 	/// export an alphabetical/keyword index (and source element)
257*b1cdbd2cSJim Jagielski 	void ExportAlphabeticalIndexStart(
258*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
259*b1cdbd2cSJim Jagielski 			::com::sun::star::beans::XPropertySet > & rSection);
260*b1cdbd2cSJim Jagielski 
261*b1cdbd2cSJim Jagielski 	/// export a user index (and source element)
262*b1cdbd2cSJim Jagielski 	void ExportUserIndexStart(
263*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
264*b1cdbd2cSJim Jagielski 			::com::sun::star::beans::XPropertySet > & rSection);
265*b1cdbd2cSJim Jagielski 
266*b1cdbd2cSJim Jagielski 	/// export the bibliography (and source element)
267*b1cdbd2cSJim Jagielski 	void ExportBibliographyStart(
268*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
269*b1cdbd2cSJim Jagielski 			::com::sun::star::beans::XPropertySet > & rIndex);
270*b1cdbd2cSJim Jagielski 
271*b1cdbd2cSJim Jagielski 	// helper methods:
272*b1cdbd2cSJim Jagielski 
273*b1cdbd2cSJim Jagielski 	/**
274*b1cdbd2cSJim Jagielski 	 * If this section is an index, the index is written in the
275*b1cdbd2cSJim Jagielski 	 * rIndex parameter. The return value is sal_True for all "special"
276*b1cdbd2cSJim Jagielski 	 * sections.
277*b1cdbd2cSJim Jagielski 	 *
278*b1cdbd2cSJim Jagielski 	 * Thus we have:
279*b1cdbd2cSJim Jagielski 	 * return sal_False: regular section
280*b1cdbd2cSJim Jagielski 	 * return sal_True, xIndex is empty: index header section
281*b1cdbd2cSJim Jagielski 	 * return sal_True, xIndex is set: index section */
282*b1cdbd2cSJim Jagielski 	sal_Bool GetIndex(
283*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
284*b1cdbd2cSJim Jagielski 			::com::sun::star::text::XTextSection > & rSection,
285*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Reference <
286*b1cdbd2cSJim Jagielski 			::com::sun::star::text::XDocumentIndex > & rIndex) const;
287*b1cdbd2cSJim Jagielski 
288*b1cdbd2cSJim Jagielski 	/// map service name to section type
289*b1cdbd2cSJim Jagielski 	enum SectionTypeEnum MapSectionType(const ::rtl::OUString& rSectionName);
290*b1cdbd2cSJim Jagielski 
291*b1cdbd2cSJim Jagielski 	/**
292*b1cdbd2cSJim Jagielski 	 * Export the index element start (for all index types).
293*b1cdbd2cSJim Jagielski 	 *
294*b1cdbd2cSJim Jagielski 	 * All additional attributes (usually none) for the index element
295*b1cdbd2cSJim Jagielski 	 * should have been set at GetExport() before calling this method.
296*b1cdbd2cSJim Jagielski 	 */
297*b1cdbd2cSJim Jagielski 	void ExportBaseIndexStart(
298*b1cdbd2cSJim Jagielski 		::xmloff::token::XMLTokenEnum eElement,
299*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
300*b1cdbd2cSJim Jagielski 			::com::sun::star::beans::XPropertySet > & rSection);
301*b1cdbd2cSJim Jagielski 
302*b1cdbd2cSJim Jagielski 	/**
303*b1cdbd2cSJim Jagielski 	 * Export the index source element (common for all index types).
304*b1cdbd2cSJim Jagielski 	 *
305*b1cdbd2cSJim Jagielski 	 * All additional attributes for the source element should have
306*b1cdbd2cSJim Jagielski 	 * been set at the GetExport() before calling this method.
307*b1cdbd2cSJim Jagielski 	 */
308*b1cdbd2cSJim Jagielski 	void ExportBaseIndexSource(
309*b1cdbd2cSJim Jagielski 		SectionTypeEnum eType,				  /// index type
310*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
311*b1cdbd2cSJim Jagielski 			::com::sun::star::beans::XPropertySet > & rSection);
312*b1cdbd2cSJim Jagielski 
313*b1cdbd2cSJim Jagielski 	/**
314*b1cdbd2cSJim Jagielski 	 * Export the index body (common for all index types).
315*b1cdbd2cSJim Jagielski 	 */
316*b1cdbd2cSJim Jagielski 	void ExportBaseIndexBody(
317*b1cdbd2cSJim Jagielski 		SectionTypeEnum eType,				  /// index type
318*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference <
319*b1cdbd2cSJim Jagielski 			::com::sun::star::beans::XPropertySet > & rSection);
320*b1cdbd2cSJim Jagielski 
321*b1cdbd2cSJim Jagielski 
322*b1cdbd2cSJim Jagielski 	/**
323*b1cdbd2cSJim Jagielski 	 * Helper method to export common attributes for table and
324*b1cdbd2cSJim Jagielski 	 * illustration indices
325*b1cdbd2cSJim Jagielski 	 */
326*b1cdbd2cSJim Jagielski  	void ExportTableAndIllustrationIndexSourceAttributes(
327*b1cdbd2cSJim Jagielski 	 	const ::com::sun::star::uno::Reference <
328*b1cdbd2cSJim Jagielski 			::com::sun::star::beans::XPropertySet > & rSection);
329*b1cdbd2cSJim Jagielski 
330*b1cdbd2cSJim Jagielski 	/// export one template for the specific index type
331*b1cdbd2cSJim Jagielski 	sal_Bool ExportIndexTemplate(
332*b1cdbd2cSJim Jagielski 		SectionTypeEnum eType,				  /// index type
333*b1cdbd2cSJim Jagielski 		sal_Int32 nLevel, 					  /// outline level (if applicable)
334*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference<
335*b1cdbd2cSJim Jagielski 			::com::sun::star::beans::XPropertySet> & rPropSet,
336*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Sequence<
337*b1cdbd2cSJim Jagielski 			::com::sun::star::uno::Sequence<
338*b1cdbd2cSJim Jagielski 				::com::sun::star::beans::PropertyValue> > & rValues);
339*b1cdbd2cSJim Jagielski 
340*b1cdbd2cSJim Jagielski 	/// export a single template element (e.g. span or tab-stop)
341*b1cdbd2cSJim Jagielski 	void ExportIndexTemplateElement(
342*b1cdbd2cSJim Jagielski         SectionTypeEnum eType, //i90246, needed for ODF 1.0, 1.0 and 1.2 management
343*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Sequence<
344*b1cdbd2cSJim Jagielski 			::com::sun::star::beans::PropertyValue> & rValues);
345*b1cdbd2cSJim Jagielski 
346*b1cdbd2cSJim Jagielski 	/// export level paragraph styles
347*b1cdbd2cSJim Jagielski 	void ExportLevelParagraphStyles(
348*b1cdbd2cSJim Jagielski 		::com::sun::star::uno::Reference<
349*b1cdbd2cSJim Jagielski 			::com::sun::star::container::XIndexReplace> & xStyles);
350*b1cdbd2cSJim Jagielski 
351*b1cdbd2cSJim Jagielski 
352*b1cdbd2cSJim Jagielski 	/// helper to export boolean properties
353*b1cdbd2cSJim Jagielski 	void ExportBoolean(
354*b1cdbd2cSJim Jagielski 		const ::com::sun::star::uno::Reference<
355*b1cdbd2cSJim Jagielski 			::com::sun::star::beans::XPropertySet> & rPropSet,
356*b1cdbd2cSJim Jagielski 		const ::rtl::OUString& sPropertyName,
357*b1cdbd2cSJim Jagielski 		enum ::xmloff::token::XMLTokenEnum eAttributeName,
358*b1cdbd2cSJim Jagielski 		sal_Bool bDefault,
359*b1cdbd2cSJim Jagielski 		sal_Bool bInvert = sal_False);
360*b1cdbd2cSJim Jagielski };
361*b1cdbd2cSJim Jagielski 
362*b1cdbd2cSJim Jagielski #endif
363