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