Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #ifndef SC_XMLIMPRT_HXX
21 : #define SC_XMLIMPRT_HXX
22 :
23 : #include <rsc/rscsfx.hxx>
24 : #include <xmloff/xmlictxt.hxx>
25 : #include <xmloff/xmlimp.hxx>
26 : #include <xmloff/xmltkmap.hxx>
27 : #include <xmloff/xmlaustp.hxx>
28 : #include <xmloff/xmlstyle.hxx>
29 : #include <com/sun/star/frame/XModel.hpp>
30 : #include <com/sun/star/util/DateTime.hpp>
31 : #include "xmlsubti.hxx"
32 : #include "global.hxx"
33 : #include "formula/grammar.hxx"
34 : #include "compiler.hxx"
35 :
36 : #include "xmlstyle.hxx"
37 : #include "XMLDetectiveContext.hxx"
38 : #include <com/sun/star/sheet/ValidationAlertStyle.hpp>
39 : #include <com/sun/star/sheet/ValidationType.hpp>
40 : #include <com/sun/star/sheet/ConditionOperator.hpp>
41 : #include <com/sun/star/table/CellAddress.hpp>
42 : #include <com/sun/star/beans/XPropertySet.hpp>
43 : #include <com/sun/star/util/XNumberFormatTypes.hpp>
44 : #include <com/sun/star/sheet/XSheetCellRangeContainer.hpp>
45 :
46 : #include <vector>
47 : #include <boost/unordered_map.hpp>
48 : #include <boost/ptr_container/ptr_list.hpp>
49 : #include <boost/ptr_container/ptr_map.hpp>
50 : #include <boost/noncopyable.hpp>
51 : #include <boost/scoped_ptr.hpp>
52 :
53 : class ScMyStyleNumberFormats;
54 : class XMLNumberFormatAttributesExportHelper;
55 : class ScEditEngineDefaulter;
56 : class ScDocumentImport;
57 :
58 : namespace sc {
59 :
60 : struct ImportPostProcessData;
61 : struct PivotTableSources;
62 :
63 : }
64 :
65 : enum ScXMLDocTokens
66 : {
67 : XML_TOK_DOC_FONTDECLS,
68 : XML_TOK_DOC_STYLES,
69 : XML_TOK_DOC_AUTOSTYLES,
70 : XML_TOK_DOC_MASTERSTYLES,
71 : XML_TOK_DOC_META,
72 : XML_TOK_DOC_SCRIPTS,
73 : XML_TOK_DOC_BODY,
74 : XML_TOK_DOC_SETTINGS,
75 : XML_TOK_OFFICE_END=XML_TOK_UNKNOWN
76 : };
77 :
78 : enum ScXMLStylesTokens
79 : {
80 : XML_TOK_STYLES_STYLE
81 : };
82 :
83 : enum ScXMLStylesAttrTokens
84 : {
85 : XML_TOK_STYLES_STYLE_NAME,
86 : XML_TOK_STYLES_STYLE_FAMILY,
87 : XML_TOK_STYLES_STYLE_PARENT_STYLE_NAME
88 : };
89 :
90 : enum ScXMLStyleTokens
91 : {
92 : XML_TOK_STYLE_PROPERTIES
93 : };
94 :
95 : enum ScXMLBodyTokens
96 : {
97 : XML_TOK_BODY_TRACKED_CHANGES,
98 : XML_TOK_BODY_CALCULATION_SETTINGS,
99 : XML_TOK_BODY_CONTENT_VALIDATIONS,
100 : XML_TOK_BODY_LABEL_RANGES,
101 : XML_TOK_BODY_TABLE,
102 : XML_TOK_BODY_NAMED_EXPRESSIONS,
103 : XML_TOK_BODY_DATABASE_RANGES,
104 : XML_TOK_BODY_DATABASE_RANGE,
105 : XML_TOK_BODY_DATA_PILOT_TABLES,
106 : XML_TOK_BODY_CONSOLIDATION,
107 : XML_TOK_BODY_DDE_LINKS,
108 : XML_TOK_BODY_DATA_STREAM_SOURCE
109 : };
110 :
111 : enum ScXMLContentValidationsElemTokens
112 : {
113 : XML_TOK_CONTENT_VALIDATION
114 : };
115 :
116 : enum ScXMLContentValidationElemTokens
117 : {
118 : XML_TOK_CONTENT_VALIDATION_ELEM_HELP_MESSAGE,
119 : XML_TOK_CONTENT_VALIDATION_ELEM_ERROR_MESSAGE,
120 : XML_TOK_CONTENT_VALIDATION_ELEM_ERROR_MACRO,
121 : XML_TOK_CONTENT_VALIDATION_ELEM_EVENT_LISTENERS
122 : };
123 :
124 : enum ScXMLContentValidationAttrTokens
125 : {
126 : XML_TOK_CONTENT_VALIDATION_NAME,
127 : XML_TOK_CONTENT_VALIDATION_CONDITION,
128 : XML_TOK_CONTENT_VALIDATION_BASE_CELL_ADDRESS,
129 : XML_TOK_CONTENT_VALIDATION_ALLOW_EMPTY_CELL,
130 : XML_TOK_CONTENT_VALIDATION_DISPLAY_LIST
131 : };
132 :
133 : enum ScXMLContentValidationMessageElemTokens
134 : {
135 : XML_TOK_P
136 : };
137 :
138 : enum ScXMLContentValidationHelpMessageAttrTokens
139 : {
140 : XML_TOK_HELP_MESSAGE_ATTR_TITLE,
141 : XML_TOK_HELP_MESSAGE_ATTR_DISPLAY
142 : };
143 :
144 : enum ScXMLContentValidationErrorMessageAttrTokens
145 : {
146 : XML_TOK_ERROR_MESSAGE_ATTR_TITLE,
147 : XML_TOK_ERROR_MESSAGE_ATTR_DISPLAY,
148 : XML_TOK_ERROR_MESSAGE_ATTR_MESSAGE_TYPE
149 : };
150 :
151 : enum ScXMLContentValidationErrorMacroAttrTokens
152 : {
153 : XML_TOK_ERROR_MACRO_ATTR_NAME,
154 : XML_TOK_ERROR_MACRO_ATTR_EXECUTE
155 : };
156 :
157 : enum ScXMLCondFormatsTokens
158 : {
159 : XML_TOK_CONDFORMATS_CONDFORMAT
160 : };
161 :
162 : enum ScXMLCondFormatTokens
163 : {
164 : XML_TOK_CONDFORMAT_COLORSCALE,
165 : XML_TOK_CONDFORMAT_DATABAR,
166 : XML_TOK_CONDFORMAT_CONDITION,
167 : XML_TOK_CONDFORMAT_ICONSET,
168 : XML_TOK_CONDFORMAT_DATE
169 : };
170 :
171 : enum ScXMLCondFormatAttrTokens
172 : {
173 : XML_TOK_CONDFORMAT_TARGET_RANGE
174 : };
175 :
176 : enum ScXMLCondDateAttrTokens
177 : {
178 : XML_TOK_COND_DATE_VALUE,
179 : XML_TOK_COND_DATE_STYLE
180 : };
181 :
182 : enum ScXMLConditionAttrTokens
183 : {
184 : XML_TOK_CONDITION_VALUE,
185 : XML_TOK_CONDITION_APPLY_STYLE_NAME,
186 : XML_TOK_CONDITION_BASE_CELL_ADDRESS
187 : };
188 :
189 : enum ScXMLColorScaleFormatTokens
190 : {
191 : XML_TOK_COLORSCALE_COLORSCALEENTRY
192 : };
193 :
194 : enum ScXMLColorScaleEntryAttrTokens
195 : {
196 : XML_TOK_COLORSCALEENTRY_TYPE,
197 : XML_TOK_COLORSCALEENTRY_VALUE,
198 : XML_TOK_COLORSCALEENTRY_COLOR
199 : };
200 :
201 : enum ScXMLFormattingFormatTokens
202 : {
203 : XML_TOK_DATABAR_DATABARENTRY,
204 : XML_TOK_FORMATTING_ENTRY
205 : };
206 :
207 : enum ScXMLDataBarAttrTokens
208 : {
209 : XML_TOK_DATABAR_POSITIVE_COLOR,
210 : XML_TOK_DATABAR_NEGATIVE_COLOR,
211 : XML_TOK_DATABAR_GRADIENT,
212 : XML_TOK_DATABAR_AXISPOSITION,
213 : XML_TOK_DATABAR_SHOWVALUE,
214 : XML_TOK_DATABAR_AXISCOLOR
215 : };
216 :
217 : enum ScXMLDataBarEntryAttrTokens
218 : {
219 : XML_TOK_DATABARENTRY_TYPE,
220 : XML_TOK_DATABARENTRY_VALUE
221 : };
222 :
223 : enum ScXMLIconSetAttrTokens
224 : {
225 : XML_TOK_ICONSET_TYPE,
226 : XML_TOK_ICONSET_SHOWVALUE
227 : };
228 :
229 : enum ScXMLLabelRangesElemTokens
230 : {
231 : XML_TOK_LABEL_RANGE_ELEM
232 : };
233 :
234 : enum ScXMLLabelRangeAttrTokens
235 : {
236 : XML_TOK_LABEL_RANGE_ATTR_LABEL_RANGE,
237 : XML_TOK_LABEL_RANGE_ATTR_DATA_RANGE,
238 : XML_TOK_LABEL_RANGE_ATTR_ORIENTATION
239 : };
240 :
241 : enum ScXMLTableTokens
242 : {
243 : XML_TOK_TABLE_NAMED_EXPRESSIONS,
244 : XML_TOK_TABLE_COL_GROUP,
245 : XML_TOK_TABLE_HEADER_COLS,
246 : XML_TOK_TABLE_COLS,
247 : XML_TOK_TABLE_COL,
248 : XML_TOK_TABLE_ROW_GROUP,
249 : XML_TOK_TABLE_HEADER_ROWS,
250 : XML_TOK_TABLE_PROTECTION,
251 : XML_TOK_TABLE_PROTECTION_EXT,
252 : XML_TOK_TABLE_ROWS,
253 : XML_TOK_TABLE_ROW,
254 : XML_TOK_TABLE_SOURCE,
255 : XML_TOK_TABLE_SCENARIO,
256 : XML_TOK_TABLE_SHAPES,
257 : XML_TOK_TABLE_FORMS,
258 : XML_TOK_TABLE_EVENT_LISTENERS,
259 : XML_TOK_TABLE_EVENT_LISTENERS_EXT,
260 : XML_TOK_TABLE_CONDFORMATS
261 : };
262 :
263 : enum ScXMLTokenProtectionTokens
264 : {
265 : XML_TOK_TABLE_SELECT_PROTECTED_CELLS,
266 : XML_TOK_TABLE_SELECT_UNPROTECTED_CELLS,
267 : XML_TOK_TABLE_SELECT_PROTECTED_CELLS_EXT,
268 : XML_TOK_TABLE_SELECT_UNPROTECTED_CELLS_EXT
269 : };
270 :
271 : enum ScXMLTableRowsTokens
272 : {
273 : XML_TOK_TABLE_ROWS_ROW_GROUP,
274 : XML_TOK_TABLE_ROWS_HEADER_ROWS,
275 : XML_TOK_TABLE_ROWS_ROWS,
276 : XML_TOK_TABLE_ROWS_ROW
277 : };
278 :
279 : enum ScXMLTableColsTokens
280 : {
281 : XML_TOK_TABLE_COLS_COL_GROUP,
282 : XML_TOK_TABLE_COLS_HEADER_COLS,
283 : XML_TOK_TABLE_COLS_COLS,
284 : XML_TOK_TABLE_COLS_COL
285 : };
286 :
287 : enum ScXMLTableAttrTokens
288 : {
289 : XML_TOK_TABLE_NAME,
290 : XML_TOK_TABLE_STYLE_NAME,
291 : XML_TOK_TABLE_PROTECTED,
292 : XML_TOK_TABLE_PRINT_RANGES,
293 : XML_TOK_TABLE_PASSWORD,
294 : XML_TOK_TABLE_PASSHASH,
295 : XML_TOK_TABLE_PASSHASH_2,
296 : XML_TOK_TABLE_PRINT
297 : };
298 :
299 : enum ScXMLTableScenarioAttrTokens
300 : {
301 : XML_TOK_TABLE_SCENARIO_ATTR_DISPLAY_BORDER,
302 : XML_TOK_TABLE_SCENARIO_ATTR_BORDER_COLOR,
303 : XML_TOK_TABLE_SCENARIO_ATTR_COPY_BACK,
304 : XML_TOK_TABLE_SCENARIO_ATTR_COPY_STYLES,
305 : XML_TOK_TABLE_SCENARIO_ATTR_COPY_FORMULAS,
306 : XML_TOK_TABLE_SCENARIO_ATTR_IS_ACTIVE,
307 : XML_TOK_TABLE_SCENARIO_ATTR_SCENARIO_RANGES,
308 : XML_TOK_TABLE_SCENARIO_ATTR_COMMENT,
309 : XML_TOK_TABLE_SCENARIO_ATTR_PROTECTED
310 : };
311 :
312 : enum ScXMLTableColAttrTokens
313 : {
314 : XML_TOK_TABLE_COL_ATTR_STYLE_NAME,
315 : XML_TOK_TABLE_COL_ATTR_REPEATED,
316 : XML_TOK_TABLE_COL_ATTR_VISIBILITY,
317 : XML_TOK_TABLE_COL_ATTR_DEFAULT_CELL_STYLE_NAME
318 : };
319 :
320 : enum ScXMLTableRowTokens
321 : {
322 : XML_TOK_TABLE_ROW_CELL,
323 : XML_TOK_TABLE_ROW_COVERED_CELL
324 : };
325 :
326 : enum ScXMLTableRowAttrTokens
327 : {
328 : XML_TOK_TABLE_ROW_ATTR_STYLE_NAME,
329 : XML_TOK_TABLE_ROW_ATTR_VISIBILITY,
330 : XML_TOK_TABLE_ROW_ATTR_REPEATED,
331 : XML_TOK_TABLE_ROW_ATTR_DEFAULT_CELL_STYLE_NAME
332 : // XML_TOK_TABLE_ROW_ATTR_USE_OPTIMAL_HEIGHT
333 : };
334 :
335 : enum ScXMLTableRowCellTokens
336 : {
337 : XML_TOK_TABLE_ROW_CELL_P,
338 : XML_TOK_TABLE_ROW_CELL_TABLE,
339 : XML_TOK_TABLE_ROW_CELL_ANNOTATION,
340 : XML_TOK_TABLE_ROW_CELL_DETECTIVE,
341 : XML_TOK_TABLE_ROW_CELL_CELL_RANGE_SOURCE
342 : };
343 :
344 : enum ScXMLTableRowCellAttrTokens
345 : {
346 : XML_TOK_TABLE_ROW_CELL_ATTR_STYLE_NAME,
347 : XML_TOK_TABLE_ROW_CELL_ATTR_CONTENT_VALIDATION_NAME,
348 : XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_ROWS,
349 : XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_COLS,
350 : XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_MATRIX_COLS,
351 : XML_TOK_TABLE_ROW_CELL_ATTR_SPANNED_MATRIX_ROWS,
352 : XML_TOK_TABLE_ROW_CELL_ATTR_REPEATED,
353 : XML_TOK_TABLE_ROW_CELL_ATTR_VALUE_TYPE,
354 : XML_TOK_TABLE_ROW_CELL_ATTR_NEW_VALUE_TYPE,
355 : XML_TOK_TABLE_ROW_CELL_ATTR_VALUE,
356 : XML_TOK_TABLE_ROW_CELL_ATTR_DATE_VALUE,
357 : XML_TOK_TABLE_ROW_CELL_ATTR_TIME_VALUE,
358 : XML_TOK_TABLE_ROW_CELL_ATTR_STRING_VALUE,
359 : XML_TOK_TABLE_ROW_CELL_ATTR_BOOLEAN_VALUE,
360 : XML_TOK_TABLE_ROW_CELL_ATTR_FORMULA,
361 : XML_TOK_TABLE_ROW_CELL_ATTR_CURRENCY
362 : };
363 :
364 : enum ScXMLAnnotationAttrTokens
365 : {
366 : XML_TOK_TABLE_ANNOTATION_ATTR_AUTHOR,
367 : XML_TOK_TABLE_ANNOTATION_ATTR_CREATE_DATE,
368 : XML_TOK_TABLE_ANNOTATION_ATTR_CREATE_DATE_STRING,
369 : XML_TOK_TABLE_ANNOTATION_ATTR_DISPLAY,
370 : XML_TOK_TABLE_ANNOTATION_ATTR_X,
371 : XML_TOK_TABLE_ANNOTATION_ATTR_Y
372 : };
373 :
374 : enum ScXMLDetectiveElemTokens
375 : {
376 : XML_TOK_DETECTIVE_ELEM_HIGHLIGHTED,
377 : XML_TOK_DETECTIVE_ELEM_OPERATION
378 : };
379 :
380 : enum ScXMLDetectiveHighlightedAttrTokens
381 : {
382 : XML_TOK_DETECTIVE_HIGHLIGHTED_ATTR_CELL_RANGE,
383 : XML_TOK_DETECTIVE_HIGHLIGHTED_ATTR_DIRECTION,
384 : XML_TOK_DETECTIVE_HIGHLIGHTED_ATTR_CONTAINS_ERROR,
385 : XML_TOK_DETECTIVE_HIGHLIGHTED_ATTR_MARKED_INVALID
386 : };
387 :
388 : enum ScXMLDetectiveOperationAttrTokens
389 : {
390 : XML_TOK_DETECTIVE_OPERATION_ATTR_NAME,
391 : XML_TOK_DETECTIVE_OPERATION_ATTR_INDEX
392 : };
393 :
394 : enum ScXMLCellRangeSourceAttrTokens
395 : {
396 : XML_TOK_TABLE_CELL_RANGE_SOURCE_ATTR_NAME,
397 : XML_TOK_TABLE_CELL_RANGE_SOURCE_ATTR_HREF,
398 : XML_TOK_TABLE_CELL_RANGE_SOURCE_ATTR_FILTER_NAME,
399 : XML_TOK_TABLE_CELL_RANGE_SOURCE_ATTR_FILTER_OPTIONS,
400 : XML_TOK_TABLE_CELL_RANGE_SOURCE_ATTR_LAST_COLUMN,
401 : XML_TOK_TABLE_CELL_RANGE_SOURCE_ATTR_LAST_ROW,
402 : XML_TOK_TABLE_CELL_RANGE_SOURCE_ATTR_REFRESH_DELAY
403 : };
404 :
405 : enum ScXMLNamedExpressionsTokens
406 : {
407 : XML_TOK_NAMED_EXPRESSIONS_NAMED_RANGE,
408 : XML_TOK_NAMED_EXPRESSIONS_NAMED_EXPRESSION
409 : };
410 :
411 : enum ScXMLNamedRangeAttrTokens
412 : {
413 : XML_TOK_NAMED_RANGE_ATTR_NAME,
414 : XML_TOK_NAMED_RANGE_ATTR_CELL_RANGE_ADDRESS,
415 : XML_TOK_NAMED_RANGE_ATTR_BASE_CELL_ADDRESS,
416 : XML_TOK_NAMED_RANGE_ATTR_RANGE_USABLE_AS
417 : };
418 :
419 : enum ScXMLNamedExpressionAttrTokens
420 : {
421 : XML_TOK_NAMED_EXPRESSION_ATTR_NAME,
422 : XML_TOK_NAMED_EXPRESSION_ATTR_BASE_CELL_ADDRESS,
423 : XML_TOK_NAMED_EXPRESSION_ATTR_EXPRESSION
424 : };
425 :
426 : enum ScXMLDatabaseRangesTokens
427 : {
428 : XML_TOK_DATABASE_RANGE
429 : };
430 :
431 : enum ScXMLDatabaseRangeTokens
432 : {
433 : XML_TOK_DATABASE_RANGE_SOURCE_SQL,
434 : XML_TOK_DATABASE_RANGE_SOURCE_TABLE,
435 : XML_TOK_DATABASE_RANGE_SOURCE_QUERY,
436 : XML_TOK_FILTER,
437 : XML_TOK_SORT,
438 : XML_TOK_DATABASE_RANGE_SUBTOTAL_RULES
439 : };
440 :
441 : enum ScXMLDatabaseRangeAttrTokens
442 : {
443 : XML_TOK_DATABASE_RANGE_ATTR_NAME,
444 : XML_TOK_DATABASE_RANGE_ATTR_IS_SELECTION,
445 : XML_TOK_DATABASE_RANGE_ATTR_ON_UPDATE_KEEP_STYLES,
446 : XML_TOK_DATABASE_RANGE_ATTR_ON_UPDATE_KEEP_SIZE,
447 : XML_TOK_DATABASE_RANGE_ATTR_HAS_PERSISTENT_DATA,
448 : XML_TOK_DATABASE_RANGE_ATTR_ORIENTATION,
449 : XML_TOK_DATABASE_RANGE_ATTR_CONTAINS_HEADER,
450 : XML_TOK_DATABASE_RANGE_ATTR_DISPLAY_FILTER_BUTTONS,
451 : XML_TOK_DATABASE_RANGE_ATTR_TARGET_RANGE_ADDRESS,
452 : XML_TOK_DATABASE_RANGE_ATTR_REFRESH_DELAY
453 : };
454 :
455 : enum ScXMLDatabaseRangeSourceSQLAttrTokens
456 : {
457 : XML_TOK_SOURCE_SQL_ATTR_DATABASE_NAME,
458 : XML_TOK_SOURCE_SQL_ATTR_HREF,
459 : XML_TOK_SOURCE_SQL_ATTR_CONNECTION_RESOURCE,
460 : XML_TOK_SOURCE_SQL_ATTR_SQL_STATEMENT,
461 : XML_TOK_SOURCE_SQL_ATTR_PARSE_SQL_STATEMENT
462 : };
463 :
464 : enum ScXMLDatabaseRangeSourceTableAttrTokens
465 : {
466 : XML_TOK_SOURCE_TABLE_ATTR_DATABASE_NAME,
467 : XML_TOK_SOURCE_TABLE_ATTR_HREF,
468 : XML_TOK_SOURCE_TABLE_ATTR_CONNECTION_RESOURCE,
469 : XML_TOK_SOURCE_TABLE_ATTR_TABLE_NAME
470 : };
471 :
472 : enum ScXMLDatabaseRangeSourceQueryAttrTokens
473 : {
474 : XML_TOK_SOURCE_QUERY_ATTR_DATABASE_NAME,
475 : XML_TOK_SOURCE_QUERY_ATTR_HREF,
476 : XML_TOK_SOURCE_QUERY_ATTR_CONNECTION_RESOURCE,
477 : XML_TOK_SOURCE_QUERY_ATTR_QUERY_NAME
478 : };
479 :
480 : enum ScXMLFilterTokens
481 : {
482 : XML_TOK_FILTER_AND,
483 : XML_TOK_FILTER_OR,
484 : XML_TOK_FILTER_CONDITION
485 : };
486 :
487 : enum ScXMLFilterAttrTokens
488 : {
489 : XML_TOK_FILTER_ATTR_TARGET_RANGE_ADDRESS,
490 : XML_TOK_FILTER_ATTR_CONDITION_SOURCE_RANGE_ADDRESS,
491 : XML_TOK_FILTER_ATTR_CONDITION_SOURCE,
492 : XML_TOK_FILTER_ATTR_DISPLAY_DUPLICATES
493 : };
494 :
495 : enum ScXMLFilterConditionElemTokens
496 : {
497 : XML_TOK_CONDITION_FILTER_SET_ITEM
498 : };
499 :
500 : enum ScXMLFilterConditionAttrTokens
501 : {
502 : XML_TOK_CONDITION_ATTR_FIELD_NUMBER,
503 : XML_TOK_CONDITION_ATTR_CASE_SENSITIVE,
504 : XML_TOK_CONDITION_ATTR_DATA_TYPE,
505 : XML_TOK_CONDITION_ATTR_VALUE,
506 : XML_TOK_CONDITION_ATTR_OPERATOR
507 : };
508 :
509 : enum ScXMLFilterSetItemAttrTokens
510 : {
511 : XML_TOK_FILTER_SET_ITEM_ATTR_VALUE
512 : };
513 :
514 : enum ScXMLSortTokens
515 : {
516 : XML_TOK_SORT_SORT_BY
517 : };
518 :
519 : enum ScXMLSortAttrTokens
520 : {
521 : XML_TOK_SORT_ATTR_BIND_STYLES_TO_CONTENT,
522 : XML_TOK_SORT_ATTR_TARGET_RANGE_ADDRESS,
523 : XML_TOK_SORT_ATTR_CASE_SENSITIVE,
524 : XML_TOK_SORT_ATTR_RFC_LANGUAGE_TAG,
525 : XML_TOK_SORT_ATTR_LANGUAGE,
526 : XML_TOK_SORT_ATTR_SCRIPT,
527 : XML_TOK_SORT_ATTR_COUNTRY,
528 : XML_TOK_SORT_ATTR_ALGORITHM
529 : };
530 :
531 : enum ScXMLSortSortByAttrTokens
532 : {
533 : XML_TOK_SORT_BY_ATTR_FIELD_NUMBER,
534 : XML_TOK_SORT_BY_ATTR_DATA_TYPE,
535 : XML_TOK_SORT_BY_ATTR_ORDER
536 : };
537 :
538 : enum ScXMLDatabaseRangeSubTotalRulesTokens
539 : {
540 : XML_TOK_SUBTOTAL_RULES_SORT_GROUPS,
541 : XML_TOK_SUBTOTAL_RULES_SUBTOTAL_RULE
542 : };
543 :
544 : enum ScXMLDatabaseRangeSubTotalRulesAttrTokens
545 : {
546 : XML_TOK_SUBTOTAL_RULES_ATTR_BIND_STYLES_TO_CONTENT,
547 : XML_TOK_SUBTOTAL_RULES_ATTR_CASE_SENSITIVE,
548 : XML_TOK_SUBTOTAL_RULES_ATTR_PAGE_BREAKS_ON_GROUP_CHANGE
549 : };
550 :
551 : enum ScXMLSubTotalRulesSortGroupsAttrTokens
552 : {
553 : XML_TOK_SORT_GROUPS_ATTR_DATA_TYPE,
554 : XML_TOK_SORT_GROUPS_ATTR_ORDER
555 : };
556 :
557 : enum ScXMLSubTotalRulesSubTotalRuleTokens
558 : {
559 : XML_TOK_SUBTOTAL_RULE_SUBTOTAL_FIELD
560 : };
561 :
562 : enum ScXMLSubTotalRulesSubTotalRuleAttrTokens
563 : {
564 : XML_TOK_SUBTOTAL_RULE_ATTR_GROUP_BY_FIELD_NUMBER
565 : };
566 :
567 : enum ScXMLSubTotalRuleSubTotalField
568 : {
569 : XML_TOK_SUBTOTAL_FIELD_ATTR_FIELD_NUMBER,
570 : XML_TOK_SUBTOTAL_FIELD_ATTR_FUNCTION
571 : };
572 :
573 : enum ScXMLDataPilotTablesElemTokens
574 : {
575 : XML_TOK_DATA_PILOT_TABLE
576 : };
577 :
578 : enum ScXMLDataPilotTableAttrTokens
579 : {
580 : XML_TOK_DATA_PILOT_TABLE_ATTR_NAME,
581 : XML_TOK_DATA_PILOT_TABLE_ATTR_APPLICATION_DATA,
582 : XML_TOK_DATA_PILOT_TABLE_ATTR_GRAND_TOTAL,
583 : XML_TOK_DATA_PILOT_TABLE_ATTR_IGNORE_EMPTY_ROWS,
584 : XML_TOK_DATA_PILOT_TABLE_ATTR_IDENTIFY_CATEGORIES,
585 : XML_TOK_DATA_PILOT_TABLE_ATTR_TARGET_RANGE_ADDRESS,
586 : XML_TOK_DATA_PILOT_TABLE_ATTR_BUTTONS,
587 : XML_TOK_DATA_PILOT_TABLE_ATTR_SHOW_FILTER_BUTTON,
588 : XML_TOK_DATA_PILOT_TABLE_ATTR_DRILL_DOWN,
589 : XML_TOK_DATA_PILOT_TABLE_ATTR_HEADER_GRID_LAYOUT
590 : };
591 :
592 : enum ScXMLDataPilotTableElemTokens
593 : {
594 : XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SQL,
595 : XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_TABLE,
596 : XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL,
597 : XML_TOK_DATA_PILOT_TABLE_ELEM_GRAND_TOTAL_EXT,
598 : XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_QUERY,
599 : XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_SERVICE,
600 : XML_TOK_DATA_PILOT_TABLE_ELEM_SOURCE_CELL_RANGE,
601 : XML_TOK_DATA_PILOT_TABLE_ELEM_DATA_PILOT_FIELD
602 : };
603 :
604 : enum ScXMLDataPilotTableSourceServiceAttrTokens
605 : {
606 : XML_TOK_SOURCE_SERVICE_ATTR_NAME,
607 : XML_TOK_SOURCE_SERVICE_ATTR_SOURCE_NAME,
608 : XML_TOK_SOURCE_SERVICE_ATTR_OBJECT_NAME,
609 : XML_TOK_SOURCE_SERVICE_ATTR_USER_NAME,
610 : XML_TOK_SOURCE_SERVICE_ATTR_PASSWORD
611 : };
612 :
613 : enum ScXMLDataPilotGrandTotalAttrTokens
614 : {
615 : XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_DISPLAY,
616 : XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_ORIENTATION,
617 : XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_DISPLAY_NAME,
618 : XML_TOK_DATA_PILOT_GRAND_TOTAL_ATTR_DISPLAY_NAME_EXT
619 : };
620 :
621 : enum ScXMLDataPilotTableSourceCellRangeElemTokens
622 : {
623 : XML_TOK_SOURCE_CELL_RANGE_ELEM_FILTER
624 : };
625 :
626 : enum ScXMLDataPilotTableSourceCellRangeAttrTokens
627 : {
628 : XML_TOK_SOURCE_CELL_RANGE_ATTR_CELL_RANGE_ADDRESS,
629 : XML_TOK_SOURCE_CELL_RANGE_ATTR_NAME
630 : };
631 :
632 : enum ScXMLDataPilotFieldAttrTokens
633 : {
634 : XML_TOK_DATA_PILOT_FIELD_ATTR_SOURCE_FIELD_NAME,
635 : XML_TOK_DATA_PILOT_FIELD_ATTR_DISPLAY_NAME,
636 : XML_TOK_DATA_PILOT_FIELD_ATTR_DISPLAY_NAME_EXT,
637 : XML_TOK_DATA_PILOT_FIELD_ATTR_IS_DATA_LAYOUT_FIELD,
638 : XML_TOK_DATA_PILOT_FIELD_ATTR_FUNCTION,
639 : XML_TOK_DATA_PILOT_FIELD_ATTR_ORIENTATION,
640 : XML_TOK_DATA_PILOT_FIELD_ATTR_SELECTED_PAGE,
641 : XML_TOK_DATA_PILOT_FIELD_ATTR_USED_HIERARCHY
642 : };
643 :
644 : enum ScXMLDataPilotFieldElemTokens
645 : {
646 : XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_LEVEL,
647 : XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_REFERENCE,
648 : XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_GROUPS
649 : };
650 :
651 : enum ScXMLDataPilotLevelAttrTokens
652 : {
653 : XML_TOK_DATA_PILOT_LEVEL_ATTR_SHOW_EMPTY
654 : };
655 :
656 : enum ScXMLDataPilotLevelElemTokens
657 : {
658 : XML_TOK_DATA_PILOT_LEVEL_ELEM_DATA_PILOT_SUBTOTALS,
659 : XML_TOK_DATA_PILOT_LEVEL_ELEM_DATA_PILOT_MEMBERS,
660 : XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_DISPLAY_INFO,
661 : XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_SORT_INFO,
662 : XML_TOK_DATA_PILOT_FIELD_ELEM_DATA_PILOT_LAYOUT_INFO
663 : };
664 :
665 : enum ScXMLDataPilotSubTotalsElemTokens
666 : {
667 : XML_TOK_DATA_PILOT_SUBTOTALS_ELEM_DATA_PILOT_SUBTOTAL
668 : };
669 :
670 : enum ScXMLDataPilotSubTotalAttrTokens
671 : {
672 : XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_FUNCTION,
673 : XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_DISPLAY_NAME,
674 : XML_TOK_DATA_PILOT_SUBTOTAL_ATTR_DISPLAY_NAME_EXT
675 : };
676 :
677 : enum ScXMLDataPilotMembersElemTokens
678 : {
679 : XML_TOK_DATA_PILOT_MEMBERS_ELEM_DATA_PILOT_MEMBER
680 : };
681 :
682 : enum ScXMLDataPilotMemberAttrTokens
683 : {
684 : XML_TOK_DATA_PILOT_MEMBER_ATTR_NAME,
685 : XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY_NAME,
686 : XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY_NAME_EXT,
687 : XML_TOK_DATA_PILOT_MEMBER_ATTR_DISPLAY,
688 : XML_TOK_DATA_PILOT_MEMBER_ATTR_SHOW_DETAILS
689 : };
690 :
691 : enum ScXMLConsolidationAttrTokens
692 : {
693 : XML_TOK_CONSOLIDATION_ATTR_FUNCTION,
694 : XML_TOK_CONSOLIDATION_ATTR_SOURCE_RANGES,
695 : XML_TOK_CONSOLIDATION_ATTR_TARGET_ADDRESS,
696 : XML_TOK_CONSOLIDATION_ATTR_USE_LABEL,
697 : XML_TOK_CONSOLIDATION_ATTR_LINK_TO_SOURCE
698 : };
699 :
700 : /**
701 : * Tokens for elements that come under <text:p>
702 : */
703 : enum ScXMLCellTextParaElemTokens
704 : {
705 : XML_TOK_CELL_TEXT_S,
706 : XML_TOK_CELL_TEXT_SPAN,
707 : XML_TOK_CELL_TEXT_SHEET_NAME,
708 : XML_TOK_CELL_TEXT_DATE,
709 : XML_TOK_CELL_TEXT_TITLE,
710 : XML_TOK_CELL_TEXT_URL
711 : };
712 :
713 : /**
714 : * Tokens for elements that come under <text:span>
715 : */
716 : enum ScXMLCellTextSpanElemTokens
717 : {
718 : XML_TOK_CELL_TEXT_SPAN_ELEM_SHEET_NAME,
719 : XML_TOK_CELL_TEXT_SPAN_ELEM_DATE,
720 : XML_TOK_CELL_TEXT_SPAN_ELEM_TITLE,
721 : XML_TOK_CELL_TEXT_SPAN_ELEM_URL,
722 : XML_TOK_CELL_TEXT_SPAN_ELEM_S
723 : };
724 :
725 : /**
726 : * Tokens for attributes for <text:span>
727 : */
728 : enum ScXMLCellTextSpanAttrTokens
729 : {
730 : XML_TOK_CELL_TEXT_SPAN_ATTR_STYLE_NAME
731 : };
732 :
733 : enum ScXMLCellTextURLAttrTokens
734 : {
735 : XML_TOK_CELL_TEXT_URL_ATTR_UREF,
736 : XML_TOK_CELL_TEXT_URL_ATTR_TYPE,
737 : };
738 :
739 : /**
740 : * Tokens for attributes for <text:s>
741 : */
742 : enum ScXMLCellTextSAttrTokens
743 : {
744 : XML_TOK_CELL_TEXT_S_ATTR_C
745 : };
746 :
747 : /**
748 : * Attribute tokens for <calcext:data-stream-source>.
749 : */
750 : enum ScXMLDataStreamAttrTokens
751 : {
752 : XML_TOK_DATA_STREAM_ATTR_URL,
753 : XML_TOK_DATA_STREAM_ATTR_RANGE,
754 : XML_TOK_DATA_STREAM_ATTR_EMPTY_LINE_REFRESH,
755 : XML_TOK_DATA_STREAM_ATTR_INSERTION_POSITION
756 : };
757 :
758 : class SvXMLTokenMap;
759 : class XMLShapeImportHelper;
760 : class ScXMLChangeTrackingImportHelper;
761 : class SolarMutexGuard;
762 :
763 : struct tScMyCellRange
764 : {
765 : SCTAB Sheet;
766 : sal_Int32 StartColumn, EndColumn;
767 : sal_Int32 StartRow, EndRow;
768 : };
769 :
770 124 : struct ScMyNamedExpression
771 : {
772 : OUString sName;
773 : OUString sContent;
774 : OUString sContentNmsp;
775 : OUString sBaseCellAddress;
776 : OUString sRangeType;
777 : formula::FormulaGrammar::Grammar eGrammar;
778 : bool bIsExpression;
779 : };
780 :
781 : typedef ::boost::ptr_list<ScMyNamedExpression> ScMyNamedExpressions;
782 :
783 0 : struct ScMyLabelRange
784 : {
785 : OUString sLabelRangeStr;
786 : OUString sDataRangeStr;
787 : bool bColumnOrientation;
788 : };
789 :
790 : typedef std::list<const ScMyLabelRange*> ScMyLabelRanges;
791 :
792 52 : struct ScMyImportValidation
793 : {
794 : OUString sName;
795 : OUString sImputTitle;
796 : OUString sImputMessage;
797 : OUString sErrorTitle;
798 : OUString sErrorMessage;
799 : OUString sFormula1;
800 : OUString sFormula2;
801 : OUString sFormulaNmsp1;
802 : OUString sFormulaNmsp2;
803 : OUString sBaseCellAddress; // string is used directly
804 : com::sun::star::sheet::ValidationAlertStyle aAlertStyle;
805 : com::sun::star::sheet::ValidationType aValidationType;
806 : com::sun::star::sheet::ConditionOperator aOperator;
807 : formula::FormulaGrammar::Grammar eGrammar1;
808 : formula::FormulaGrammar::Grammar eGrammar2;
809 : sal_Int16 nShowList;
810 : bool bShowErrorMessage;
811 : bool bShowImputMessage;
812 : bool bIgnoreBlanks;
813 : };
814 :
815 : typedef std::vector<ScMyImportValidation> ScMyImportValidations;
816 : typedef std::list<SvXMLImportContext*> ScMyViewContextList;
817 : class ScMyStylesImportHelper;
818 : class ScXMLEditAttributeMap;
819 :
820 : class ScXMLImport: public SvXMLImport, boost::noncopyable
821 : {
822 : typedef ::boost::unordered_map< OUString, sal_Int16, OUStringHash > CellTypeMap;
823 : typedef ::boost::ptr_map<SCTAB, ScMyNamedExpressions> SheetNamedExpMap;
824 :
825 : CellTypeMap aCellTypeMap;
826 :
827 : ScDocument* pDoc;
828 : boost::scoped_ptr<ScDocumentImport> mpDocImport;
829 : boost::scoped_ptr<ScCompiler> mpComp; // For error-checking of cached string cell values.
830 : boost::scoped_ptr<ScEditEngineDefaulter> mpEditEngine;
831 : boost::scoped_ptr<sc::PivotTableSources> mpPivotSources;
832 :
833 : mutable boost::scoped_ptr<ScXMLEditAttributeMap> mpEditAttrMap;
834 : ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper;
835 : ScMyViewContextList aViewContextList;
836 : ScMyStylesImportHelper* pStylesImportHelper;
837 : OUString sNumberFormat;
838 : OUString sLocale;
839 : OUString sCellStyle;
840 : OUString sStandardFormat;
841 : OUString sType;
842 :
843 : UniReference < XMLPropertyHandlerFactory > xScPropHdlFactory;
844 : UniReference < XMLPropertySetMapper > xCellStylesPropertySetMapper;
845 : UniReference < XMLPropertySetMapper > xColumnStylesPropertySetMapper;
846 : UniReference < XMLPropertySetMapper > xRowStylesPropertySetMapper;
847 : UniReference < XMLPropertySetMapper > xTableStylesPropertySetMapper;
848 :
849 : SvXMLTokenMap *pDocElemTokenMap;
850 : SvXMLTokenMap *pStylesElemTokenMap;
851 : SvXMLTokenMap *pStylesAttrTokenMap;
852 : SvXMLTokenMap *pStyleElemTokenMap;
853 : SvXMLTokenMap *pBodyElemTokenMap;
854 : SvXMLTokenMap *pContentValidationsElemTokenMap;
855 : SvXMLTokenMap *pContentValidationElemTokenMap;
856 : SvXMLTokenMap *pContentValidationAttrTokenMap;
857 : SvXMLTokenMap *pContentValidationMessageElemTokenMap;
858 : SvXMLTokenMap *pContentValidationHelpMessageAttrTokenMap;
859 : SvXMLTokenMap *pContentValidationErrorMessageAttrTokenMap;
860 : SvXMLTokenMap *pContentValidationErrorMacroAttrTokenMap;
861 : SvXMLTokenMap *pCondFormatsTokenMap;
862 : SvXMLTokenMap *pCondFormatTokenMap;
863 : SvXMLTokenMap *pCondFormatAttrMap;
864 : SvXMLTokenMap *pCondDateAttrMap;
865 : SvXMLTokenMap *pConditionAttrMap;
866 : SvXMLTokenMap *pColorScaleTokenMap;
867 : SvXMLTokenMap *pColorScaleEntryAttrTokenMap;
868 : SvXMLTokenMap *pDataBarTokenMap;
869 : SvXMLTokenMap *pDataBarAttrMap;
870 : SvXMLTokenMap *pFormattingEntryAttrMap;
871 : SvXMLTokenMap *pIconSetAttrMap;
872 : SvXMLTokenMap *pLabelRangesElemTokenMap;
873 : SvXMLTokenMap *pLabelRangeAttrTokenMap;
874 : SvXMLTokenMap *pTableElemTokenMap;
875 : SvXMLTokenMap *pTableProtectionElemTokenMap;
876 : SvXMLTokenMap *pTableRowsElemTokenMap;
877 : SvXMLTokenMap *pTableColsElemTokenMap;
878 : SvXMLTokenMap *pTableScenarioAttrTokenMap;
879 : SvXMLTokenMap *pTableAttrTokenMap;
880 : SvXMLTokenMap *pTableColAttrTokenMap;
881 : SvXMLTokenMap *pTableRowElemTokenMap;
882 : SvXMLTokenMap *pTableRowAttrTokenMap;
883 : SvXMLTokenMap *pTableRowCellElemTokenMap;
884 : SvXMLTokenMap *pTableRowCellAttrTokenMap;
885 : SvXMLTokenMap *pTableAnnotationAttrTokenMap;
886 : SvXMLTokenMap *pDetectiveElemTokenMap;
887 : SvXMLTokenMap *pDetectiveHighlightedAttrTokenMap;
888 : SvXMLTokenMap *pDetectiveOperationAttrTokenMap;
889 : SvXMLTokenMap *pTableCellRangeSourceAttrTokenMap;
890 : SvXMLTokenMap *pNamedExpressionsElemTokenMap;
891 : SvXMLTokenMap *pNamedRangeAttrTokenMap;
892 : SvXMLTokenMap *pNamedExpressionAttrTokenMap;
893 : SvXMLTokenMap *pDatabaseRangesElemTokenMap;
894 : SvXMLTokenMap *pDatabaseRangeElemTokenMap;
895 : SvXMLTokenMap *pDatabaseRangeAttrTokenMap;
896 : SvXMLTokenMap *pDatabaseRangeSourceSQLAttrTokenMap;
897 : SvXMLTokenMap *pDatabaseRangeSourceTableAttrTokenMap;
898 : SvXMLTokenMap *pDatabaseRangeSourceQueryAttrTokenMap;
899 : SvXMLTokenMap *pFilterElemTokenMap;
900 : SvXMLTokenMap *pFilterAttrTokenMap;
901 : SvXMLTokenMap *pFilterConditionElemTokenMap;
902 : SvXMLTokenMap *pFilterConditionAttrTokenMap;
903 : SvXMLTokenMap *pFilterSetItemAttrTokenMap;
904 : SvXMLTokenMap *pSortElemTokenMap;
905 : SvXMLTokenMap *pSortAttrTokenMap;
906 : SvXMLTokenMap *pSortSortByAttrTokenMap;
907 : SvXMLTokenMap *pDatabaseRangeSubTotalRulesElemTokenMap;
908 : SvXMLTokenMap *pDatabaseRangeSubTotalRulesAttrTokenMap;
909 : SvXMLTokenMap *pSubTotalRulesSortGroupsAttrTokenMap;
910 : SvXMLTokenMap *pSubTotalRulesSubTotalRuleElemTokenMap;
911 : SvXMLTokenMap *pSubTotalRulesSubTotalRuleAttrTokenMap;
912 : SvXMLTokenMap *pSubTotalRuleSubTotalFieldAttrTokenMap;
913 : SvXMLTokenMap *pDataPilotTablesElemTokenMap;
914 : SvXMLTokenMap *pDataPilotTableAttrTokenMap;
915 : SvXMLTokenMap *pDataPilotTableElemTokenMap;
916 : SvXMLTokenMap *pDataPilotTableSourceServiceAttrTokenMap;
917 : SvXMLTokenMap *pDataPilotGrandTotalAttrTokenMap;
918 : SvXMLTokenMap *pDataPilotTableSourceCellRangeElemTokenMap;
919 : SvXMLTokenMap *pDataPilotTableSourceCellRangeAttrTokenMap;
920 : SvXMLTokenMap *pDataPilotFieldAttrTokenMap;
921 : SvXMLTokenMap *pDataPilotFieldElemTokenMap;
922 : SvXMLTokenMap *pDataPilotLevelAttrTokenMap;
923 : SvXMLTokenMap *pDataPilotLevelElemTokenMap;
924 : SvXMLTokenMap *pDataPilotSubTotalsElemTokenMap;
925 : SvXMLTokenMap *pDataPilotSubTotalAttrTokenMap;
926 : SvXMLTokenMap *pDataPilotMembersElemTokenMap;
927 : SvXMLTokenMap *pDataPilotMemberAttrTokenMap;
928 : SvXMLTokenMap *pConsolidationAttrTokenMap;
929 : SvXMLTokenMap *pCellTextParaElemTokenMap;
930 : SvXMLTokenMap *pCellTextSpanElemTokenMap;
931 : SvXMLTokenMap *pCellTextSpanAttrTokenMap;
932 : SvXMLTokenMap *pCellTextURLAttrTokenMap;
933 : SvXMLTokenMap *pCellTextSAttrTokenMap;
934 : SvXMLTokenMap *pDataStreamAttrTokenMap;
935 :
936 : sc::ImportPostProcessData* mpPostProcessData; /// Lift cycle managed elsewhere, no need to delete.
937 :
938 : ScMyTables aTables;
939 :
940 : ScMyNamedExpressions* pMyNamedExpressions;
941 : SheetNamedExpMap maSheetNamedExpressions;
942 :
943 : ScMyLabelRanges* pMyLabelRanges;
944 : ScMyImportValidations* pValidations;
945 : ScMyImpDetectiveOpArray* pDetectiveOpArray;
946 : SolarMutexGuard* pSolarMutexGuard;
947 :
948 : std::vector<OUString> aTableStyles;
949 : XMLNumberFormatAttributesExportHelper* pNumberFormatAttributesExportHelper;
950 : ScMyStyleNumberFormats* pStyleNumberFormats;
951 : com::sun::star::uno::Reference <com::sun::star::util::XNumberFormats> xNumberFormats;
952 : com::sun::star::uno::Reference <com::sun::star::util::XNumberFormatTypes> xNumberFormatTypes;
953 :
954 : com::sun::star::uno::Reference <com::sun::star::sheet::XSheetCellRangeContainer> xSheetCellRanges;
955 :
956 : OUString sEmpty;
957 : OUString sPrevStyleName;
958 : OUString sPrevCurrency;
959 : sal_uInt32 nSolarMutexLocked;
960 : sal_Int32 nProgressCount;
961 : sal_uInt16 nStyleFamilyMask;// Mask of styles to load
962 : sal_Int16 nPrevCellType;
963 : bool bLoadDoc; // Load doc or styles only
964 : bool bRemoveLastChar;
965 : bool bNullDateSetted;
966 : bool bSelfImportingXMLSet;
967 : bool bFromWrapper; // called from ScDocShell / ScXMLImportWrapper?
968 : bool mbHasNewCondFormatData;
969 :
970 :
971 : protected:
972 :
973 : // This method is called after the namespace map has been updated, but
974 : // before a context for the current element has been pushed.
975 : virtual SvXMLImportContext *CreateContext(sal_uInt16 nPrefix,
976 : const OUString& rLocalName,
977 : const ::com::sun::star::uno::Reference<
978 : ::com::sun::star::xml::sax::XAttributeList>& xAttrList ) SAL_OVERRIDE;
979 : virtual XMLShapeImportHelper* CreateShapeImport() SAL_OVERRIDE;
980 :
981 : public:
982 : // #110680#
983 : ScXMLImport(
984 : const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > xContext,
985 : OUString const & implementationName, sal_uInt16 nImportFlag);
986 :
987 : virtual ~ScXMLImport() throw();
988 :
989 : // namespace office
990 : // NB: in contrast to other CreateFooContexts, this particular one handles
991 : // the root element (i.e. office:document-meta)
992 : SvXMLImportContext *CreateMetaContext(
993 : const OUString& rLocalName );
994 : SvXMLImportContext *CreateFontDeclsContext(const sal_uInt16 nPrefix, const OUString& rLocalName,
995 : const com::sun::star::uno::Reference<com::sun::star::xml::sax::XAttributeList>& xAttrList);
996 : SvXMLImportContext *CreateScriptContext(
997 : const OUString& rLocalName );
998 : SvXMLImportContext *CreateStylesContext(const OUString& rLocalName,
999 : const com::sun::star::uno::Reference<com::sun::star::xml::sax::XAttributeList>& xAttrList, bool bAutoStyles );
1000 : SvXMLImportContext *CreateBodyContext(
1001 : const OUString& rLocalName,
1002 : const ::com::sun::star::uno::Reference<com::sun::star::xml::sax::XAttributeList>& xAttrList );
1003 :
1004 : virtual void SetStatistics(
1005 : const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue> & i_rStats) SAL_OVERRIDE;
1006 :
1007 : ScDocumentImport& GetDoc();
1008 :
1009 15867 : inline ScDocument* GetDocument() { return pDoc; }
1010 91 : inline const ScDocument* GetDocument() const { return pDoc; }
1011 :
1012 47307 : ScMyTables& GetTables() { return aTables; }
1013 :
1014 : sal_uInt16 GetStyleFamilyMask() const { return nStyleFamilyMask; }
1015 202 : bool IsStylesOnlyMode() const { return !bLoadDoc; }
1016 :
1017 : sal_Int16 GetCellType(const OUString& rStrValue) const;
1018 :
1019 142 : UniReference < XMLPropertySetMapper > GetCellStylesPropertySetMapper() const { return xCellStylesPropertySetMapper; }
1020 107 : UniReference < XMLPropertySetMapper > GetColumnStylesPropertySetMapper() const { return xColumnStylesPropertySetMapper; }
1021 107 : UniReference < XMLPropertySetMapper > GetRowStylesPropertySetMapper() const { return xRowStylesPropertySetMapper; }
1022 107 : UniReference < XMLPropertySetMapper > GetTableStylesPropertySetMapper() const { return xTableStylesPropertySetMapper; }
1023 :
1024 : const SvXMLTokenMap& GetDocElemTokenMap();
1025 : const SvXMLTokenMap& GetBodyElemTokenMap();
1026 : const SvXMLTokenMap& GetContentValidationsElemTokenMap();
1027 : const SvXMLTokenMap& GetContentValidationElemTokenMap();
1028 : const SvXMLTokenMap& GetContentValidationAttrTokenMap();
1029 : const SvXMLTokenMap& GetContentValidationMessageElemTokenMap();
1030 : const SvXMLTokenMap& GetContentValidationHelpMessageAttrTokenMap();
1031 : const SvXMLTokenMap& GetContentValidationErrorMessageAttrTokenMap();
1032 : const SvXMLTokenMap& GetContentValidationErrorMacroAttrTokenMap();
1033 : const SvXMLTokenMap& GetCondFormatsTokenMap();
1034 : const SvXMLTokenMap& GetCondFormatTokenMap();
1035 : const SvXMLTokenMap& GetCondFormatAttrMap();
1036 : const SvXMLTokenMap& GetCondDateAttrMap();
1037 : const SvXMLTokenMap& GetConditionAttrMap();
1038 : const SvXMLTokenMap& GetColorScaleTokenMap();
1039 : const SvXMLTokenMap& GetColorScaleEntryAttrMap();
1040 : const SvXMLTokenMap& GetFormattingTokenMap();
1041 : const SvXMLTokenMap& GetDataBarAttrMap();
1042 : const SvXMLTokenMap& GetDataBarEntryAttrMap();
1043 : const SvXMLTokenMap& GetIconSetAttrMap();
1044 : const SvXMLTokenMap& GetLabelRangesElemTokenMap();
1045 : const SvXMLTokenMap& GetLabelRangeAttrTokenMap();
1046 : const SvXMLTokenMap& GetTableElemTokenMap();
1047 : const SvXMLTokenMap& GetTableProtectionAttrTokenMap();
1048 : const SvXMLTokenMap& GetTableRowsElemTokenMap();
1049 : const SvXMLTokenMap& GetTableColsElemTokenMap();
1050 : const SvXMLTokenMap& GetTableAttrTokenMap();
1051 : const SvXMLTokenMap& GetTableScenarioAttrTokenMap();
1052 : const SvXMLTokenMap& GetTableColAttrTokenMap();
1053 : const SvXMLTokenMap& GetTableRowElemTokenMap();
1054 : const SvXMLTokenMap& GetTableRowAttrTokenMap();
1055 : const SvXMLTokenMap& GetTableRowCellElemTokenMap();
1056 : const SvXMLTokenMap& GetTableRowCellAttrTokenMap();
1057 : const SvXMLTokenMap& GetTableAnnotationAttrTokenMap();
1058 : const SvXMLTokenMap& GetDetectiveElemTokenMap();
1059 : const SvXMLTokenMap& GetDetectiveHighlightedAttrTokenMap();
1060 : const SvXMLTokenMap& GetDetectiveOperationAttrTokenMap();
1061 : const SvXMLTokenMap& GetTableCellRangeSourceAttrTokenMap();
1062 : const SvXMLTokenMap& GetNamedExpressionsElemTokenMap();
1063 : const SvXMLTokenMap& GetNamedRangeAttrTokenMap();
1064 : const SvXMLTokenMap& GetNamedExpressionAttrTokenMap();
1065 : const SvXMLTokenMap& GetDatabaseRangesElemTokenMap();
1066 : const SvXMLTokenMap& GetDatabaseRangeElemTokenMap();
1067 : const SvXMLTokenMap& GetDatabaseRangeAttrTokenMap();
1068 : const SvXMLTokenMap& GetDatabaseRangeSourceSQLAttrTokenMap();
1069 : const SvXMLTokenMap& GetDatabaseRangeSourceTableAttrTokenMap();
1070 : const SvXMLTokenMap& GetDatabaseRangeSourceQueryAttrTokenMap();
1071 : const SvXMLTokenMap& GetFilterElemTokenMap();
1072 : const SvXMLTokenMap& GetFilterAttrTokenMap();
1073 : const SvXMLTokenMap& GetFilterConditionElemTokenMap();
1074 : const SvXMLTokenMap& GetFilterConditionAttrTokenMap();
1075 : const SvXMLTokenMap& GetFilterSetItemAttrTokenMap();
1076 : const SvXMLTokenMap& GetSortElemTokenMap();
1077 : const SvXMLTokenMap& GetSortAttrTokenMap();
1078 : const SvXMLTokenMap& GetSortSortByAttrTokenMap();
1079 : const SvXMLTokenMap& GetDatabaseRangeSubTotalRulesElemTokenMap();
1080 : const SvXMLTokenMap& GetDatabaseRangeSubTotalRulesAttrTokenMap();
1081 : const SvXMLTokenMap& GetSubTotalRulesSortGroupsAttrTokenMap();
1082 : const SvXMLTokenMap& GetSubTotalRulesSubTotalRuleElemTokenMap();
1083 : const SvXMLTokenMap& GetSubTotalRulesSubTotalRuleAttrTokenMap();
1084 : const SvXMLTokenMap& GetSubTotalRuleSubTotalFieldAttrTokenMap();
1085 : const SvXMLTokenMap& GetDataPilotTablesElemTokenMap();
1086 : const SvXMLTokenMap& GetDataPilotTableAttrTokenMap();
1087 : const SvXMLTokenMap& GetDataPilotTableElemTokenMap();
1088 : const SvXMLTokenMap& GetDataPilotTableSourceServiceAttrTokenMap();
1089 : const SvXMLTokenMap& GetDataPilotGrandTotalAttrTokenMap();
1090 : const SvXMLTokenMap& GetDataPilotTableSourceCellRangeElemTokenMap();
1091 : const SvXMLTokenMap& GetDataPilotTableSourceCellRangeAttrTokenMap();
1092 : const SvXMLTokenMap& GetDataPilotFieldAttrTokenMap();
1093 : const SvXMLTokenMap& GetDataPilotFieldElemTokenMap();
1094 : const SvXMLTokenMap& GetDataPilotLevelAttrTokenMap();
1095 : const SvXMLTokenMap& GetDataPilotLevelElemTokenMap();
1096 : const SvXMLTokenMap& GetDataPilotSubTotalsElemTokenMap();
1097 : const SvXMLTokenMap& GetDataPilotSubTotalAttrTokenMap();
1098 : const SvXMLTokenMap& GetDataPilotMembersElemTokenMap();
1099 : const SvXMLTokenMap& GetDataPilotMemberAttrTokenMap();
1100 : const SvXMLTokenMap& GetConsolidationAttrTokenMap();
1101 : const SvXMLTokenMap& GetCellTextParaElemTokenMap();
1102 : const SvXMLTokenMap& GetCellTextSpanElemTokenMap();
1103 : const SvXMLTokenMap& GetCellTextSpanAttrTokenMap();
1104 : const SvXMLTokenMap& GetCellTextURLAttrTokenMap();
1105 : const SvXMLTokenMap& GetCellTextSAttrTokenMap();
1106 : const SvXMLTokenMap& GetDataStreamAttrTokenMap();
1107 :
1108 : void SetPostProcessData( sc::ImportPostProcessData* p );
1109 : sc::ImportPostProcessData* GetPostProcessData();
1110 :
1111 : sc::PivotTableSources& GetPivotTableSources();
1112 :
1113 56 : void AddNamedExpression(ScMyNamedExpression* pMyNamedExpression)
1114 : {
1115 56 : if (!pMyNamedExpressions)
1116 11 : pMyNamedExpressions = new ScMyNamedExpressions();
1117 56 : pMyNamedExpressions->push_back(pMyNamedExpression);
1118 56 : }
1119 :
1120 107 : ScMyNamedExpressions* GetNamedExpressions() { return pMyNamedExpressions; }
1121 :
1122 : void AddNamedExpression(SCTAB nTab, ScMyNamedExpression* pNamedExp);
1123 :
1124 0 : void AddLabelRange(const ScMyLabelRange* pMyLabelRange) {
1125 0 : if (!pMyLabelRanges)
1126 0 : pMyLabelRanges = new ScMyLabelRanges();
1127 0 : pMyLabelRanges->push_back(pMyLabelRange); }
1128 107 : ScMyLabelRanges* GetLabelRanges() { return pMyLabelRanges; }
1129 :
1130 2 : void AddValidation(const ScMyImportValidation& rValidation) {
1131 2 : if (!pValidations)
1132 1 : pValidations = new ScMyImportValidations();
1133 2 : pValidations->push_back(rValidation); }
1134 : bool GetValidation(const OUString& sName, ScMyImportValidation& aValidation);
1135 :
1136 107 : inline ScMyImpDetectiveOpArray* GetDetectiveOpArray() {
1137 107 : if (!pDetectiveOpArray)
1138 107 : pDetectiveOpArray = new ScMyImpDetectiveOpArray();
1139 107 : return pDetectiveOpArray; }
1140 :
1141 8860 : void SetRemoveLastChar(bool bValue) { bRemoveLastChar = bValue; }
1142 : bool GetRemoveLastChar() { return bRemoveLastChar; }
1143 :
1144 : ScXMLChangeTrackingImportHelper* GetChangeTrackingImportHelper();
1145 : void AddViewContext(SvXMLImportContext* pContext) { aViewContextList.push_back(pContext); }
1146 : void InsertStyles();
1147 :
1148 : void SetChangeTrackingViewSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& rChangeProps);
1149 : virtual void SetViewSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aViewProps) SAL_OVERRIDE;
1150 : virtual void SetConfigurationSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aConfigProps) SAL_OVERRIDE;
1151 :
1152 221 : void SetTableStyle(const OUString& rValue) { aTableStyles.push_back(rValue); }
1153 : std::vector<OUString> GetTableStyle() { return aTableStyles; }
1154 28083 : ScMyStylesImportHelper* GetStylesImportHelper() { return pStylesImportHelper; }
1155 : sal_Int32 SetCurrencySymbol(const sal_Int32 nKey, const OUString& rCurrency);
1156 : bool IsCurrencySymbol(const sal_Int32 nNumberFormat, const OUString& sCurrencySymbol, const OUString& sBankSymbol);
1157 : void SetType(com::sun::star::uno::Reference <com::sun::star::beans::XPropertySet>& rProperties,
1158 : sal_Int32& rNumberFormat,
1159 : const sal_Int16 nCellType,
1160 : const OUString& rCurrency);
1161 :
1162 : void ProgressBarIncrement(bool bEditCell, sal_Int32 nInc = 1);
1163 :
1164 13 : void SetNewCondFormatData() { mbHasNewCondFormatData = true; }
1165 9 : bool HasNewCondFormatData() { return mbHasNewCondFormatData; }
1166 :
1167 : private:
1168 : void AddStyleRange(const com::sun::star::table::CellRangeAddress& rCellRange);
1169 : void SetStyleToRanges();
1170 :
1171 : void ExamineDefaultStyle();
1172 : public:
1173 : void SetStyleToRange(const ScRange& rRange, const OUString* pStyleName,
1174 : const sal_Int16 nCellType, const OUString* pCurrency);
1175 : bool SetNullDateOnUnitConverter();
1176 : XMLNumberFormatAttributesExportHelper* GetNumberFormatAttributesExportHelper();
1177 : ScMyStyleNumberFormats* GetStyleNumberFormats();
1178 :
1179 : void SetStylesToRangesFinished();
1180 :
1181 : // XImporter
1182 : virtual void SAL_CALL setTargetDocument( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& xDoc ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException, std::exception) SAL_OVERRIDE;
1183 :
1184 : virtual void SAL_CALL startDocument(void)
1185 : throw( ::com::sun::star::xml::sax::SAXException, ::com::sun::star::uno::RuntimeException, std::exception ) SAL_OVERRIDE;
1186 : virtual void SAL_CALL endDocument()
1187 : throw(::com::sun::star::xml::sax::SAXException,
1188 : ::com::sun::star::uno::RuntimeException,
1189 : std::exception) SAL_OVERRIDE;
1190 :
1191 : virtual void DisposingModel() SAL_OVERRIDE;
1192 :
1193 : /**
1194 : * Use this class to manage solar mutex locking instead of calling
1195 : * LockSolarMutex() and UnlockSolarMutex() directly.
1196 : */
1197 : class MutexGuard
1198 : {
1199 : public:
1200 : explicit MutexGuard(ScXMLImport& rImport);
1201 : ~MutexGuard();
1202 : private:
1203 : ScXMLImport& mrImport;
1204 : };
1205 : void LockSolarMutex();
1206 : void UnlockSolarMutex();
1207 :
1208 : sal_Int32 GetByteOffset();
1209 :
1210 : void SetRangeOverflowType(sal_uInt32 nType);
1211 :
1212 : sal_Int32 GetRangeType(const OUString& sRangeType) const;
1213 : void SetNamedRanges();
1214 : void SetSheetNamedRanges();
1215 : void SetLabelRanges();
1216 : void AddDefaultNote( const com::sun::star::table::CellAddress& aCell );
1217 :
1218 : /** Extracts the formula string, the formula grammar namespace URL, and a
1219 : grammar enum value from the passed formula attribute value.
1220 :
1221 : @param rFormula
1222 : (out-parameter) Returns the plain formula string with the leading
1223 : equality sign if existing.
1224 :
1225 : @param rFormulaNmsp
1226 : (out-parameter) Returns the URL of the formula grammar namespace if
1227 : the attribute value contains the prefix of an unknown namespace.
1228 :
1229 : @param reGrammar
1230 : (out-parameter) Returns the exact formula grammar if the formula
1231 : is in a supported ODF format (e.g. FormulaGrammar::GRAM_PODF for
1232 : ODF 1.0/1.1 formulas, or FormulaGrammar::GRAM_ODFF for ODF 1.2
1233 : formulas a.k.a. OpenFormula). Returns the default storage grammar,
1234 : if the attribute value does not contain a namespace prefix. Returns
1235 : the special value FormulaGrammar::GRAM_EXTERNAL, if an unknown
1236 : namespace could be extracted from the formula which will be
1237 : contained in the parameter rFormulaNmsp then.
1238 :
1239 : @param rAttrValue
1240 : The value of the processed formula attribute.
1241 :
1242 : @param bRestrictToExternalNmsp
1243 : If set to true, only namespaces of external formula grammars will
1244 : be recognized. Internal namespace prefixes (e.g. 'oooc:' or 'of:'
1245 : will be considered to be part of the formula, e.g. an expression
1246 : with range operator.
1247 : */
1248 : void ExtractFormulaNamespaceGrammar(
1249 : OUString& rFormula,
1250 : OUString& rFormulaNmsp,
1251 : ::formula::FormulaGrammar::Grammar& reGrammar,
1252 : const OUString& rAttrValue,
1253 : bool bRestrictToExternalNmsp = false ) const;
1254 :
1255 : bool IsFormulaErrorConstant( const OUString& rStr ) const;
1256 :
1257 : ScEditEngineDefaulter* GetEditEngine();
1258 : const ScXMLEditAttributeMap& GetEditAttributeMap() const;
1259 : virtual void NotifyEmbeddedFontRead() SAL_OVERRIDE;
1260 : };
1261 :
1262 : #endif
1263 :
1264 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|