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