Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : :
30 : : #include <vector>
31 : :
32 : : #include <boost/scoped_array.hpp>
33 : :
34 : : #include <com/sun/star/container/XEnumerationAccess.hpp>
35 : : #include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
36 : : #include <com/sun/star/text/XChapterNumberingSupplier.hpp>
37 : : #include <com/sun/star/text/XTextFramesSupplier.hpp>
38 : : #include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp>
39 : : #include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
40 : : #include <com/sun/star/text/XFormField.hpp>
41 : : #include <com/sun/star/ucb/XAnyCompareFactory.hpp>
42 : : #include "xmloff/xmlnmspe.hxx"
43 : : #include <xmloff/txtstyli.hxx>
44 : : #include <xmloff/xmlnumi.hxx>
45 : :
46 : : #include "txtparai.hxx"
47 : : #include <xmloff/txtprmap.hxx>
48 : : #include "xmloff/txtimppr.hxx"
49 : : #include <xmloff/xmlimp.hxx>
50 : : #include "txtvfldi.hxx"
51 : : #include "xmloff/i18nmap.hxx"
52 : : #include "XMLTextListItemContext.hxx"
53 : : #include "XMLTextListBlockContext.hxx"
54 : : #include "XMLTextFrameContext.hxx"
55 : : #include "XMLTextFrameHyperlinkContext.hxx"
56 : : #include "XMLSectionImportContext.hxx"
57 : : #include "XMLIndexTOCContext.hxx"
58 : : #include <xmloff/XMLFontStylesContext.hxx>
59 : : #include <xmloff/XMLEventsImportContext.hxx>
60 : : #include "XMLTrackedChangesImportContext.hxx"
61 : : #include "XMLChangeImportContext.hxx"
62 : : #include "XMLAutoMarkFileContext.hxx"
63 : :
64 : : #include "XMLCalculationSettingsContext.hxx"
65 : : #include "XMLNumberStylesImport.hxx"
66 : : // XML import: reconstrution of assignment of paragraph style to outline levels (#i69629#)
67 : : #include <com/sun/star/beans/XPropertyState.hpp>
68 : : #include <txtlists.hxx>
69 : : #include <xmloff/odffields.hxx>
70 : : #include <comphelper/stlunosequence.hxx>
71 : : #include <tools/string.hxx>
72 : :
73 : : using ::rtl::OUString;
74 : : using ::rtl::OUStringBuffer;
75 : : using ::com::sun::star::ucb::XAnyCompare;
76 : :
77 : : using namespace ::std;
78 : : using namespace ::com::sun::star;
79 : : using namespace ::com::sun::star::uno;
80 : : using namespace ::com::sun::star::beans;
81 : : using namespace ::com::sun::star::text;
82 : : using namespace ::com::sun::star::frame;
83 : : using namespace ::com::sun::star::style;
84 : : using namespace ::com::sun::star::container;
85 : : using namespace ::com::sun::star::drawing;
86 : : using namespace ::com::sun::star::xml::sax;
87 : : using namespace ::com::sun::star::lang;
88 : : using namespace ::xmloff::token;
89 : : using ::com::sun::star::util::DateTime;
90 : : using namespace ::com::sun::star::ucb;
91 : : using namespace ::com::sun::star;
92 : : using ::comphelper::UStringLess;
93 : :
94 : :
95 : :
96 : : static SvXMLTokenMapEntry aTextElemTokenMap[] =
97 : : {
98 : : { XML_NAMESPACE_TEXT, XML_P, XML_TOK_TEXT_P },
99 : : { XML_NAMESPACE_TEXT, XML_H, XML_TOK_TEXT_H },
100 : : { XML_NAMESPACE_TEXT, XML_LIST, XML_TOK_TEXT_LIST },
101 : : { XML_NAMESPACE_DRAW, XML_FRAME, XML_TOK_TEXT_FRAME_PAGE },
102 : : { XML_NAMESPACE_DRAW, XML_A, XML_TOK_DRAW_A_PAGE },
103 : : { XML_NAMESPACE_TABLE,XML_TABLE, XML_TOK_TABLE_TABLE },
104 : : { XML_NAMESPACE_TEXT, XML_VARIABLE_DECLS, XML_TOK_TEXT_VARFIELD_DECLS },
105 : : { XML_NAMESPACE_TEXT, XML_USER_FIELD_DECLS, XML_TOK_TEXT_USERFIELD_DECLS },
106 : : { XML_NAMESPACE_TEXT, XML_SEQUENCE_DECLS, XML_TOK_TEXT_SEQUENCE_DECLS },
107 : : { XML_NAMESPACE_TEXT, XML_DDE_CONNECTION_DECLS, XML_TOK_TEXT_DDE_DECLS },
108 : : { XML_NAMESPACE_TEXT, XML_SECTION, XML_TOK_TEXT_SECTION },
109 : : { XML_NAMESPACE_TEXT, XML_TABLE_OF_CONTENT, XML_TOK_TEXT_TOC },
110 : : { XML_NAMESPACE_TEXT, XML_OBJECT_INDEX, XML_TOK_TEXT_OBJECT_INDEX },
111 : : { XML_NAMESPACE_TEXT, XML_TABLE_INDEX, XML_TOK_TEXT_TABLE_INDEX },
112 : : { XML_NAMESPACE_TEXT, XML_ILLUSTRATION_INDEX, XML_TOK_TEXT_ILLUSTRATION_INDEX },
113 : : { XML_NAMESPACE_TEXT, XML_USER_INDEX, XML_TOK_TEXT_USER_INDEX },
114 : : { XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX, XML_TOK_TEXT_ALPHABETICAL_INDEX },
115 : : { XML_NAMESPACE_TEXT, XML_BIBLIOGRAPHY, XML_TOK_TEXT_BIBLIOGRAPHY_INDEX },
116 : : { XML_NAMESPACE_TEXT, XML_INDEX_TITLE, XML_TOK_TEXT_INDEX_TITLE },
117 : : { XML_NAMESPACE_TEXT, XML_TRACKED_CHANGES, XML_TOK_TEXT_TRACKED_CHANGES },
118 : : { XML_NAMESPACE_TEXT, XML_CHANGE_START, XML_TOK_TEXT_CHANGE_START },
119 : : { XML_NAMESPACE_TEXT, XML_CHANGE_END, XML_TOK_TEXT_CHANGE_END },
120 : : { XML_NAMESPACE_TEXT, XML_CHANGE, XML_TOK_TEXT_CHANGE },
121 : : { XML_NAMESPACE_OFFICE, XML_FORMS, XML_TOK_TEXT_FORMS },
122 : : { XML_NAMESPACE_TABLE, XML_CALCULATION_SETTINGS, XML_TOK_TEXT_CALCULATION_SETTINGS },
123 : : { XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX_AUTO_MARK_FILE, XML_TOK_TEXT_AUTOMARK },
124 : : // #i52127#
125 : : { XML_NAMESPACE_TEXT, XML_NUMBERED_PARAGRAPH, XML_TOK_TEXT_NUMBERED_PARAGRAPH },
126 : :
127 : : XML_TOKEN_MAP_END
128 : : };
129 : :
130 : : static SvXMLTokenMapEntry aTextPElemTokenMap[] =
131 : : {
132 : : { XML_NAMESPACE_TEXT, XML_SPAN, XML_TOK_TEXT_SPAN },
133 : : { XML_NAMESPACE_TEXT, XML_TAB, XML_TOK_TEXT_TAB_STOP },
134 : : { XML_NAMESPACE_TEXT, XML_LINE_BREAK, XML_TOK_TEXT_LINE_BREAK },
135 : : { XML_NAMESPACE_TEXT, XML_SOFT_PAGE_BREAK, XML_TOK_TEXT_SOFT_PAGE_BREAK },
136 : : { XML_NAMESPACE_TEXT, XML_S, XML_TOK_TEXT_S },
137 : : { XML_NAMESPACE_TEXT, XML_A, XML_TOK_TEXT_HYPERLINK },
138 : : { XML_NAMESPACE_TEXT, XML_RUBY, XML_TOK_TEXT_RUBY },
139 : :
140 : : { XML_NAMESPACE_TEXT, XML_NOTE, XML_TOK_TEXT_NOTE },
141 : : { XML_NAMESPACE_TEXT, XML_BOOKMARK, XML_TOK_TEXT_BOOKMARK },
142 : : { XML_NAMESPACE_TEXT, XML_BOOKMARK_START, XML_TOK_TEXT_BOOKMARK_START },
143 : : { XML_NAMESPACE_TEXT, XML_BOOKMARK_END, XML_TOK_TEXT_BOOKMARK_END },
144 : : { XML_NAMESPACE_TEXT, XML_REFERENCE_MARK, XML_TOK_TEXT_REFERENCE },
145 : : { XML_NAMESPACE_TEXT, XML_REFERENCE_MARK_START,
146 : : XML_TOK_TEXT_REFERENCE_START },
147 : : { XML_NAMESPACE_TEXT, XML_REFERENCE_MARK_END,
148 : : XML_TOK_TEXT_REFERENCE_END },
149 : :
150 : : { XML_NAMESPACE_DRAW, XML_FRAME, XML_TOK_TEXT_FRAME },
151 : : { XML_NAMESPACE_DRAW, XML_A, XML_TOK_DRAW_A },
152 : :
153 : : // index marks
154 : : { XML_NAMESPACE_TEXT, XML_TOC_MARK, XML_TOK_TEXT_TOC_MARK },
155 : : { XML_NAMESPACE_TEXT, XML_TOC_MARK_START, XML_TOK_TEXT_TOC_MARK_START },
156 : : { XML_NAMESPACE_TEXT, XML_TOC_MARK_END, XML_TOK_TEXT_TOC_MARK_END },
157 : : { XML_NAMESPACE_TEXT, XML_USER_INDEX_MARK, XML_TOK_TEXT_USER_INDEX_MARK },
158 : : { XML_NAMESPACE_TEXT, XML_USER_INDEX_MARK_START,
159 : : XML_TOK_TEXT_USER_INDEX_MARK_START },
160 : : { XML_NAMESPACE_TEXT, XML_USER_INDEX_MARK_END,
161 : : XML_TOK_TEXT_USER_INDEX_MARK_END },
162 : : { XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX_MARK,
163 : : XML_TOK_TEXT_ALPHA_INDEX_MARK },
164 : : { XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX_MARK_START,
165 : : XML_TOK_TEXT_ALPHA_INDEX_MARK_START },
166 : : { XML_NAMESPACE_TEXT, XML_ALPHABETICAL_INDEX_MARK_END,
167 : : XML_TOK_TEXT_ALPHA_INDEX_MARK_END },
168 : :
169 : : // sender fields
170 : : { XML_NAMESPACE_TEXT, XML_SENDER_FIRSTNAME,XML_TOK_TEXT_SENDER_FIRSTNAME},
171 : : { XML_NAMESPACE_TEXT, XML_SENDER_LASTNAME, XML_TOK_TEXT_SENDER_LASTNAME },
172 : : { XML_NAMESPACE_TEXT, XML_SENDER_INITIALS, XML_TOK_TEXT_SENDER_INITIALS },
173 : : { XML_NAMESPACE_TEXT, XML_SENDER_TITLE, XML_TOK_TEXT_SENDER_TITLE },
174 : : { XML_NAMESPACE_TEXT, XML_SENDER_POSITION, XML_TOK_TEXT_SENDER_POSITION },
175 : : { XML_NAMESPACE_TEXT, XML_SENDER_EMAIL, XML_TOK_TEXT_SENDER_EMAIL },
176 : : { XML_NAMESPACE_TEXT, XML_SENDER_PHONE_PRIVATE,
177 : : XML_TOK_TEXT_SENDER_PHONE_PRIVATE },
178 : : { XML_NAMESPACE_TEXT, XML_SENDER_FAX, XML_TOK_TEXT_SENDER_FAX },
179 : : { XML_NAMESPACE_TEXT, XML_SENDER_COMPANY, XML_TOK_TEXT_SENDER_COMPANY },
180 : : { XML_NAMESPACE_TEXT, XML_SENDER_PHONE_WORK,
181 : : XML_TOK_TEXT_SENDER_PHONE_WORK },
182 : : { XML_NAMESPACE_TEXT, XML_SENDER_STREET, XML_TOK_TEXT_SENDER_STREET },
183 : : { XML_NAMESPACE_TEXT, XML_SENDER_CITY, XML_TOK_TEXT_SENDER_CITY },
184 : : { XML_NAMESPACE_TEXT, XML_SENDER_POSTAL_CODE,
185 : : XML_TOK_TEXT_SENDER_POSTAL_CODE },
186 : : { XML_NAMESPACE_TEXT, XML_SENDER_COUNTRY, XML_TOK_TEXT_SENDER_COUNTRY },
187 : : { XML_NAMESPACE_TEXT, XML_SENDER_STATE_OR_PROVINCE,
188 : : XML_TOK_TEXT_SENDER_STATE_OR_PROVINCE },
189 : :
190 : : // misc. document fields
191 : : { XML_NAMESPACE_TEXT, XML_AUTHOR_NAME, XML_TOK_TEXT_AUTHOR_NAME },
192 : : { XML_NAMESPACE_TEXT, XML_AUTHOR_INITIALS, XML_TOK_TEXT_AUTHOR_INITIALS },
193 : : { XML_NAMESPACE_TEXT, XML_DATE, XML_TOK_TEXT_DATE },
194 : : { XML_NAMESPACE_TEXT, XML_TIME, XML_TOK_TEXT_TIME },
195 : : { XML_NAMESPACE_TEXT, XML_PAGE_NUMBER, XML_TOK_TEXT_PAGE_NUMBER },
196 : : { XML_NAMESPACE_TEXT, XML_PAGE_CONTINUATION_STRING,
197 : : XML_TOK_TEXT_PAGE_CONTINUATION_STRING },
198 : :
199 : : // variable fields
200 : : { XML_NAMESPACE_TEXT, XML_VARIABLE_SET, XML_TOK_TEXT_VARIABLE_SET },
201 : : { XML_NAMESPACE_TEXT, XML_VARIABLE_GET, XML_TOK_TEXT_VARIABLE_GET },
202 : : { XML_NAMESPACE_TEXT, XML_VARIABLE_INPUT, XML_TOK_TEXT_VARIABLE_INPUT },
203 : : { XML_NAMESPACE_TEXT, XML_USER_FIELD_GET, XML_TOK_TEXT_USER_FIELD_GET },
204 : : { XML_NAMESPACE_TEXT, XML_USER_FIELD_INPUT,XML_TOK_TEXT_USER_FIELD_INPUT},
205 : : { XML_NAMESPACE_TEXT, XML_SEQUENCE, XML_TOK_TEXT_SEQUENCE },
206 : : { XML_NAMESPACE_TEXT, XML_EXPRESSION, XML_TOK_TEXT_EXPRESSION },
207 : : { XML_NAMESPACE_TEXT, XML_TEXT_INPUT, XML_TOK_TEXT_TEXT_INPUT },
208 : :
209 : : // database fields
210 : : { XML_NAMESPACE_TEXT, XML_DATABASE_DISPLAY,
211 : : XML_TOK_TEXT_DATABASE_DISPLAY },
212 : : { XML_NAMESPACE_TEXT, XML_DATABASE_NEXT,
213 : : XML_TOK_TEXT_DATABASE_NEXT },
214 : : { XML_NAMESPACE_TEXT, XML_DATABASE_ROW_SELECT,
215 : : XML_TOK_TEXT_DATABASE_SELECT },
216 : : { XML_NAMESPACE_TEXT, XML_DATABASE_ROW_NUMBER,
217 : : XML_TOK_TEXT_DATABASE_ROW_NUMBER },
218 : : { XML_NAMESPACE_TEXT, XML_DATABASE_NAME, XML_TOK_TEXT_DATABASE_NAME },
219 : :
220 : : // docinfo fields
221 : : { XML_NAMESPACE_TEXT, XML_INITIAL_CREATOR,
222 : : XML_TOK_TEXT_DOCUMENT_CREATION_AUTHOR },
223 : : { XML_NAMESPACE_TEXT, XML_DESCRIPTION, XML_TOK_TEXT_DOCUMENT_DESCRIPTION},
224 : : { XML_NAMESPACE_TEXT, XML_PRINTED_BY, XML_TOK_TEXT_DOCUMENT_PRINT_AUTHOR},
225 : : { XML_NAMESPACE_TEXT, XML_TITLE, XML_TOK_TEXT_DOCUMENT_TITLE },
226 : : { XML_NAMESPACE_TEXT, XML_SUBJECT, XML_TOK_TEXT_DOCUMENT_SUBJECT },
227 : : { XML_NAMESPACE_TEXT, XML_KEYWORDS, XML_TOK_TEXT_DOCUMENT_KEYWORDS },
228 : : { XML_NAMESPACE_TEXT, XML_CREATOR, XML_TOK_TEXT_DOCUMENT_SAVE_AUTHOR },
229 : : { XML_NAMESPACE_TEXT, XML_EDITING_CYCLES,
230 : : XML_TOK_TEXT_DOCUMENT_REVISION },
231 : : { XML_NAMESPACE_TEXT, XML_CREATION_DATE,
232 : : XML_TOK_TEXT_DOCUMENT_CREATION_DATE },
233 : : { XML_NAMESPACE_TEXT, XML_CREATION_TIME,
234 : : XML_TOK_TEXT_DOCUMENT_CREATION_TIME },
235 : : { XML_NAMESPACE_TEXT, XML_PRINT_DATE, XML_TOK_TEXT_DOCUMENT_PRINT_DATE },
236 : : { XML_NAMESPACE_TEXT, XML_PRINT_TIME, XML_TOK_TEXT_DOCUMENT_PRINT_TIME },
237 : : { XML_NAMESPACE_TEXT, XML_MODIFICATION_DATE,
238 : : XML_TOK_TEXT_DOCUMENT_SAVE_DATE },
239 : : { XML_NAMESPACE_TEXT, XML_MODIFICATION_TIME,
240 : : XML_TOK_TEXT_DOCUMENT_SAVE_TIME },
241 : : { XML_NAMESPACE_TEXT, XML_EDITING_DURATION,
242 : : XML_TOK_TEXT_DOCUMENT_EDIT_DURATION },
243 : : { XML_NAMESPACE_TEXT, XML_USER_DEFINED,
244 : : XML_TOK_TEXT_DOCUMENT_USER_DEFINED },
245 : :
246 : : // misc fields
247 : : { XML_NAMESPACE_TEXT, XML_PLACEHOLDER, XML_TOK_TEXT_PLACEHOLDER },
248 : : { XML_NAMESPACE_TEXT, XML_HIDDEN_TEXT, XML_TOK_TEXT_HIDDEN_TEXT },
249 : : { XML_NAMESPACE_TEXT, XML_HIDDEN_PARAGRAPH,
250 : : XML_TOK_TEXT_HIDDEN_PARAGRAPH },
251 : : { XML_NAMESPACE_TEXT, XML_CONDITIONAL_TEXT,
252 : : XML_TOK_TEXT_CONDITIONAL_TEXT },
253 : : { XML_NAMESPACE_TEXT, XML_FILE_NAME, XML_TOK_TEXT_FILENAME },
254 : : { XML_NAMESPACE_TEXT, XML_CHAPTER, XML_TOK_TEXT_CHAPTER },
255 : : { XML_NAMESPACE_TEXT, XML_TEMPLATE_NAME, XML_TOK_TEXT_TEMPLATENAME },
256 : : { XML_NAMESPACE_TEXT, XML_PARAGRAPH_COUNT, XML_TOK_TEXT_PARAGRAPH_COUNT },
257 : : { XML_NAMESPACE_TEXT, XML_WORD_COUNT, XML_TOK_TEXT_WORD_COUNT },
258 : : { XML_NAMESPACE_TEXT, XML_TABLE_COUNT, XML_TOK_TEXT_TABLE_COUNT },
259 : : { XML_NAMESPACE_TEXT, XML_CHARACTER_COUNT, XML_TOK_TEXT_CHARACTER_COUNT },
260 : : { XML_NAMESPACE_TEXT, XML_IMAGE_COUNT, XML_TOK_TEXT_IMAGE_COUNT },
261 : : { XML_NAMESPACE_TEXT, XML_OBJECT_COUNT, XML_TOK_TEXT_OBJECT_COUNT },
262 : : { XML_NAMESPACE_TEXT, XML_PAGE_COUNT, XML_TOK_TEXT_PAGE_COUNT },
263 : : { XML_NAMESPACE_TEXT, XML_PAGE_VARIABLE_GET, XML_TOK_TEXT_GET_PAGE_VAR },
264 : : { XML_NAMESPACE_TEXT, XML_PAGE_VARIABLE_SET, XML_TOK_TEXT_SET_PAGE_VAR },
265 : : { XML_NAMESPACE_TEXT, XML_EXECUTE_MACRO, XML_TOK_TEXT_MACRO },
266 : : { XML_NAMESPACE_TEXT, XML_DDE_CONNECTION, XML_TOK_TEXT_DDE },
267 : : { XML_NAMESPACE_TEXT, XML_REFERENCE_REF, XML_TOK_TEXT_REFERENCE_REF },
268 : : { XML_NAMESPACE_TEXT, XML_BOOKMARK_REF, XML_TOK_TEXT_BOOKMARK_REF },
269 : : { XML_NAMESPACE_TEXT, XML_SEQUENCE_REF, XML_TOK_TEXT_SEQUENCE_REF },
270 : : { XML_NAMESPACE_TEXT, XML_NOTE_REF, XML_TOK_TEXT_NOTE_REF },
271 : : { XML_NAMESPACE_TEXT, XML_BIBLIOGRAPHY_MARK,
272 : : XML_TOK_TEXT_BIBLIOGRAPHY_MARK },
273 : : { XML_NAMESPACE_OFFICE, XML_ANNOTATION, XML_TOK_TEXT_ANNOTATION },
274 : : { XML_NAMESPACE_OFFICE, XML_ANNOTATION_END, XML_TOK_TEXT_ANNOTATION_END },
275 : : { XML_NAMESPACE_TEXT, XML_SCRIPT, XML_TOK_TEXT_SCRIPT },
276 : : { XML_NAMESPACE_TEXT, XML_TABLE_FORMULA, XML_TOK_TEXT_TABLE_FORMULA },
277 : : { XML_NAMESPACE_TEXT, XML_DROPDOWN, XML_TOK_TEXT_DROPDOWN },
278 : :
279 : : // Calc fields
280 : : { XML_NAMESPACE_TEXT, XML_SHEET_NAME, XML_TOK_TEXT_SHEET_NAME },
281 : :
282 : : // draw fields
283 : : { XML_NAMESPACE_TEXT, XML_MEASURE, XML_TOK_TEXT_MEASURE },
284 : :
285 : : // RDF metadata
286 : : { XML_NAMESPACE_TEXT, XML_META, XML_TOK_TEXT_META },
287 : : { XML_NAMESPACE_TEXT, XML_META_FIELD, XML_TOK_TEXT_META_FIELD },
288 : :
289 : : // redlining (aka change tracking)
290 : : { XML_NAMESPACE_TEXT, XML_CHANGE_START, XML_TOK_TEXTP_CHANGE_START },
291 : : { XML_NAMESPACE_TEXT, XML_CHANGE_END , XML_TOK_TEXTP_CHANGE_END },
292 : : { XML_NAMESPACE_TEXT, XML_CHANGE, XML_TOK_TEXTP_CHANGE },
293 : :
294 : : { XML_NAMESPACE_PRESENTATION, XML_HEADER, XML_TOK_DRAW_HEADER },
295 : : { XML_NAMESPACE_PRESENTATION, XML_FOOTER, XML_TOK_DRAW_FOOTER },
296 : : { XML_NAMESPACE_PRESENTATION, XML_DATE_TIME, XML_TOK_DRAW_DATE_TIME },
297 : : { XML_NAMESPACE_TEXT, XML_PAGE_CONTINUATION, XML_TOK_TEXT_PAGE_CONTINUATION },
298 : :
299 : : { XML_NAMESPACE_FIELD, XML_FIELDMARK, XML_TOK_TEXT_FIELDMARK },
300 : : { XML_NAMESPACE_FIELD, XML_FIELDMARK_START, XML_TOK_TEXT_FIELDMARK_START },
301 : : { XML_NAMESPACE_FIELD, XML_FIELDMARK_END, XML_TOK_TEXT_FIELDMARK_END },
302 : :
303 : :
304 : : XML_TOKEN_MAP_END
305 : : };
306 : :
307 : : static SvXMLTokenMapEntry aTextPAttrTokenMap[] =
308 : : {
309 : : { XML_NAMESPACE_XML , XML_ID, XML_TOK_TEXT_P_XMLID },
310 : : { XML_NAMESPACE_XHTML, XML_ABOUT, XML_TOK_TEXT_P_ABOUT },
311 : : { XML_NAMESPACE_XHTML, XML_PROPERTY, XML_TOK_TEXT_P_PROPERTY },
312 : : { XML_NAMESPACE_XHTML, XML_CONTENT, XML_TOK_TEXT_P_CONTENT },
313 : : { XML_NAMESPACE_XHTML, XML_DATATYPE, XML_TOK_TEXT_P_DATATYPE },
314 : : { XML_NAMESPACE_TEXT, XML_ID, XML_TOK_TEXT_P_TEXTID },
315 : : { XML_NAMESPACE_TEXT, XML_STYLE_NAME, XML_TOK_TEXT_P_STYLE_NAME },
316 : : { XML_NAMESPACE_TEXT, XML_COND_STYLE_NAME,
317 : : XML_TOK_TEXT_P_COND_STYLE_NAME },
318 : : { XML_NAMESPACE_TEXT, XML_OUTLINE_LEVEL,XML_TOK_TEXT_P_LEVEL },
319 : : { XML_NAMESPACE_TEXT, XML_IS_LIST_HEADER,XML_TOK_TEXT_P_IS_LIST_HEADER },
320 : : { XML_NAMESPACE_TEXT, XML_RESTART_NUMBERING,XML_TOK_TEXT_P_RESTART_NUMBERING },
321 : : { XML_NAMESPACE_TEXT, XML_START_VALUE,XML_TOK_TEXT_P_START_VALUE },
322 : : XML_TOKEN_MAP_END
323 : : };
324 : :
325 : : static SvXMLTokenMapEntry aTextNumberedParagraphAttrTokenMap[] =
326 : : {
327 : : { XML_NAMESPACE_XML , XML_ID, XML_TOK_TEXT_NUMBERED_PARAGRAPH_XMLID },
328 : : { XML_NAMESPACE_TEXT, XML_LIST_ID,
329 : : XML_TOK_TEXT_NUMBERED_PARAGRAPH_LIST_ID },
330 : : { XML_NAMESPACE_TEXT, XML_LEVEL, XML_TOK_TEXT_NUMBERED_PARAGRAPH_LEVEL },
331 : : { XML_NAMESPACE_TEXT, XML_STYLE_NAME,
332 : : XML_TOK_TEXT_NUMBERED_PARAGRAPH_STYLE_NAME },
333 : : { XML_NAMESPACE_TEXT, XML_CONTINUE_NUMBERING,
334 : : XML_TOK_TEXT_NUMBERED_PARAGRAPH_CONTINUE_NUMBERING },
335 : : { XML_NAMESPACE_TEXT, XML_START_VALUE,
336 : : XML_TOK_TEXT_NUMBERED_PARAGRAPH_START_VALUE },
337 : : XML_TOKEN_MAP_END
338 : : };
339 : :
340 : : static SvXMLTokenMapEntry aTextListBlockAttrTokenMap[] =
341 : : {
342 : : { XML_NAMESPACE_XML , XML_ID, XML_TOK_TEXT_LIST_BLOCK_XMLID },
343 : : { XML_NAMESPACE_TEXT, XML_STYLE_NAME,
344 : : XML_TOK_TEXT_LIST_BLOCK_STYLE_NAME },
345 : : { XML_NAMESPACE_TEXT, XML_CONTINUE_NUMBERING,
346 : : XML_TOK_TEXT_LIST_BLOCK_CONTINUE_NUMBERING },
347 : : { XML_NAMESPACE_TEXT, XML_CONTINUE_LIST,
348 : : XML_TOK_TEXT_LIST_BLOCK_CONTINUE_LIST },
349 : : XML_TOKEN_MAP_END
350 : : };
351 : :
352 : : static SvXMLTokenMapEntry aTextListBlockElemTokenMap[] =
353 : : {
354 : : { XML_NAMESPACE_TEXT, XML_LIST_HEADER, XML_TOK_TEXT_LIST_HEADER },
355 : : { XML_NAMESPACE_TEXT, XML_LIST_ITEM, XML_TOK_TEXT_LIST_ITEM },
356 : : XML_TOKEN_MAP_END
357 : : };
358 : :
359 : : static SvXMLTokenMapEntry aTextFrameAttrTokenMap[] =
360 : : {
361 : : { XML_NAMESPACE_DRAW, XML_STYLE_NAME, XML_TOK_TEXT_FRAME_STYLE_NAME },
362 : : { XML_NAMESPACE_DRAW, XML_NAME, XML_TOK_TEXT_FRAME_NAME },
363 : : { XML_NAMESPACE_TEXT, XML_ANCHOR_TYPE, XML_TOK_TEXT_FRAME_ANCHOR_TYPE },
364 : : { XML_NAMESPACE_TEXT, XML_ANCHOR_PAGE_NUMBER, XML_TOK_TEXT_FRAME_ANCHOR_PAGE_NUMBER },
365 : : { XML_NAMESPACE_SVG, XML_X, XML_TOK_TEXT_FRAME_X },
366 : : { XML_NAMESPACE_SVG, XML_Y, XML_TOK_TEXT_FRAME_Y },
367 : : { XML_NAMESPACE_SVG, XML_WIDTH, XML_TOK_TEXT_FRAME_WIDTH },
368 : : { XML_NAMESPACE_FO, XML_MIN_WIDTH, XML_TOK_TEXT_FRAME_MIN_WIDTH },
369 : : { XML_NAMESPACE_STYLE, XML_REL_WIDTH, XML_TOK_TEXT_FRAME_REL_WIDTH },
370 : : { XML_NAMESPACE_SVG, XML_HEIGHT, XML_TOK_TEXT_FRAME_HEIGHT },
371 : : { XML_NAMESPACE_FO, XML_MIN_HEIGHT, XML_TOK_TEXT_FRAME_MIN_HEIGHT },
372 : : { XML_NAMESPACE_STYLE, XML_REL_HEIGHT, XML_TOK_TEXT_FRAME_REL_HEIGHT },
373 : : { XML_NAMESPACE_DRAW, XML_CHAIN_NEXT_NAME, XML_TOK_TEXT_FRAME_NEXT_CHAIN_NAME },
374 : : { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXT_FRAME_HREF },
375 : : { XML_NAMESPACE_DRAW, XML_NAME, XML_TOK_TEXT_FRAME_FILTER_NAME },
376 : : { XML_NAMESPACE_DRAW, XML_ZINDEX, XML_TOK_TEXT_FRAME_Z_INDEX },
377 : : { XML_NAMESPACE_SVG, XML_TRANSFORM, XML_TOK_TEXT_FRAME_TRANSFORM },
378 : : { XML_NAMESPACE_DRAW, XML_CLASS_ID, XML_TOK_TEXT_FRAME_CLASS_ID },
379 : : { XML_NAMESPACE_DRAW, XML_CODE, XML_TOK_TEXT_FRAME_CODE },
380 : : { XML_NAMESPACE_DRAW, XML_OBJECT, XML_TOK_TEXT_FRAME_OBJECT },
381 : : { XML_NAMESPACE_DRAW, XML_ARCHIVE, XML_TOK_TEXT_FRAME_ARCHIVE },
382 : : { XML_NAMESPACE_DRAW, XML_MAY_SCRIPT, XML_TOK_TEXT_FRAME_MAY_SCRIPT },
383 : : { XML_NAMESPACE_DRAW, XML_MIME_TYPE, XML_TOK_TEXT_FRAME_MIME_TYPE },
384 : : { XML_NAMESPACE_DRAW, XML_APPLET_NAME, XML_TOK_TEXT_FRAME_APPLET_NAME },
385 : : { XML_NAMESPACE_DRAW, XML_FRAME_NAME, XML_TOK_TEXT_FRAME_FRAME_NAME },
386 : : { XML_NAMESPACE_DRAW, XML_NOTIFY_ON_UPDATE_OF_RANGES, XML_TOK_TEXT_FRAME_NOTIFY_ON_UPDATE },
387 : : { XML_NAMESPACE_DRAW, XML_NOTIFY_ON_UPDATE_OF_TABLE, XML_TOK_TEXT_FRAME_NOTIFY_ON_UPDATE },
388 : : XML_TOKEN_MAP_END
389 : : };
390 : :
391 : : static SvXMLTokenMapEntry aTextContourAttrTokenMap[] =
392 : : {
393 : : { XML_NAMESPACE_SVG, XML_WIDTH, XML_TOK_TEXT_CONTOUR_WIDTH },
394 : : { XML_NAMESPACE_SVG, XML_HEIGHT, XML_TOK_TEXT_CONTOUR_HEIGHT },
395 : : { XML_NAMESPACE_SVG, XML_VIEWBOX, XML_TOK_TEXT_CONTOUR_VIEWBOX },
396 : : { XML_NAMESPACE_SVG, XML_D, XML_TOK_TEXT_CONTOUR_D },
397 : : { XML_NAMESPACE_DRAW,XML_POINTS, XML_TOK_TEXT_CONTOUR_POINTS },
398 : : { XML_NAMESPACE_DRAW,XML_RECREATE_ON_EDIT, XML_TOK_TEXT_CONTOUR_AUTO },
399 : : XML_TOKEN_MAP_END
400 : : };
401 : :
402 : : static SvXMLTokenMapEntry aTextHyperlinkAttrTokenMap[] =
403 : : {
404 : : { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXT_HYPERLINK_HREF },
405 : : { XML_NAMESPACE_OFFICE, XML_NAME, XML_TOK_TEXT_HYPERLINK_NAME },
406 : : { XML_NAMESPACE_XLINK, XML_SHOW, XML_TOK_TEXT_HYPERLINK_SHOW },
407 : : { XML_NAMESPACE_OFFICE, XML_TARGET_FRAME_NAME, XML_TOK_TEXT_HYPERLINK_TARGET_FRAME },
408 : : { XML_NAMESPACE_TEXT, XML_STYLE_NAME, XML_TOK_TEXT_HYPERLINK_STYLE_NAME },
409 : : { XML_NAMESPACE_TEXT, XML_VISITED_STYLE_NAME, XML_TOK_TEXT_HYPERLINK_VIS_STYLE_NAME },
410 : : { XML_NAMESPACE_OFFICE, XML_SERVER_MAP, XML_TOK_TEXT_HYPERLINK_SERVER_MAP },
411 : : XML_TOKEN_MAP_END
412 : : };
413 : :
414 : : static SvXMLTokenMapEntry aTextMasterPageElemTokenMap[] =
415 : : {
416 : : { XML_NAMESPACE_STYLE, XML_HEADER, XML_TOK_TEXT_MP_HEADER },
417 : : { XML_NAMESPACE_STYLE, XML_FOOTER, XML_TOK_TEXT_MP_FOOTER },
418 : : { XML_NAMESPACE_STYLE, XML_HEADER_LEFT, XML_TOK_TEXT_MP_HEADER_LEFT },
419 : : { XML_NAMESPACE_STYLE, XML_FOOTER_LEFT, XML_TOK_TEXT_MP_FOOTER_LEFT },
420 : : { XML_NAMESPACE_STYLE, XML_HEADER_FIRST, XML_TOK_TEXT_MP_HEADER_FIRST },
421 : : { XML_NAMESPACE_STYLE, XML_FOOTER_FIRST, XML_TOK_TEXT_MP_FOOTER_FIRST },
422 : :
423 : : XML_TOKEN_MAP_END
424 : : };
425 : :
426 : : static SvXMLTokenMapEntry aTextFieldAttrTokenMap[] =
427 : : {
428 : : { XML_NAMESPACE_TEXT, XML_FIXED, XML_TOK_TEXTFIELD_FIXED },
429 : : { XML_NAMESPACE_TEXT, XML_DESCRIPTION, XML_TOK_TEXTFIELD_DESCRIPTION },
430 : : { XML_NAMESPACE_TEXT, XML_HELP, XML_TOK_TEXTFIELD_HELP },
431 : : { XML_NAMESPACE_TEXT, XML_HINT, XML_TOK_TEXTFIELD_HINT },
432 : : { XML_NAMESPACE_TEXT, XML_PLACEHOLDER_TYPE,
433 : : XML_TOK_TEXTFIELD_PLACEHOLDER_TYPE },
434 : : { XML_NAMESPACE_TEXT, XML_NAME, XML_TOK_TEXTFIELD_NAME },
435 : : { XML_NAMESPACE_TEXT, XML_FORMULA, XML_TOK_TEXTFIELD_FORMULA },
436 : : { XML_NAMESPACE_STYLE, XML_NUM_FORMAT, XML_TOK_TEXTFIELD_NUM_FORMAT },
437 : : { XML_NAMESPACE_STYLE, XML_NUM_LETTER_SYNC,
438 : : XML_TOK_TEXTFIELD_NUM_LETTER_SYNC },
439 : : { XML_NAMESPACE_TEXT, XML_DISPLAY_FORMULA,
440 : : XML_TOK_TEXTFIELD_DISPLAY_FORMULA },
441 : : { XML_NAMESPACE_TEXT, XML_VALUE_TYPE, XML_TOK_TEXTFIELD_VALUE_TYPE }, // #i32362#: src680m48++ saves text:value-type
442 : : { XML_NAMESPACE_OFFICE, XML_VALUE_TYPE, XML_TOK_TEXTFIELD_VALUE_TYPE },
443 : : { XML_NAMESPACE_TEXT, XML_VALUE, XML_TOK_TEXTFIELD_VALUE },
444 : : { XML_NAMESPACE_OFFICE, XML_VALUE, XML_TOK_TEXTFIELD_VALUE },
445 : : { XML_NAMESPACE_TEXT, XML_STRING_VALUE, XML_TOK_TEXTFIELD_STRING_VALUE },
446 : : { XML_NAMESPACE_OFFICE, XML_STRING_VALUE, XML_TOK_TEXTFIELD_STRING_VALUE },
447 : : { XML_NAMESPACE_TEXT, XML_DATE_VALUE, XML_TOK_TEXTFIELD_DATE_VALUE },
448 : : { XML_NAMESPACE_OFFICE, XML_DATE_VALUE, XML_TOK_TEXTFIELD_DATE_VALUE },
449 : : { XML_NAMESPACE_TEXT, XML_TIME_VALUE, XML_TOK_TEXTFIELD_TIME_VALUE },
450 : : { XML_NAMESPACE_OFFICE, XML_TIME_VALUE, XML_TOK_TEXTFIELD_TIME_VALUE },
451 : : { XML_NAMESPACE_OFFICE, XML_BOOLEAN_VALUE, XML_TOK_TEXTFIELD_BOOL_VALUE},
452 : : { XML_NAMESPACE_OFFICE, XML_CURRENCY, XML_TOK_TEXTFIELD_CURRENCY},
453 : : { XML_NAMESPACE_STYLE, XML_DATA_STYLE_NAME,
454 : : XML_TOK_TEXTFIELD_DATA_STYLE_NAME },
455 : : { XML_NAMESPACE_TEXT, XML_DISPLAY_OUTLINE_LEVEL,
456 : : XML_TOK_TEXTFIELD_NUMBERING_LEVEL },
457 : : { XML_NAMESPACE_TEXT, XML_SEPARATION_CHARACTER,
458 : : XML_TOK_TEXTFIELD_NUMBERING_SEPARATOR },
459 : : { XML_NAMESPACE_TEXT, XML_DISPLAY, XML_TOK_TEXTFIELD_DISPLAY },
460 : : { XML_NAMESPACE_TEXT, XML_TIME_ADJUST, XML_TOK_TEXTFIELD_TIME_ADJUST },
461 : : { XML_NAMESPACE_TEXT, XML_DATE_ADJUST, XML_TOK_TEXTFIELD_DATE_ADJUST },
462 : : { XML_NAMESPACE_TEXT, XML_PAGE_ADJUST, XML_TOK_TEXTFIELD_PAGE_ADJUST },
463 : : { XML_NAMESPACE_TEXT, XML_SELECT_PAGE, XML_TOK_TEXTFIELD_SELECT_PAGE },
464 : : { XML_NAMESPACE_TEXT, XML_DATABASE_NAME, XML_TOK_TEXTFIELD_DATABASE_NAME},
465 : : { XML_NAMESPACE_TEXT, XML_TABLE_NAME, XML_TOK_TEXTFIELD_TABLE_NAME },
466 : : { XML_NAMESPACE_TEXT, XML_COLUMN_NAME, XML_TOK_TEXTFIELD_COLUMN_NAME },
467 : : { XML_NAMESPACE_TEXT, XML_ROW_NUMBER, XML_TOK_TEXTFIELD_ROW_NUMBER },
468 : : { XML_NAMESPACE_TEXT, XML_CONDITION, XML_TOK_TEXTFIELD_CONDITION },
469 : : { XML_NAMESPACE_TEXT, XML_STRING_VALUE_IF_TRUE,
470 : : XML_TOK_TEXTFIELD_STRING_VALUE_IF_TRUE },
471 : : { XML_NAMESPACE_TEXT, XML_STRING_VALUE_IF_FALSE,
472 : : XML_TOK_TEXTFIELD_STRING_VALUE_IF_FALSE },
473 : : { XML_NAMESPACE_TEXT, XML_EDITING_CYCLES, XML_TOK_TEXTFIELD_REVISION },
474 : : { XML_NAMESPACE_TEXT, XML_OUTLINE_LEVEL, XML_TOK_TEXTFIELD_OUTLINE_LEVEL},
475 : : { XML_NAMESPACE_TEXT, XML_ACTIVE, XML_TOK_TEXTFIELD_ACTIVE },
476 : : { XML_NAMESPACE_TEXT, XML_NOTE_CLASS, XML_TOK_TEXTFIELD_NOTE_CLASS },
477 : : { XML_NAMESPACE_TEXT, XML_REFERENCE_FORMAT,
478 : : XML_TOK_TEXTFIELD_REFERENCE_FORMAT },
479 : : { XML_NAMESPACE_TEXT, XML_REF_NAME, XML_TOK_TEXTFIELD_REF_NAME },
480 : : { XML_NAMESPACE_TEXT, XML_CONNECTION_NAME,
481 : : XML_TOK_TEXTFIELD_CONNECTION_NAME },
482 : : { XML_NAMESPACE_XLINK, XML_HREF, XML_TOK_TEXTFIELD_HREF },
483 : : { XML_NAMESPACE_OFFICE, XML_TARGET_FRAME_NAME,
484 : : XML_TOK_TEXTFIELD_TARGET_FRAME },
485 : : { XML_NAMESPACE_TEXT, XML_ANNOTATION, XML_TOK_TEXTFIELD_ANNOTATION },
486 : : { XML_NAMESPACE_SCRIPT, XML_LANGUAGE, XML_TOK_TEXTFIELD_LANGUAGE },
487 : : { XML_NAMESPACE_TEXT, XML_KIND, XML_TOK_TEXTFIELD_MEASURE_KIND },
488 : : { XML_NAMESPACE_TEXT, XML_IS_HIDDEN, XML_TOK_TEXTFIELD_IS_HIDDEN },
489 : : { XML_NAMESPACE_TEXT, XML_CURRENT_VALUE,
490 : : XML_TOK_TEXTFIELD_CURRENT_VALUE },
491 : : { XML_NAMESPACE_TEXT, XML_TABLE_TYPE, XML_TOK_TEXTFIELD_TABLE_TYPE },
492 : : { XML_NAMESPACE_OFFICE, XML_NAME, XML_TOK_TEXT_NAME },
493 : :
494 : : XML_TOKEN_MAP_END
495 : : };
496 : :
497 : :
498 : : // maximum allowed length of combined characters field
499 : : #define MAX_COMBINED_CHARACTERS 6
500 : :
501 [ + - ][ + - ]: 482 : struct SAL_DLLPRIVATE XMLTextImportHelper::Impl
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ]
502 : : : private ::boost::noncopyable
503 : : {
504 : : SAL_WNODEPRECATED_DECLARATIONS_PUSH
505 : : ::std::auto_ptr<SvXMLTokenMap> m_pTextElemTokenMap;
506 : : ::std::auto_ptr<SvXMLTokenMap> m_pTextPElemTokenMap;
507 : : ::std::auto_ptr<SvXMLTokenMap> m_pTextPAttrTokenMap;
508 : : ::std::auto_ptr<SvXMLTokenMap> m_pTextFieldAttrTokenMap;
509 : : ::std::auto_ptr<SvXMLTokenMap> m_pTextNumberedParagraphAttrTokenMap;
510 : : ::std::auto_ptr<SvXMLTokenMap> m_pTextListBlockAttrTokenMap;
511 : : ::std::auto_ptr<SvXMLTokenMap> m_pTextListBlockElemTokenMap;
512 : : ::std::auto_ptr<SvXMLTokenMap> m_pTextFrameAttrTokenMap;
513 : : ::std::auto_ptr<SvXMLTokenMap> m_pTextContourAttrTokenMap;
514 : : ::std::auto_ptr<SvXMLTokenMap> m_pTextHyperlinkAttrTokenMap;
515 : : ::std::auto_ptr<SvXMLTokenMap> m_pTextMasterPageElemTokenMap;
516 : : ::std::auto_ptr< std::vector<rtl::OUString> > m_pPrevFrmNames;
517 : : ::std::auto_ptr< std::vector<rtl::OUString> > m_pNextFrmNames;
518 : : ::std::auto_ptr<XMLTextListsHelper> m_pTextListsHelper;
519 : : SAL_WNODEPRECATED_DECLARATIONS_POP
520 : :
521 : : SvXMLImportContextRef m_xAutoStyles;
522 : : SvXMLImportContextRef m_xFontDecls;
523 : :
524 : : UniReference< SvXMLImportPropertyMapper > m_xParaImpPrMap;
525 : : UniReference< SvXMLImportPropertyMapper > m_xTextImpPrMap;
526 : : UniReference< SvXMLImportPropertyMapper > m_xFrameImpPrMap;
527 : : UniReference< SvXMLImportPropertyMapper > m_xSectionImpPrMap;
528 : : UniReference< SvXMLImportPropertyMapper > m_xRubyImpPrMap;
529 : :
530 : : SAL_WNODEPRECATED_DECLARATIONS_PUSH
531 : : ::std::auto_ptr<SvI18NMap> m_pRenameMap;
532 : : SAL_WNODEPRECATED_DECLARATIONS_POP
533 : : /* Change and extend data structure:
534 : : - data structure contains candidates of paragraph styles, which
535 : : will be assigned to the outline style
536 : : - data structure contains more than one candidate for each list level
537 : : of the outline style (#i69629#)
538 : : */
539 : : ::boost::scoped_array< ::std::vector< ::rtl::OUString > >
540 : : m_pOutlineStylesCandidates;
541 : :
542 : : // start range, xml:id, RDFa stuff
543 : : typedef ::boost::tuple<
544 : : uno::Reference<text::XTextRange>, ::rtl::OUString,
545 : : ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > >
546 : : BookmarkMapEntry_t;
547 : : /// start ranges for open bookmarks
548 : : ::std::map< ::rtl::OUString, BookmarkMapEntry_t,
549 : : ::comphelper::UStringLess> m_BookmarkStartRanges;
550 : :
551 : : typedef ::std::vector< ::rtl::OUString > BookmarkVector_t;
552 : : BookmarkVector_t m_BookmarkVector;
553 : :
554 : : /// name of the last 'open' redline that started between paragraphs
555 : : ::rtl::OUString m_sOpenRedlineIdentifier;
556 : :
557 : : uno::Reference<text::XText> m_xText;
558 : : uno::Reference<text::XTextCursor> m_xCursor;
559 : : uno::Reference<text::XTextRange> m_xCursorAsRange;
560 : : uno::Reference<container::XNameContainer> m_xParaStyles;
561 : : uno::Reference<container::XNameContainer> m_xTextStyles;
562 : : uno::Reference<container::XNameContainer> m_xNumStyles;
563 : : uno::Reference<container::XNameContainer> m_xFrameStyles;
564 : : uno::Reference<container::XNameContainer> m_xPageStyles;
565 : : uno::Reference<container::XIndexReplace> m_xChapterNumbering;
566 : : uno::Reference<container::XNameAccess> m_xTextFrames;
567 : : uno::Reference<container::XNameAccess> m_xGraphics;
568 : : uno::Reference<container::XNameAccess> m_xObjects;
569 : : uno::Reference<lang::XMultiServiceFactory> m_xServiceFactory;
570 : :
571 : : SvXMLImport & m_rSvXMLImport;
572 : :
573 : : bool m_bInsertMode : 1;
574 : : bool m_bStylesOnlyMode : 1;
575 : : bool m_bBlockMode : 1;
576 : : bool m_bProgress : 1;
577 : : bool m_bOrganizerMode : 1;
578 : : bool m_bBodyContentStarted : 1;
579 : :
580 : : // #107848#
581 : : // One more flag to remember if we are inside a deleted redline section
582 : : bool m_bInsideDeleteContext : 1;
583 : :
584 : : typedef ::std::pair< ::rtl::OUString, ::rtl::OUString> field_name_type_t;
585 : : typedef ::std::pair< ::rtl::OUString, ::rtl::OUString > field_param_t;
586 : : typedef ::std::vector< field_param_t > field_params_t;
587 : : typedef ::std::pair< field_name_type_t, field_params_t > field_stack_item_t;
588 : : typedef ::std::stack< field_stack_item_t > field_stack_t;
589 : :
590 : : field_stack_t m_FieldStack;
591 : :
592 : : ::rtl::OUString m_sCellParaStyleDefault;
593 : :
594 : 482 : Impl( uno::Reference<frame::XModel> const& rModel,
595 : : SvXMLImport & rImport,
596 : : bool const bInsertMode, bool const bStylesOnlyMode,
597 : : bool const bProgress, bool const bBlockMode,
598 : : bool const bOrganizerMode)
599 : : : m_pTextElemTokenMap( 0 )
600 : : , m_pTextPElemTokenMap( 0 )
601 : : , m_pTextPAttrTokenMap( 0 )
602 : : , m_pTextFieldAttrTokenMap( 0 )
603 : : , m_pTextNumberedParagraphAttrTokenMap( 0 )
604 : : , m_pTextListBlockAttrTokenMap( 0 )
605 : : , m_pTextListBlockElemTokenMap( 0 )
606 : : , m_pTextFrameAttrTokenMap( 0 )
607 : : , m_pTextContourAttrTokenMap( 0 )
608 : : , m_pTextHyperlinkAttrTokenMap( 0 )
609 : : , m_pTextMasterPageElemTokenMap( 0 )
610 : : , m_pPrevFrmNames( 0 )
611 : : , m_pNextFrmNames( 0 )
612 : 0 : , m_pTextListsHelper( new XMLTextListsHelper() )
613 : : , m_pRenameMap( 0 )
614 : : // XML import: reconstrution of assignment of paragraph style to outline levels (#i69629#)
615 : : , m_pOutlineStylesCandidates( 0 )
616 : : , m_xServiceFactory( rModel, UNO_QUERY )
617 : : , m_rSvXMLImport( rImport )
618 : : , m_bInsertMode( bInsertMode )
619 : : , m_bStylesOnlyMode( bStylesOnlyMode )
620 : : , m_bBlockMode( bBlockMode )
621 : : , m_bProgress( bProgress )
622 : : , m_bOrganizerMode( bOrganizerMode )
623 : : , m_bBodyContentStarted( true )
624 : : // #107848# Initialize inside_deleted_section flag correctly
625 [ + - ][ + - ]: 482 : , m_bInsideDeleteContext( false )
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ]
626 : : {
627 : 482 : }
628 : :
629 : 12 : void InitOutlineStylesCandidates()
630 : : {
631 [ + + ]: 12 : if (!m_pOutlineStylesCandidates)
632 : : {
633 : 6 : size_t const size(m_xChapterNumbering->getCount());
634 : : m_pOutlineStylesCandidates.reset(
635 [ + - ][ + + ]: 66 : new ::std::vector< ::rtl::OUString >[size] );
[ # # # # ]
636 : : }
637 : 12 : }
638 : :
639 : : };
640 : :
641 : :
642 : 6438 : uno::Reference< text::XText > & XMLTextImportHelper::GetText()
643 : : {
644 : 6438 : return m_pImpl->m_xText;
645 : : }
646 : :
647 : 3085 : uno::Reference< text::XTextCursor > & XMLTextImportHelper::GetCursor()
648 : : {
649 : 3085 : return m_pImpl->m_xCursor;
650 : : }
651 : :
652 : 8304 : uno::Reference< text::XTextRange > & XMLTextImportHelper::GetCursorAsRange()
653 : : {
654 : 8304 : return m_pImpl->m_xCursorAsRange;
655 : : }
656 : :
657 : 382 : bool XMLTextImportHelper::IsInsertMode() const
658 : : {
659 : 382 : return m_pImpl->m_bInsertMode;
660 : : }
661 : :
662 : 4 : bool XMLTextImportHelper::IsStylesOnlyMode() const
663 : : {
664 : 4 : return m_pImpl->m_bStylesOnlyMode;
665 : : }
666 : :
667 : 4 : bool XMLTextImportHelper::IsBlockMode() const
668 : : {
669 : 4 : return m_pImpl->m_bBlockMode;
670 : : }
671 : :
672 : 4 : bool XMLTextImportHelper::IsOrganizerMode() const
673 : : {
674 : 4 : return m_pImpl->m_bOrganizerMode;
675 : : }
676 : :
677 : 63 : bool XMLTextImportHelper::IsProgress() const
678 : : {
679 : 63 : return m_pImpl->m_bProgress;
680 : : }
681 : :
682 : : uno::Reference<container::XNameContainer> const&
683 : 224 : XMLTextImportHelper::GetParaStyles() const
684 : : {
685 : 224 : return m_pImpl->m_xParaStyles;
686 : : }
687 : :
688 : : uno::Reference<container::XNameContainer> const&
689 : 0 : XMLTextImportHelper::GetTextStyles() const
690 : : {
691 : 0 : return m_pImpl->m_xTextStyles;
692 : : }
693 : :
694 : : uno::Reference<container::XNameContainer> const&
695 : 74 : XMLTextImportHelper::GetNumberingStyles() const
696 : : {
697 : 74 : return m_pImpl->m_xNumStyles;
698 : : }
699 : :
700 : : uno::Reference<container::XNameContainer> const&
701 : 48 : XMLTextImportHelper::GetFrameStyles() const
702 : : {
703 : 48 : return m_pImpl->m_xFrameStyles;
704 : : }
705 : :
706 : : uno::Reference<container::XNameContainer> const&
707 : 646 : XMLTextImportHelper::GetPageStyles() const
708 : : {
709 : 646 : return m_pImpl->m_xPageStyles;
710 : : }
711 : :
712 : : uno::Reference<container::XIndexReplace> const&
713 : 323 : XMLTextImportHelper::GetChapterNumbering() const
714 : : {
715 : 323 : return m_pImpl->m_xChapterNumbering;
716 : : }
717 : :
718 : : UniReference< SvXMLImportPropertyMapper > const&
719 : 119 : XMLTextImportHelper::GetParaImportPropertySetMapper() const
720 : : {
721 : 119 : return m_pImpl->m_xParaImpPrMap;
722 : : }
723 : :
724 : : UniReference< SvXMLImportPropertyMapper > const&
725 : 47 : XMLTextImportHelper::GetTextImportPropertySetMapper() const
726 : : {
727 : 47 : return m_pImpl->m_xTextImpPrMap;
728 : : }
729 : :
730 : : UniReference< SvXMLImportPropertyMapper > const&
731 : 86 : XMLTextImportHelper::GetSectionImportPropertySetMapper() const
732 : : {
733 : 86 : return m_pImpl->m_xSectionImpPrMap;
734 : : }
735 : :
736 : : UniReference< SvXMLImportPropertyMapper > const&
737 : 38 : XMLTextImportHelper::GetRubyImportPropertySetMapper() const
738 : : {
739 : 38 : return m_pImpl->m_xRubyImpPrMap;
740 : : }
741 : :
742 : 0 : void XMLTextImportHelper::SetInsideDeleteContext(bool const bNew)
743 : : {
744 : 0 : m_pImpl->m_bInsideDeleteContext = bNew;
745 : 0 : }
746 : :
747 : 506 : bool XMLTextImportHelper::IsInsideDeleteContext() const
748 : : {
749 : 506 : return m_pImpl->m_bInsideDeleteContext;
750 : : }
751 : :
752 : 132 : SvXMLImport & XMLTextImportHelper::GetXMLImport()
753 : : {
754 : 132 : return m_pImpl->m_rSvXMLImport;
755 : : }
756 : :
757 : 2731 : XMLTextListsHelper & XMLTextImportHelper::GetTextListHelper()
758 : : {
759 : 2731 : return *m_pImpl->m_pTextListsHelper;
760 : : }
761 : :
762 : 1894 : const SvXMLTokenMap& XMLTextImportHelper::GetTextElemTokenMap()
763 : : {
764 [ + + ]: 1894 : if (!m_pImpl->m_pTextElemTokenMap.get())
765 : : {
766 : 186 : m_pImpl->m_pTextElemTokenMap.reset(
767 [ + - ]: 372 : new SvXMLTokenMap( aTextElemTokenMap ));
768 : : }
769 : 1894 : return *m_pImpl->m_pTextElemTokenMap;
770 : : }
771 : :
772 : 4955 : const SvXMLTokenMap& XMLTextImportHelper::GetTextPElemTokenMap()
773 : : {
774 [ + + ]: 4955 : if (!m_pImpl->m_pTextPElemTokenMap.get())
775 : : {
776 : 143 : m_pImpl->m_pTextPElemTokenMap.reset(
777 [ + - ]: 286 : new SvXMLTokenMap( aTextPElemTokenMap ));
778 : : }
779 : 4955 : return *m_pImpl->m_pTextPElemTokenMap;
780 : : }
781 : :
782 : 1680 : const SvXMLTokenMap& XMLTextImportHelper::GetTextPAttrTokenMap()
783 : : {
784 [ + + ]: 1680 : if (!m_pImpl->m_pTextPAttrTokenMap.get())
785 : : {
786 : 186 : m_pImpl->m_pTextPAttrTokenMap.reset(
787 [ + - ]: 372 : new SvXMLTokenMap( aTextPAttrTokenMap ));
788 : : }
789 : 1680 : return *m_pImpl->m_pTextPAttrTokenMap;
790 : : }
791 : :
792 : 30 : const SvXMLTokenMap& XMLTextImportHelper::GetTextFrameAttrTokenMap()
793 : : {
794 [ + + ]: 30 : if (!m_pImpl->m_pTextFrameAttrTokenMap.get())
795 : : {
796 : 12 : m_pImpl->m_pTextFrameAttrTokenMap.reset(
797 [ + - ]: 24 : new SvXMLTokenMap( aTextFrameAttrTokenMap ));
798 : : }
799 : 30 : return *m_pImpl->m_pTextFrameAttrTokenMap;
800 : : }
801 : :
802 : 0 : const SvXMLTokenMap& XMLTextImportHelper::GetTextContourAttrTokenMap()
803 : : {
804 [ # # ]: 0 : if (!m_pImpl->m_pTextContourAttrTokenMap.get())
805 : : {
806 : 0 : m_pImpl->m_pTextContourAttrTokenMap.reset(
807 [ # # ]: 0 : new SvXMLTokenMap( aTextContourAttrTokenMap ));
808 : : }
809 : 0 : return *m_pImpl->m_pTextContourAttrTokenMap;
810 : : }
811 : :
812 : 3 : const SvXMLTokenMap& XMLTextImportHelper::GetTextHyperlinkAttrTokenMap()
813 : : {
814 [ + - ]: 3 : if (!m_pImpl->m_pTextHyperlinkAttrTokenMap.get())
815 : : {
816 : 3 : m_pImpl->m_pTextHyperlinkAttrTokenMap.reset(
817 [ + - ]: 6 : new SvXMLTokenMap( aTextHyperlinkAttrTokenMap ));
818 : : }
819 : 3 : return *m_pImpl->m_pTextHyperlinkAttrTokenMap;
820 : : }
821 : :
822 : 768 : const SvXMLTokenMap& XMLTextImportHelper::GetTextMasterPageElemTokenMap()
823 : : {
824 [ + + ]: 768 : if (!m_pImpl->m_pTextMasterPageElemTokenMap.get())
825 : : {
826 : 98 : m_pImpl->m_pTextMasterPageElemTokenMap.reset(
827 [ + - ]: 196 : new SvXMLTokenMap( aTextMasterPageElemTokenMap ));
828 : : }
829 : 768 : return *m_pImpl->m_pTextMasterPageElemTokenMap;
830 : : }
831 : :
832 : 940 : const SvXMLTokenMap& XMLTextImportHelper::GetTextFieldAttrTokenMap()
833 : : {
834 [ + + ]: 940 : if (!m_pImpl->m_pTextFieldAttrTokenMap.get())
835 : : {
836 : 156 : m_pImpl->m_pTextFieldAttrTokenMap.reset(
837 [ + - ]: 312 : new SvXMLTokenMap( aTextFieldAttrTokenMap ));
838 : : }
839 : 940 : return *m_pImpl->m_pTextFieldAttrTokenMap;
840 : : }
841 : :
842 : :
843 : : namespace
844 : : {
845 : 0 : class FieldParamImporter
846 : : {
847 : : public:
848 : : typedef pair<OUString,OUString> field_param_t;
849 : : typedef vector<field_param_t> field_params_t;
850 : 0 : FieldParamImporter(const field_params_t* const pInParams, Reference<XNameContainer> xOutParams)
851 : : : m_pInParams(pInParams)
852 : 0 : , m_xOutParams(xOutParams)
853 : 0 : { };
854 : : void Import();
855 : :
856 : : private:
857 : : const field_params_t* const m_pInParams;
858 : : Reference<XNameContainer> m_xOutParams;
859 : : };
860 : :
861 : 0 : void FieldParamImporter::Import()
862 : : {
863 [ # # ]: 0 : ::std::vector<OUString> vListEntries;
864 [ # # ]: 0 : ::std::map<OUString, Any> vOutParams;
865 [ # # ][ # # ]: 0 : for(field_params_t::const_iterator pCurrent = m_pInParams->begin();
866 : 0 : pCurrent != m_pInParams->end();
867 : : ++pCurrent)
868 : : {
869 [ # # ]: 0 : if(pCurrent->first.equalsAscii(ODF_FORMDROPDOWN_RESULT))
870 : : {
871 : : // sal_Int32
872 [ # # ][ # # ]: 0 : vOutParams[pCurrent->first] = makeAny(pCurrent->second.toInt32());
873 : : }
874 [ # # ]: 0 : else if(pCurrent->first.equalsAscii(ODF_FORMCHECKBOX_RESULT))
875 : : {
876 : : // bool
877 [ # # ][ # # ]: 0 : vOutParams[pCurrent->first] = makeAny(pCurrent->second.toBoolean());
878 : : }
879 [ # # ]: 0 : else if(pCurrent->first.equalsAscii(ODF_FORMDROPDOWN_LISTENTRY))
880 : : {
881 : : // sequence
882 [ # # ]: 0 : vListEntries.push_back(pCurrent->second);
883 : : }
884 : : else
885 [ # # ][ # # ]: 0 : vOutParams[pCurrent->first] = makeAny(pCurrent->second);
886 : : }
887 [ # # ]: 0 : if(!vListEntries.empty())
888 : : {
889 [ # # ]: 0 : Sequence<OUString> vListEntriesSeq(vListEntries.size());
890 [ # # ][ # # ]: 0 : copy(vListEntries.begin(), vListEntries.end(), ::comphelper::stl_begin(vListEntriesSeq));
891 [ # # ][ # # ]: 0 : vOutParams[OUString(ODF_FORMDROPDOWN_LISTENTRY)] = makeAny(vListEntriesSeq);
[ # # ][ # # ]
892 : : }
893 [ # # ]: 0 : for(::std::map<OUString, Any>::const_iterator pCurrent = vOutParams.begin();
894 : 0 : pCurrent != vOutParams.end();
895 : : ++pCurrent)
896 : : {
897 : : try
898 : : {
899 [ # # ][ # # ]: 0 : m_xOutParams->insertByName(pCurrent->first, pCurrent->second);
900 : : }
901 [ # # ]: 0 : catch(const ElementExistException&)
902 : : {
903 : : }
904 : 0 : }
905 : 0 : }
906 : : }
907 : :
908 : 482 : XMLTextImportHelper::XMLTextImportHelper(
909 : : uno::Reference<frame::XModel> const& rModel,
910 : : SvXMLImport& rImport,
911 : : bool const bInsertMode, bool const bStylesOnlyMode,
912 : : bool const bProgress, bool const bBlockMode,
913 : : bool const bOrganizerMode)
914 : : : m_pImpl( new Impl(rModel, rImport, bInsertMode, bStylesOnlyMode,
915 [ + - ]: 482 : bProgress, bBlockMode, bOrganizerMode) )
916 [ + - ][ + - ]: 964 : , m_pBackpatcherImpl( MakeBackpatcherImpl() )
917 : : {
918 : : static ::rtl::OUString s_PropNameDefaultListId(
919 [ + + ][ + - ]: 482 : "DefaultListId");
920 : :
921 [ + - ]: 482 : Reference< XChapterNumberingSupplier > xCNSupplier( rModel, UNO_QUERY );
922 : :
923 [ + + ]: 482 : if( xCNSupplier.is() )
924 : : {
925 [ + - ][ + - ]: 254 : m_pImpl->m_xChapterNumbering = xCNSupplier->getChapterNumberingRules();
[ + - ]
926 [ + - ]: 254 : if (m_pImpl->m_xChapterNumbering.is())
927 : : {
928 : : Reference< XPropertySet > const xNumRuleProps(
929 [ + - ]: 254 : m_pImpl->m_xChapterNumbering, UNO_QUERY);
930 [ + - ]: 254 : if ( xNumRuleProps.is() )
931 : : {
932 : : Reference< XPropertySetInfo > xNumRulePropSetInfo(
933 [ + - ][ + - ]: 254 : xNumRuleProps->getPropertySetInfo());
934 [ + - ][ + - ]: 508 : if (xNumRulePropSetInfo.is() &&
[ + - ]
935 [ + - ]: 254 : xNumRulePropSetInfo->hasPropertyByName(
936 [ + - ]: 254 : s_PropNameDefaultListId))
937 : : {
938 : 254 : ::rtl::OUString sListId;
939 [ + - ]: 254 : xNumRuleProps->getPropertyValue(s_PropNameDefaultListId)
940 [ + - ]: 254 : >>= sListId;
941 : : DBG_ASSERT( !sListId.isEmpty(),
942 : : "no default list id found at chapter numbering rules instance. Serious defect -> please inform OD." );
943 [ + - ]: 254 : if ( !sListId.isEmpty() )
944 : : {
945 : : Reference< XNamed > const xChapterNumNamed(
946 [ + - ]: 254 : m_pImpl->m_xChapterNumbering, UNO_QUERY);
947 [ + - ]: 254 : if ( xChapterNumNamed.is() )
948 : : {
949 : 254 : m_pImpl->m_pTextListsHelper->KeepListAsProcessed(
950 : : sListId,
951 [ + - ]: 254 : xChapterNumNamed->getName(),
952 [ + - ][ + - ]: 762 : ::rtl::OUString() );
953 : 254 : }
954 : 254 : }
955 : 254 : }
956 : 254 : }
957 : : }
958 : : }
959 : :
960 [ + - ]: 482 : Reference< XStyleFamiliesSupplier > xFamiliesSupp( rModel, UNO_QUERY );
961 : : // DBG_ASSERT( xFamiliesSupp.is(), "no chapter numbering supplier" ); for clipboard there may be documents without styles
962 : :
963 [ + + ]: 482 : if( xFamiliesSupp.is() )
964 : : {
965 [ + - ][ + - ]: 462 : Reference< XNameAccess > xFamilies(xFamiliesSupp->getStyleFamilies());
966 : :
967 : 462 : const OUString aParaStyles("ParagraphStyles");
968 [ + - ][ + + ]: 462 : if( xFamilies->hasByName( aParaStyles ) )
[ + - ]
969 : : {
970 [ + - ]: 508 : m_pImpl->m_xParaStyles.set(xFamilies->getByName(aParaStyles),
971 [ + - + - ]: 508 : UNO_QUERY);
972 : : }
973 : :
974 : 462 : const OUString aCharStyles("CharacterStyles");
975 [ + - ][ + + ]: 462 : if( xFamilies->hasByName( aCharStyles ) )
[ + - ]
976 : : {
977 [ + - ]: 508 : m_pImpl->m_xTextStyles.set(xFamilies->getByName(aCharStyles),
978 [ + - + - ]: 508 : UNO_QUERY);
979 : : }
980 : :
981 : 462 : const OUString aNumStyles("NumberingStyles");
982 [ + - ][ + + ]: 462 : if( xFamilies->hasByName( aNumStyles ) )
[ + - ]
983 : : {
984 [ + - ]: 508 : m_pImpl->m_xNumStyles.set(xFamilies->getByName(aNumStyles),
985 [ + - + - ]: 508 : UNO_QUERY);
986 : : }
987 : :
988 : 462 : const OUString aFrameStyles("FrameStyles");
989 [ + - ][ + + ]: 462 : if( xFamilies->hasByName( aFrameStyles ) )
[ + - ]
990 : : {
991 [ + - ]: 508 : m_pImpl->m_xFrameStyles.set(xFamilies->getByName(aFrameStyles),
992 [ + - + - ]: 508 : UNO_QUERY);
993 : : }
994 : :
995 : 462 : const OUString aPageStyles("PageStyles");
996 [ + - ][ + + ]: 462 : if( xFamilies->hasByName( aPageStyles ) )
[ + - ]
997 : : {
998 [ + - ]: 880 : m_pImpl->m_xPageStyles.set(xFamilies->getByName(aPageStyles),
999 [ + - + - ]: 880 : UNO_QUERY);
1000 : 462 : }
1001 : : }
1002 : :
1003 [ + - ]: 482 : Reference < XTextFramesSupplier > xTFS( rModel, UNO_QUERY );
1004 [ + + ]: 482 : if( xTFS.is() )
1005 : : {
1006 [ + - ][ + - ]: 254 : m_pImpl->m_xTextFrames.set(xTFS->getTextFrames());
[ + - ]
1007 : : }
1008 : :
1009 [ + - ]: 482 : Reference < XTextGraphicObjectsSupplier > xTGOS( rModel, UNO_QUERY );
1010 [ + + ]: 482 : if( xTGOS.is() )
1011 : : {
1012 [ + - ][ + - ]: 254 : m_pImpl->m_xGraphics.set(xTGOS->getGraphicObjects());
[ + - ]
1013 : : }
1014 : :
1015 [ + - ]: 482 : Reference < XTextEmbeddedObjectsSupplier > xTEOS( rModel, UNO_QUERY );
1016 [ + + ]: 482 : if( xTEOS.is() )
1017 : : {
1018 [ + - ][ + - ]: 254 : m_pImpl->m_xObjects.set(xTEOS->getEmbeddedObjects());
[ + - ]
1019 : : }
1020 : :
1021 : : XMLPropertySetMapper *pPropMapper =
1022 [ + - ][ + - ]: 482 : new XMLTextPropertySetMapper( TEXT_PROP_MAP_PARA );
1023 : 482 : m_pImpl->m_xParaImpPrMap =
1024 [ + - ][ + - ]: 964 : new XMLTextImportPropertyMapper( pPropMapper, rImport );
[ + - + - ]
[ + - ]
1025 : :
1026 [ + - ][ + - ]: 482 : pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_TEXT );
1027 : 482 : m_pImpl->m_xTextImpPrMap =
1028 [ + - ][ + - ]: 964 : new XMLTextImportPropertyMapper( pPropMapper, rImport );
[ + - + - ]
[ + - ]
1029 : :
1030 [ + - ][ + - ]: 482 : pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_FRAME );
1031 : 482 : m_pImpl->m_xFrameImpPrMap =
1032 [ + - ][ + - ]: 964 : new XMLTextImportPropertyMapper( pPropMapper, rImport );
[ + - + - ]
[ + - ]
1033 : :
1034 [ + - ][ + - ]: 482 : pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_SECTION );
1035 : 482 : m_pImpl->m_xSectionImpPrMap =
1036 [ + - ][ + - ]: 964 : new XMLTextImportPropertyMapper( pPropMapper, rImport );
[ + - + - ]
[ + - ]
1037 : :
1038 [ + - ][ + - ]: 482 : pPropMapper = new XMLTextPropertySetMapper( TEXT_PROP_MAP_RUBY );
1039 : 482 : m_pImpl->m_xRubyImpPrMap =
1040 [ + - ][ + - ]: 964 : new SvXMLImportPropertyMapper( pPropMapper, rImport );
[ + - + - ]
[ + - ]
1041 : 482 : }
1042 : :
1043 [ + - ][ + - ]: 482 : XMLTextImportHelper::~XMLTextImportHelper()
1044 : : {
1045 [ - + ]: 710 : }
1046 : :
1047 : 126 : SvXMLImportPropertyMapper *XMLTextImportHelper::CreateShapeExtPropMapper(SvXMLImport& rImport)
1048 : : {
1049 : : XMLPropertySetMapper *pPropMapper =
1050 [ + - ]: 126 : new XMLTextPropertySetMapper( TEXT_PROP_MAP_FRAME );
1051 : : return new XMLTextImportPropertyMapper( pPropMapper, rImport,
1052 [ + - ][ + - ]: 126 : const_cast<XMLFontStylesContext*>(rImport.GetFontDecls()) );
[ + - ]
1053 : : }
1054 : :
1055 : 538 : SvXMLImportPropertyMapper *XMLTextImportHelper::CreateParaExtPropMapper(SvXMLImport& rImport, XMLFontStylesContext *pFontDecls)
1056 : : {
1057 : : XMLPropertySetMapper *pPropMapper =
1058 [ + - ]: 538 : new XMLTextPropertySetMapper( TEXT_PROP_MAP_SHAPE_PARA );
1059 [ + + ]: 538 : if (!pFontDecls)
1060 : 409 : pFontDecls = const_cast<XMLFontStylesContext*>(rImport.GetFontDecls());
1061 [ + - ][ + - ]: 538 : return new XMLTextImportPropertyMapper( pPropMapper, rImport, pFontDecls );
1062 : : }
1063 : :
1064 : 388 : SvXMLImportPropertyMapper *XMLTextImportHelper::CreateParaDefaultExtPropMapper(SvXMLImport& rImport, XMLFontStylesContext* pFontDecls)
1065 : : {
1066 [ + - ]: 388 : if (!pFontDecls)
1067 : 388 : pFontDecls = const_cast<XMLFontStylesContext*>(rImport.GetFontDecls());
1068 : :
1069 : : XMLPropertySetMapper* pPropMapper =
1070 [ + - ]: 388 : new XMLTextPropertySetMapper( TEXT_PROP_MAP_SHAPE_PARA );
1071 [ + - ][ + - ]: 388 : SvXMLImportPropertyMapper* pImportMapper = new XMLTextImportPropertyMapper( pPropMapper, rImport, pFontDecls );
1072 : :
1073 : : pPropMapper =
1074 [ + - ]: 388 : new XMLTextPropertySetMapper( TEXT_PROP_MAP_TEXT_ADDITIONAL_DEFAULTS );
1075 [ + - ][ + - ]: 388 : pImportMapper->ChainImportMapper( new XMLTextImportPropertyMapper( pPropMapper, rImport, pFontDecls ) );
[ + - ][ + - ]
[ + - ]
1076 : :
1077 : 388 : return pImportMapper;
1078 : : }
1079 : :
1080 : : SvXMLImportPropertyMapper*
1081 : 126 : XMLTextImportHelper::CreateTableDefaultExtPropMapper(
1082 : : SvXMLImport& rImport,
1083 : : XMLFontStylesContext* )
1084 : : {
1085 : : XMLPropertySetMapper *pPropMapper =
1086 [ + - ]: 126 : new XMLTextPropertySetMapper( TEXT_PROP_MAP_TABLE_DEFAULTS );
1087 [ + - ][ + - ]: 126 : return new SvXMLImportPropertyMapper( pPropMapper, rImport );
1088 : : }
1089 : :
1090 : : SvXMLImportPropertyMapper*
1091 : 126 : XMLTextImportHelper::CreateTableRowDefaultExtPropMapper(
1092 : : SvXMLImport& rImport,
1093 : : XMLFontStylesContext* )
1094 : : {
1095 : : XMLPropertySetMapper *pPropMapper =
1096 [ + - ]: 126 : new XMLTextPropertySetMapper( TEXT_PROP_MAP_TABLE_ROW_DEFAULTS );
1097 [ + - ][ + - ]: 126 : return new SvXMLImportPropertyMapper( pPropMapper, rImport );
1098 : : }
1099 : :
1100 : 1459 : void XMLTextImportHelper::SetCursor( const Reference < XTextCursor > & rCursor )
1101 : : {
1102 : 1459 : m_pImpl->m_xCursor.set(rCursor);
1103 [ + - ]: 1459 : m_pImpl->m_xText.set(rCursor->getText());
1104 : 1459 : m_pImpl->m_xCursorAsRange.set( rCursor, UNO_QUERY );
1105 : 1459 : }
1106 : :
1107 : 1048 : void XMLTextImportHelper::ResetCursor()
1108 : : {
1109 : 1048 : m_pImpl->m_xCursor.set(0);
1110 : 1048 : m_pImpl->m_xText.set(0);
1111 : 1048 : m_pImpl->m_xCursorAsRange.set(0);
1112 : 1048 : }
1113 : :
1114 : :
1115 : 8 : sal_Bool XMLTextImportHelper::HasFrameByName( const OUString& rName ) const
1116 : : {
1117 : 8 : return (m_pImpl->m_xTextFrames.is() &&
1118 : 8 : m_pImpl->m_xTextFrames->hasByName(rName))
1119 : 8 : || (m_pImpl->m_xGraphics.is() &&
1120 : 8 : m_pImpl->m_xGraphics->hasByName(rName))
1121 : 8 : || (m_pImpl->m_xObjects.is() &&
1122 [ - + ][ + - : 40 : m_pImpl->m_xObjects->hasByName(rName));
+ - + - +
- + - ]
1123 : : }
1124 : :
1125 : 127 : void XMLTextImportHelper::InsertString( const OUString& rChars )
1126 : : {
1127 : : DBG_ASSERT(m_pImpl->m_xText.is(), "no text");
1128 : : DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range");
1129 [ + - ]: 127 : if (m_pImpl->m_xText.is())
1130 : : {
1131 : 127 : m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange,
1132 : 127 : rChars, sal_False);
1133 : : }
1134 : 127 : }
1135 : :
1136 : 4811 : void XMLTextImportHelper::InsertString( const OUString& rChars,
1137 : : sal_Bool& rIgnoreLeadingSpace )
1138 : : {
1139 : : DBG_ASSERT(m_pImpl->m_xText.is(), "no text");
1140 : : DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range");
1141 [ + - ]: 4811 : if (m_pImpl->m_xText.is())
1142 : : {
1143 : 4811 : sal_Int32 nLen = rChars.getLength();
1144 : 4811 : OUStringBuffer sChars( nLen );
1145 : :
1146 [ + + ]: 54017 : for( sal_Int32 i=0; i < nLen; i++ )
1147 : : {
1148 : 49206 : sal_Unicode c = rChars[i];
1149 [ + + ]: 49206 : switch( c )
1150 : : {
1151 : : case 0x20:
1152 : : case 0x09:
1153 : : case 0x0a:
1154 : : case 0x0d:
1155 [ + + ]: 4473 : if( !rIgnoreLeadingSpace )
1156 [ + - ]: 4268 : sChars.append( (sal_Unicode)0x20 );
1157 : 4473 : rIgnoreLeadingSpace = sal_True;
1158 : 4473 : break;
1159 : : default:
1160 : 44733 : rIgnoreLeadingSpace = sal_False;
1161 [ + - ]: 44733 : sChars.append( c );
1162 : 44733 : break;
1163 : : }
1164 : : }
1165 [ + - ]: 9622 : m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange,
1166 [ + - + - ]: 9622 : sChars.makeStringAndClear(), sal_False);
1167 : : }
1168 : 4811 : }
1169 : :
1170 : 1719 : void XMLTextImportHelper::InsertControlCharacter( sal_Int16 nControl )
1171 : : {
1172 : : DBG_ASSERT(m_pImpl->m_xText.is(), "no text");
1173 : : DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range");
1174 [ + - ]: 1719 : if (m_pImpl->m_xText.is())
1175 : : {
1176 : 1719 : m_pImpl->m_xText->insertControlCharacter(
1177 : 1719 : m_pImpl->m_xCursorAsRange, nControl, sal_False);
1178 : : }
1179 : 1719 : }
1180 : :
1181 : 919 : void XMLTextImportHelper::InsertTextContent(
1182 : : Reference < XTextContent > & xContent )
1183 : : {
1184 : : DBG_ASSERT(m_pImpl->m_xText.is(), "no text");
1185 : : DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range");
1186 [ + - ]: 919 : if (m_pImpl->m_xText.is())
1187 : : {
1188 : 919 : m_pImpl->m_xText->insertTextContent(
1189 : 919 : m_pImpl->m_xCursorAsRange, xContent, sal_False);
1190 : : }
1191 : 919 : }
1192 : :
1193 : 372 : void XMLTextImportHelper::DeleteParagraph()
1194 : : {
1195 : : DBG_ASSERT(m_pImpl->m_xText.is(), "no text");
1196 : : DBG_ASSERT(m_pImpl->m_xCursor.is(), "no cursor");
1197 : : DBG_ASSERT(m_pImpl->m_xCursorAsRange.is(), "no range");
1198 : :
1199 : 372 : sal_Bool bDelete = sal_True;
1200 : : Reference < XEnumerationAccess > const xEnumAccess(
1201 [ + - ]: 372 : m_pImpl->m_xCursor, UNO_QUERY);
1202 [ + - ]: 372 : if( xEnumAccess.is() )
1203 : : {
1204 [ + - ][ + - ]: 372 : Reference < XEnumeration > xEnum(xEnumAccess->createEnumeration());
1205 : : DBG_ASSERT( xEnum->hasMoreElements(), "empty text enumeration" );
1206 [ + - ][ + - ]: 372 : if( xEnum->hasMoreElements() )
[ + - ]
1207 : : {
1208 [ + - ][ + - ]: 372 : Reference < XComponent > xComp( xEnum->nextElement(), UNO_QUERY );
[ + - ]
1209 : : DBG_ASSERT( xComp.is(), "got no component" );
1210 [ + - ]: 372 : if( xComp.is() )
1211 : : {
1212 [ + - ][ + - ]: 372 : xComp->dispose();
1213 : 372 : bDelete = sal_False;
1214 : 372 : }
1215 : 372 : }
1216 : : }
1217 [ - + ]: 372 : if( bDelete )
1218 : : {
1219 [ # # ][ # # ]: 0 : if (m_pImpl->m_xCursor->goLeft( 1, sal_True ))
[ # # ]
1220 : : {
1221 : 0 : OUString sEmpty;
1222 [ # # ]: 0 : m_pImpl->m_xText->insertString(m_pImpl->m_xCursorAsRange,
1223 [ # # ]: 0 : sEmpty, sal_True);
1224 : : }
1225 : 372 : }
1226 : 372 : }
1227 : :
1228 : 4744 : OUString XMLTextImportHelper::ConvertStarFonts( const OUString& rChars,
1229 : : const OUString& rStyleName,
1230 : : sal_uInt8& rFlags,
1231 : : sal_Bool bPara,
1232 : : SvXMLImport& rImport ) const
1233 : : {
1234 [ + - ]: 4744 : OUStringBuffer sChars( rChars );
1235 : 4744 : sal_Bool bConverted = sal_False;
1236 [ + + ]: 53759 : for( sal_Int32 j=0; j<rChars.getLength(); j++ )
1237 : : {
1238 : 49015 : sal_Unicode c = rChars[j];
1239 [ # # ][ - + ]: 49015 : if( c >= 0xf000 && c <= 0xf0ff )
1240 : : {
1241 [ # # ]: 0 : if( (rFlags & CONV_STAR_FONT_FLAGS_VALID) == 0 )
1242 : : {
1243 : 0 : XMLTextStyleContext *pStyle = 0;
1244 : : sal_uInt16 nFamily = bPara ? XML_STYLE_FAMILY_TEXT_PARAGRAPH
1245 [ # # ]: 0 : : XML_STYLE_FAMILY_TEXT_TEXT;
1246 [ # # ][ # # ]: 0 : if (!rStyleName.isEmpty() && m_pImpl->m_xAutoStyles.Is())
[ # # ]
1247 : : {
1248 : : const SvXMLStyleContext* pTempStyle =
1249 : 0 : ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
1250 : : FindStyleChildContext( nFamily, rStyleName,
1251 [ # # ]: 0 : sal_True );
1252 [ # # ][ # # ]: 0 : pStyle = PTR_CAST( XMLTextStyleContext,pTempStyle);
[ # # ][ # # ]
1253 : : }
1254 : :
1255 [ # # ]: 0 : if( pStyle )
1256 : : {
1257 : 0 : sal_Int32 nCount = pStyle->_GetProperties().size();
1258 [ # # ]: 0 : if( nCount )
1259 : : {
1260 : : UniReference < SvXMLImportPropertyMapper > xImpPrMap =
1261 : 0 : ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)
1262 [ # # ]: 0 : ->GetImportPropertyMapper(nFamily);
1263 [ # # ]: 0 : if( xImpPrMap.is() )
1264 : : {
1265 : : UniReference<XMLPropertySetMapper> rPropMapper =
1266 [ # # ][ # # ]: 0 : xImpPrMap->getPropertySetMapper();
1267 [ # # ]: 0 : for( sal_Int32 i=0; i < nCount; i++ )
1268 : : {
1269 : 0 : const XMLPropertyState& rProp = pStyle->_GetProperties()[i];
1270 : 0 : sal_Int32 nIdx = rProp.mnIndex;
1271 [ # # ][ # # ]: 0 : sal_uInt32 nContextId = rPropMapper->GetEntryContextId(nIdx);
1272 [ # # ]: 0 : if( CTF_FONTFAMILYNAME == nContextId )
1273 : : {
1274 : 0 : rFlags &= ~(CONV_FROM_STAR_BATS|CONV_FROM_STAR_MATH);
1275 : 0 : OUString sFontName;
1276 : 0 : rProp.maValue >>= sFontName;
1277 : 0 : OUString sStarBats( "StarBats" );
1278 : 0 : OUString sStarMath( "StarMath" );
1279 [ # # ]: 0 : if( sFontName.equalsIgnoreAsciiCase( sStarBats ) )
1280 : 0 : rFlags |= CONV_FROM_STAR_BATS;
1281 [ # # ]: 0 : else if( sFontName.equalsIgnoreAsciiCase( sStarMath ) )
1282 : 0 : rFlags |= CONV_FROM_STAR_MATH;
1283 : 0 : break;
1284 : : }
1285 [ # # ]: 0 : }
1286 [ # # ]: 0 : }
1287 : : }
1288 : :
1289 : : }
1290 : :
1291 : 0 : rFlags |= CONV_STAR_FONT_FLAGS_VALID;
1292 : : }
1293 [ # # ]: 0 : if( (rFlags & CONV_FROM_STAR_BATS ) != 0 )
1294 : : {
1295 [ # # ]: 0 : sChars[j] = rImport.ConvStarBatsCharToStarSymbol( c );
1296 : 0 : bConverted = sal_True;
1297 : : }
1298 [ # # ]: 0 : else if( (rFlags & CONV_FROM_STAR_MATH ) != 0 )
1299 : : {
1300 [ # # ]: 0 : sChars[j] = rImport.ConvStarMathCharToStarSymbol( c );
1301 : 0 : bConverted = sal_True;
1302 : : }
1303 : : }
1304 : : }
1305 : :
1306 [ - + ][ # # ]: 4744 : return bConverted ? sChars.makeStringAndClear() : rChars;
1307 : : }
1308 : :
1309 : : /* Helper method to determine, if a paragraph style has a list style (inclusive
1310 : : an empty one) inherits a list style (inclusive an empty one) from one of its parents (#i69629#)
1311 : : */
1312 : : /* Apply special case, that found list style equals the chapter numbering, also
1313 : : to the found list styles of the parent styles. (#i73973#)
1314 : : */
1315 : 12 : sal_Bool lcl_HasListStyle( OUString sStyleName,
1316 : : const Reference < XNameContainer >& xParaStyles,
1317 : : SvXMLImport& rImport,
1318 : : const OUString& sNumberingStyleName,
1319 : : const OUString& sOutlineStyleName )
1320 : : {
1321 : 12 : sal_Bool bRet( sal_False );
1322 : :
1323 [ + - ][ + - ]: 12 : if ( !xParaStyles->hasByName( sStyleName ) )
[ - + ]
1324 : : {
1325 : : // error case
1326 : 0 : return sal_True;
1327 : : }
1328 : :
1329 [ + - ]: 12 : Reference< XPropertyState > xPropState( xParaStyles->getByName( sStyleName ),
1330 [ + - ][ + - ]: 12 : UNO_QUERY );
1331 [ - + ]: 12 : if ( !xPropState.is() )
1332 : : {
1333 : : // error case
1334 : 0 : return sal_False;
1335 : : }
1336 : :
1337 [ + - ][ + - ]: 12 : if ( xPropState->getPropertyState( sNumberingStyleName ) == PropertyState_DIRECT_VALUE )
[ + + ]
1338 : : {
1339 : : // list style found
1340 : 3 : bRet = sal_True;
1341 : : // special case: the set list style equals the chapter numbering
1342 [ + - ]: 3 : Reference< XPropertySet > xPropSet( xPropState, UNO_QUERY );
1343 [ + - ]: 3 : if ( xPropSet.is() )
1344 : : {
1345 : 3 : OUString sListStyle;
1346 [ + - ][ + - ]: 3 : xPropSet->getPropertyValue( sNumberingStyleName ) >>= sListStyle;
1347 [ - + ]: 6 : if ( !sListStyle.isEmpty() &&
[ + - - + ]
1348 : 3 : sListStyle == sOutlineStyleName )
1349 : : {
1350 : 0 : bRet = sal_False;
1351 : 3 : }
1352 : 3 : }
1353 : : }
1354 : : else
1355 : : {
1356 : : // Tools.Outline settings lost on Save (#i77708#)
1357 : 9 : sal_Int32 nUPD( 0 );
1358 : 9 : sal_Int32 nBuild( 0 );
1359 : : // Don't use UPD for versioning: xmloff/source/text/txtstyli.cxx and txtimp.cxx (#i86058#)
1360 [ + - ]: 9 : const bool bBuildIdFound = rImport.getBuildIds( nUPD, nBuild );
1361 : : // search list style at parent
1362 [ + - ]: 9 : Reference<XStyle> xStyle( xPropState, UNO_QUERY );
1363 [ + - ]: 36 : while ( xStyle.is() )
1364 : : {
1365 [ + - ][ + - ]: 27 : OUString aParentStyle( xStyle->getParentStyle() );
1366 [ + + ]: 27 : if ( !aParentStyle.isEmpty() )
1367 : : {
1368 : : aParentStyle =
1369 : : rImport.GetStyleDisplayName( XML_STYLE_FAMILY_TEXT_PARAGRAPH,
1370 [ + - ]: 18 : aParentStyle );
1371 : : }
1372 [ + + ][ + - ]: 27 : if ( aParentStyle.isEmpty() || !xParaStyles->hasByName( aParentStyle ) )
[ + - ][ - + ]
[ + + ]
1373 : : {
1374 : : // no list style found
1375 : : break;
1376 : : }
1377 : : else
1378 : : {
1379 : : xPropState = Reference< XPropertyState >(
1380 [ + - ]: 18 : xParaStyles->getByName( aParentStyle ),
1381 [ + - ][ + - ]: 18 : UNO_QUERY );
[ + - ]
1382 [ - + ]: 18 : if ( !xPropState.is() )
1383 : : {
1384 : : // error case
1385 : 0 : return sal_True;
1386 : : }
1387 [ + - ][ + - ]: 18 : if ( xPropState->getPropertyState( sNumberingStyleName ) == PropertyState_DIRECT_VALUE )
[ - + ]
1388 : : {
1389 : : // list style found
1390 : 0 : bRet = sal_True;
1391 : : // Special case: the found list style equals the chapter numbering (#i73973#)
1392 [ # # ]: 0 : Reference< XPropertySet > xPropSet( xPropState, UNO_QUERY );
1393 [ # # ]: 0 : if ( xPropSet.is() )
1394 : : {
1395 : 0 : OUString sListStyle;
1396 [ # # ][ # # ]: 0 : xPropSet->getPropertyValue( sNumberingStyleName ) >>= sListStyle;
1397 [ # # ]: 0 : if ( !sListStyle.isEmpty() &&
[ # # # # ]
1398 : 0 : sListStyle == sOutlineStyleName )
1399 : : {
1400 : 0 : bRet = sal_False;
1401 : : }
1402 : : // Special handling for text documents from OOo version prior OOo 2.4 (#i77708#)
1403 : : /* Check explicitly on certain versions and on import of
1404 : : text documents in OpenOffice.org file format (#i86058#)
1405 : : */
1406 [ # # ][ # # ]: 0 : else if ( sListStyle.isEmpty() &&
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ][ # # ]
1407 [ # # ]: 0 : ( rImport.IsTextDocInOOoFileFormat() ||
1408 : : ( bBuildIdFound &&
1409 : : ( ( nUPD == 641 ) || ( nUPD == 645 ) || // prior OOo 2.0
1410 : : ( nUPD == 680 && nBuild <= 9238 ) ) ) ) ) // OOo 2.0 - OOo 2.3.1
1411 : : {
1412 : 0 : bRet = sal_False;
1413 : 0 : }
1414 : : }
1415 : 0 : break;
1416 : : }
1417 : : else
1418 : : {
1419 : : // search list style at parent
1420 [ + - ][ + - ]: 45 : xStyle = Reference<XStyle>( xPropState, UNO_QUERY );
[ + + - ]
1421 : : }
1422 : : }
1423 [ + - ]: 36 : }
1424 : : }
1425 : :
1426 : 12 : return bRet;
1427 : : }
1428 : 1825 : OUString XMLTextImportHelper::SetStyleAndAttrs(
1429 : : SvXMLImport& rImport,
1430 : : const Reference < XTextCursor >& rCursor,
1431 : : const OUString& rStyleName,
1432 : : sal_Bool bPara,
1433 : : sal_Bool bOutlineLevelAttrFound,
1434 : : sal_Int8 nOutlineLevel,
1435 : : // Numberings/Bullets in table not visible aftzer save/reload (#i80724#)
1436 : : sal_Bool bSetListAttrs )
1437 : : {
1438 [ + + ][ + - ]: 1825 : static ::rtl::OUString s_ParaStyleName( "ParaStyleName");
1439 [ + + ][ + - ]: 1825 : static ::rtl::OUString s_CharStyleName( "CharStyleName");
1440 [ + + ][ + - ]: 1825 : static ::rtl::OUString s_NumberingRules( "NumberingRules");
1441 [ + + ][ + - ]: 1825 : static ::rtl::OUString s_NumberingIsNumber( "NumberingIsNumber");
1442 [ + + ][ + - ]: 1825 : static ::rtl::OUString s_NumberingLevel( "NumberingLevel");
1443 [ + + ][ + - ]: 1825 : static ::rtl::OUString s_ParaIsNumberingRestart( "ParaIsNumberingRestart");
1444 [ + + ][ + - ]: 1825 : static ::rtl::OUString s_NumberingStartValue( "NumberingStartValue");
1445 [ + + ][ + - ]: 1825 : static ::rtl::OUString s_PropNameListId( "ListId");
1446 [ + + ][ + - ]: 1825 : static ::rtl::OUString s_PageDescName( "PageDescName");
1447 [ + + ][ + - ]: 1825 : static ::rtl::OUString s_ServiceCombinedCharacters( "com.sun.star.text.TextField.CombinedCharacters");
1448 [ + + ][ + - ]: 1825 : static ::rtl::OUString s_Content("Content");
1449 [ + + ][ + - ]: 1825 : static ::rtl::OUString s_OutlineLevel( "OutlineLevel");
1450 [ + + ][ + - ]: 1825 : static ::rtl::OUString s_NumberingStyleName( "NumberingStyleName");
1451 : :
1452 : : const sal_uInt16 nFamily = bPara ? XML_STYLE_FAMILY_TEXT_PARAGRAPH
1453 [ + + ]: 1825 : : XML_STYLE_FAMILY_TEXT_TEXT;
1454 : 1825 : XMLTextStyleContext *pStyle = 0;
1455 : 1825 : OUString sStyleName( rStyleName );
1456 [ + - ][ + + ]: 1825 : if (!sStyleName.isEmpty() && m_pImpl->m_xAutoStyles.Is())
[ + + ]
1457 : : {
1458 : : const SvXMLStyleContext* pTempStyle =
1459 : 1039 : ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
1460 [ + - ]: 1039 : FindStyleChildContext( nFamily, sStyleName, sal_True );
1461 [ + + ][ + - ]: 1039 : pStyle = PTR_CAST( XMLTextStyleContext,pTempStyle);
[ + - ][ + - ]
1462 : : }
1463 [ + + ]: 1825 : if( pStyle )
1464 : 422 : sStyleName = pStyle->GetParentName();
1465 : :
1466 [ + - ]: 1825 : Reference < XPropertySet > xPropSet( rCursor, UNO_QUERY );
1467 : : Reference< XPropertySetInfo > xPropSetInfo(
1468 [ + - ][ + - ]: 1825 : xPropSet->getPropertySetInfo());
1469 : :
1470 : : // style
1471 [ + + ]: 1825 : if( !sStyleName.isEmpty() )
1472 : : {
1473 [ + - ]: 890 : sStyleName = rImport.GetStyleDisplayName( nFamily, sStyleName );
1474 [ + - ][ + - ]: 890 : const String& rPropName = (bPara) ? s_ParaStyleName : s_CharStyleName;
1475 : : const Reference < XNameContainer > & rStyles = (bPara)
1476 : 890 : ? m_pImpl->m_xParaStyles
1477 [ + - ]: 1780 : : m_pImpl->m_xTextStyles;
1478 [ + + ][ + - ]: 3554 : if( rStyles.is() &&
[ + + ][ + + ]
1479 [ + - ][ + - ]: 1777 : xPropSetInfo->hasPropertyByName( rPropName ) &&
[ + - ][ + + ]
[ # # ]
1480 [ + - ][ + - ]: 887 : rStyles->hasByName( sStyleName ) )
1481 : : {
1482 [ + - ][ + - ]: 836 : xPropSet->setPropertyValue( rPropName, makeAny(sStyleName) );
[ + - ][ + - ]
1483 : : }
1484 : : else
1485 [ + - ]: 890 : sStyleName = OUString();
1486 : : }
1487 : :
1488 : : /* The outline level needs to be only applied as list level, if the heading
1489 : : is not inside a list and if it by default applies the outline style. (#i70748#)
1490 : : */
1491 : 1825 : bool bApplyOutlineLevelAsListLevel( false );
1492 : : // Numberings/Bullets in table not visible aftzer save/reload (#i80724#)
1493 [ + + ][ + + ]: 3508 : if (bSetListAttrs && bPara
[ + - ][ + + ]
1494 [ + - ][ + - ]: 1683 : && xPropSetInfo->hasPropertyByName( s_NumberingRules))
1495 : : {
1496 : : // Set numbering rules
1497 : : Reference< XIndexReplace > const xNumRules(
1498 [ + - ][ + - ]: 1683 : xPropSet->getPropertyValue(s_NumberingRules), UNO_QUERY);
[ + - ]
1499 : :
1500 : 1683 : XMLTextListBlockContext * pListBlock(0);
1501 : 1683 : XMLTextListItemContext * pListItem(0);
1502 : 1683 : XMLNumberedParaContext * pNumberedParagraph(0);
1503 [ + - ]: 1683 : GetTextListHelper().ListContextTop(
1504 [ + - ]: 1683 : pListBlock, pListItem, pNumberedParagraph);
1505 : :
1506 : : OSL_ENSURE(!(pListBlock && pNumberedParagraph), "XMLTextImportHelper::"
1507 : : "SetStyleAndAttrs: both list and numbered-paragraph???");
1508 : :
1509 : 1683 : Reference < XIndexReplace > xNewNumRules;
1510 : 1683 : sal_Int8 nLevel(-1);
1511 : 1683 : ::rtl::OUString sListId;
1512 : 1683 : sal_Int16 nStartValue(-1);
1513 : 1683 : bool bNumberingIsNumber(true);
1514 : :
1515 [ + + ]: 1683 : if (pListBlock) {
1516 : :
1517 [ - + ]: 63 : if (!pListItem) {
1518 : 0 : bNumberingIsNumber = false; // list-header
1519 : : }
1520 : : // consider text:style-override property of <text:list-item>
1521 : : xNewNumRules.set(
1522 : 63 : (pListItem != 0 && pListItem->HasNumRulesOverride())
1523 : 0 : ? pListItem->GetNumRulesOverride()
1524 [ + - - + ]: 126 : : pListBlock->GetNumRules() );
[ + - ]
1525 : 63 : nLevel = static_cast<sal_Int8>(pListBlock->GetLevel());
1526 : :
1527 [ + + ][ + + ]: 63 : if ( pListItem && pListItem->HasStartValue() ) {
[ + - ]
1528 : 2 : nStartValue = pListItem->GetStartValue();
1529 : : }
1530 : :
1531 : : // Inconsistent behavior regarding lists (#i92811#)
1532 : 63 : sListId = m_pImpl->m_pTextListsHelper->GetListIdForListBlock(
1533 [ + - ]: 63 : *pListBlock);
1534 : : }
1535 [ - + ]: 1620 : else if (pNumberedParagraph)
1536 : : {
1537 [ # # ]: 0 : xNewNumRules.set(pNumberedParagraph->GetNumRules());
1538 : 0 : nLevel = static_cast<sal_Int8>(pNumberedParagraph->GetLevel());
1539 : 0 : sListId = pNumberedParagraph->GetListId();
1540 : 0 : nStartValue = pNumberedParagraph->GetStartValue();
1541 : : }
1542 : :
1543 : :
1544 [ + + ][ - + ]: 1683 : if (pListBlock || pNumberedParagraph)
1545 : : {
1546 : : // Assure that list style of automatic paragraph style is applied at paragraph. (#i101349#)
1547 [ + - ][ + - ]: 63 : sal_Bool bApplyNumRules = pStyle && pStyle->IsListStyleSet();
1548 [ - + ]: 63 : if ( !bApplyNumRules )
1549 : : {
1550 [ # # ]: 0 : sal_Bool bSameNumRules = xNewNumRules == xNumRules;
1551 [ # # ][ # # ]: 0 : if( !bSameNumRules && xNewNumRules.is() && xNumRules.is() )
[ # # ][ # # ]
1552 : : {
1553 : : // If the interface pointers are different then this does
1554 : : // not mean that the num rules are different. Further tests
1555 : : // are required then. However, if only one num rule is
1556 : : // set, no tests are required of course.
1557 [ # # ]: 0 : Reference< XNamed > xNewNamed( xNewNumRules, UNO_QUERY );
1558 [ # # ]: 0 : Reference< XNamed > xNamed( xNumRules, UNO_QUERY );
1559 [ # # ][ # # ]: 0 : if( xNewNamed.is() && xNamed.is() )
[ # # ]
1560 : : {
1561 [ # # ][ # # ]: 0 : bSameNumRules = xNewNamed->getName() == xNamed->getName();
[ # # ][ # # ]
1562 : : }
1563 : : else
1564 : : {
1565 [ # # ]: 0 : Reference< XAnyCompare > xNumRuleCompare( xNumRules, UNO_QUERY );
1566 [ # # ]: 0 : if( xNumRuleCompare.is() )
1567 : : {
1568 [ # # ][ # # ]: 0 : bSameNumRules = (xNumRuleCompare->compare( Any(xNumRules), Any(xNewNumRules) ) == 0);
[ # # ][ # # ]
1569 : 0 : }
1570 : 0 : }
1571 : : }
1572 : 0 : bApplyNumRules = !bSameNumRules;
1573 : : }
1574 : :
1575 [ + - ]: 63 : if ( bApplyNumRules )
1576 : : {
1577 : : // #102607# This may except when xNewNumRules contains
1578 : : // a Writer-NumRule-Implementation bug gets applied to
1579 : : // a shape. Since this may occur inside a document
1580 : : // (e.g. when edited), this must be handled
1581 : : // gracefully.
1582 : : try
1583 : : {
1584 [ + - ]: 63 : xPropSet->setPropertyValue(
1585 [ + - ][ + - ]: 63 : s_NumberingRules, makeAny(xNewNumRules) );
[ # # ]
1586 : : }
1587 [ # # ]: 0 : catch(const Exception&)
1588 : : {
1589 : : ; // I would really like to use a warning here,
1590 : : // but I can't access the XMLErrorHandler from
1591 : : // here.
1592 : : }
1593 : : }
1594 : :
1595 [ - + ][ # # ]: 63 : if (!bNumberingIsNumber &&
[ - + ]
1596 [ # # ][ # # ]: 0 : xPropSetInfo->hasPropertyByName(s_NumberingIsNumber))
1597 : : {
1598 [ # # ][ # # ]: 0 : xPropSet->setPropertyValue(s_NumberingIsNumber, Any(sal_False));
[ # # ]
1599 : : }
1600 : :
1601 [ + - ][ + - ]: 63 : xPropSet->setPropertyValue( s_NumberingLevel, Any(nLevel) );
[ + - ]
1602 : :
1603 [ + + ][ + + ]: 63 : if( pListBlock && pListBlock->IsRestartNumbering() )
[ + - ]
1604 : : {
1605 : : // TODO: property missing
1606 [ + - ][ + - ]: 2 : if (xPropSetInfo->hasPropertyByName(s_ParaIsNumberingRestart))
[ + - ]
1607 : : {
1608 : 2 : sal_Bool bTmp = sal_True;
1609 [ + - ]: 2 : xPropSet->setPropertyValue(s_ParaIsNumberingRestart,
1610 [ + - ][ + - ]: 2 : makeAny(bTmp) );
1611 : : }
1612 : 2 : pListBlock->ResetRestartNumbering();
1613 : : }
1614 : :
1615 [ + + ][ + - ]: 65 : if ( 0 <= nStartValue &&
[ + + ]
1616 [ + - ][ + - ]: 2 : xPropSetInfo->hasPropertyByName(s_NumberingStartValue))
1617 : : {
1618 [ + - ]: 2 : xPropSet->setPropertyValue(s_NumberingStartValue,
1619 [ + - ][ + - ]: 2 : makeAny(nStartValue));
1620 : : }
1621 : :
1622 [ + - ][ + - ]: 63 : if (xPropSetInfo->hasPropertyByName(s_PropNameListId))
[ + - ]
1623 : : {
1624 [ + - ]: 63 : if (!sListId.isEmpty()) {
1625 [ + - ]: 63 : xPropSet->setPropertyValue(s_PropNameListId,
1626 [ + - ][ + - ]: 63 : makeAny(sListId) );
1627 : : }
1628 : : }
1629 : :
1630 [ + - ][ + - ]: 63 : GetTextListHelper().SetListItem( (XMLTextListItemContext *)0 );
1631 : : }
1632 : : else
1633 : : {
1634 : : /* If the paragraph is not in a list but its style, remove it from
1635 : : the list. Do not remove it, if the list of the style is
1636 : : the chapter numbering rule.
1637 : : */
1638 [ + + ]: 1620 : if( xNumRules.is() )
1639 : : {
1640 : 794 : bool bRemove( true );
1641 : : // Special handling for document from OOo 2.x (#i70748#)
1642 : 794 : sal_Int32 nUPD( 0 );
1643 : 794 : sal_Int32 nBuild( 0 );
1644 [ + - ]: 794 : const bool bBuildIdFound = rImport.getBuildIds( nUPD, nBuild );
1645 : : DBG_ASSERT( ( bBuildIdFound && nUPD == 680 ) ||
1646 : : !pStyle ||
1647 : : !pStyle->IsListStyleSet() ||
1648 : : pStyle->GetListStyle().isEmpty(),
1649 : : "automatic paragraph style with list style name, but paragraph not in list???" );
1650 [ + + ][ + + ]: 852 : if ( ( bBuildIdFound && nUPD == 680 ) ||
[ + + + - ]
[ + - ]
1651 : 58 : !pStyle || !pStyle->IsListStyleSet() )
1652 : : {
1653 [ + + ]: 794 : if (m_pImpl->m_xChapterNumbering.is())
1654 : : {
1655 [ + - ]: 9 : Reference< XNamed > xNumNamed( xNumRules, UNO_QUERY );
1656 : : Reference< XNamed > const xChapterNumNamed (
1657 [ + - ]: 9 : m_pImpl->m_xChapterNumbering, UNO_QUERY);
1658 [ - + ]: 18 : if ( xNumNamed.is() && xChapterNumNamed.is() &&
[ # # # # ]
[ - + ]
1659 [ # # ][ # # ]: 9 : xNumNamed->getName() == xChapterNumNamed->getName() )
[ # # ][ # # ]
[ - + ][ - + ]
[ # # # # ]
1660 : : {
1661 : 0 : bRemove = false;
1662 : : // RFE: inserting headings into text documents (#i70748#)
1663 : 0 : bApplyOutlineLevelAsListLevel = true;
1664 : 9 : }
1665 : : }
1666 : : }
1667 [ + - ]: 794 : if ( bRemove )
1668 : : {
1669 [ + - ][ + - ]: 794 : xPropSet->setPropertyValue( s_NumberingRules, Any() );
1670 : : }
1671 : : }
1672 : 1683 : }
1673 : : }
1674 : :
1675 : : // hard paragraph properties
1676 [ + + ]: 1825 : if( pStyle )
1677 : : {
1678 [ + - ]: 422 : pStyle->FillPropertySet( xPropSet );
1679 [ + + ][ + + ]: 440 : if( bPara && pStyle->HasMasterPageName() &&
[ + - ][ + + ]
1680 [ + - ][ + - ]: 18 : xPropSetInfo->hasPropertyByName(s_PageDescName))
1681 : : {
1682 : : OUString sDisplayName(
1683 : : rImport.GetStyleDisplayName(
1684 : : XML_STYLE_FAMILY_MASTER_PAGE,
1685 [ + - ]: 18 : pStyle->GetMasterPageName()) );
1686 [ + - + - ]: 54 : if( sDisplayName.isEmpty() ||
[ + - ][ + - ]
1687 : 18 : (m_pImpl->m_xPageStyles.is() &&
1688 [ + - ][ + - ]: 18 : m_pImpl->m_xPageStyles->hasByName( sDisplayName)))
1689 : : {
1690 [ + - ]: 18 : xPropSet->setPropertyValue(s_PageDescName,
1691 [ + - ][ + - ]: 18 : makeAny(sDisplayName));
1692 : 18 : }
1693 : : }
1694 [ + + ]: 422 : if( bPara && !pStyle->GetDropCapStyleName().isEmpty() &&
[ - + # # ]
[ - + ]
1695 : 0 : m_pImpl->m_xTextStyles.is())
1696 : : {
1697 : : OUString sDisplayName(
1698 : : rImport.GetStyleDisplayName(
1699 : : XML_STYLE_FAMILY_TEXT_TEXT,
1700 [ # # ]: 0 : pStyle->GetDropCapStyleName()) );
1701 [ # # ][ # # ]: 0 : if (m_pImpl->m_xTextStyles->hasByName(sDisplayName) &&
[ # # ][ # # ]
[ # # ]
1702 [ # # ][ # # ]: 0 : xPropSetInfo->hasPropertyByName( sDisplayName ) )
1703 : : {
1704 [ # # ][ # # ]: 0 : xPropSet->setPropertyValue( pStyle->sDropCapCharStyleName, makeAny(sDisplayName) );
[ # # ]
1705 : 0 : }
1706 : : }
1707 : :
1708 : : // combined characters special treatment
1709 [ + + ][ - + ]: 422 : if (!bPara && pStyle->HasCombinedCharactersLetter())
[ - + ]
1710 : : {
1711 : : // insert combined characters text field
1712 [ # # ]: 0 : if (m_pImpl->m_xServiceFactory.is())
1713 : : {
1714 : : uno::Reference<beans::XPropertySet> const xTmp(
1715 [ # # ]: 0 : m_pImpl->m_xServiceFactory->createInstance(
1716 [ # # ][ # # ]: 0 : s_ServiceCombinedCharacters), UNO_QUERY);
1717 [ # # ]: 0 : if( xTmp.is() )
1718 : : {
1719 : : // fix cursor if larger than possible for
1720 : : // combined characters field
1721 [ # # ][ # # ]: 0 : if (rCursor->getString().getLength() >
[ # # ]
1722 : : MAX_COMBINED_CHARACTERS)
1723 : : {
1724 [ # # ][ # # ]: 0 : rCursor->gotoRange(rCursor->getStart(), sal_False);
[ # # ][ # # ]
1725 [ # # ][ # # ]: 0 : rCursor->goRight(MAX_COMBINED_CHARACTERS, sal_True);
1726 : : }
1727 : :
1728 : : // set field value (the combined character string)
1729 [ # # ]: 0 : xTmp->setPropertyValue(s_Content,
1730 [ # # ][ # # ]: 0 : makeAny(rCursor->getString()));
[ # # ][ # # ]
1731 : :
1732 : : // insert the field over it's original text
1733 [ # # ]: 0 : Reference<XTextRange> xRange(rCursor, UNO_QUERY);
1734 [ # # ]: 0 : Reference<XTextContent> xTextContent(xTmp, UNO_QUERY);
1735 [ # # ][ # # ]: 0 : if (m_pImpl->m_xText.is() && xRange.is())
[ # # ]
1736 : : {
1737 : : // #i107225# the combined characters need to be inserted first
1738 : : // the selected text has to be removed afterwards
1739 [ # # ][ # # ]: 0 : m_pImpl->m_xText->insertTextContent( xRange->getStart(), xTextContent, sal_True );
[ # # ][ # # ]
1740 : :
1741 [ # # ][ # # ]: 0 : if( !xRange->getString().isEmpty() )
[ # # ]
1742 : : {
1743 : : try
1744 : : {
1745 [ # # ][ # # ]: 0 : uno::Reference< text::XTextCursor > xCrsr = xRange->getText()->createTextCursorByRange( xRange->getStart() );
[ # # ][ # # ]
[ # # ][ # # ]
1746 [ # # ][ # # ]: 0 : xCrsr->goLeft( 1, true );
1747 [ # # ]: 0 : uno::Reference< beans::XPropertySet> xCrsrProperties( xCrsr, uno::UNO_QUERY_THROW );
1748 : : //the hard properties of the removed text need to be applied to the combined characters field
1749 [ # # ]: 0 : pStyle->FillPropertySet( xCrsrProperties );
1750 [ # # ][ # # ]: 0 : xCrsr->collapseToEnd();
1751 [ # # ][ # # ]: 0 : xCrsr->gotoRange( xRange->getEnd(), true );
[ # # ][ # # ]
1752 [ # # ][ # # ]: 0 : xCrsr->setString( ::rtl::OUString() );
[ # # ]
1753 : : }
1754 [ # # ]: 0 : catch(const uno::Exception&)
1755 : : {
1756 : : }
1757 : : }
1758 : 0 : }
1759 : 0 : }
1760 : : }
1761 : : }
1762 : : }
1763 : :
1764 : : // outline level; set after list style has been set
1765 : : // Complete re-worked and corrected: (#i53198#)
1766 : : // - set outline level at paragraph
1767 : : // - set numbering level at paragraph, if none is already set
1768 : : // - assure that style is marked as an outline style for the corresponding
1769 : : // outline level.
1770 : : // - DO NOT set type of numbering rule to outline.
1771 : : // - DO NOT set numbering rule directly at the paragraph.
1772 : :
1773 : : // Some minor rework and adjust access to paragraph styles (#i70748#)
1774 [ + + ]: 1825 : if ( bPara )
1775 : : {
1776 : : // Headings not numbered anymore in 3.1 (#i103817#)
1777 : 1734 : sal_Int16 nCurrentOutlineLevelInheritedFromParagraphStyle = 0;
1778 : : const bool bHasOutlineLevelProp(
1779 [ + - ][ + - ]: 1734 : xPropSetInfo->hasPropertyByName(s_OutlineLevel));
1780 [ + + ]: 1734 : if ( bHasOutlineLevelProp )
1781 : : {
1782 [ + - ]: 940 : xPropSet->getPropertyValue(s_OutlineLevel)
1783 [ + - ]: 940 : >>= nCurrentOutlineLevelInheritedFromParagraphStyle;
1784 : : }
1785 [ + + ]: 1734 : if ( nOutlineLevel > 0 )
1786 : : {
1787 [ + - ]: 6 : if ( bHasOutlineLevelProp )
1788 : : {
1789 : : // In case that the value equals the value of its paragraph style
1790 : : // attribute outline level, the paragraph attribute value is left unset
1791 [ - + ]: 6 : if ( nCurrentOutlineLevelInheritedFromParagraphStyle != nOutlineLevel )
1792 : : {
1793 [ # # ]: 0 : xPropSet->setPropertyValue( s_OutlineLevel,
1794 [ # # ][ # # ]: 0 : makeAny( static_cast<sal_Int16>(nOutlineLevel) ) );
1795 : : }
1796 : : }
1797 : :
1798 : : // RFE: inserting headings into text documents (#i70748#)
1799 [ - + ]: 6 : if ( bApplyOutlineLevelAsListLevel )
1800 : : {
1801 : 0 : sal_Int16 nNumLevel = -1;
1802 [ # # ][ # # ]: 0 : xPropSet->getPropertyValue( s_NumberingLevel ) >>= nNumLevel;
1803 [ # # ][ # # ]: 0 : if ( nNumLevel == -1 ||
1804 : : nNumLevel != (nOutlineLevel - 1) )
1805 : : {
1806 [ # # ]: 0 : xPropSet->setPropertyValue( s_NumberingLevel,
1807 [ # # ][ # # ]: 0 : makeAny( static_cast<sal_Int8>(nOutlineLevel - 1) ) );
1808 : : }
1809 : : }
1810 : : /* Correction: (#i69629#)
1811 : : - for text document from version OOo 2.0.4/SO 8 PU4 and earlier
1812 : : the paragraph style of a heading should be assigned to the
1813 : : corresponding list level of the outline style.
1814 : : - for other text documents the paragraph style of a heading is only
1815 : : a candidate for an assignment to the list level of the outline
1816 : : style, if it has no direct list style property and (if exists) the
1817 : : automatic paragraph style has also no direct list style set.
1818 : : */
1819 [ + - ][ + - ]: 6 : if (m_pImpl->m_xParaStyles->hasByName(sStyleName))
[ + - ]
1820 : : {
1821 : 6 : bool bOutlineStyleCandidate( false );
1822 : :
1823 : 6 : sal_Int32 nUPD( 0 );
1824 : 6 : sal_Int32 nBuild( 0 );
1825 [ + - ]: 6 : const bool bBuildIdFound = rImport.getBuildIds( nUPD, nBuild );
1826 : : // Lost outline numbering in master document (#i73509#)
1827 : : // Check explicitly on certain versions (#i86058#)
1828 [ + - ][ + - ]: 6 : if ( rImport.IsTextDocInOOoFileFormat() ||
[ - + ][ # # ]
[ # # ][ - + ]
1829 : : ( bBuildIdFound &&
1830 : : ( nUPD == 645 || nUPD == 641 ) ) )
1831 : : {
1832 : 0 : bOutlineStyleCandidate = true;
1833 : : }
1834 [ - + ][ # # ]: 6 : else if ( nUPD == 680 && nBuild <= 9073 ) /* BuildId of OOo 2.0.4/SO8 PU4 */
1835 : : {
1836 : 0 : bOutlineStyleCandidate = bOutlineLevelAttrFound;
1837 : : }
1838 [ - + ]: 6 : if ( bOutlineStyleCandidate )
1839 : : {
1840 [ # # ]: 0 : AddOutlineStyleCandidate( nOutlineLevel, sStyleName );
1841 : : }
1842 : : // Assure that heading applies the outline style (#i103817#)
1843 [ + - ][ - + ]: 6 : if ( ( !pStyle || !pStyle->IsListStyleSet() ) &&
[ # # # # ]
[ - + ]
1844 : 0 : !bOutlineStyleCandidate &&
1845 : 0 : m_pImpl->m_xChapterNumbering.is())
1846 : : {
1847 : 0 : OUString sEmptyStr;
1848 [ # # ]: 0 : if ( !lcl_HasListStyle( sStyleName,
1849 [ # # ]: 0 : m_pImpl->m_xParaStyles, GetXMLImport(),
1850 : : s_NumberingStyleName,
1851 [ # # ]: 0 : sEmptyStr ) )
1852 : : {
1853 : : // heading not in a list --> apply outline style
1854 [ # # ]: 0 : xPropSet->setPropertyValue( s_NumberingRules,
1855 [ # # ][ # # ]: 0 : makeAny(m_pImpl->m_xChapterNumbering) );
1856 [ # # ]: 0 : xPropSet->setPropertyValue( s_NumberingLevel,
1857 [ # # ][ # # ]: 0 : makeAny(static_cast<sal_Int8>(nOutlineLevel - 1)));
1858 : 6 : }
1859 : : }
1860 : : }
1861 : : }
1862 : : //handle for text:p,if the paragraphstyle outlinelevel is set to[1~10]
1863 [ + + ]: 1728 : else if( bHasOutlineLevelProp )
1864 : : {
1865 [ - + ]: 934 : if ( nCurrentOutlineLevelInheritedFromParagraphStyle != 0 )
1866 : : {
1867 : 0 : sal_Int16 nZero = 0;
1868 [ # # ]: 0 : xPropSet->setPropertyValue(s_OutlineLevel,
1869 [ # # ][ # # ]: 1734 : makeAny( static_cast<sal_Int16>(nZero) ));
1870 : : }
1871 : : }
1872 : : }
1873 : :
1874 : 1825 : return sStyleName;
1875 : : }
1876 : :
1877 : 0 : void XMLTextImportHelper::FindOutlineStyleName( ::rtl::OUString& rStyleName,
1878 : : sal_Int8 nOutlineLevel )
1879 : : {
1880 : : static ::rtl::OUString s_HeadingStyleName(
1881 [ # # ][ # # ]: 0 : "HeadingStyleName");
1882 : :
1883 : : // style name empty?
1884 [ # # ]: 0 : if( rStyleName.isEmpty() )
1885 : : {
1886 : : // Empty? Then we need o do stuff. Let's do error checking first.
1887 [ # # ]: 0 : if (m_pImpl->m_xChapterNumbering.is() &&
[ # # # # ]
[ # # ]
1888 : : ( nOutlineLevel > 0 ) &&
1889 : 0 : (nOutlineLevel <= m_pImpl->m_xChapterNumbering->getCount()))
1890 : : {
1891 : 0 : nOutlineLevel--; // for the remainder, the level's are 0-based
1892 : :
1893 : : // empty style name: look-up previously used name
1894 : :
1895 : : // if we don't have a previously used name, we'll use the default
1896 : 0 : m_pImpl->InitOutlineStylesCandidates();
1897 [ # # ]: 0 : if (m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel].empty())
1898 : : {
1899 : : // no other name used previously? Then use default
1900 : :
1901 : : // iterate over property value sequence to find the style name
1902 [ # # ]: 0 : Sequence<PropertyValue> aProperties;
1903 [ # # ]: 0 : m_pImpl->m_xChapterNumbering->getByIndex( nOutlineLevel )
1904 [ # # ][ # # ]: 0 : >>= aProperties;
1905 [ # # ]: 0 : for( sal_Int32 i = 0; i < aProperties.getLength(); i++ )
1906 : : {
1907 [ # # ][ # # ]: 0 : if (aProperties[i].Name == s_HeadingStyleName)
1908 : : {
1909 : 0 : rtl::OUString aOutlineStyle;
1910 [ # # ]: 0 : aProperties[i].Value >>= aOutlineStyle;
1911 : 0 : m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel]
1912 [ # # ]: 0 : .push_back( aOutlineStyle );
1913 : 0 : break; // early out, if we found it!.
1914 : : }
1915 [ # # ]: 0 : }
1916 : : }
1917 : :
1918 : : // finally, we'll use the previously used style name for this
1919 : : // format (or the default we've just put into that style)
1920 : : // take last added one (#i71249#)
1921 : : rStyleName =
1922 : 0 : m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel].back();
1923 : : }
1924 : : // else: nothing we can do, so we'll leave it empty
1925 : : }
1926 : : // else: we already had a style name, so we let it pass.
1927 : 0 : }
1928 : :
1929 : 12 : void XMLTextImportHelper::AddOutlineStyleCandidate( const sal_Int8 nOutlineLevel,
1930 : : const OUString& rStyleName )
1931 : : {
1932 [ + - + - ]: 36 : if (!rStyleName.isEmpty()
[ + - + - ]
[ + - ]
1933 : 12 : && m_pImpl->m_xChapterNumbering.is()
1934 : : && (nOutlineLevel > 0)
1935 : 12 : && (nOutlineLevel <= m_pImpl->m_xChapterNumbering->getCount()))
1936 : : {
1937 : 12 : m_pImpl->InitOutlineStylesCandidates();
1938 : 12 : m_pImpl->m_pOutlineStylesCandidates[nOutlineLevel-1].push_back(
1939 : 12 : rStyleName);
1940 : : }
1941 : 12 : }
1942 : :
1943 : 130 : void XMLTextImportHelper::SetOutlineStyles( sal_Bool bSetEmptyLevels )
1944 : : {
1945 [ + + ][ + - ]: 130 : static ::rtl::OUString s_NumberingStyleName( "NumberingStyleName");
1946 [ + + ][ + - ]: 130 : static ::rtl::OUString s_HeadingStyleName( "HeadingStyleName");
1947 : :
1948 [ + + ][ + + : 260 : if ((m_pImpl->m_pOutlineStylesCandidates != NULL || bSetEmptyLevels) &&
+ - + + ]
[ + + ]
1949 : 65 : m_pImpl->m_xChapterNumbering.is() &&
1950 : 65 : !IsInsertMode())
1951 : : {
1952 : 63 : bool bChooseLastOne( false );
1953 : : {
1954 [ + - ][ + - ]: 63 : if ( GetXMLImport().IsTextDocInOOoFileFormat() )
[ + + ]
1955 : : {
1956 : 6 : bChooseLastOne = true;
1957 : : }
1958 : : else
1959 : : {
1960 : 57 : sal_Int32 nUPD( 0 );
1961 : 57 : sal_Int32 nBuild( 0 );
1962 [ + - ][ + - ]: 57 : if ( GetXMLImport().getBuildIds( nUPD, nBuild ) )
[ + + ]
1963 : : {
1964 : : // check explicitly on certain versions
1965 : : bChooseLastOne = ( nUPD == 641 ) || ( nUPD == 645 ) || // prior OOo 2.0
1966 [ + - ][ + - ]: 57 : ( nUPD == 680 && nBuild <= 9073 ); // OOo 2.0 - OOo 2.0.4
[ + + ][ - + ]
1967 : : }
1968 : : }
1969 : : }
1970 : :
1971 : 63 : OUString sOutlineStyleName;
1972 : : {
1973 : : Reference<XPropertySet> xChapterNumRule(
1974 [ + - ]: 63 : m_pImpl->m_xChapterNumbering, UNO_QUERY);
1975 : 63 : const OUString sName("Name");
1976 [ + - ][ + - ]: 63 : xChapterNumRule->getPropertyValue(sName) >>= sOutlineStyleName;
1977 : : }
1978 : :
1979 [ + - ][ + - ]: 63 : const sal_Int32 nCount = m_pImpl->m_xChapterNumbering->getCount();
1980 : : /* First collect all paragraph styles choosen for assignment to each
1981 : : list level of the outline style, then perform the intrinsic assignment.
1982 : : Reason: The assignment of a certain paragraph style to a list level
1983 : : of the outline style causes side effects on the children
1984 : : paragraph styles in Writer. (#i106218#)
1985 : : */
1986 [ + - ]: 63 : ::std::vector<OUString> sChosenStyles(nCount);
1987 [ + + ]: 693 : for( sal_Int32 i=0; i < nCount; ++i )
1988 : : {
1989 [ - + # # : 630 : if ( bSetEmptyLevels ||
# # ][ + - ]
1990 : 0 : (m_pImpl->m_pOutlineStylesCandidates &&
1991 : 0 : !m_pImpl->m_pOutlineStylesCandidates[i].empty()))
1992 : : {
1993 : : // determine, which candidate is one to be assigned to the list
1994 : : // level of the outline style
1995 [ + + + + ]: 1320 : if (m_pImpl->m_pOutlineStylesCandidates &&
[ + + ]
1996 : 690 : !m_pImpl->m_pOutlineStylesCandidates[i].empty())
1997 : : {
1998 [ - + ]: 12 : if ( bChooseLastOne )
1999 : : {
2000 : 0 : sChosenStyles[i] =
2001 [ # # ]: 0 : m_pImpl->m_pOutlineStylesCandidates[i].back();
2002 : : }
2003 : : else
2004 : : {
2005 [ + + ]: 39 : for (sal_uInt32 j = 0;
2006 : 15 : j < m_pImpl->m_pOutlineStylesCandidates[i].size();
2007 : : ++j)
2008 : : {
2009 [ + + ]: 12 : if (!lcl_HasListStyle(
2010 : 12 : m_pImpl->m_pOutlineStylesCandidates[i][j],
2011 [ + - ]: 12 : m_pImpl->m_xParaStyles, GetXMLImport(),
2012 : : s_NumberingStyleName,
2013 [ + - ]: 12 : sOutlineStyleName))
2014 : : {
2015 : 9 : sChosenStyles[i] =
2016 : 18 : m_pImpl->m_pOutlineStylesCandidates[i][j];
2017 : 9 : break;
2018 : : }
2019 : : }
2020 : : }
2021 : : }
2022 : : }
2023 : : }
2024 : : // Trashed outline numbering in ODF 1.1 text document created by OOo 3.x (#i106218#)
2025 [ + - ]: 63 : Sequence < PropertyValue > aProps( 1 );
2026 [ + - ]: 63 : PropertyValue *pProps = aProps.getArray();
2027 : 63 : pProps->Name = s_HeadingStyleName;
2028 [ + + ]: 693 : for ( sal_Int32 i = 0; i < nCount; ++i )
2029 : : {
2030 : : // Paragraph style assignments in Outline of template lost from second level on (#i107610#)
2031 [ - + ][ # # ]: 630 : if ( bSetEmptyLevels || !sChosenStyles[i].isEmpty() )
[ + - ]
2032 : : {
2033 [ + - ]: 630 : pProps->Value <<= sChosenStyles[i];
2034 [ + - ]: 630 : m_pImpl->m_xChapterNumbering->replaceByIndex(i,
2035 [ + - ][ + - ]: 630 : makeAny( aProps ));
2036 : : }
2037 [ + - ]: 63 : }
2038 : : }
2039 : 130 : }
2040 : :
2041 : 3 : void XMLTextImportHelper::SetHyperlink(
2042 : : SvXMLImport& rImport,
2043 : : const Reference < XTextCursor >& rCursor,
2044 : : const OUString& rHRef,
2045 : : const OUString& rName,
2046 : : const OUString& rTargetFrameName,
2047 : : const OUString& rStyleName,
2048 : : const OUString& rVisitedStyleName,
2049 : : XMLEventsImportContext* pEvents)
2050 : : {
2051 [ + - ][ + - ]: 3 : static ::rtl::OUString s_HyperLinkURL( "HyperLinkURL");
2052 [ + - ][ + - ]: 3 : static ::rtl::OUString s_HyperLinkName( "HyperLinkName");
2053 [ + - ][ + - ]: 3 : static ::rtl::OUString s_HyperLinkTarget( "HyperLinkTarget");
2054 [ + - ][ + - ]: 3 : static ::rtl::OUString s_UnvisitedCharStyleName( "UnvisitedCharStyleName");
2055 [ + - ][ + - ]: 3 : static ::rtl::OUString s_VisitedCharStyleName( "VisitedCharStyleName");
2056 [ + - ][ + - ]: 3 : static ::rtl::OUString s_HyperLinkEvents( "HyperLinkEvents");
2057 : :
2058 [ + - ]: 3 : Reference < XPropertySet > xPropSet( rCursor, UNO_QUERY );
2059 : : Reference < XPropertySetInfo > xPropSetInfo(
2060 [ + - ][ + - ]: 3 : xPropSet->getPropertySetInfo());
2061 [ + - ][ + - ]: 3 : if (!xPropSetInfo.is() || !xPropSetInfo->hasPropertyByName(s_HyperLinkURL))
[ + - ][ - + ]
[ - + ]
2062 : 3 : return;
2063 : :
2064 [ + - ][ + - ]: 3 : xPropSet->setPropertyValue(s_HyperLinkURL, makeAny(rHRef));
[ + - ]
2065 : :
2066 [ + - ][ + - ]: 3 : if (xPropSetInfo->hasPropertyByName(s_HyperLinkName))
[ + - ]
2067 : : {
2068 [ + - ][ + - ]: 3 : xPropSet->setPropertyValue(s_HyperLinkName, makeAny(rName));
[ + - ]
2069 : : }
2070 : :
2071 [ + - ][ + - ]: 3 : if (xPropSetInfo->hasPropertyByName(s_HyperLinkTarget))
[ + - ]
2072 : : {
2073 [ + - ]: 3 : xPropSet->setPropertyValue(s_HyperLinkTarget,
2074 [ + - ][ + - ]: 3 : makeAny(rTargetFrameName));
2075 : : }
2076 : :
2077 [ - + ][ # # ]: 3 : if ( (pEvents != NULL) &&
[ - + ]
2078 [ # # ][ # # ]: 0 : xPropSetInfo->hasPropertyByName(s_HyperLinkEvents))
2079 : : {
2080 : : // The API treats events at hyperlinks differently from most
2081 : : // other properties: You have to set a name replace with the
2082 : : // events in it. The easiest way to to this is to 1) get
2083 : : // events, 2) set new ones, and 3) then put events back.
2084 : : uno::Reference<XNameReplace> const xReplace(
2085 [ # # ][ # # ]: 0 : xPropSet->getPropertyValue(s_HyperLinkEvents), UNO_QUERY);
[ # # ]
2086 [ # # ]: 0 : if (xReplace.is())
2087 : : {
2088 : : // set events
2089 [ # # ]: 0 : pEvents->SetEvents(xReplace);
2090 : :
2091 : : // put events
2092 [ # # ][ # # ]: 0 : xPropSet->setPropertyValue(s_HyperLinkEvents, makeAny(xReplace));
[ # # ]
2093 : 0 : }
2094 : : }
2095 : :
2096 [ + - ]: 3 : if (m_pImpl->m_xTextStyles.is())
2097 : : {
2098 : : OUString sDisplayName(
2099 : : rImport.GetStyleDisplayName(
2100 [ + - ]: 3 : XML_STYLE_FAMILY_TEXT_TEXT, rStyleName ) );
2101 [ - + ][ # # ]: 3 : if( !sDisplayName.isEmpty() &&
[ # # ][ - + ]
2102 [ # # ][ # # ]: 0 : xPropSetInfo->hasPropertyByName(s_UnvisitedCharStyleName) &&
2103 [ # # ][ # # ]: 0 : m_pImpl->m_xTextStyles->hasByName(sDisplayName))
2104 : : {
2105 [ # # ]: 0 : xPropSet->setPropertyValue(s_UnvisitedCharStyleName,
2106 [ # # ][ # # ]: 0 : makeAny(sDisplayName));
2107 : : }
2108 : :
2109 : : sDisplayName =
2110 : : rImport.GetStyleDisplayName(
2111 [ + - ]: 3 : XML_STYLE_FAMILY_TEXT_TEXT, rVisitedStyleName );
2112 [ # # ][ # # ]: 3 : if( !sDisplayName.isEmpty() &&
[ - + ][ - + ]
2113 [ # # ][ # # ]: 0 : xPropSetInfo->hasPropertyByName(s_VisitedCharStyleName) &&
2114 [ # # ][ # # ]: 0 : m_pImpl->m_xTextStyles->hasByName(sDisplayName))
2115 : : {
2116 [ # # ]: 0 : xPropSet->setPropertyValue(s_VisitedCharStyleName,
2117 [ # # ][ # # ]: 0 : makeAny(sDisplayName));
2118 : 3 : }
2119 [ - + ][ + - ]: 3 : }
2120 : : }
2121 : :
2122 : 24 : void XMLTextImportHelper::SetRuby(
2123 : : SvXMLImport& rImport,
2124 : : const Reference < XTextCursor >& rCursor,
2125 : : const OUString& rStyleName,
2126 : : const OUString& rTextStyleName,
2127 : : const OUString& rText )
2128 : : {
2129 [ + - ]: 24 : Reference<XPropertySet> xPropSet(rCursor, UNO_QUERY);
2130 : :
2131 : 24 : OUString sRubyText("RubyText");
2132 : 24 : OUString sRubyCharStyleName("RubyCharStyleName");
2133 : :
2134 : : // if we have one Ruby property, we assume all of them are present
2135 [ + - ][ + - ]: 72 : if (xPropSet.is() &&
[ + - ]
2136 [ + - ][ + - ]: 48 : xPropSet->getPropertySetInfo()->hasPropertyByName( sRubyText ))
[ + - ][ + - ]
[ + - ][ # # ]
2137 : : {
2138 : : // the ruby text
2139 [ + - ][ + - ]: 24 : xPropSet->setPropertyValue(sRubyText, makeAny(rText));
[ + - ]
2140 : :
2141 : : // the ruby style (ruby-adjust)
2142 : 24 : XMLPropStyleContext *pStyle = 0;
2143 [ + - ][ + - ]: 24 : if (!rStyleName.isEmpty() && m_pImpl->m_xAutoStyles.Is())
[ + - ]
2144 : : {
2145 : : const SvXMLStyleContext* pTempStyle =
2146 : 24 : ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
2147 : : FindStyleChildContext( XML_STYLE_FAMILY_TEXT_RUBY,
2148 [ + - ]: 24 : rStyleName, sal_True );
2149 [ + - ][ + - ]: 24 : pStyle = PTR_CAST(XMLPropStyleContext,pTempStyle);
[ + - ][ + - ]
2150 : :
2151 [ + - ]: 24 : if (NULL != pStyle)
2152 [ + - ]: 24 : pStyle->FillPropertySet( xPropSet );
2153 : : }
2154 : :
2155 : : // the ruby text character style
2156 [ + - ]: 24 : if (m_pImpl->m_xTextStyles.is())
2157 : : {
2158 : : OUString sDisplayName(
2159 : : rImport.GetStyleDisplayName(
2160 [ + - ]: 24 : XML_STYLE_FAMILY_TEXT_TEXT, rTextStyleName ) );
2161 [ - + ][ # # ]: 24 : if( (!sDisplayName.isEmpty()) &&
[ - + ]
2162 [ # # ][ # # ]: 0 : m_pImpl->m_xTextStyles->hasByName( sDisplayName ))
2163 : : {
2164 [ # # ][ # # ]: 0 : xPropSet->setPropertyValue(sRubyCharStyleName, makeAny(sDisplayName));
[ # # ]
2165 : 24 : }
2166 : : }
2167 : 24 : }
2168 : 24 : }
2169 : :
2170 : 554 : void XMLTextImportHelper::SetAutoStyles( SvXMLStylesContext *pStyles )
2171 : : {
2172 : 554 : m_pImpl->m_xAutoStyles = pStyles;
2173 : 554 : }
2174 : :
2175 : 312 : void XMLTextImportHelper::SetFontDecls( XMLFontStylesContext *pFontDecls )
2176 : : {
2177 : 312 : m_pImpl->m_xFontDecls = pFontDecls;
2178 : 312 : ((XMLTextImportPropertyMapper *)m_pImpl->m_xParaImpPrMap.get())
2179 : 312 : ->SetFontDecls( pFontDecls );
2180 : 312 : ((XMLTextImportPropertyMapper *)m_pImpl->m_xTextImpPrMap.get())
2181 : 312 : ->SetFontDecls( pFontDecls );
2182 : 312 : }
2183 : :
2184 : 32 : const XMLFontStylesContext *XMLTextImportHelper::GetFontDecls() const
2185 : : {
2186 : 32 : return (XMLFontStylesContext *)&m_pImpl->m_xFontDecls;
2187 : : }
2188 : :
2189 : 1796 : SvXMLImportContext *XMLTextImportHelper::CreateTextChildContext(
2190 : : SvXMLImport& rImport,
2191 : : sal_uInt16 nPrefix, const OUString& rLocalName,
2192 : : const Reference< XAttributeList > & xAttrList,
2193 : : XMLTextType eType )
2194 : : {
2195 : 1796 : SvXMLImportContext *pContext = 0;
2196 : :
2197 : 1796 : const SvXMLTokenMap& rTokenMap = GetTextElemTokenMap();
2198 : 1796 : sal_Bool bHeading = sal_False;
2199 : 1796 : sal_Bool bContent = sal_True;
2200 : 1796 : sal_uInt16 nToken = rTokenMap.Get( nPrefix, rLocalName );
2201 [ - + - + : 1796 : switch( nToken )
+ + - + -
+ - + + -
- + - -
+ ]
2202 : : {
2203 : : case XML_TOK_TEXT_H:
2204 : 0 : bHeading = sal_True;
2205 : : case XML_TOK_TEXT_P:
2206 : : pContext = new XMLParaContext( rImport,
2207 : : nPrefix, rLocalName,
2208 [ + - ]: 1617 : xAttrList, bHeading );
2209 [ + + ][ + + ]: 1617 : if (m_pImpl->m_bProgress && XML_TEXT_TYPE_SHAPE != eType)
[ + + ]
2210 : : {
2211 : 823 : rImport.GetProgressBarHelper()->Increment();
2212 : : }
2213 : 1617 : break;
2214 : : case XML_TOK_TEXT_NUMBERED_PARAGRAPH:
2215 : : pContext = new XMLNumberedParaContext(
2216 [ # # ]: 0 : rImport, nPrefix, rLocalName, xAttrList );
2217 : 0 : break;
2218 : : case XML_TOK_TEXT_LIST:
2219 : : pContext = new XMLTextListBlockContext( rImport, *this,
2220 : : nPrefix, rLocalName,
2221 [ + - ]: 15 : xAttrList );
2222 : 15 : break;
2223 : : case XML_TOK_TABLE_TABLE:
2224 [ - + ][ # # ]: 3 : if( XML_TEXT_TYPE_BODY == eType ||
[ # # ][ # # ]
[ # # ][ # # ]
2225 : : XML_TEXT_TYPE_TEXTBOX == eType ||
2226 : : XML_TEXT_TYPE_SECTION == eType ||
2227 : : XML_TEXT_TYPE_HEADER_FOOTER == eType ||
2228 : : XML_TEXT_TYPE_CHANGED_REGION == eType ||
2229 : : XML_TEXT_TYPE_CELL == eType )
2230 : : pContext = CreateTableChildContext( rImport, nPrefix, rLocalName,
2231 : 3 : xAttrList );
2232 : 3 : break;
2233 : : case XML_TOK_TEXT_SEQUENCE_DECLS:
2234 [ + - ][ - + ]: 63 : if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
[ # # ][ + - ]
2235 : : XML_TEXT_TYPE_HEADER_FOOTER == eType )
2236 : : {
2237 : : pContext = new XMLVariableDeclsImportContext(
2238 [ + - ]: 63 : rImport, *this, nPrefix, rLocalName, VarTypeSequence);
2239 : 63 : bContent = sal_False;
2240 : : }
2241 : 63 : break;
2242 : :
2243 : : case XML_TOK_TEXT_VARFIELD_DECLS:
2244 [ # # ][ # # ]: 0 : if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
[ # # ][ # # ]
2245 : : XML_TEXT_TYPE_HEADER_FOOTER == eType )
2246 : : {
2247 : : pContext = new XMLVariableDeclsImportContext(
2248 [ # # ]: 0 : rImport, *this, nPrefix, rLocalName, VarTypeSimple);
2249 : 0 : bContent = sal_False;
2250 : : }
2251 : 0 : break;
2252 : :
2253 : : case XML_TOK_TEXT_USERFIELD_DECLS:
2254 [ + - ][ - + ]: 8 : if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted)||
[ # # ][ + - ]
2255 : : XML_TEXT_TYPE_HEADER_FOOTER == eType )
2256 : : {
2257 : : pContext = new XMLVariableDeclsImportContext(
2258 [ + - ]: 8 : rImport, *this, nPrefix, rLocalName, VarTypeUserField);
2259 : 8 : bContent = sal_False;
2260 : : }
2261 : 8 : break;
2262 : :
2263 : : case XML_TOK_TEXT_DDE_DECLS:
2264 [ # # ][ # # ]: 0 : if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
[ # # ][ # # ]
2265 : : XML_TEXT_TYPE_HEADER_FOOTER == eType )
2266 : : {
2267 : : pContext = new XMLDdeFieldDeclsImportContext(
2268 [ # # ]: 0 : rImport, nPrefix, rLocalName);
2269 : 0 : bContent = sal_False;
2270 : : }
2271 : 0 : break;
2272 : :
2273 : : case XML_TOK_TEXT_FRAME_PAGE:
2274 [ + - ][ - + ]: 2 : if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
[ # # ][ # # ]
[ + - ]
2275 : : XML_TEXT_TYPE_TEXTBOX == eType ||
2276 : : XML_TEXT_TYPE_CHANGED_REGION == eType )
2277 : : {
2278 : : TextContentAnchorType eAnchorType =
2279 : : XML_TEXT_TYPE_TEXTBOX == eType ? TextContentAnchorType_AT_FRAME
2280 [ - + ]: 2 : : TextContentAnchorType_AT_PAGE;
2281 : : pContext = new XMLTextFrameContext( rImport, nPrefix,
2282 : : rLocalName, xAttrList,
2283 [ + - ]: 2 : eAnchorType );
2284 : 2 : bContent = sal_False;
2285 : : }
2286 : 2 : break;
2287 : :
2288 : : case XML_TOK_DRAW_A_PAGE:
2289 [ # # ][ # # ]: 0 : if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
[ # # ][ # # ]
[ # # ]
2290 : : XML_TEXT_TYPE_TEXTBOX == eType ||
2291 : : XML_TEXT_TYPE_CHANGED_REGION == eType)
2292 : : {
2293 : : TextContentAnchorType eAnchorType =
2294 : : XML_TEXT_TYPE_TEXTBOX == eType ? TextContentAnchorType_AT_FRAME
2295 [ # # ]: 0 : : TextContentAnchorType_AT_PAGE;
2296 : : pContext = new XMLTextFrameHyperlinkContext( rImport, nPrefix,
2297 : : rLocalName, xAttrList,
2298 [ # # ]: 0 : eAnchorType );
2299 : 0 : bContent = sal_False;
2300 : : }
2301 : 0 : break;
2302 : :
2303 : : case XML_TOK_TEXT_INDEX_TITLE:
2304 : : case XML_TOK_TEXT_SECTION:
2305 [ + - ]: 39 : pContext = new XMLSectionImportContext( rImport, nPrefix, rLocalName );
2306 : 39 : break;
2307 : :
2308 : : case XML_TOK_TEXT_TOC:
2309 : : case XML_TOK_TEXT_OBJECT_INDEX:
2310 : : case XML_TOK_TEXT_TABLE_INDEX:
2311 : : case XML_TOK_TEXT_ILLUSTRATION_INDEX:
2312 : : case XML_TOK_TEXT_USER_INDEX:
2313 : : case XML_TOK_TEXT_ALPHABETICAL_INDEX:
2314 : : case XML_TOK_TEXT_BIBLIOGRAPHY_INDEX:
2315 [ + - ]: 28 : if( XML_TEXT_TYPE_SHAPE != eType )
2316 [ + - ]: 28 : pContext = new XMLIndexTOCContext( rImport, nPrefix, rLocalName );
2317 : 28 : break;
2318 : :
2319 : : case XML_TOK_TEXT_TRACKED_CHANGES:
2320 : : pContext = new XMLTrackedChangesImportContext( rImport, nPrefix,
2321 [ # # ]: 0 : rLocalName);
2322 : 0 : bContent = sal_False;
2323 : 0 : break;
2324 : :
2325 : : case XML_TOK_TEXT_CHANGE:
2326 : : case XML_TOK_TEXT_CHANGE_START:
2327 : : case XML_TOK_TEXT_CHANGE_END:
2328 : : pContext = new XMLChangeImportContext(
2329 : : rImport, nPrefix, rLocalName,
2330 : : (XML_TOK_TEXT_CHANGE_END != nToken),
2331 : : (XML_TOK_TEXT_CHANGE_START != nToken),
2332 [ # # ]: 0 : sal_True);
2333 : 0 : break;
2334 : :
2335 : : case XML_TOK_TEXT_FORMS:
2336 [ + - ][ + - ]: 13 : pContext = rImport.GetFormImport()->createOfficeFormsContext(rImport, nPrefix, rLocalName);
2337 : 13 : bContent = sal_False;
2338 : 13 : break;
2339 : :
2340 : : case XML_TOK_TEXT_AUTOMARK:
2341 [ # # ]: 0 : if( XML_TEXT_TYPE_BODY == eType )
2342 : : {
2343 [ # # ]: 0 : pContext = new XMLAutoMarkFileContext(rImport, nPrefix,rLocalName);
2344 : : }
2345 : 0 : bContent = sal_False;
2346 : 0 : break;
2347 : :
2348 : : case XML_TOK_TEXT_CALCULATION_SETTINGS:
2349 [ # # ]: 0 : pContext = new XMLCalculationSettingsContext ( rImport, nPrefix, rLocalName, xAttrList);
2350 : 0 : bContent = sal_False;
2351 : 0 : break;
2352 : :
2353 : : default:
2354 [ + - ][ - + ]: 8 : if ((XML_TEXT_TYPE_BODY == eType && m_pImpl->m_bBodyContentStarted) ||
[ # # ][ # # ]
[ + - ]
2355 : : XML_TEXT_TYPE_TEXTBOX == eType ||
2356 : : XML_TEXT_TYPE_CHANGED_REGION == eType )
2357 : : {
2358 : 8 : Reference < XShapes > xShapes;
2359 : : pContext = rImport.GetShapeImport()->CreateGroupChildContext(
2360 [ + - ][ + - ]: 8 : rImport, nPrefix, rLocalName, xAttrList, xShapes );
[ + - ][ + - ]
2361 : 8 : bContent = sal_False;
2362 : : }
2363 : : }
2364 : :
2365 : : // handle open redlines
2366 : : if ( (XML_TOK_TEXT_CHANGE != nToken) &&
2367 : : (XML_TOK_TEXT_CHANGE_END != nToken) &&
2368 : : (XML_TOK_TEXT_CHANGE_START != nToken) )
2369 : : {
2370 : : // ResetOpenRedlineId();
2371 : : }
2372 : :
2373 [ + + ][ + + ]: 1796 : if( XML_TEXT_TYPE_BODY == eType && bContent )
2374 : : {
2375 : 465 : m_pImpl->m_bBodyContentStarted = sal_False;
2376 : : }
2377 : :
2378 : 1796 : return pContext;
2379 : : }
2380 : :
2381 : 0 : SvXMLImportContext *XMLTextImportHelper::CreateTableChildContext(
2382 : : SvXMLImport&,
2383 : : sal_uInt16 /*nPrefix*/, const OUString& /*rLocalName*/,
2384 : : const Reference< XAttributeList > & )
2385 : : {
2386 : 0 : return 0;
2387 : : }
2388 : :
2389 : : /// get data style key for use with NumberFormat property
2390 : 120 : sal_Int32 XMLTextImportHelper::GetDataStyleKey(const OUString& sStyleName,
2391 : : sal_Bool* pIsSystemLanguage )
2392 : : {
2393 : : const SvXMLStyleContext* pStyle =
2394 : 120 : ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
2395 : : FindStyleChildContext( XML_STYLE_FAMILY_DATA_STYLE,
2396 : 120 : sStyleName, sal_True );
2397 : :
2398 : : // get appropriate context
2399 : :
2400 : :
2401 : : // first check if its a impress and draw only number format
2402 : : // this is needed since its also a SvXMLNumFormatContext,
2403 : : // that was needed to support them for controls in impress/draw also
2404 [ - + ][ + + ]: 120 : SdXMLNumberFormatImportContext* pSdNumStyle = PTR_CAST( SdXMLNumberFormatImportContext, pStyle );
2405 [ - + ]: 120 : if( pSdNumStyle )
2406 : : {
2407 : 0 : return pSdNumStyle->GetDrawKey();
2408 : : }
2409 : : else
2410 : : {
2411 [ + + ][ + - ]: 120 : SvXMLNumFormatContext* pNumStyle = PTR_CAST( SvXMLNumFormatContext, pStyle );
2412 [ + + ]: 120 : if( pNumStyle )
2413 : : {
2414 [ + - ]: 12 : if( pIsSystemLanguage != NULL )
2415 : 12 : *pIsSystemLanguage = pNumStyle->IsSystemLanguage();
2416 : :
2417 : : // return key
2418 : 12 : return pNumStyle->GetKey();
2419 : : }
2420 : : }
2421 : 120 : return -1;
2422 : : }
2423 : :
2424 : 8 : const SvxXMLListStyleContext *XMLTextImportHelper::FindAutoListStyle( const OUString& rName ) const
2425 : : {
2426 : 8 : const SvxXMLListStyleContext *pStyle = 0;
2427 [ + - ]: 8 : if (m_pImpl->m_xAutoStyles.Is())
2428 : : {
2429 : : const SvXMLStyleContext* pTempStyle =
2430 : 8 : ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
2431 : : FindStyleChildContext( XML_STYLE_FAMILY_TEXT_LIST, rName,
2432 : 8 : sal_True );
2433 [ + - ][ + - ]: 8 : pStyle = PTR_CAST( SvxXMLListStyleContext ,pTempStyle);
2434 : : }
2435 : :
2436 : 8 : return pStyle;
2437 : : }
2438 : :
2439 : 18 : XMLPropStyleContext *XMLTextImportHelper::FindAutoFrameStyle( const OUString& rName ) const
2440 : : {
2441 : 18 : XMLPropStyleContext *pStyle = 0;
2442 [ + - ]: 18 : if (m_pImpl->m_xAutoStyles.Is())
2443 : : {
2444 : : const SvXMLStyleContext* pTempStyle =
2445 : 18 : ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
2446 : : FindStyleChildContext( XML_STYLE_FAMILY_SD_GRAPHICS_ID, rName,
2447 : 18 : sal_True );
2448 [ + - ][ + - ]: 18 : pStyle = PTR_CAST( XMLPropStyleContext ,pTempStyle);
2449 : : }
2450 : :
2451 : 18 : return pStyle;
2452 : : }
2453 : :
2454 : 67 : XMLPropStyleContext* XMLTextImportHelper::FindSectionStyle(
2455 : : const OUString& rName ) const
2456 : : {
2457 : 67 : XMLPropStyleContext* pStyle = NULL;
2458 [ + - ]: 67 : if (m_pImpl->m_xAutoStyles.Is())
2459 : : {
2460 : : const SvXMLStyleContext* pTempStyle =
2461 : 67 : ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
2462 : : FindStyleChildContext(
2463 : : XML_STYLE_FAMILY_TEXT_SECTION,
2464 : 67 : rName, sal_True );
2465 [ + - ][ + - ]: 67 : pStyle = PTR_CAST( XMLPropStyleContext,pTempStyle);
2466 : : }
2467 : :
2468 : 67 : return pStyle;
2469 : : }
2470 : :
2471 : 311 : XMLPropStyleContext* XMLTextImportHelper::FindPageMaster(
2472 : : const OUString& rName ) const
2473 : : {
2474 : 311 : XMLPropStyleContext* pStyle = NULL;
2475 [ + - ]: 311 : if (m_pImpl->m_xAutoStyles.Is())
2476 : : {
2477 : : const SvXMLStyleContext* pTempStyle =
2478 : 311 : ((SvXMLStylesContext *)&m_pImpl->m_xAutoStyles)->
2479 : : FindStyleChildContext(
2480 : : XML_STYLE_FAMILY_PAGE_MASTER,
2481 : 311 : rName, sal_True );
2482 [ + - ][ + - ]: 311 : pStyle = PTR_CAST( XMLPropStyleContext,pTempStyle);
2483 : : }
2484 : :
2485 : 311 : return pStyle;
2486 : : }
2487 : :
2488 : :
2489 : 312 : void XMLTextImportHelper::PushListContext(XMLTextListBlockContext *i_pListBlock)
2490 : : {
2491 : 312 : GetTextListHelper().PushListContext(i_pListBlock);
2492 : 312 : }
2493 : :
2494 : 312 : void XMLTextImportHelper::PopListContext()
2495 : : {
2496 : 312 : GetTextListHelper().PopListContext();
2497 : 312 : }
2498 : :
2499 : :
2500 : 0 : const SvXMLTokenMap& XMLTextImportHelper::GetTextNumberedParagraphAttrTokenMap()
2501 : : {
2502 [ # # ]: 0 : if (!m_pImpl->m_pTextNumberedParagraphAttrTokenMap.get())
2503 : : {
2504 : 0 : m_pImpl->m_pTextNumberedParagraphAttrTokenMap.reset(
2505 [ # # ]: 0 : new SvXMLTokenMap( aTextNumberedParagraphAttrTokenMap ) );
2506 : : }
2507 : 0 : return *m_pImpl->m_pTextNumberedParagraphAttrTokenMap;
2508 : : }
2509 : :
2510 : 50 : const SvXMLTokenMap& XMLTextImportHelper::GetTextListBlockAttrTokenMap()
2511 : : {
2512 [ + + ]: 50 : if (!m_pImpl->m_pTextListBlockAttrTokenMap.get())
2513 : : {
2514 : 5 : m_pImpl->m_pTextListBlockAttrTokenMap.reset(
2515 [ + - ]: 10 : new SvXMLTokenMap( aTextListBlockAttrTokenMap ) );
2516 : : }
2517 : 50 : return *m_pImpl->m_pTextListBlockAttrTokenMap;
2518 : : }
2519 : :
2520 : 73 : const SvXMLTokenMap& XMLTextImportHelper::GetTextListBlockElemTokenMap()
2521 : : {
2522 [ + + ]: 73 : if (!m_pImpl->m_pTextListBlockElemTokenMap.get())
2523 : : {
2524 : 5 : m_pImpl->m_pTextListBlockElemTokenMap.reset(
2525 [ + - ]: 10 : new SvXMLTokenMap( aTextListBlockElemTokenMap ) );
2526 : : }
2527 : 73 : return *m_pImpl->m_pTextListBlockElemTokenMap;
2528 : : }
2529 : :
2530 : 306 : SvI18NMap& XMLTextImportHelper::GetRenameMap()
2531 : : {
2532 [ + + ]: 306 : if (!m_pImpl->m_pRenameMap.get())
2533 : : {
2534 [ + - ]: 63 : m_pImpl->m_pRenameMap.reset( new SvI18NMap() );
2535 : : }
2536 : 306 : return *m_pImpl->m_pRenameMap;
2537 : : }
2538 : :
2539 : 1912 : void XMLTextImportHelper::InsertBookmarkStartRange(
2540 : : const OUString & sName,
2541 : : const Reference<XTextRange> & rRange,
2542 : : OUString const& i_rXmlId,
2543 : : ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > & i_rpRDFaAttributes)
2544 : : {
2545 [ + - ]: 1912 : m_pImpl->m_BookmarkStartRanges[sName] =
2546 [ + - ]: 3824 : ::boost::make_tuple(rRange, i_rXmlId, i_rpRDFaAttributes);
2547 : 1912 : m_pImpl->m_BookmarkVector.push_back(sName);
2548 : 1912 : }
2549 : :
2550 : 1912 : sal_Bool XMLTextImportHelper::FindAndRemoveBookmarkStartRange(
2551 : : const OUString & sName,
2552 : : Reference<XTextRange> & o_rRange,
2553 : : OUString & o_rXmlId,
2554 : : ::boost::shared_ptr< ::xmloff::ParsedRDFaAttributes > & o_rpRDFaAttributes)
2555 : : {
2556 [ + - ]: 1912 : if (m_pImpl->m_BookmarkStartRanges.count(sName))
2557 : : {
2558 : : Impl::BookmarkMapEntry_t & rEntry =
2559 [ + - ]: 1912 : (*m_pImpl->m_BookmarkStartRanges.find(sName)).second;
2560 [ + - ][ + - ]: 1912 : o_rRange.set(rEntry.get<0>());
2561 [ + - ]: 1912 : o_rXmlId = rEntry.get<1>();
2562 [ + - ][ + - ]: 1912 : o_rpRDFaAttributes = rEntry.get<2>();
2563 [ + - ]: 1912 : m_pImpl->m_BookmarkStartRanges.erase(sName);
2564 : 1912 : Impl::BookmarkVector_t::iterator it(m_pImpl->m_BookmarkVector.begin());
2565 [ + - ][ + - ]: 1912 : while (it != m_pImpl->m_BookmarkVector.end() && it->compareTo(sName)!=0)
[ - + ][ + - ]
[ - + # # ]
2566 : : {
2567 : 0 : ++it;
2568 : : }
2569 [ + - ][ + - ]: 1912 : if (it!=m_pImpl->m_BookmarkVector.end()) {
2570 [ + - ]: 1912 : m_pImpl->m_BookmarkVector.erase(it);
2571 : : }
2572 : 1912 : return sal_True;
2573 : : }
2574 : : else
2575 : : {
2576 : 1912 : return sal_False;
2577 : : }
2578 : : }
2579 : :
2580 : 0 : ::rtl::OUString XMLTextImportHelper::FindActiveBookmarkName()
2581 : : {
2582 [ # # ]: 0 : if (!m_pImpl->m_BookmarkVector.empty()) {
2583 : 0 : return m_pImpl->m_BookmarkVector.back();
2584 : 0 : } else return ::rtl::OUString(); // return the empty string on error...
2585 : : }
2586 : :
2587 : 0 : void XMLTextImportHelper::pushFieldCtx( ::rtl::OUString name, ::rtl::OUString type )
2588 : : {
2589 : 0 : m_pImpl->m_FieldStack.push(Impl::field_stack_item_t(
2590 [ # # # # ]: 0 : Impl::field_name_type_t(name, type), Impl::field_params_t()));
2591 : 0 : }
2592 : :
2593 : 0 : void XMLTextImportHelper::popFieldCtx()
2594 : : {
2595 [ # # ]: 0 : if ( !m_pImpl->m_FieldStack.empty() )
2596 : 0 : m_pImpl->m_FieldStack.pop();
2597 : 0 : }
2598 : :
2599 : 0 : void XMLTextImportHelper::addFieldParam( ::rtl::OUString name, ::rtl::OUString value )
2600 : : {
2601 : : DBG_ASSERT(!m_pImpl->m_FieldStack.empty(),
2602 : : "stack is empty: not good! Do a pushFieldCtx before...");
2603 [ # # ]: 0 : if (!m_pImpl->m_FieldStack.empty()) {
2604 : 0 : Impl::field_stack_item_t & FieldStackItem(m_pImpl->m_FieldStack.top());
2605 [ # # ]: 0 : FieldStackItem.second.push_back(Impl::field_param_t( name, value ));
2606 : : }
2607 : 0 : }
2608 : :
2609 : 0 : ::rtl::OUString XMLTextImportHelper::getCurrentFieldType()
2610 : : {
2611 : : DBG_ASSERT(!m_pImpl->m_FieldStack.empty(),
2612 : : "stack is empty: not good! Do a pushFieldCtx before...");
2613 [ # # ]: 0 : if (!m_pImpl->m_FieldStack.empty()) {
2614 : 0 : return m_pImpl->m_FieldStack.top().first.second;
2615 : 0 : } else return ::rtl::OUString();
2616 : : }
2617 : :
2618 : 0 : bool XMLTextImportHelper::hasCurrentFieldCtx()
2619 : : {
2620 : 0 : return !m_pImpl->m_FieldStack.empty();
2621 : : }
2622 : :
2623 : 0 : void XMLTextImportHelper::setCurrentFieldParamsTo(::com::sun::star::uno::Reference< ::com::sun::star::text::XFormField> &xFormField)
2624 : : {
2625 : : DBG_ASSERT(!m_pImpl->m_FieldStack.empty(),
2626 : : "stack is empty: not good! Do a pushFieldCtx before...");
2627 [ # # ][ # # ]: 0 : if (!m_pImpl->m_FieldStack.empty() && xFormField.is())
[ # # ]
2628 : : {
2629 [ # # ]: 0 : FieldParamImporter(&m_pImpl->m_FieldStack.top().second,
2630 [ # # ][ # # ]: 0 : xFormField->getParameters()).Import();
[ # # ]
2631 : : }
2632 : 0 : }
2633 : :
2634 : :
2635 : 4 : void XMLTextImportHelper::ConnectFrameChains(
2636 : : const OUString& rFrmName,
2637 : : const OUString& rNextFrmName,
2638 : : const Reference < XPropertySet >& rFrmPropSet )
2639 : : {
2640 [ + + ][ + - ]: 4 : static ::rtl::OUString s_ChainNextName( "ChainNextName");
2641 [ + + ][ + - ]: 4 : static ::rtl::OUString s_ChainPrevName( "ChainPrevName");
2642 : :
2643 [ - + ]: 4 : if( rFrmName.isEmpty() )
2644 : 4 : return;
2645 : :
2646 [ - + ]: 4 : if( !rNextFrmName.isEmpty() )
2647 : : {
2648 [ # # ]: 0 : OUString sNextFrmName(GetRenameMap().Get( XML_TEXT_RENAME_TYPE_FRAME,
2649 [ # # ]: 0 : rNextFrmName ));
2650 [ # # ][ # # ]: 0 : if (m_pImpl->m_xTextFrames.is()
[ # # ]
2651 [ # # ][ # # ]: 0 : && m_pImpl->m_xTextFrames->hasByName(sNextFrmName))
2652 : : {
2653 [ # # ]: 0 : rFrmPropSet->setPropertyValue(s_ChainNextName,
2654 [ # # ][ # # ]: 0 : makeAny(sNextFrmName));
2655 : : }
2656 : : else
2657 : : {
2658 [ # # ]: 0 : if (!m_pImpl->m_pPrevFrmNames.get())
2659 : : {
2660 [ # # ][ # # ]: 0 : m_pImpl->m_pPrevFrmNames.reset( new std::vector<rtl::OUString> );
2661 [ # # ][ # # ]: 0 : m_pImpl->m_pNextFrmNames.reset( new std::vector<rtl::OUString> );
2662 : : }
2663 [ # # ]: 0 : m_pImpl->m_pPrevFrmNames->push_back(rFrmName);
2664 [ # # ]: 0 : m_pImpl->m_pNextFrmNames->push_back(sNextFrmName);
2665 : 0 : }
2666 : : }
2667 [ - + ][ # # ]: 4 : if (m_pImpl->m_pPrevFrmNames.get() && !m_pImpl->m_pPrevFrmNames->empty())
[ - + ]
2668 : : {
2669 [ # # ][ # # ]: 0 : for(std::vector<rtl::OUString>::iterator i = m_pImpl->m_pPrevFrmNames->begin(), j = m_pImpl->m_pNextFrmNames->begin(); i != m_pImpl->m_pPrevFrmNames->end() && j != m_pImpl->m_pNextFrmNames->end(); ++i, ++j)
[ # # ][ # # ]
[ # # ][ # # ]
[ # # ]
[ # # # # ]
2670 : : {
2671 [ # # ]: 0 : if((*j).equals(rFrmName))
2672 : : {
2673 : : // The previuous frame must exist, because it existing than
2674 : : // inserting the entry
2675 [ # # ][ # # ]: 0 : rFrmPropSet->setPropertyValue(s_ChainPrevName, makeAny(*i));
[ # # ]
2676 : :
2677 [ # # ]: 0 : i = m_pImpl->m_pPrevFrmNames->erase(i);
2678 [ # # ]: 0 : j = m_pImpl->m_pNextFrmNames->erase(j);
2679 : :
2680 : : // There cannot be more than one previous frames
2681 : 0 : break;
2682 : : }
2683 : : }
2684 : : }
2685 : : }
2686 : :
2687 : 3 : sal_Bool XMLTextImportHelper::IsInFrame() const
2688 : : {
2689 [ + - ][ + - ]: 3 : static ::rtl::OUString s_TextFrame( "TextFrame");
2690 : :
2691 : 3 : sal_Bool bIsInFrame = sal_False;
2692 : :
2693 : : // are we currently in a text frame? yes, if the cursor has a
2694 : : // TextFrame property and it's non-NULL
2695 [ + - ][ + - ]: 3 : Reference<XPropertySet> xPropSet(((XMLTextImportHelper *)this)->GetCursor(), UNO_QUERY);
2696 [ + - ]: 3 : if (xPropSet.is())
2697 : : {
2698 [ + - ][ + - ]: 3 : if (xPropSet->getPropertySetInfo()->hasPropertyByName(s_TextFrame))
[ + - ][ + - ]
[ + - ]
2699 : : {
2700 : : uno::Reference<XTextFrame> const xFrame(
2701 [ + - ][ + - ]: 3 : xPropSet->getPropertyValue(s_TextFrame), UNO_QUERY);
[ + - ]
2702 : :
2703 [ - + ]: 3 : if (xFrame.is())
2704 : : {
2705 : 0 : bIsInFrame = sal_True;
2706 : 3 : }
2707 : : }
2708 : : }
2709 : :
2710 : 3 : return bIsInFrame;
2711 : : }
2712 : :
2713 : 0 : sal_Bool XMLTextImportHelper::IsInHeaderFooter() const
2714 : : {
2715 : 0 : return sal_False;
2716 : : }
2717 : :
2718 : 0 : Reference< XPropertySet> XMLTextImportHelper::createAndInsertOLEObject(
2719 : : SvXMLImport&,
2720 : : const OUString& /*rHRef*/,
2721 : : const OUString& /*rStyleName*/,
2722 : : const OUString& /*rTblName*/,
2723 : : sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ )
2724 : : {
2725 : 0 : Reference< XPropertySet> xPropSet;
2726 : 0 : return xPropSet;
2727 : : }
2728 : :
2729 : 0 : Reference< XPropertySet> XMLTextImportHelper::createAndInsertOOoLink(
2730 : : SvXMLImport&,
2731 : : const OUString& /*rHRef*/,
2732 : : const OUString& /*rStyleName*/,
2733 : : const OUString& /*rTblName*/,
2734 : : sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ )
2735 : : {
2736 : 0 : Reference< XPropertySet> xPropSet;
2737 : 0 : return xPropSet;
2738 : : }
2739 : :
2740 : 0 : Reference< XPropertySet> XMLTextImportHelper::createAndInsertApplet(
2741 : : const OUString& /*rCode*/,
2742 : : const OUString& /*rName*/,
2743 : : sal_Bool /*bMayScript*/,
2744 : : const OUString& /*rHRef*/,
2745 : : sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ )
2746 : : {
2747 : 0 : Reference< XPropertySet> xPropSet;
2748 : 0 : return xPropSet;
2749 : : }
2750 : 0 : Reference< XPropertySet> XMLTextImportHelper::createAndInsertPlugin(
2751 : : const OUString& /*rMimeType*/,
2752 : : const OUString& /*rHRef*/,
2753 : : sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ )
2754 : : {
2755 : 0 : Reference< XPropertySet> xPropSet;
2756 : 0 : return xPropSet;
2757 : : }
2758 : 0 : Reference< XPropertySet> XMLTextImportHelper::createAndInsertFloatingFrame(
2759 : : const OUString& /*rName*/,
2760 : : const OUString& /*rHRef*/,
2761 : : const OUString& /*rStyleName*/,
2762 : : sal_Int32 /*nWidth*/, sal_Int32 /*nHeight*/ )
2763 : : {
2764 : 0 : Reference< XPropertySet> xPropSet;
2765 : 0 : return xPropSet;
2766 : : }
2767 : :
2768 : 0 : void XMLTextImportHelper::endAppletOrPlugin(
2769 : : const Reference < XPropertySet> &,
2770 : : std::map < const rtl::OUString, rtl::OUString, UStringLess > &)
2771 : : {
2772 : 0 : }
2773 : : // redline helper: dummy implementation to be overridden in sw/filter/xml
2774 : 0 : void XMLTextImportHelper::RedlineAdd(
2775 : : const OUString& /*rType*/,
2776 : : const OUString& /*rId*/,
2777 : : const OUString& /*rAuthor*/,
2778 : : const OUString& /*rComment*/,
2779 : : const DateTime& /*rDateTime*/,
2780 : : sal_Bool /*bMergeLastPara*/)
2781 : : {
2782 : : // dummy implementation: do nothing
2783 : 0 : }
2784 : :
2785 : 0 : Reference<XTextCursor> XMLTextImportHelper::RedlineCreateText(
2786 : : Reference<XTextCursor> & /*rOldCursor*/,
2787 : : const OUString& /*rId*/)
2788 : : {
2789 : : // dummy implementation: do nothing
2790 : 0 : Reference<XTextCursor> xRet;
2791 : 0 : return xRet;
2792 : : }
2793 : :
2794 : 0 : void XMLTextImportHelper::RedlineSetCursor(
2795 : : const OUString& /*rId*/,
2796 : : sal_Bool /*bStart*/,
2797 : : sal_Bool /*bIsOutsideOfParagraph*/)
2798 : : {
2799 : : // dummy implementation: do nothing
2800 : 0 : }
2801 : :
2802 : 0 : void XMLTextImportHelper::RedlineAdjustStartNodeCursor(sal_Bool)
2803 : : {
2804 : : // dummy implementation: do nothing
2805 : 0 : }
2806 : :
2807 : 0 : void XMLTextImportHelper::SetShowChanges( sal_Bool )
2808 : : {
2809 : : // dummy implementation: do nothing
2810 : 0 : }
2811 : :
2812 : 0 : void XMLTextImportHelper::SetRecordChanges( sal_Bool )
2813 : : {
2814 : : // dummy implementation: do nothing
2815 : 0 : }
2816 : 0 : void XMLTextImportHelper::SetChangesProtectionKey(const Sequence<sal_Int8> &)
2817 : : {
2818 : : // dummy implementation: do nothing
2819 : 0 : }
2820 : :
2821 : :
2822 : 394 : OUString XMLTextImportHelper::GetOpenRedlineId()
2823 : : {
2824 : 394 : return m_pImpl->m_sOpenRedlineIdentifier;
2825 : : }
2826 : :
2827 : 0 : void XMLTextImportHelper::SetOpenRedlineId( ::rtl::OUString& rId)
2828 : : {
2829 : 0 : m_pImpl->m_sOpenRedlineIdentifier = rId;
2830 : 0 : }
2831 : :
2832 : 0 : void XMLTextImportHelper::ResetOpenRedlineId()
2833 : : {
2834 : 0 : OUString sEmpty;
2835 [ # # ]: 0 : SetOpenRedlineId(sEmpty);
2836 : 0 : }
2837 : :
2838 : : void
2839 : 396 : XMLTextImportHelper::SetCellParaStyleDefault(::rtl::OUString const& rNewValue)
2840 : : {
2841 : 396 : m_pImpl->m_sCellParaStyleDefault = rNewValue;
2842 : 396 : }
2843 : :
2844 : 2025 : ::rtl::OUString const& XMLTextImportHelper::GetCellParaStyleDefault()
2845 : : {
2846 : 2025 : return m_pImpl->m_sCellParaStyleDefault;
2847 : : }
2848 : :
2849 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|