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 570 : inline XMLTextImportHelper& GetImportHelper() { return rTextImportHelper; }
160 :
161 2790 : inline OUString GetServiceName() { return sServiceName; }
162 0 : 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 : void ForceUpdate(
183 : const ::com::sun::star::uno::Reference<
184 : ::com::sun::star::beans::XPropertySet> & rPropertySet);
185 : };
186 :
187 0 : 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 0 : 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 32 : 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 816 : 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 568 : 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 1420 : 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 32 : 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 556 : 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 0 : 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 16 : 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 0 : 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 592 : 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 52 : 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 1128 : 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 hyperlinks as URL fields (Calc, Impress, Draw) (<office:a>) */
1135 4 : class XMLUrlFieldImportContext : public XMLTextFieldImportContext
1136 : {
1137 : const OUString sPropertyURL;
1138 : const OUString sPropertyTargetFrame;
1139 : const OUString sPropertyRepresentation;
1140 :
1141 : OUString sURL;
1142 : OUString sFrame;
1143 : bool bFrameOK;
1144 :
1145 : public:
1146 : TYPEINFO_OVERRIDE();
1147 :
1148 : XMLUrlFieldImportContext(SvXMLImport& rImport,
1149 : XMLTextImportHelper& rHlp,
1150 : sal_uInt16 nPrfx,
1151 : const OUString& sLocalName);
1152 :
1153 : protected:
1154 : /// no attributes -> empty method
1155 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1156 : const OUString& sAttrValue ) SAL_OVERRIDE;
1157 :
1158 : /// no attributes -> empty method
1159 : virtual void PrepareField(
1160 : const ::com::sun::star::uno::Reference<
1161 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1162 : };
1163 :
1164 : /** import bibliography info fields (<text:bibliography-mark>) */
1165 0 : class XMLBibliographyFieldImportContext : public XMLTextFieldImportContext
1166 : {
1167 : const OUString sPropertyFields;
1168 :
1169 : ::std::vector< ::com::sun::star::beans::PropertyValue> aValues;
1170 :
1171 : public:
1172 : TYPEINFO_OVERRIDE();
1173 :
1174 : XMLBibliographyFieldImportContext(SvXMLImport& rImport,
1175 : XMLTextImportHelper& rHlp,
1176 : sal_uInt16 nPrfx,
1177 : const OUString& sLocalName);
1178 :
1179 : protected:
1180 : /// process attributes (fill aValues)
1181 : virtual void StartElement(
1182 : const ::com::sun::star::uno::Reference<
1183 : ::com::sun::star::xml::sax::XAttributeList> & xAttrList) SAL_OVERRIDE;
1184 :
1185 : /// empty method; all attributes are handled in StartElement
1186 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1187 : const OUString& sAttrValue ) SAL_OVERRIDE;
1188 :
1189 : /// convert aValues into sequence and set property
1190 : virtual void PrepareField(
1191 : const ::com::sun::star::uno::Reference<
1192 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1193 :
1194 : static const sal_Char* MapBibliographyFieldName(const OUString& sName);
1195 : };
1196 :
1197 : /** Import an annotation field (<text:annotation>) */
1198 152 : class XMLAnnotationImportContext : public XMLTextFieldImportContext
1199 : {
1200 : const OUString sPropertyAuthor;
1201 : const OUString sPropertyInitials;
1202 : const OUString sPropertyContent;
1203 : const OUString sPropertyDate;
1204 : const OUString sPropertyTextRange;
1205 : const OUString sPropertyName;
1206 :
1207 : OUStringBuffer aAuthorBuffer;
1208 : OUStringBuffer aInitialsBuffer;
1209 : OUString aName;
1210 : OUStringBuffer aTextBuffer;
1211 : OUStringBuffer aDateBuffer;
1212 :
1213 : com::sun::star::uno::Reference < com::sun::star::beans::XPropertySet > mxField;
1214 : com::sun::star::uno::Reference < com::sun::star::text::XTextCursor > mxCursor;
1215 : com::sun::star::uno::Reference < com::sun::star::text::XTextCursor > mxOldCursor;
1216 :
1217 : sal_uInt16 m_nToken;
1218 :
1219 : public:
1220 : TYPEINFO_OVERRIDE();
1221 :
1222 : XMLAnnotationImportContext(SvXMLImport& rImport,
1223 : XMLTextImportHelper& rHlp,
1224 : sal_uInt16 nToken,
1225 : sal_uInt16 nPrfx,
1226 : const OUString& sLocalName);
1227 :
1228 : protected:
1229 : /// process attributes
1230 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1231 : const OUString& sAttrValue ) SAL_OVERRIDE;
1232 :
1233 : /// set properties
1234 : virtual void PrepareField(
1235 : const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > & xPropertySet) SAL_OVERRIDE;
1236 :
1237 : virtual SvXMLImportContext *CreateChildContext(
1238 : sal_uInt16 nPrefix,
1239 : const OUString& rLocalName,
1240 : const ::com::sun::star::uno::Reference<
1241 : ::com::sun::star::xml::sax::XAttributeList >& xAttrList ) SAL_OVERRIDE;
1242 : virtual void EndElement() SAL_OVERRIDE;
1243 : };
1244 :
1245 : /** Import a script field (<text:script>) */
1246 0 : class XMLScriptImportContext : public XMLTextFieldImportContext
1247 : {
1248 : const OUString sPropertyScriptType;
1249 : const OUString sPropertyURLContent;
1250 : const OUString sPropertyContent;
1251 :
1252 : OUString sContent;
1253 : OUString sScriptType;
1254 :
1255 : bool bContentOK;
1256 : bool bScriptTypeOK;
1257 :
1258 : public:
1259 : TYPEINFO_OVERRIDE();
1260 :
1261 : XMLScriptImportContext(SvXMLImport& rImport,
1262 : XMLTextImportHelper& rHlp,
1263 : sal_uInt16 nPrfx,
1264 : const OUString& sLocalName);
1265 :
1266 : protected:
1267 : /// process attributes
1268 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1269 : const OUString& sAttrValue ) SAL_OVERRIDE;
1270 :
1271 : /// set properties
1272 : virtual void PrepareField(
1273 : const ::com::sun::star::uno::Reference<
1274 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1275 : };
1276 :
1277 : /** import measure fields (<text:measure>) */
1278 16 : class XMLMeasureFieldImportContext : public XMLTextFieldImportContext
1279 : {
1280 : sal_Int16 mnKind;
1281 :
1282 : public:
1283 : TYPEINFO_OVERRIDE();
1284 :
1285 : XMLMeasureFieldImportContext(SvXMLImport& rImport,
1286 : XMLTextImportHelper& rHlp,
1287 : sal_uInt16 nPrfx,
1288 : const OUString& sLocalName);
1289 :
1290 : protected:
1291 : /// process attribute values
1292 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1293 : const OUString& sAttrValue ) SAL_OVERRIDE;
1294 :
1295 : /// prepare XTextField for insertion into document
1296 : virtual void PrepareField(
1297 : const ::com::sun::star::uno::Reference<
1298 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1299 : };
1300 :
1301 : /** dropdown field (filter legacy) */
1302 0 : class XMLDropDownFieldImportContext : public XMLTextFieldImportContext
1303 : {
1304 : std::vector<OUString> aLabels;
1305 : OUString sName;
1306 : OUString sHelp;
1307 : OUString sHint;
1308 : sal_Int32 nSelected;
1309 : bool bNameOK;
1310 : bool bHelpOK;
1311 : bool bHintOK;
1312 :
1313 : const OUString sPropertyItems;
1314 : const OUString sPropertySelectedItem;
1315 : const OUString sPropertyName;
1316 : const OUString sPropertyHelp;
1317 : const OUString sPropertyToolTip;
1318 :
1319 : public:
1320 : TYPEINFO_OVERRIDE();
1321 :
1322 : XMLDropDownFieldImportContext(SvXMLImport& rImport,
1323 : XMLTextImportHelper& rHlp,
1324 : sal_uInt16 nPrfx,
1325 : const OUString& sLocalName);
1326 :
1327 : virtual SvXMLImportContext* CreateChildContext(
1328 : sal_uInt16 nPrefix,
1329 : const OUString& rLocalName,
1330 : const ::com::sun::star::uno::Reference<com::sun::star::xml::sax::XAttributeList >& xAttrList ) SAL_OVERRIDE;
1331 :
1332 : protected:
1333 : /// process attribute values
1334 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1335 : const OUString& sAttrValue ) SAL_OVERRIDE;
1336 :
1337 : /// prepare XTextField for insertion into document
1338 : virtual void PrepareField(
1339 : const ::com::sun::star::uno::Reference<
1340 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1341 : };
1342 :
1343 : /** import header fields (<draw:header>) */
1344 132 : class XMLHeaderFieldImportContext : public XMLTextFieldImportContext
1345 : {
1346 : public:
1347 : TYPEINFO_OVERRIDE();
1348 :
1349 : XMLHeaderFieldImportContext(
1350 : SvXMLImport& rImport, /// XML Import
1351 : XMLTextImportHelper& rHlp, /// Text import helper
1352 : sal_uInt16 nPrfx, /// namespace prefix
1353 : const OUString& sLocalName); /// element name w/o prefix
1354 :
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 footer fields (<draw:footer>) */
1366 192 : class XMLFooterFieldImportContext : public XMLTextFieldImportContext
1367 : {
1368 : public:
1369 : TYPEINFO_OVERRIDE();
1370 :
1371 : XMLFooterFieldImportContext(
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:date-and-time>) */
1388 192 : class XMLDateTimeFieldImportContext : public XMLTextFieldImportContext
1389 : {
1390 : public:
1391 : TYPEINFO_OVERRIDE();
1392 :
1393 : XMLDateTimeFieldImportContext(
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 : class XMLCustomPropertyFieldImportContext : public XMLTextFieldImportContext
1410 : {
1411 : OUString sName;
1412 : ::com::sun::star::uno::Any aValue;
1413 : const OUString sPropertyName;
1414 : const OUString sPropertyValue;
1415 :
1416 : public:
1417 : TYPEINFO_OVERRIDE();
1418 :
1419 : XMLCustomPropertyFieldImportContext (SvXMLImport& rImport,
1420 : XMLTextImportHelper& rHlp,
1421 : sal_uInt16 nPrfx,
1422 : const OUString& sLocalName);
1423 :
1424 : protected:
1425 : /// process attribute values
1426 : virtual void ProcessAttribute( sal_uInt16 nAttrToken,
1427 : const OUString& sAttrValue ) SAL_OVERRIDE;
1428 :
1429 : /// prepare XTextField for insertion into document
1430 : virtual void PrepareField(
1431 : const ::com::sun::star::uno::Reference<
1432 : ::com::sun::star::beans::XPropertySet> & xPropertySet) SAL_OVERRIDE;
1433 : };
1434 :
1435 : #endif
1436 :
1437 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|