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