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 : /** @#file
21 : *
22 : * import of all text fields
23 : * (except variable related + database display field: see txtvfldi.hxx)
24 : */
25 :
26 : #ifndef INCLUDED_XMLOFF_INC_TXTFLDI_HXX
27 : #define INCLUDED_XMLOFF_INC_TXTFLDI_HXX
28 :
29 : #include <com/sun/star/uno/Reference.h>
30 : #include <com/sun/star/text/PageNumberType.hpp>
31 : #include <com/sun/star/util/DateTime.hpp>
32 : #include <com/sun/star/util/Date.hpp>
33 : #include <xmloff/xmlictxt.hxx>
34 : #include <xmloff/txtimp.hxx>
35 : #include <rtl/ustrbuf.hxx>
36 :
37 : namespace com { namespace sun { namespace star {
38 : namespace xml { namespace sax { class XAttributeList; } }
39 : namespace text { class XTextField; }
40 : namespace beans { class XPropertySet; struct PropertyValue; }
41 : } } }
42 :
43 : class SvXMLImport;
44 : class XMLTextImportHelper;
45 : class SvXMLTokenMap;
46 :
47 : enum XMLTextFieldAttrTokens
48 : {
49 : XML_TOK_TEXTFIELD_FIXED = 0,
50 : XML_TOK_TEXTFIELD_DESCRIPTION,
51 : XML_TOK_TEXTFIELD_HELP,
52 : XML_TOK_TEXTFIELD_HINT,
53 : XML_TOK_TEXTFIELD_PLACEHOLDER_TYPE,
54 : XML_TOK_TEXTFIELD_TIME_ADJUST,
55 : XML_TOK_TEXTFIELD_DATE_ADJUST,
56 : XML_TOK_TEXTFIELD_PAGE_ADJUST,
57 : XML_TOK_TEXTFIELD_SELECT_PAGE,
58 : XML_TOK_TEXTFIELD_ACTIVE,
59 :
60 : XML_TOK_TEXTFIELD_NAME,
61 : XML_TOK_TEXTFIELD_FORMULA,
62 : XML_TOK_TEXTFIELD_NUM_FORMAT,
63 : XML_TOK_TEXTFIELD_NUM_LETTER_SYNC,
64 : XML_TOK_TEXTFIELD_DISPLAY_FORMULA,
65 : XML_TOK_TEXTFIELD_NUMBERING_LEVEL,
66 : XML_TOK_TEXTFIELD_NUMBERING_SEPARATOR,
67 : XML_TOK_TEXTFIELD_DISPLAY,
68 : XML_TOK_TEXTFIELD_OUTLINE_LEVEL,
69 :
70 : XML_TOK_TEXTFIELD_VALUE_TYPE,
71 : XML_TOK_TEXTFIELD_VALUE,
72 : XML_TOK_TEXTFIELD_STRING_VALUE,
73 : XML_TOK_TEXTFIELD_DATE_VALUE,
74 : XML_TOK_TEXTFIELD_TIME_VALUE,
75 : XML_TOK_TEXTFIELD_BOOL_VALUE,
76 : XML_TOK_TEXTFIELD_CURRENCY,
77 : XML_TOK_TEXTFIELD_DATA_STYLE_NAME,
78 :
79 : XML_TOK_TEXTFIELD_DATABASE_NAME,
80 : XML_TOK_TEXTFIELD_TABLE_NAME,
81 : XML_TOK_TEXTFIELD_COLUMN_NAME,
82 : XML_TOK_TEXTFIELD_ROW_NUMBER,
83 : XML_TOK_TEXTFIELD_CONDITION,
84 : XML_TOK_TEXTFIELD_STRING_VALUE_IF_TRUE,
85 : XML_TOK_TEXTFIELD_STRING_VALUE_IF_FALSE,
86 : XML_TOK_TEXTFIELD_REVISION,
87 : XML_TOK_TEXTFIELD_IS_HIDDEN,
88 : XML_TOK_TEXTFIELD_CURRENT_VALUE,
89 :
90 : XML_TOK_TEXTFIELD_REFERENCE_FORMAT,
91 : XML_TOK_TEXTFIELD_REF_NAME,
92 : XML_TOK_TEXTFIELD_CONNECTION_NAME,
93 :
94 : XML_TOK_TEXTFIELD_HREF,
95 : XML_TOK_TEXTFIELD_TARGET_FRAME,
96 :
97 : XML_TOK_TEXTFIELD_OFFICE_CREATE_DATE,
98 : XML_TOK_TEXTFIELD_OFFICE_AUTHOR,
99 : XML_TOK_TEXTFIELD_ANNOTATION,
100 : XML_TOK_TEXTFIELD_LANGUAGE,
101 :
102 : XML_TOK_TEXTFIELD_MEASURE_KIND,
103 : XML_TOK_TEXTFIELD_TABLE_TYPE,
104 :
105 : XML_TOK_TEXTFIELD_NOTE_CLASS,
106 :
107 : XML_TOK_TEXTFIELD_UNKNOWN
108 : };
109 :
110 : /// abstract class for text field import
111 : class XMLTextFieldImportContext : public SvXMLImportContext
112 : {
113 : // data members
114 : OUStringBuffer sContentBuffer; /// collect character data
115 : OUString sContent; /// character data after collection
116 : OUString sServiceName; /// service name for text field
117 : XMLTextImportHelper& rTextImportHelper; /// the import helper
118 :
119 : protected:
120 : OUString sServicePrefix;
121 :
122 : // data members for use in subclasses
123 : bool bValid; /// whether this field is valid ?
124 :
125 : public:
126 : TYPEINFO_OVERRIDE();
127 :
128 : XMLTextFieldImportContext(
129 : SvXMLImport& rImport, /// XML Import
130 : XMLTextImportHelper& rHlp, /// Text import helper
131 : const sal_Char* pService, /// name of SO API service
132 : sal_uInt16 nPrfx, /// namespace prefix
133 : const OUString& rLocalName); /// element name w/o prefix
134 :
135 : virtual ~XMLTextFieldImportContext();
136 :
137 : /// process character data: will be collected in member sContentBuffer
138 : virtual void Characters( const OUString& sContent ) SAL_OVERRIDE;
139 :
140 : /// parses attributes and calls ProcessAttribute
141 : virtual void StartElement(
142 : const ::com::sun::star::uno::Reference<
143 : ::com::sun::star::xml::sax::XAttributeList> & xAttrList) SAL_OVERRIDE;
144 :
145 : /// create XTextField and insert into document; calls PrepareTextField
146 : virtual void EndElement() SAL_OVERRIDE;
147 :
148 : /// create the appropriate field context from
149 : /// (for use in paragraph import)
150 : static XMLTextFieldImportContext* CreateTextFieldImportContext(
151 : SvXMLImport& rImport,
152 : XMLTextImportHelper& rHlp,
153 : sal_uInt16 nPrefix,
154 : const OUString& rName,
155 : sal_uInt16 nToken);
156 :
157 : protected:
158 : /// get helper
159 452 : inline XMLTextImportHelper& GetImportHelper() { return rTextImportHelper; }
160 :
161 2071 : inline OUString GetServiceName() { return sServiceName; }
162 1 : inline void SetServiceName(const OUString& sStr) { sServiceName = sStr; }
163 :
164 : OUString GetContent();
165 :
166 : /// process attribute values
167 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
168 : const OUString& sAttrValue ) = 0;
169 :
170 : /// prepare XTextField for insertion into document
171 : virtual void PrepareField(
172 : const ::com::sun::star::uno::Reference<
173 : ::com::sun::star::beans::XPropertySet> & xPropertySet) = 0;
174 :
175 : /// create field from ServiceName
176 : bool CreateField(::com::sun::star::uno::Reference<
177 : ::com::sun::star::beans::XPropertySet> & xField,
178 : const OUString& sServiceName);
179 :
180 : /// force an update of the field's value
181 : /// call update on optional XUptadeable interface; (disable Fixed property)
182 : static void ForceUpdate(
183 : const ::com::sun::star::uno::Reference<
184 : ::com::sun::star::beans::XPropertySet> & rPropertySet);
185 : };
186 :
187 13 : class XMLSenderFieldImportContext : public XMLTextFieldImportContext
188 : {
189 :
190 : sal_Int16 nSubType; /// API subtype for ExtUser field
191 :
192 : const OUString sPropertyFixed;
193 : const OUString sPropertyFieldSubType;
194 : const OUString sPropertyContent;
195 :
196 : protected:
197 : // variables for access in subclass
198 : bool bFixed;
199 : sal_uInt16 nElementToken; /// token for this elment field
200 :
201 : public:
202 : TYPEINFO_OVERRIDE();
203 :
204 : XMLSenderFieldImportContext(
205 : SvXMLImport& rImport, /// XML Import
206 : XMLTextImportHelper& rHlp, /// Text import helper
207 : sal_uInt16 nPrfx, /// namespace prefix
208 : const OUString& sLocalName, /// element name w/o prefix
209 : sal_uInt16 nToken); /// element token
210 :
211 : protected:
212 : /// start element
213 : virtual void StartElement(
214 : const ::com::sun::star::uno::Reference<
215 : ::com::sun::star::xml::sax::XAttributeList> & xAttrList) SAL_OVERRIDE;
216 :
217 : /// process attribute values
218 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
219 : const OUString& sAttrValue ) SAL_OVERRIDE;
220 :
221 : /// prepare XTextField for insertion into document
222 : virtual void PrepareField(
223 : const ::com::sun::star::uno::Reference<
224 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
225 : };
226 :
227 : /** inherit sender field because of fixed attribute in ProcessAttributes */
228 2 : class XMLAuthorFieldImportContext : public XMLSenderFieldImportContext
229 : {
230 : bool bAuthorFullName;
231 : const OUString sServiceAuthor;
232 : const OUString sPropertyAuthorFullName;
233 : const OUString sPropertyFixed;
234 : const OUString sPropertyContent;
235 :
236 : public:
237 : TYPEINFO_OVERRIDE();
238 :
239 : XMLAuthorFieldImportContext(
240 : SvXMLImport& rImport, /// XML Import
241 : XMLTextImportHelper& rHlp, /// Text import helper
242 : sal_uInt16 nPrfx, /// namespace prefix
243 : const OUString& sLocalName, /// element name w/o prefix
244 : sal_uInt16 nToken); /// element token
245 :
246 : protected:
247 : /// start element
248 : virtual void StartElement(
249 : const ::com::sun::star::uno::Reference<
250 : ::com::sun::star::xml::sax::XAttributeList> & xAttrList) SAL_OVERRIDE;
251 :
252 : /// prepare XTextField for insertion into document
253 : virtual void PrepareField(
254 : const ::com::sun::star::uno::Reference<
255 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
256 : };
257 :
258 68 : class XMLPlaceholderFieldImportContext : public XMLTextFieldImportContext
259 : {
260 : const OUString sPropertyPlaceholderType;
261 : const OUString sPropertyPlaceholder;
262 : const OUString sPropertyHint;
263 :
264 : OUString sDescription;
265 :
266 : sal_Int16 nPlaceholderType;
267 :
268 : public:
269 : TYPEINFO_OVERRIDE();
270 :
271 : XMLPlaceholderFieldImportContext(
272 : SvXMLImport& rImport, /// XML Import
273 : XMLTextImportHelper& rHlp, /// Text import helper
274 : sal_uInt16 nPrfx, /// namespace prefix
275 : const OUString& sLocalName); /// element name w/o prefix
276 :
277 : protected:
278 : /// process attribute values
279 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
280 : const OUString& sAttrValue ) SAL_OVERRIDE;
281 :
282 : /// prepare XTextField for insertion into document
283 : virtual void PrepareField(
284 : const ::com::sun::star::uno::Reference<
285 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
286 : };
287 :
288 518 : class XMLTimeFieldImportContext : public XMLTextFieldImportContext
289 : {
290 : protected:
291 : const OUString sPropertyNumberFormat;
292 : const OUString sPropertyFixed;
293 : const OUString sPropertyDateTimeValue;
294 : const OUString sPropertyDateTime;
295 : const OUString sPropertyAdjust;
296 : const OUString sPropertyIsDate;
297 : const OUString sPropertyIsFixedLanguage;
298 :
299 : ::com::sun::star::util::DateTime aDateTimeValue;
300 : sal_Int32 nAdjust;
301 : sal_Int32 nFormatKey;
302 : bool bTimeOK;
303 : bool bFormatOK;
304 : bool bFixed;
305 : bool bIsDate; // is this a date?
306 : // (for XMLDateFieldImportContext, really)
307 : bool bIsDefaultLanguage;
308 :
309 : public:
310 : TYPEINFO_OVERRIDE();
311 :
312 : XMLTimeFieldImportContext(
313 : SvXMLImport& rImport, /// XML Import
314 : XMLTextImportHelper& rHlp, /// Text import helper
315 : sal_uInt16 nPrfx, /// namespace prefix
316 : const OUString& sLocalName); /// element name w/o prefix
317 :
318 : /// process attribute values
319 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
320 : const OUString& sAttrValue ) SAL_OVERRIDE;
321 :
322 : /// prepare XTextField for insertion into document
323 : virtual void PrepareField(
324 : const ::com::sun::star::uno::Reference<
325 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
326 : };
327 :
328 : /** import date fields (<text:date>);
329 : inherit from TimeField to reuse implementation */
330 364 : class XMLDateFieldImportContext : public XMLTimeFieldImportContext
331 : {
332 : public:
333 : TYPEINFO_OVERRIDE();
334 :
335 : XMLDateFieldImportContext(
336 : SvXMLImport& rImport, /// XML Import
337 : XMLTextImportHelper& rHlp, /// Text import helper
338 : sal_uInt16 nPrfx, /// namespace prefix
339 : const OUString& sLocalName); /// element name w/o prefix
340 :
341 : /// process attribute values
342 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
343 : const OUString& sAttrValue ) SAL_OVERRIDE;
344 : };
345 :
346 : /** import page continuation fields (<text:page-continuation-string>) */
347 0 : class XMLPageContinuationImportContext : public XMLTextFieldImportContext
348 : {
349 : const OUString sPropertySubType;
350 : const OUString sPropertyUserText;
351 : const OUString sPropertyNumberingType;
352 :
353 : OUString sString; /// continuation string
354 : com::sun::star::text::PageNumberType eSelectPage; /// previous, current
355 : /// or next page
356 : bool sStringOK; /// continuation string encountered?
357 :
358 : public:
359 : TYPEINFO_OVERRIDE();
360 :
361 : XMLPageContinuationImportContext(
362 : SvXMLImport& rImport, /// XML Import
363 : XMLTextImportHelper& rHlp, /// Text import helper
364 : sal_uInt16 nPrfx, /// namespace prefix
365 : const OUString& sLocalName); /// element name w/o prefix
366 :
367 : /// process attribute values
368 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
369 : const OUString& sAttrValue ) SAL_OVERRIDE;
370 :
371 : /// prepare XTextField for insertion into document
372 : virtual void PrepareField(
373 : const ::com::sun::star::uno::Reference<
374 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
375 : };
376 :
377 : /** import page number fields (<text:page-number>) */
378 1058 : class XMLPageNumberImportContext : public XMLTextFieldImportContext
379 : {
380 : const OUString sPropertySubType;
381 : const OUString sPropertyNumberingType;
382 : const OUString sPropertyOffset;
383 :
384 : OUString sNumberFormat;
385 : OUString sNumberSync;
386 : sal_Int16 nPageAdjust;
387 : com::sun::star::text::PageNumberType eSelectPage; /// previous, current
388 : /// or next page
389 : bool sNumberFormatOK;
390 :
391 : public:
392 : TYPEINFO_OVERRIDE();
393 :
394 : XMLPageNumberImportContext(
395 : SvXMLImport& rImport, /// XML Import
396 : XMLTextImportHelper& rHlp, /// Text import helper
397 : sal_uInt16 nPrfx, /// namespace prefix
398 : const OUString& sLocalName); /// element name w/o prefix
399 :
400 :
401 : /// process attribute values
402 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
403 : const OUString& sAttrValue ) SAL_OVERRIDE;
404 :
405 : /// prepare XTextField for insertion into document
406 : virtual void PrepareField(
407 : const ::com::sun::star::uno::Reference<
408 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
409 : };
410 :
411 : /** superclass for database fields: handle database and table names */
412 69 : class XMLDatabaseFieldImportContext : public XMLTextFieldImportContext
413 : {
414 : const OUString sPropertyDataBaseName;
415 : const OUString sPropertyDataBaseURL;
416 : const OUString sPropertyTableName;
417 : const OUString sPropertyDataCommandType;
418 : const OUString sPropertyIsVisible;
419 :
420 : OUString sDatabaseName;
421 : OUString sDatabaseURL;
422 : OUString sTableName;
423 :
424 : sal_Int32 nCommandType;
425 : bool bCommandTypeOK;
426 :
427 : bool bDisplay;
428 : bool bDisplayOK;
429 : bool bUseDisplay;
430 :
431 : protected:
432 : bool bDatabaseOK;
433 : bool bDatabaseNameOK;
434 : bool bDatabaseURLOK;
435 : bool bTableOK;
436 :
437 : /// protected constructor: only for subclasses
438 : XMLDatabaseFieldImportContext(SvXMLImport& rImport,
439 : XMLTextImportHelper& rHlp,
440 : const sal_Char* pServiceName,
441 : sal_uInt16 nPrfx,
442 : const OUString& sLocalName,
443 : bool bUseDisplay );
444 :
445 : public:
446 : TYPEINFO_OVERRIDE();
447 :
448 : /// process attribute values
449 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
450 : const OUString& sAttrValue ) SAL_OVERRIDE;
451 :
452 : /// prepare XTextField for insertion into document
453 : virtual void PrepareField(
454 : const ::com::sun::star::uno::Reference<
455 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
456 :
457 : /// handle database-location children
458 : virtual SvXMLImportContext *CreateChildContext(
459 : sal_uInt16 nPrefix,
460 : const OUString& rLocalName,
461 : const ::com::sun::star::uno::Reference<
462 : ::com::sun::star::xml::sax::XAttributeList> & xAttrList ) SAL_OVERRIDE;
463 : };
464 :
465 : /** import database name fields (<text:database-name>) */
466 0 : class XMLDatabaseNameImportContext : public XMLDatabaseFieldImportContext
467 : {
468 : public:
469 : TYPEINFO_OVERRIDE();
470 :
471 : XMLDatabaseNameImportContext(SvXMLImport& rImport,
472 : XMLTextImportHelper& rHlp,
473 : sal_uInt16 nPrfx,
474 : const OUString& sLocalName);
475 :
476 : /// process attribute values
477 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
478 : const OUString& sAttrValue ) SAL_OVERRIDE;
479 : };
480 :
481 : /** import database next fields (<text:database-next>) */
482 0 : class XMLDatabaseNextImportContext : public XMLDatabaseFieldImportContext
483 : {
484 : const OUString sPropertyCondition;
485 : const OUString sTrue;
486 : OUString sCondition;
487 : bool bConditionOK;
488 :
489 : protected:
490 : // for use in child classes
491 : XMLDatabaseNextImportContext(SvXMLImport& rImport,
492 : XMLTextImportHelper& rHlp,
493 : const sal_Char* pServiceName,
494 : sal_uInt16 nPrfx,
495 : const OUString& sLocalName);
496 :
497 : public:
498 : TYPEINFO_OVERRIDE();
499 :
500 : XMLDatabaseNextImportContext(SvXMLImport& rImport,
501 : XMLTextImportHelper& rHlp,
502 : sal_uInt16 nPrfx,
503 : const OUString& sLocalName);
504 :
505 : /// process attribute values
506 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
507 : const OUString& sAttrValue ) SAL_OVERRIDE;
508 :
509 : /// prepare XTextField for insertion into document
510 : virtual void PrepareField(
511 : const ::com::sun::star::uno::Reference<
512 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
513 : };
514 :
515 : /** import database select fields (<text:database-select>) */
516 0 : class XMLDatabaseSelectImportContext : public XMLDatabaseNextImportContext
517 : {
518 : const OUString sPropertySetNumber;
519 : sal_Int32 nNumber;
520 : bool bNumberOK;
521 :
522 : public:
523 : TYPEINFO_OVERRIDE();
524 :
525 : XMLDatabaseSelectImportContext(SvXMLImport& rImport,
526 : XMLTextImportHelper& rHlp,
527 : sal_uInt16 nPrfx,
528 : const OUString& sLocalName);
529 :
530 : /// process attribute values
531 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
532 : const OUString& sAttrValue ) SAL_OVERRIDE;
533 :
534 : /// prepare XTextField for insertion into document
535 : virtual void PrepareField(
536 : const ::com::sun::star::uno::Reference<
537 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
538 : };
539 :
540 : /** import database display number fields (<text:database-row-number>) */
541 0 : class XMLDatabaseNumberImportContext : public XMLDatabaseFieldImportContext
542 : {
543 : const OUString sPropertyNumberingType;
544 : const OUString sPropertySetNumber;
545 : OUString sNumberFormat;
546 : OUString sNumberSync;
547 : sal_Int32 nValue;
548 : bool bValueOK;
549 :
550 : public:
551 : TYPEINFO_OVERRIDE();
552 :
553 : XMLDatabaseNumberImportContext(SvXMLImport& rImport,
554 : XMLTextImportHelper& rHlp,
555 : sal_uInt16 nPrfx,
556 : const OUString& sLocalName);
557 :
558 : /// process attribute values
559 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
560 : const OUString& sAttrValue ) SAL_OVERRIDE;
561 :
562 : /// prepare XTextField for insertion into document
563 : virtual void PrepareField(
564 : const ::com::sun::star::uno::Reference<
565 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
566 : };
567 :
568 : /** import docinfo fields with only fixed attribute */
569 382 : class XMLSimpleDocInfoImportContext : public XMLTextFieldImportContext
570 : {
571 : const OUString sPropertyFixed;
572 : const OUString sPropertyContent;
573 : const OUString sPropertyAuthor;
574 : const OUString sPropertyCurrentPresentation;
575 :
576 : protected:
577 : bool bFixed;
578 : bool bHasAuthor;
579 : bool bHasContent;
580 :
581 : public:
582 : TYPEINFO_OVERRIDE();
583 :
584 : XMLSimpleDocInfoImportContext(SvXMLImport& rImport,
585 : XMLTextImportHelper& rHlp,
586 : sal_uInt16 nPrfx,
587 : const OUString& sLocalName,
588 : sal_uInt16 nToken,
589 : bool bContent,
590 : bool bAuthor);
591 :
592 : protected:
593 : /// process attribute values
594 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
595 : const OUString& sAttrValue ) SAL_OVERRIDE;
596 :
597 : /// prepare XTextField for insertion into document
598 : virtual void PrepareField(
599 : const ::com::sun::star::uno::Reference<
600 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
601 :
602 : static const sal_Char* MapTokenToServiceName(sal_uInt16 nToken);
603 : };
604 :
605 : /** import docinfo fields with date or time attributes and numberformats */
606 4 : class XMLDateTimeDocInfoImportContext : public XMLSimpleDocInfoImportContext
607 : {
608 : const OUString sPropertyNumberFormat;
609 : const OUString sPropertyIsDate;
610 : const OUString sPropertyIsFixedLanguage;
611 :
612 : sal_Int32 nFormat;
613 : bool bFormatOK;
614 : bool bIsDate;
615 : bool bHasDateTime;
616 : bool bIsDefaultLanguage;
617 :
618 : public:
619 : TYPEINFO_OVERRIDE();
620 :
621 : XMLDateTimeDocInfoImportContext(SvXMLImport& rImport,
622 : XMLTextImportHelper& rHlp,
623 : sal_uInt16 nPrfx,
624 : const OUString& sLocalName,
625 : sal_uInt16 nToken);
626 :
627 : protected:
628 : /// process attribute values
629 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
630 : const OUString& sAttrValue ) SAL_OVERRIDE;
631 :
632 : /// prepare XTextField for insertion into document
633 : virtual void PrepareField(
634 : const ::com::sun::star::uno::Reference<
635 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
636 : };
637 :
638 : /** import revision field (<text:editing-cycles>) */
639 0 : class XMLRevisionDocInfoImportContext : public XMLSimpleDocInfoImportContext
640 : {
641 : const OUString sPropertyRevision;
642 :
643 : public:
644 : TYPEINFO_OVERRIDE();
645 :
646 : XMLRevisionDocInfoImportContext(SvXMLImport& rImport,
647 : XMLTextImportHelper& rHlp,
648 : sal_uInt16 nPrfx,
649 : const OUString& sLocalName,
650 : sal_uInt16 nToken);
651 :
652 : protected:
653 : /// prepare XTextField for insertion into document
654 : virtual void PrepareField(
655 : const ::com::sun::star::uno::Reference<
656 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
657 : };
658 :
659 : /** import user docinfo field (<text:user-defined>) */
660 0 : class XMLUserDocInfoImportContext : public XMLSimpleDocInfoImportContext
661 : {
662 : OUString aName;
663 : const OUString sPropertyName;
664 : const OUString sPropertyNumberFormat;
665 : const OUString sPropertyIsFixedLanguage;
666 : sal_Int32 nFormat;
667 : bool bFormatOK;
668 : bool bIsDefaultLanguage;
669 :
670 : public:
671 : TYPEINFO_OVERRIDE();
672 :
673 : XMLUserDocInfoImportContext(SvXMLImport& rImport,
674 : XMLTextImportHelper& rHlp,
675 : sal_uInt16 nPrfx,
676 : const OUString& sLocalName,
677 : sal_uInt16 nToken);
678 :
679 : protected:
680 : /// process attribute values
681 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
682 : const OUString& sAttrValue ) SAL_OVERRIDE;
683 : virtual void PrepareField(
684 : const ::com::sun::star::uno::Reference<
685 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
686 : };
687 :
688 : /** import hidden paragraph fields (<text:hidden-paragraph>) */
689 0 : class XMLHiddenParagraphImportContext : public XMLTextFieldImportContext
690 : {
691 : const OUString sPropertyCondition;
692 : const OUString sPropertyIsHidden;
693 :
694 : OUString sCondition;
695 : bool bIsHidden;
696 :
697 : public:
698 : TYPEINFO_OVERRIDE();
699 :
700 : XMLHiddenParagraphImportContext(SvXMLImport& rImport,
701 : XMLTextImportHelper& rHlp,
702 : sal_uInt16 nPrfx,
703 : const OUString& sLocalName);
704 :
705 : protected:
706 : /// process attribute values
707 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
708 : const OUString& sAttrValue ) SAL_OVERRIDE;
709 :
710 : /// prepare XTextField for insertion into document
711 : virtual void PrepareField(
712 : const ::com::sun::star::uno::Reference<
713 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
714 : };
715 :
716 : /** import conditional text fields (<text:conditional-text>) */
717 0 : class XMLConditionalTextImportContext : public XMLTextFieldImportContext
718 : {
719 : const OUString sPropertyCondition;
720 : const OUString sPropertyTrueContent;
721 : const OUString sPropertyFalseContent;
722 : const OUString sPropertyIsConditionTrue;
723 : const OUString sPropertyCurrentPresentation;
724 :
725 : OUString sCondition;
726 : OUString sTrueContent;
727 : OUString sFalseContent;
728 :
729 : bool bConditionOK;
730 : bool bTrueOK;
731 : bool bFalseOK;
732 : bool bCurrentValue;
733 :
734 : public:
735 : TYPEINFO_OVERRIDE();
736 :
737 : XMLConditionalTextImportContext(SvXMLImport& rImport,
738 : XMLTextImportHelper& rHlp,
739 : sal_uInt16 nPrfx,
740 : const OUString& sLocalName);
741 :
742 : protected:
743 : /// process attribute values
744 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
745 : const OUString& sAttrValue ) SAL_OVERRIDE;
746 :
747 : /// prepare XTextField for insertion into document
748 : virtual void PrepareField(
749 : const ::com::sun::star::uno::Reference<
750 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
751 : };
752 :
753 : /** import conditional text fields (<text:hidden-text>) */
754 0 : class XMLHiddenTextImportContext : public XMLTextFieldImportContext
755 : {
756 : const OUString sPropertyCondition;
757 : const OUString sPropertyContent;
758 : const OUString sPropertyIsHidden;
759 :
760 : OUString sCondition;
761 : OUString sString;
762 :
763 : bool bConditionOK;
764 : bool bStringOK;
765 : bool bIsHidden;
766 :
767 : public:
768 : TYPEINFO_OVERRIDE();
769 :
770 : XMLHiddenTextImportContext(SvXMLImport& rImport,
771 : XMLTextImportHelper& rHlp,
772 : sal_uInt16 nPrfx,
773 : const OUString& sLocalName);
774 :
775 : protected:
776 : /// process attribute values
777 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
778 : const OUString& sAttrValue ) SAL_OVERRIDE;
779 :
780 : /// prepare XTextField for insertion into document
781 : virtual void PrepareField(
782 : const ::com::sun::star::uno::Reference<
783 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
784 : };
785 :
786 : /** import file name fields (<text:file-name>) */
787 8 : class XMLFileNameImportContext : public XMLTextFieldImportContext
788 : {
789 : const OUString sPropertyFixed;
790 : const OUString sPropertyFileFormat;
791 : const OUString sPropertyCurrentPresentation;
792 :
793 : sal_Int16 nFormat;
794 : bool bFixed;
795 :
796 : public:
797 : TYPEINFO_OVERRIDE();
798 :
799 : XMLFileNameImportContext(SvXMLImport& rImport,
800 : XMLTextImportHelper& rHlp,
801 : sal_uInt16 nPrfx,
802 : const OUString& sLocalName);
803 :
804 : protected:
805 : /// process attribute values
806 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
807 : const OUString& sAttrValue ) SAL_OVERRIDE;
808 :
809 : /// prepare XTextField for insertion into document
810 : virtual void PrepareField(
811 : const ::com::sun::star::uno::Reference<
812 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
813 : };
814 :
815 : /** import document template name fields (<text:template-name>) */
816 0 : class XMLTemplateNameImportContext : public XMLTextFieldImportContext
817 : {
818 : const OUString sPropertyFileFormat;
819 :
820 : sal_Int16 nFormat;
821 :
822 : public:
823 : TYPEINFO_OVERRIDE();
824 :
825 : XMLTemplateNameImportContext(SvXMLImport& rImport,
826 : XMLTextImportHelper& rHlp,
827 : sal_uInt16 nPrfx,
828 : const OUString& sLocalName);
829 :
830 : protected:
831 : /// process attribute values
832 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
833 : const OUString& sAttrValue ) SAL_OVERRIDE;
834 :
835 : /// prepare XTextField for insertion into document
836 : virtual void PrepareField(
837 : const ::com::sun::star::uno::Reference<
838 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
839 : };
840 :
841 : /** import chapter fields (<text:chapter>) */
842 24 : class XMLChapterImportContext : public XMLTextFieldImportContext
843 : {
844 : const OUString sPropertyChapterFormat;
845 : const OUString sPropertyLevel;
846 :
847 : sal_Int16 nFormat;
848 : sal_Int8 nLevel;
849 :
850 : public:
851 : TYPEINFO_OVERRIDE();
852 :
853 : XMLChapterImportContext(SvXMLImport& rImport,
854 : XMLTextImportHelper& rHlp,
855 : sal_uInt16 nPrfx,
856 : const OUString& sLocalName);
857 :
858 : protected:
859 : /// process attribute values
860 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
861 : const OUString& sAttrValue ) SAL_OVERRIDE;
862 :
863 : /// prepare XTextField for insertion into document
864 : virtual void PrepareField(
865 : const ::com::sun::star::uno::Reference<
866 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
867 : };
868 :
869 : /** import count fields (<text:[XXX]-count>) */
870 368 : class XMLCountFieldImportContext : public XMLTextFieldImportContext
871 : {
872 : const OUString sPropertyNumberingType;
873 :
874 : OUString sNumberFormat;
875 : OUString sLetterSync;
876 :
877 : bool bNumberFormatOK;
878 :
879 : public:
880 : TYPEINFO_OVERRIDE();
881 :
882 : XMLCountFieldImportContext(SvXMLImport& rImport,
883 : XMLTextImportHelper& rHlp,
884 : sal_uInt16 nPrfx,
885 : const OUString& sLocalName,
886 : sal_uInt16 nToken);
887 :
888 : protected:
889 : /// process attribute values
890 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
891 : const OUString& sAttrValue ) SAL_OVERRIDE;
892 :
893 : /// prepare XTextField for insertion into document
894 : virtual void PrepareField(
895 : const ::com::sun::star::uno::Reference<
896 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
897 :
898 : static const sal_Char* MapTokenToServiceName(sal_uInt16 nToken);
899 : };
900 :
901 : /** import page variable fields (<text:get-page-variable>) */
902 0 : class XMLPageVarGetFieldImportContext : public XMLTextFieldImportContext
903 : {
904 : const OUString sPropertyNumberingType;
905 :
906 : OUString sNumberFormat;
907 : OUString sLetterSync;
908 :
909 : bool bNumberFormatOK;
910 :
911 : public:
912 : TYPEINFO_OVERRIDE();
913 :
914 : XMLPageVarGetFieldImportContext(SvXMLImport& rImport,
915 : XMLTextImportHelper& rHlp,
916 : sal_uInt16 nPrfx,
917 : const OUString& sLocalName);
918 :
919 : protected:
920 : /// process attribute values
921 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
922 : const OUString& sAttrValue ) SAL_OVERRIDE;
923 :
924 : /// prepare XTextField for insertion into document
925 : virtual void PrepareField(
926 : const ::com::sun::star::uno::Reference<
927 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
928 : };
929 :
930 : /** import page variable fields (<text:get-page-variable>) */
931 0 : class XMLPageVarSetFieldImportContext : public XMLTextFieldImportContext
932 : {
933 : const OUString sPropertyOn;
934 : const OUString sPropertyOffset;
935 :
936 : sal_Int16 nAdjust;
937 : bool bActive;
938 :
939 : public:
940 : TYPEINFO_OVERRIDE();
941 :
942 : XMLPageVarSetFieldImportContext(SvXMLImport& rImport,
943 : XMLTextImportHelper& rHlp,
944 : sal_uInt16 nPrfx,
945 : const OUString& sLocalName);
946 :
947 : protected:
948 : /// process attribute values
949 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
950 : const OUString& sAttrValue ) SAL_OVERRIDE;
951 :
952 : /// prepare XTextField for insertion into document
953 : virtual void PrepareField(
954 : const ::com::sun::star::uno::Reference<
955 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
956 : };
957 :
958 : /** import macro fields (<text:execute-macro>) */
959 0 : class XMLMacroFieldImportContext : public XMLTextFieldImportContext
960 : {
961 : const OUString sPropertyHint;
962 : const OUString sPropertyMacroName;
963 : const OUString sPropertyScriptURL;
964 :
965 : OUString sDescription;
966 : SvXMLImportContextRef xEventContext;
967 :
968 : OUString sMacro; // macro for old documents (pre 638i)
969 :
970 : bool bDescriptionOK;
971 :
972 : public:
973 : TYPEINFO_OVERRIDE();
974 :
975 : XMLMacroFieldImportContext(SvXMLImport& rImport,
976 : XMLTextImportHelper& rHlp,
977 : sal_uInt16 nPrfx,
978 : const OUString& sLocalName);
979 :
980 : protected:
981 : /// for <office:events> children
982 : virtual SvXMLImportContext *CreateChildContext(
983 : sal_uInt16 nPrefix,
984 : const OUString& rLocalName,
985 : const ::com::sun::star::uno::Reference<
986 : ::com::sun::star::xml::sax::XAttributeList> & xAttrList ) SAL_OVERRIDE;
987 :
988 : /// process attribute values
989 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
990 : const OUString& sAttrValue ) SAL_OVERRIDE;
991 :
992 : /// prepare XTextField for insertion into document
993 : virtual void PrepareField(
994 : const ::com::sun::star::uno::Reference<
995 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
996 : };
997 :
998 : /** import reference fields (<text:reference-get>) */
999 36 : class XMLReferenceFieldImportContext : public XMLTextFieldImportContext
1000 : {
1001 : const OUString sPropertyReferenceFieldPart;
1002 : const OUString sPropertyReferenceFieldSource;
1003 : const OUString sPropertySourceName;
1004 : const OUString sPropertyCurrentPresentation;
1005 :
1006 : OUString sName;
1007 : sal_uInt16 nElementToken;
1008 : sal_Int16 nSource;
1009 : sal_Int16 nType;
1010 :
1011 : bool bNameOK;
1012 : bool bTypeOK;
1013 :
1014 : public:
1015 : TYPEINFO_OVERRIDE();
1016 :
1017 : XMLReferenceFieldImportContext(SvXMLImport& rImport,
1018 : XMLTextImportHelper& rHlp,
1019 : sal_uInt16 nToken,
1020 : sal_uInt16 nPrfx,
1021 : const OUString& sLocalName);
1022 :
1023 : protected:
1024 : /// start element
1025 : virtual void StartElement(
1026 : const ::com::sun::star::uno::Reference<
1027 : ::com::sun::star::xml::sax::XAttributeList> & xAttrList) SAL_OVERRIDE;
1028 :
1029 : /// process attribute values
1030 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1031 : const OUString& sAttrValue ) SAL_OVERRIDE;
1032 :
1033 : /// prepare XTextField for insertion into document
1034 : virtual void PrepareField(
1035 : const ::com::sun::star::uno::Reference<
1036 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1037 : };
1038 :
1039 : /** import dde field declaration container (<text:dde-connection-decls>) */
1040 0 : class XMLDdeFieldDeclsImportContext : public SvXMLImportContext
1041 : {
1042 : SvXMLTokenMap aTokenMap;
1043 :
1044 : public:
1045 : TYPEINFO_OVERRIDE();
1046 :
1047 : XMLDdeFieldDeclsImportContext(SvXMLImport& rImport,
1048 : sal_uInt16 nPrfx,
1049 : const OUString& sLocalName);
1050 :
1051 : virtual SvXMLImportContext *CreateChildContext(
1052 : sal_uInt16 nPrefix,
1053 : const OUString& rLocalName,
1054 : const ::com::sun::star::uno::Reference<
1055 : ::com::sun::star::xml::sax::XAttributeList> & xAttrList ) SAL_OVERRIDE;
1056 : };
1057 :
1058 : /** import dde field declaration (<text:dde-connection-decl>) */
1059 0 : class XMLDdeFieldDeclImportContext : public SvXMLImportContext
1060 : {
1061 : const OUString sPropertyIsAutomaticUpdate;
1062 : const OUString sPropertyName;
1063 : const OUString sPropertyDDECommandType;
1064 : const OUString sPropertyDDECommandFile;
1065 : const OUString sPropertyDDECommandElement;
1066 :
1067 : const SvXMLTokenMap& rTokenMap;
1068 :
1069 : public:
1070 : TYPEINFO_OVERRIDE();
1071 :
1072 : XMLDdeFieldDeclImportContext(SvXMLImport& rImport,
1073 : sal_uInt16 nPrfx,
1074 : const OUString& sLocalName,
1075 : const SvXMLTokenMap& rMap);
1076 :
1077 : // create fieldmaster
1078 : virtual void StartElement(
1079 : const ::com::sun::star::uno::Reference<
1080 : ::com::sun::star::xml::sax::XAttributeList> & xAttrList) SAL_OVERRIDE;
1081 : };
1082 :
1083 : /** import dde fields (<text:dde-connection>) */
1084 0 : class XMLDdeFieldImportContext : public XMLTextFieldImportContext
1085 : {
1086 : OUString sName;
1087 : OUString sPropertyContent;
1088 :
1089 : public:
1090 : TYPEINFO_OVERRIDE();
1091 :
1092 : XMLDdeFieldImportContext(SvXMLImport& rImport,
1093 : XMLTextImportHelper& rHlp,
1094 : sal_uInt16 nPrfx,
1095 : const OUString& sLocalName);
1096 :
1097 : protected:
1098 : /// process attribute values
1099 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1100 : const OUString& sAttrValue ) SAL_OVERRIDE;
1101 :
1102 : /// create textfield, attach master, and insert into document
1103 : virtual void EndElement() SAL_OVERRIDE;
1104 :
1105 : /// empty method
1106 : virtual void PrepareField(
1107 : const ::com::sun::star::uno::Reference<
1108 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1109 : };
1110 :
1111 : /** import sheet name fields (Calc) dde fields (<text:sheet-name>) */
1112 704 : class XMLSheetNameImportContext : public XMLTextFieldImportContext
1113 : {
1114 :
1115 : public:
1116 : TYPEINFO_OVERRIDE();
1117 :
1118 : XMLSheetNameImportContext(SvXMLImport& rImport,
1119 : XMLTextImportHelper& rHlp,
1120 : sal_uInt16 nPrfx,
1121 : const OUString& sLocalName);
1122 :
1123 : protected:
1124 : /// no attributes -> empty method
1125 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1126 : const OUString& sAttrValue ) SAL_OVERRIDE;
1127 :
1128 : /// no attributes -> empty method
1129 : virtual void PrepareField(
1130 : const ::com::sun::star::uno::Reference<
1131 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1132 : };
1133 :
1134 : /** import page|slide name fields (<text:page-name>) */
1135 0 : class XMLPageNameFieldImportContext : public XMLTextFieldImportContext
1136 : {
1137 : public:
1138 : TYPEINFO_OVERRIDE();
1139 :
1140 : XMLPageNameFieldImportContext(
1141 : SvXMLImport& rImport, /// XML Import
1142 : XMLTextImportHelper& rHlp, /// Text import helper
1143 : sal_uInt16 nPrfx, /// namespace prefix
1144 : const OUString& sLocalName); /// element name w/o prefix
1145 :
1146 : /// process attribute values
1147 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1148 : const OUString& sAttrValue ) SAL_OVERRIDE;
1149 :
1150 : /// prepare XTextField for insertion into document
1151 : virtual void PrepareField(
1152 : const ::com::sun::star::uno::Reference<
1153 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1154 : };
1155 :
1156 : /** import hyperlinks as URL fields (Calc, Impress, Draw) (<office:a>) */
1157 2 : class XMLUrlFieldImportContext : public XMLTextFieldImportContext
1158 : {
1159 : const OUString sPropertyURL;
1160 : const OUString sPropertyTargetFrame;
1161 : const OUString sPropertyRepresentation;
1162 :
1163 : OUString sURL;
1164 : OUString sFrame;
1165 : bool bFrameOK;
1166 :
1167 : public:
1168 : TYPEINFO_OVERRIDE();
1169 :
1170 : XMLUrlFieldImportContext(SvXMLImport& rImport,
1171 : XMLTextImportHelper& rHlp,
1172 : sal_uInt16 nPrfx,
1173 : const OUString& sLocalName);
1174 :
1175 : protected:
1176 : /// no attributes -> empty method
1177 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1178 : const OUString& sAttrValue ) SAL_OVERRIDE;
1179 :
1180 : /// no attributes -> empty method
1181 : virtual void PrepareField(
1182 : const ::com::sun::star::uno::Reference<
1183 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1184 : };
1185 :
1186 : /** import bibliography info fields (<text:bibliography-mark>) */
1187 0 : class XMLBibliographyFieldImportContext : public XMLTextFieldImportContext
1188 : {
1189 : const OUString sPropertyFields;
1190 :
1191 : ::std::vector< ::com::sun::star::beans::PropertyValue> aValues;
1192 :
1193 : public:
1194 : TYPEINFO_OVERRIDE();
1195 :
1196 : XMLBibliographyFieldImportContext(SvXMLImport& rImport,
1197 : XMLTextImportHelper& rHlp,
1198 : sal_uInt16 nPrfx,
1199 : const OUString& sLocalName);
1200 :
1201 : protected:
1202 : /// process attributes (fill aValues)
1203 : virtual void StartElement(
1204 : const ::com::sun::star::uno::Reference<
1205 : ::com::sun::star::xml::sax::XAttributeList> & xAttrList) SAL_OVERRIDE;
1206 :
1207 : /// empty method; all attributes are handled in StartElement
1208 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1209 : const OUString& sAttrValue ) SAL_OVERRIDE;
1210 :
1211 : /// convert aValues into sequence and set property
1212 : virtual void PrepareField(
1213 : const ::com::sun::star::uno::Reference<
1214 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1215 :
1216 : static const sal_Char* MapBibliographyFieldName(const OUString& sName);
1217 : };
1218 :
1219 : /** Import an annotation field (<text:annotation>) */
1220 112 : class XMLAnnotationImportContext : public XMLTextFieldImportContext
1221 : {
1222 : const OUString sPropertyAuthor;
1223 : const OUString sPropertyInitials;
1224 : const OUString sPropertyContent;
1225 : const OUString sPropertyDate;
1226 : const OUString sPropertyTextRange;
1227 : const OUString sPropertyName;
1228 :
1229 : OUStringBuffer aAuthorBuffer;
1230 : OUStringBuffer aInitialsBuffer;
1231 : OUString aName;
1232 : OUStringBuffer aTextBuffer;
1233 : OUStringBuffer aDateBuffer;
1234 :
1235 : com::sun::star::uno::Reference < com::sun::star::beans::XPropertySet > mxField;
1236 : com::sun::star::uno::Reference < com::sun::star::text::XTextCursor > mxCursor;
1237 : com::sun::star::uno::Reference < com::sun::star::text::XTextCursor > mxOldCursor;
1238 :
1239 : sal_uInt16 m_nToken;
1240 :
1241 : public:
1242 : TYPEINFO_OVERRIDE();
1243 :
1244 : XMLAnnotationImportContext(SvXMLImport& rImport,
1245 : XMLTextImportHelper& rHlp,
1246 : sal_uInt16 nToken,
1247 : sal_uInt16 nPrfx,
1248 : const OUString& sLocalName);
1249 :
1250 : protected:
1251 : /// process attributes
1252 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1253 : const OUString& sAttrValue ) SAL_OVERRIDE;
1254 :
1255 : /// set properties
1256 : virtual void PrepareField(
1257 : const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & xPropertySet) SAL_OVERRIDE;
1258 :
1259 : virtual SvXMLImportContext *CreateChildContext(
1260 : sal_uInt16 nPrefix,
1261 : const OUString& rLocalName,
1262 : const ::com::sun::star::uno::Reference<
1263 : ::com::sun::star::xml::sax::XAttributeList >& xAttrList ) SAL_OVERRIDE;
1264 : virtual void EndElement() SAL_OVERRIDE;
1265 : };
1266 :
1267 : /** Import a script field (<text:script>) */
1268 0 : class XMLScriptImportContext : public XMLTextFieldImportContext
1269 : {
1270 : const OUString sPropertyScriptType;
1271 : const OUString sPropertyURLContent;
1272 : const OUString sPropertyContent;
1273 :
1274 : OUString sContent;
1275 : OUString sScriptType;
1276 :
1277 : bool bContentOK;
1278 : bool bScriptTypeOK;
1279 :
1280 : public:
1281 : TYPEINFO_OVERRIDE();
1282 :
1283 : XMLScriptImportContext(SvXMLImport& rImport,
1284 : XMLTextImportHelper& rHlp,
1285 : sal_uInt16 nPrfx,
1286 : const OUString& sLocalName);
1287 :
1288 : protected:
1289 : /// process attributes
1290 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1291 : const OUString& sAttrValue ) SAL_OVERRIDE;
1292 :
1293 : /// set properties
1294 : virtual void PrepareField(
1295 : const ::com::sun::star::uno::Reference<
1296 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1297 : };
1298 :
1299 : /** import measure fields (<text:measure>) */
1300 10 : class XMLMeasureFieldImportContext : public XMLTextFieldImportContext
1301 : {
1302 : sal_Int16 mnKind;
1303 :
1304 : public:
1305 : TYPEINFO_OVERRIDE();
1306 :
1307 : XMLMeasureFieldImportContext(SvXMLImport& rImport,
1308 : XMLTextImportHelper& rHlp,
1309 : sal_uInt16 nPrfx,
1310 : const OUString& sLocalName);
1311 :
1312 : protected:
1313 : /// process attribute values
1314 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1315 : const OUString& sAttrValue ) SAL_OVERRIDE;
1316 :
1317 : /// prepare XTextField for insertion into document
1318 : virtual void PrepareField(
1319 : const ::com::sun::star::uno::Reference<
1320 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1321 : };
1322 :
1323 : /** dropdown field (filter legacy) */
1324 0 : class XMLDropDownFieldImportContext : public XMLTextFieldImportContext
1325 : {
1326 : std::vector<OUString> aLabels;
1327 : OUString sName;
1328 : OUString sHelp;
1329 : OUString sHint;
1330 : sal_Int32 nSelected;
1331 : bool bNameOK;
1332 : bool bHelpOK;
1333 : bool bHintOK;
1334 :
1335 : const OUString sPropertyItems;
1336 : const OUString sPropertySelectedItem;
1337 : const OUString sPropertyName;
1338 : const OUString sPropertyHelp;
1339 : const OUString sPropertyToolTip;
1340 :
1341 : public:
1342 : TYPEINFO_OVERRIDE();
1343 :
1344 : XMLDropDownFieldImportContext(SvXMLImport& rImport,
1345 : XMLTextImportHelper& rHlp,
1346 : sal_uInt16 nPrfx,
1347 : const OUString& sLocalName);
1348 :
1349 : virtual SvXMLImportContext* CreateChildContext(
1350 : sal_uInt16 nPrefix,
1351 : const OUString& rLocalName,
1352 : const ::com::sun::star::uno::Reference<com::sun::star::xml::sax::XAttributeList >& xAttrList ) SAL_OVERRIDE;
1353 :
1354 : protected:
1355 : /// process attribute values
1356 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1357 : const OUString& sAttrValue ) SAL_OVERRIDE;
1358 :
1359 : /// prepare XTextField for insertion into document
1360 : virtual void PrepareField(
1361 : const ::com::sun::star::uno::Reference<
1362 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1363 : };
1364 :
1365 : /** import header fields (<draw:header>) */
1366 166 : class XMLHeaderFieldImportContext : public XMLTextFieldImportContext
1367 : {
1368 : public:
1369 : TYPEINFO_OVERRIDE();
1370 :
1371 : XMLHeaderFieldImportContext(
1372 : SvXMLImport& rImport, /// XML Import
1373 : XMLTextImportHelper& rHlp, /// Text import helper
1374 : sal_uInt16 nPrfx, /// namespace prefix
1375 : const OUString& sLocalName); /// element name w/o prefix
1376 :
1377 : /// process attribute values
1378 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1379 : const OUString& sAttrValue ) SAL_OVERRIDE;
1380 :
1381 : /// prepare XTextField for insertion into document
1382 : virtual void PrepareField(
1383 : const ::com::sun::star::uno::Reference<
1384 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1385 : };
1386 :
1387 : /** import footer fields (<draw:footer>) */
1388 240 : class XMLFooterFieldImportContext : public XMLTextFieldImportContext
1389 : {
1390 : public:
1391 : TYPEINFO_OVERRIDE();
1392 :
1393 : XMLFooterFieldImportContext(
1394 : SvXMLImport& rImport, /// XML Import
1395 : XMLTextImportHelper& rHlp, /// Text import helper
1396 : sal_uInt16 nPrfx, /// namespace prefix
1397 : const OUString& sLocalName); /// element name w/o prefix
1398 :
1399 : /// process attribute values
1400 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1401 : const OUString& sAttrValue ) SAL_OVERRIDE;
1402 :
1403 : /// prepare XTextField for insertion into document
1404 : virtual void PrepareField(
1405 : const ::com::sun::star::uno::Reference<
1406 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1407 : };
1408 :
1409 : /** import footer fields (<draw:date-and-time>) */
1410 240 : class XMLDateTimeFieldImportContext : public XMLTextFieldImportContext
1411 : {
1412 : public:
1413 : TYPEINFO_OVERRIDE();
1414 :
1415 : XMLDateTimeFieldImportContext(
1416 : SvXMLImport& rImport, /// XML Import
1417 : XMLTextImportHelper& rHlp, /// Text import helper
1418 : sal_uInt16 nPrfx, /// namespace prefix
1419 : const OUString& sLocalName); /// element name w/o prefix
1420 :
1421 : /// process attribute values
1422 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1423 : const OUString& sAttrValue ) SAL_OVERRIDE;
1424 :
1425 : /// prepare XTextField for insertion into document
1426 : virtual void PrepareField(
1427 : const ::com::sun::star::uno::Reference<
1428 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1429 : };
1430 :
1431 : class XMLCustomPropertyFieldImportContext : public XMLTextFieldImportContext
1432 : {
1433 : OUString sName;
1434 : ::com::sun::star::uno::Any aValue;
1435 : const OUString sPropertyName;
1436 : const OUString sPropertyValue;
1437 :
1438 : public:
1439 : TYPEINFO_OVERRIDE();
1440 :
1441 : XMLCustomPropertyFieldImportContext (SvXMLImport& rImport,
1442 : XMLTextImportHelper& rHlp,
1443 : sal_uInt16 nPrfx,
1444 : const OUString& sLocalName);
1445 :
1446 : protected:
1447 : /// process attribute values
1448 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1449 : const OUString& sAttrValue ) SAL_OVERRIDE;
1450 :
1451 : /// prepare XTextField for insertion into document
1452 : virtual void PrepareField(
1453 : const ::com::sun::star::uno::Reference<
1454 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1455 : };
1456 :
1457 : #endif
1458 :
1459 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|