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