1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_xmloff.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski /** @#file
28*b1cdbd2cSJim Jagielski *
29*b1cdbd2cSJim Jagielski * export of all text fields
30*b1cdbd2cSJim Jagielski */
31*b1cdbd2cSJim Jagielski #include "txtflde.hxx"
32*b1cdbd2cSJim Jagielski #include <xmloff/xmlexp.hxx>
33*b1cdbd2cSJim Jagielski #include <xmloff/xmlnumfe.hxx>
34*b1cdbd2cSJim Jagielski #include <xmloff/xmltoken.hxx>
35*b1cdbd2cSJim Jagielski #include <xmloff/xmlement.hxx>
36*b1cdbd2cSJim Jagielski #include <xmloff/xmluconv.hxx>
37*b1cdbd2cSJim Jagielski #include <xmloff/xmlnume.hxx>
38*b1cdbd2cSJim Jagielski #include "xmloff/numehelp.hxx"
39*b1cdbd2cSJim Jagielski
40*b1cdbd2cSJim Jagielski #include <xmloff/families.hxx>
41*b1cdbd2cSJim Jagielski #include <xmloff/XMLEventExport.hxx>
42*b1cdbd2cSJim Jagielski #include "XMLTextCharStyleNamesElementExport.hxx"
43*b1cdbd2cSJim Jagielski #include <xmloff/nmspmap.hxx>
44*b1cdbd2cSJim Jagielski #include <com/sun/star/util/DateTime.hpp>
45*b1cdbd2cSJim Jagielski #include <com/sun/star/util/Date.hpp>
46*b1cdbd2cSJim Jagielski #include <com/sun/star/lang/XServiceInfo.hpp>
47*b1cdbd2cSJim Jagielski #include <com/sun/star/text/UserDataPart.hpp>
48*b1cdbd2cSJim Jagielski #include <com/sun/star/text/PageNumberType.hpp>
49*b1cdbd2cSJim Jagielski #include <com/sun/star/style/NumberingType.hpp>
50*b1cdbd2cSJim Jagielski #include <com/sun/star/text/ReferenceFieldPart.hpp>
51*b1cdbd2cSJim Jagielski #include <com/sun/star/text/ReferenceFieldSource.hpp>
52*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertySet.hpp>
53*b1cdbd2cSJim Jagielski #include <com/sun/star/beans/XPropertyState.hpp>
54*b1cdbd2cSJim Jagielski #include <com/sun/star/text/XTextField.hpp>
55*b1cdbd2cSJim Jagielski #include <com/sun/star/text/XDependentTextField.hpp>
56*b1cdbd2cSJim Jagielski #include <com/sun/star/text/XTextFieldsSupplier.hpp>
57*b1cdbd2cSJim Jagielski
58*b1cdbd2cSJim Jagielski #include <com/sun/star/text/SetVariableType.hpp>
59*b1cdbd2cSJim Jagielski #include <com/sun/star/text/PlaceholderType.hpp>
60*b1cdbd2cSJim Jagielski #include <com/sun/star/text/FilenameDisplayFormat.hpp>
61*b1cdbd2cSJim Jagielski #include <com/sun/star/text/ChapterFormat.hpp>
62*b1cdbd2cSJim Jagielski #include <com/sun/star/text/TemplateDisplayFormat.hpp>
63*b1cdbd2cSJim Jagielski #include <com/sun/star/frame/XModel.hpp>
64*b1cdbd2cSJim Jagielski #include <com/sun/star/container/XNameReplace.hpp>
65*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Sequence.h>
66*b1cdbd2cSJim Jagielski #include <com/sun/star/util/NumberFormat.hpp>
67*b1cdbd2cSJim Jagielski #include <com/sun/star/text/BibliographyDataType.hpp>
68*b1cdbd2cSJim Jagielski #include <com/sun/star/sdb/CommandType.hpp>
69*b1cdbd2cSJim Jagielski #include <com/sun/star/rdf/XMetadatable.hpp>
70*b1cdbd2cSJim Jagielski #include <rtl/ustrbuf.hxx>
71*b1cdbd2cSJim Jagielski #include <tools/debug.hxx>
72*b1cdbd2cSJim Jagielski #include <rtl/math.hxx>
73*b1cdbd2cSJim Jagielski
74*b1cdbd2cSJim Jagielski #include <vector>
75*b1cdbd2cSJim Jagielski
76*b1cdbd2cSJim Jagielski using ::rtl::OUString;
77*b1cdbd2cSJim Jagielski using ::rtl::OUStringBuffer;
78*b1cdbd2cSJim Jagielski
79*b1cdbd2cSJim Jagielski using namespace ::std;
80*b1cdbd2cSJim Jagielski using namespace ::com::sun::star;
81*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::uno;
82*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::text;
83*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::lang;
84*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::beans;
85*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::util;
86*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::style;
87*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::document;
88*b1cdbd2cSJim Jagielski using namespace ::com::sun::star::container;
89*b1cdbd2cSJim Jagielski using namespace ::xmloff::token;
90*b1cdbd2cSJim Jagielski
91*b1cdbd2cSJim Jagielski
92*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_SENDER[] = "ExtendedUser";
93*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_AUTHOR[] = "Author";
94*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_JUMPEDIT[] = "JumpEdit";
95*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_GETEXP[] = "GetExpression";
96*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_SETEXP[] = "SetExpression";
97*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_USER[] = "User";
98*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_INPUT[] = "Input";
99*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_USERINPUT[] = "InputUser";
100*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DATETIME[] = "DateTime";
101*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_PAGENUMBER[] = "PageNumber";
102*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DB_NEXT[] = "DatabaseNextSet";
103*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DB_SELECT[] = "DatabaseNumberOfSet";
104*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DB_NUMBER[] = "DatabaseSetNumber";
105*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DB_DISPLAY[] = "Database";
106*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DB_NAME[] = "DatabaseName";
107*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_CONDITIONAL_TEXT[] = "ConditionalText";
108*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_HIDDEN_TEXT[] = "HiddenText";
109*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_HIDDEN_PARAGRAPH[] = "HiddenParagraph";
110*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_CHANGE_AUTHOR[] = "DocInfo.ChangeAuthor";
111*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_CHANGE_AUTHOR2[] = "docinfo.ChangeAuthor";
112*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_CHANGE_DATE_TIME[] = "DocInfo.ChangeDateTime";
113*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_CHANGE_DATE_TIME2[] = "docinfo.ChangeDateTime";
114*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_EDIT_TIME[] = "DocInfo.EditTime";
115*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_EDIT_TIME2[] = "docinfo.EditTime";
116*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_DESCRIPTION[] = "DocInfo.Description";
117*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_DESCRIPTION2[] = "docinfo.Description";
118*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_CREATE_AUTHOR[] = "DocInfo.CreateAuthor";
119*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_CREATE_AUTHOR2[] = "docinfo.CreateAuthor";
120*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_CREATE_DATE_TIME[] = "DocInfo.CreateDateTime";
121*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_CREATE_DATE_TIME2[] = "docinfo.CreateDateTime";
122*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_CUSTOM[] = "DocInfo.Custom";
123*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_CUSTOM2[] = "docinfo.Custom";
124*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_PRINT_AUTHOR[] = "DocInfo.PrintAuthor";
125*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_PRINT_AUTHOR2[] = "docinfo.PrintAuthor";
126*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_PRINT_DATE_TIME[] = "DocInfo.PrintDateTime";
127*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_PRINT_DATE_TIME2[] = "docinfo.PrintDateTime";
128*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_KEY_WORDS[] = "DocInfo.KeyWords";
129*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_KEY_WORDS2[] = "docinfo.KeyWords";
130*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_SUBJECT[] = "DocInfo.Subject";
131*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_SUBJECT2[] = "docinfo.Subject";
132*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_TITLE[] = "DocInfo.Title";
133*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_TITLE2[] = "docinfo.Title";
134*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_REVISION[] = "DocInfo.Revision";
135*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DOC_INFO_REVISION2[] = "docinfo.Revision";
136*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_FILE_NAME[] = "FileName";
137*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_CHAPTER[] = "Chapter";
138*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_TEMPLATE_NAME[] = "TemplateName";
139*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_PAGE_COUNT[] = "PageCount";
140*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_PARAGRAPH_COUNT[] = "ParagraphCount";
141*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_WORD_COUNT[] = "WordCount";
142*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_CHARACTER_COUNT[] = "CharacterCount";
143*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_TABLE_COUNT[] = "TableCount";
144*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_GRAPHIC_COUNT[] = "GraphicObjectCount";
145*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_OBJECT_COUNT[] = "EmbeddedObjectCount";
146*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_REFERENCE_PAGE_SET[] = "ReferencePageSet";
147*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_REFERENCE_PAGE_GET[] = "ReferencePageGet";
148*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_SHEET_NAME[] = "SheetName";
149*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_MACRO[] = "Macro";
150*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_GET_REFERENCE[] = "GetReference";
151*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DDE[] = "DDE";
152*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_URL[] = "URL";
153*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_BIBLIOGRAPHY[] = "Bibliography";
154*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_SCRIPT[] = "Script";
155*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_ANNOTATION[] = "Annotation";
156*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_COMBINED_CHARACTERS[] = "CombinedCharacters";
157*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_META[] = "MetadataField";
158*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_MEASURE[] = "Measure";
159*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_TABLE_FORMULA[] = "TableFormula";
160*b1cdbd2cSJim Jagielski static sal_Char __READONLY_DATA FIELD_SERVICE_DROP_DOWN[] = "DropDown";
161*b1cdbd2cSJim Jagielski
162*b1cdbd2cSJim Jagielski SvXMLEnumStringMapEntry __READONLY_DATA aFieldServiceNameMapping[] =
163*b1cdbd2cSJim Jagielski {
164*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_SENDER, FIELD_ID_SENDER ),
165*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_AUTHOR, FIELD_ID_AUTHOR ),
166*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_JUMPEDIT, FIELD_ID_PLACEHOLDER ),
167*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_GETEXP, FIELD_ID_VARIABLE_GET ),
168*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_SETEXP, FIELD_ID_VARIABLE_SET ),
169*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_USER, FIELD_ID_USER_GET ),
170*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_INPUT, FIELD_ID_TEXT_INPUT ),
171*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_USERINPUT, FIELD_ID_USER_INPUT ),
172*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DATETIME, FIELD_ID_TIME ),
173*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_PAGENUMBER, FIELD_ID_PAGENUMBER ),
174*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_REFERENCE_PAGE_SET, FIELD_ID_REFPAGE_SET ),
175*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_REFERENCE_PAGE_GET, FIELD_ID_REFPAGE_GET ),
176*b1cdbd2cSJim Jagielski
177*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DB_NEXT, FIELD_ID_DATABASE_NEXT ),
178*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DB_SELECT, FIELD_ID_DATABASE_SELECT ),
179*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DB_NUMBER, FIELD_ID_DATABASE_NUMBER ),
180*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DB_DISPLAY, FIELD_ID_DATABASE_DISPLAY ),
181*b1cdbd2cSJim Jagielski // workaround for #no-bug#: Database/DataBase
182*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( "DataBase", FIELD_ID_DATABASE_DISPLAY ),
183*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DB_NAME, FIELD_ID_DATABASE_NAME ),
184*b1cdbd2cSJim Jagielski
185*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_CREATE_AUTHOR, FIELD_ID_DOCINFO_CREATION_AUTHOR ),
186*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_CREATE_AUTHOR2, FIELD_ID_DOCINFO_CREATION_AUTHOR ),
187*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_CREATE_DATE_TIME, FIELD_ID_DOCINFO_CREATION_TIME),
188*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_CREATE_DATE_TIME2, FIELD_ID_DOCINFO_CREATION_TIME),
189*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_CHANGE_AUTHOR, FIELD_ID_DOCINFO_SAVE_AUTHOR ),
190*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_CHANGE_AUTHOR2, FIELD_ID_DOCINFO_SAVE_AUTHOR ),
191*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_CHANGE_DATE_TIME, FIELD_ID_DOCINFO_SAVE_TIME ),
192*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_CHANGE_DATE_TIME2, FIELD_ID_DOCINFO_SAVE_TIME ),
193*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_EDIT_TIME, FIELD_ID_DOCINFO_EDIT_DURATION ),
194*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_EDIT_TIME2, FIELD_ID_DOCINFO_EDIT_DURATION ),
195*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_DESCRIPTION, FIELD_ID_DOCINFO_DESCRIPTION ),
196*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_DESCRIPTION2, FIELD_ID_DOCINFO_DESCRIPTION ),
197*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_CUSTOM, FIELD_ID_DOCINFO_CUSTOM ),
198*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_CUSTOM2, FIELD_ID_DOCINFO_CUSTOM ),
199*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_PRINT_AUTHOR, FIELD_ID_DOCINFO_PRINT_AUTHOR ),
200*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_PRINT_AUTHOR2, FIELD_ID_DOCINFO_PRINT_AUTHOR ),
201*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_PRINT_DATE_TIME, FIELD_ID_DOCINFO_PRINT_TIME ),
202*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_PRINT_DATE_TIME2, FIELD_ID_DOCINFO_PRINT_TIME ),
203*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_KEY_WORDS, FIELD_ID_DOCINFO_KEYWORDS ),
204*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_KEY_WORDS2, FIELD_ID_DOCINFO_KEYWORDS ),
205*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_SUBJECT, FIELD_ID_DOCINFO_SUBJECT ),
206*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_SUBJECT2, FIELD_ID_DOCINFO_SUBJECT ),
207*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_TITLE, FIELD_ID_DOCINFO_TITLE ),
208*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_TITLE2, FIELD_ID_DOCINFO_TITLE ),
209*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_REVISION, FIELD_ID_DOCINFO_REVISION ),
210*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DOC_INFO_REVISION2, FIELD_ID_DOCINFO_REVISION ),
211*b1cdbd2cSJim Jagielski
212*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_CONDITIONAL_TEXT, FIELD_ID_CONDITIONAL_TEXT ),
213*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_HIDDEN_TEXT, FIELD_ID_HIDDEN_TEXT ),
214*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_HIDDEN_PARAGRAPH, FIELD_ID_HIDDEN_PARAGRAPH ),
215*b1cdbd2cSJim Jagielski
216*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_FILE_NAME, FIELD_ID_FILE_NAME ),
217*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_CHAPTER, FIELD_ID_CHAPTER ),
218*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_TEMPLATE_NAME, FIELD_ID_TEMPLATE_NAME ),
219*b1cdbd2cSJim Jagielski
220*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_PAGE_COUNT, FIELD_ID_COUNT_PAGES ),
221*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_PARAGRAPH_COUNT, FIELD_ID_COUNT_PARAGRAPHS ),
222*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_WORD_COUNT, FIELD_ID_COUNT_WORDS ),
223*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_CHARACTER_COUNT, FIELD_ID_COUNT_CHARACTERS ),
224*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_TABLE_COUNT, FIELD_ID_COUNT_TABLES ),
225*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_GRAPHIC_COUNT, FIELD_ID_COUNT_GRAPHICS ),
226*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_OBJECT_COUNT, FIELD_ID_COUNT_OBJECTS ),
227*b1cdbd2cSJim Jagielski
228*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_MACRO, FIELD_ID_MACRO ),
229*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_GET_REFERENCE, FIELD_ID_REF_REFERENCE ),
230*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DDE, FIELD_ID_DDE ),
231*b1cdbd2cSJim Jagielski
232*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_BIBLIOGRAPHY, FIELD_ID_BIBLIOGRAPHY ),
233*b1cdbd2cSJim Jagielski
234*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_SCRIPT, FIELD_ID_SCRIPT ),
235*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_ANNOTATION, FIELD_ID_ANNOTATION ),
236*b1cdbd2cSJim Jagielski
237*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_COMBINED_CHARACTERS, FIELD_ID_COMBINED_CHARACTERS ),
238*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_META, FIELD_ID_META ),
239*b1cdbd2cSJim Jagielski
240*b1cdbd2cSJim Jagielski // non-writer fields
241*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_SHEET_NAME, FIELD_ID_SHEET_NAME ),
242*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_URL, FIELD_ID_URL ),
243*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_MEASURE, FIELD_ID_MEASURE ),
244*b1cdbd2cSJim Jagielski
245*b1cdbd2cSJim Jagielski // deprecated fields
246*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_TABLE_FORMULA, FIELD_ID_TABLE_FORMULA ),
247*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_ENTRY( FIELD_SERVICE_DROP_DOWN, FIELD_ID_DROP_DOWN ),
248*b1cdbd2cSJim Jagielski
249*b1cdbd2cSJim Jagielski ENUM_STRING_MAP_END()
250*b1cdbd2cSJim Jagielski };
251*b1cdbd2cSJim Jagielski
252*b1cdbd2cSJim Jagielski
253*b1cdbd2cSJim Jagielski
254*b1cdbd2cSJim Jagielski // property accessor helper functions
255*b1cdbd2cSJim Jagielski inline sal_Bool GetBoolProperty(const OUString&,
256*b1cdbd2cSJim Jagielski const Reference<XPropertySet> &);
257*b1cdbd2cSJim Jagielski inline sal_Bool GetOptionalBoolProperty(const OUString&,
258*b1cdbd2cSJim Jagielski const Reference<XPropertySet> &,
259*b1cdbd2cSJim Jagielski const Reference<XPropertySetInfo> &,
260*b1cdbd2cSJim Jagielski sal_Bool bDefault);
261*b1cdbd2cSJim Jagielski inline double GetDoubleProperty(const OUString&,
262*b1cdbd2cSJim Jagielski const Reference<XPropertySet> &);
263*b1cdbd2cSJim Jagielski inline OUString const GetStringProperty(const OUString&,
264*b1cdbd2cSJim Jagielski const Reference<XPropertySet> &);
265*b1cdbd2cSJim Jagielski inline sal_Int32 GetIntProperty(const OUString&,
266*b1cdbd2cSJim Jagielski const Reference<XPropertySet> &);
267*b1cdbd2cSJim Jagielski inline sal_Int16 GetInt16Property(const OUString&,
268*b1cdbd2cSJim Jagielski const Reference<XPropertySet> &);
269*b1cdbd2cSJim Jagielski inline sal_Int8 GetInt8Property(const OUString&,
270*b1cdbd2cSJim Jagielski const Reference<XPropertySet> &);
271*b1cdbd2cSJim Jagielski inline DateTime const GetDateTimeProperty( const OUString& sPropName,
272*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet);
273*b1cdbd2cSJim Jagielski inline Date const GetDateProperty( const OUString& sPropName,
274*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet);
275*b1cdbd2cSJim Jagielski inline Sequence<OUString> const GetStringSequenceProperty(
276*b1cdbd2cSJim Jagielski const OUString& sPropName,
277*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet);
278*b1cdbd2cSJim Jagielski
279*b1cdbd2cSJim Jagielski
280*b1cdbd2cSJim Jagielski
XMLTextFieldExport(SvXMLExport & rExp,XMLPropertyState * pCombinedCharState)281*b1cdbd2cSJim Jagielski XMLTextFieldExport::XMLTextFieldExport( SvXMLExport& rExp,
282*b1cdbd2cSJim Jagielski XMLPropertyState* pCombinedCharState)
283*b1cdbd2cSJim Jagielski : rExport(rExp),
284*b1cdbd2cSJim Jagielski pUsedMasters(NULL),
285*b1cdbd2cSJim Jagielski sServicePrefix(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.textfield.")),
286*b1cdbd2cSJim Jagielski sFieldMasterPrefix(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.FieldMaster.")),
287*b1cdbd2cSJim Jagielski sPresentationServicePrefix(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.TextField.")),
288*b1cdbd2cSJim Jagielski
289*b1cdbd2cSJim Jagielski sPropertyAdjust(RTL_CONSTASCII_USTRINGPARAM("Adjust")),
290*b1cdbd2cSJim Jagielski sPropertyAuthor(RTL_CONSTASCII_USTRINGPARAM("Author")),
291*b1cdbd2cSJim Jagielski sPropertyChapterFormat(RTL_CONSTASCII_USTRINGPARAM("ChapterFormat")),
292*b1cdbd2cSJim Jagielski sPropertyChapterNumberingLevel(RTL_CONSTASCII_USTRINGPARAM("ChapterNumberingLevel")),
293*b1cdbd2cSJim Jagielski sPropertyCharStyleNames(RTL_CONSTASCII_USTRINGPARAM("CharStyleNames")),
294*b1cdbd2cSJim Jagielski sPropertyCondition(RTL_CONSTASCII_USTRINGPARAM("Condition")),
295*b1cdbd2cSJim Jagielski sPropertyContent(RTL_CONSTASCII_USTRINGPARAM("Content")),
296*b1cdbd2cSJim Jagielski sPropertyDataBaseName(RTL_CONSTASCII_USTRINGPARAM("DataBaseName")),
297*b1cdbd2cSJim Jagielski sPropertyDataBaseURL(RTL_CONSTASCII_USTRINGPARAM("DataBaseURL")),
298*b1cdbd2cSJim Jagielski sPropertyDataColumnName(RTL_CONSTASCII_USTRINGPARAM("DataColumnName")),
299*b1cdbd2cSJim Jagielski sPropertyDataCommandType(RTL_CONSTASCII_USTRINGPARAM("DataCommandType")),
300*b1cdbd2cSJim Jagielski sPropertyDataTableName(RTL_CONSTASCII_USTRINGPARAM("DataTableName")),
301*b1cdbd2cSJim Jagielski sPropertyDate(RTL_CONSTASCII_USTRINGPARAM("Date")),
302*b1cdbd2cSJim Jagielski sPropertyDateTime(RTL_CONSTASCII_USTRINGPARAM("DateTime")),
303*b1cdbd2cSJim Jagielski sPropertyDateTimeValue(RTL_CONSTASCII_USTRINGPARAM("DateTimeValue")),
304*b1cdbd2cSJim Jagielski sPropertyDDECommandElement(RTL_CONSTASCII_USTRINGPARAM("DDECommandElement")),
305*b1cdbd2cSJim Jagielski sPropertyDDECommandFile(RTL_CONSTASCII_USTRINGPARAM("DDECommandFile")),
306*b1cdbd2cSJim Jagielski sPropertyDDECommandType(RTL_CONSTASCII_USTRINGPARAM("DDECommandType")),
307*b1cdbd2cSJim Jagielski sPropertyDependentTextFields(RTL_CONSTASCII_USTRINGPARAM("DependentTextFields")),
308*b1cdbd2cSJim Jagielski sPropertyFalseContent(RTL_CONSTASCII_USTRINGPARAM("FalseContent")),
309*b1cdbd2cSJim Jagielski sPropertyFields(RTL_CONSTASCII_USTRINGPARAM("Fields")),
310*b1cdbd2cSJim Jagielski sPropertyFieldSubType(RTL_CONSTASCII_USTRINGPARAM("UserDataType")),
311*b1cdbd2cSJim Jagielski sPropertyFileFormat(RTL_CONSTASCII_USTRINGPARAM("FileFormat")),
312*b1cdbd2cSJim Jagielski sPropertyFullName(RTL_CONSTASCII_USTRINGPARAM("FullName")),
313*b1cdbd2cSJim Jagielski sPropertyHint(RTL_CONSTASCII_USTRINGPARAM("Hint")),
314*b1cdbd2cSJim Jagielski sPropertyInitials(RTL_CONSTASCII_USTRINGPARAM("Initials")),
315*b1cdbd2cSJim Jagielski sPropertyInstanceName(RTL_CONSTASCII_USTRINGPARAM("InstanceName")),
316*b1cdbd2cSJim Jagielski sPropertyIsAutomaticUpdate(RTL_CONSTASCII_USTRINGPARAM("IsAutomaticUpdate")),
317*b1cdbd2cSJim Jagielski sPropertyIsConditionTrue(RTL_CONSTASCII_USTRINGPARAM("IsConditionTrue")),
318*b1cdbd2cSJim Jagielski sPropertyIsDataBaseFormat(RTL_CONSTASCII_USTRINGPARAM("DataBaseFormat")),
319*b1cdbd2cSJim Jagielski sPropertyIsDate(RTL_CONSTASCII_USTRINGPARAM("IsDate")),
320*b1cdbd2cSJim Jagielski sPropertyIsExpression(RTL_CONSTASCII_USTRINGPARAM("IsExpression")),
321*b1cdbd2cSJim Jagielski sPropertyIsFixed(RTL_CONSTASCII_USTRINGPARAM("IsFixed")),
322*b1cdbd2cSJim Jagielski sPropertyIsFixedLanguage(RTL_CONSTASCII_USTRINGPARAM("IsFixedLanguage")),
323*b1cdbd2cSJim Jagielski sPropertyIsHidden(RTL_CONSTASCII_USTRINGPARAM("IsHidden")),
324*b1cdbd2cSJim Jagielski sPropertyIsInput(RTL_CONSTASCII_USTRINGPARAM("Input")),
325*b1cdbd2cSJim Jagielski sPropertyIsShowFormula(RTL_CONSTASCII_USTRINGPARAM("IsShowFormula")),
326*b1cdbd2cSJim Jagielski sPropertyIsVisible(RTL_CONSTASCII_USTRINGPARAM("IsVisible")),
327*b1cdbd2cSJim Jagielski sPropertyItems(RTL_CONSTASCII_USTRINGPARAM("Items")),
328*b1cdbd2cSJim Jagielski sPropertyLevel(RTL_CONSTASCII_USTRINGPARAM("Level")),
329*b1cdbd2cSJim Jagielski sPropertyMacro(RTL_CONSTASCII_USTRINGPARAM("Macro")),
330*b1cdbd2cSJim Jagielski sPropertyMeasureKind(RTL_CONSTASCII_USTRINGPARAM("Kind")),
331*b1cdbd2cSJim Jagielski sPropertyName(RTL_CONSTASCII_USTRINGPARAM("Name")),
332*b1cdbd2cSJim Jagielski sPropertyNumberFormat(RTL_CONSTASCII_USTRINGPARAM("NumberFormat")),
333*b1cdbd2cSJim Jagielski sPropertyNumberingSeparator(RTL_CONSTASCII_USTRINGPARAM("NumberingSeparator")),
334*b1cdbd2cSJim Jagielski sPropertyNumberingType(RTL_CONSTASCII_USTRINGPARAM("NumberingType")),
335*b1cdbd2cSJim Jagielski sPropertyOffset(RTL_CONSTASCII_USTRINGPARAM("Offset")),
336*b1cdbd2cSJim Jagielski sPropertyOn(RTL_CONSTASCII_USTRINGPARAM("On")),
337*b1cdbd2cSJim Jagielski sPropertyPlaceholder(RTL_CONSTASCII_USTRINGPARAM("PlaceHolder")),
338*b1cdbd2cSJim Jagielski sPropertyPlaceholderType(RTL_CONSTASCII_USTRINGPARAM("PlaceHolderType")),
339*b1cdbd2cSJim Jagielski sPropertyReferenceFieldPart(RTL_CONSTASCII_USTRINGPARAM("ReferenceFieldPart")),
340*b1cdbd2cSJim Jagielski sPropertyReferenceFieldSource(RTL_CONSTASCII_USTRINGPARAM("ReferenceFieldSource")),
341*b1cdbd2cSJim Jagielski sPropertyReferenceFieldType(RTL_CONSTASCII_USTRINGPARAM("ReferenceFieldType")),
342*b1cdbd2cSJim Jagielski sPropertyRevision(RTL_CONSTASCII_USTRINGPARAM("Revision")),
343*b1cdbd2cSJim Jagielski sPropertyScriptType(RTL_CONSTASCII_USTRINGPARAM("ScriptType")),
344*b1cdbd2cSJim Jagielski sPropertySelectedItem(RTL_CONSTASCII_USTRINGPARAM("SelectedItem")),
345*b1cdbd2cSJim Jagielski sPropertySequenceNumber(RTL_CONSTASCII_USTRINGPARAM("SequenceNumber")),
346*b1cdbd2cSJim Jagielski sPropertySequenceValue(RTL_CONSTASCII_USTRINGPARAM("SequenceValue")),
347*b1cdbd2cSJim Jagielski sPropertySetNumber(RTL_CONSTASCII_USTRINGPARAM("SetNumber")),
348*b1cdbd2cSJim Jagielski sPropertySourceName(RTL_CONSTASCII_USTRINGPARAM("SourceName")),
349*b1cdbd2cSJim Jagielski sPropertySubType(RTL_CONSTASCII_USTRINGPARAM("SubType")),
350*b1cdbd2cSJim Jagielski sPropertyTargetFrame(RTL_CONSTASCII_USTRINGPARAM("TargetFrame")),
351*b1cdbd2cSJim Jagielski sPropertyTrueContent(RTL_CONSTASCII_USTRINGPARAM("TrueContent")),
352*b1cdbd2cSJim Jagielski sPropertyURL(RTL_CONSTASCII_USTRINGPARAM("URL")),
353*b1cdbd2cSJim Jagielski sPropertyURLContent(RTL_CONSTASCII_USTRINGPARAM("URLContent")),
354*b1cdbd2cSJim Jagielski sPropertyUserText(RTL_CONSTASCII_USTRINGPARAM("UserText")),
355*b1cdbd2cSJim Jagielski sPropertyValue(RTL_CONSTASCII_USTRINGPARAM("Value")),
356*b1cdbd2cSJim Jagielski sPropertyVariableName(RTL_CONSTASCII_USTRINGPARAM("VariableName")),
357*b1cdbd2cSJim Jagielski sPropertyVariableSubType(RTL_CONSTASCII_USTRINGPARAM("VariableSubtype")),
358*b1cdbd2cSJim Jagielski sPropertyHelp(RTL_CONSTASCII_USTRINGPARAM("Help")),
359*b1cdbd2cSJim Jagielski sPropertyTooltip(RTL_CONSTASCII_USTRINGPARAM("Tooltip")),
360*b1cdbd2cSJim Jagielski sPropertyTextRange(RTL_CONSTASCII_USTRINGPARAM("TextRange")),
361*b1cdbd2cSJim Jagielski pCombinedCharactersPropertyState(pCombinedCharState)
362*b1cdbd2cSJim Jagielski {
363*b1cdbd2cSJim Jagielski SetExportOnlyUsedFieldDeclarations();
364*b1cdbd2cSJim Jagielski }
365*b1cdbd2cSJim Jagielski
~XMLTextFieldExport()366*b1cdbd2cSJim Jagielski XMLTextFieldExport::~XMLTextFieldExport()
367*b1cdbd2cSJim Jagielski {
368*b1cdbd2cSJim Jagielski delete pCombinedCharactersPropertyState;
369*b1cdbd2cSJim Jagielski delete pUsedMasters;
370*b1cdbd2cSJim Jagielski }
371*b1cdbd2cSJim Jagielski
372*b1cdbd2cSJim Jagielski /// get the field ID (as in FieldIDEnum) from XTextField
GetFieldID(const Reference<XTextField> & rTextField,const Reference<XPropertySet> & xPropSet)373*b1cdbd2cSJim Jagielski enum FieldIdEnum XMLTextFieldExport::GetFieldID(
374*b1cdbd2cSJim Jagielski const Reference<XTextField> & rTextField,
375*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet)
376*b1cdbd2cSJim Jagielski {
377*b1cdbd2cSJim Jagielski // get service names for rTextField (via XServiceInfo service)
378*b1cdbd2cSJim Jagielski Reference<XServiceInfo> xService(rTextField, UNO_QUERY);
379*b1cdbd2cSJim Jagielski const Sequence<OUString> aServices = xService->getSupportedServiceNames();
380*b1cdbd2cSJim Jagielski const OUString* pNames = aServices.getConstArray();
381*b1cdbd2cSJim Jagielski sal_Int32 nCount = aServices.getLength();
382*b1cdbd2cSJim Jagielski
383*b1cdbd2cSJim Jagielski OUString sFieldName; // service name postfix of current field
384*b1cdbd2cSJim Jagielski
385*b1cdbd2cSJim Jagielski // search for TextField service name
386*b1cdbd2cSJim Jagielski while( nCount-- )
387*b1cdbd2cSJim Jagielski {
388*b1cdbd2cSJim Jagielski if (pNames->matchIgnoreAsciiCase(sServicePrefix))
389*b1cdbd2cSJim Jagielski {
390*b1cdbd2cSJim Jagielski // TextField found => postfix is field type!
391*b1cdbd2cSJim Jagielski sFieldName = pNames->copy(sServicePrefix.getLength());
392*b1cdbd2cSJim Jagielski break;
393*b1cdbd2cSJim Jagielski }
394*b1cdbd2cSJim Jagielski
395*b1cdbd2cSJim Jagielski ++pNames;
396*b1cdbd2cSJim Jagielski }
397*b1cdbd2cSJim Jagielski
398*b1cdbd2cSJim Jagielski // if this is not a normal text field, check if its a presentation text field
399*b1cdbd2cSJim Jagielski if( sFieldName.getLength() == 0 )
400*b1cdbd2cSJim Jagielski {
401*b1cdbd2cSJim Jagielski const OUString* pNames2 = aServices.getConstArray();
402*b1cdbd2cSJim Jagielski sal_Int32 nCount2 = aServices.getLength();
403*b1cdbd2cSJim Jagielski // search for TextField service name
404*b1cdbd2cSJim Jagielski while( nCount2-- )
405*b1cdbd2cSJim Jagielski {
406*b1cdbd2cSJim Jagielski if( 0 == pNames2->compareTo(sPresentationServicePrefix, sPresentationServicePrefix.getLength()))
407*b1cdbd2cSJim Jagielski {
408*b1cdbd2cSJim Jagielski // TextField found => postfix is field type!
409*b1cdbd2cSJim Jagielski sFieldName = pNames2->copy(sPresentationServicePrefix.getLength());
410*b1cdbd2cSJim Jagielski break;
411*b1cdbd2cSJim Jagielski }
412*b1cdbd2cSJim Jagielski
413*b1cdbd2cSJim Jagielski ++pNames2;
414*b1cdbd2cSJim Jagielski }
415*b1cdbd2cSJim Jagielski
416*b1cdbd2cSJim Jagielski if( sFieldName.getLength() != 0 )
417*b1cdbd2cSJim Jagielski {
418*b1cdbd2cSJim Jagielski if( sFieldName.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM( "Header" ) ) == 0 )
419*b1cdbd2cSJim Jagielski {
420*b1cdbd2cSJim Jagielski return FIELD_ID_DRAW_HEADER;
421*b1cdbd2cSJim Jagielski }
422*b1cdbd2cSJim Jagielski else if( sFieldName.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM( "Footer" ) ) == 0 )
423*b1cdbd2cSJim Jagielski {
424*b1cdbd2cSJim Jagielski return FIELD_ID_DRAW_FOOTER;
425*b1cdbd2cSJim Jagielski }
426*b1cdbd2cSJim Jagielski else if( sFieldName.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM( "DateTime" ) ) == 0 )
427*b1cdbd2cSJim Jagielski {
428*b1cdbd2cSJim Jagielski return FIELD_ID_DRAW_DATE_TIME;
429*b1cdbd2cSJim Jagielski }
430*b1cdbd2cSJim Jagielski }
431*b1cdbd2cSJim Jagielski }
432*b1cdbd2cSJim Jagielski
433*b1cdbd2cSJim Jagielski // map postfix of service name to field ID
434*b1cdbd2cSJim Jagielski DBG_ASSERT(sFieldName.getLength()>0, "no TextField service found!");
435*b1cdbd2cSJim Jagielski return MapFieldName(sFieldName, xPropSet);
436*b1cdbd2cSJim Jagielski }
437*b1cdbd2cSJim Jagielski
MapFieldName(const OUString & sFieldName,const Reference<XPropertySet> & xPropSet)438*b1cdbd2cSJim Jagielski enum FieldIdEnum XMLTextFieldExport::MapFieldName(
439*b1cdbd2cSJim Jagielski const OUString& sFieldName, // field (master) name
440*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet) // for subtype
441*b1cdbd2cSJim Jagielski {
442*b1cdbd2cSJim Jagielski // we'll proceed in 2 steps:
443*b1cdbd2cSJim Jagielski // a) map service name to preliminary FIELD_ID
444*b1cdbd2cSJim Jagielski // b) map those prelim. FIELD_IDs that correspond to several field types
445*b1cdbd2cSJim Jagielski // (in our (XML) world) to final FIELD IDs
446*b1cdbd2cSJim Jagielski
447*b1cdbd2cSJim Jagielski
448*b1cdbd2cSJim Jagielski // a) find prelim. FIELD_ID via aFieldServiceMapping
449*b1cdbd2cSJim Jagielski
450*b1cdbd2cSJim Jagielski // check for non-empty service name
451*b1cdbd2cSJim Jagielski DBG_ASSERT(sFieldName.getLength()>0, "no valid service name!");
452*b1cdbd2cSJim Jagielski enum FieldIdEnum nToken = FIELD_ID_UNKNOWN;
453*b1cdbd2cSJim Jagielski if (sFieldName.getLength() > 0)
454*b1cdbd2cSJim Jagielski {
455*b1cdbd2cSJim Jagielski // map name to prelim. ID
456*b1cdbd2cSJim Jagielski sal_uInt16 nTmp;
457*b1cdbd2cSJim Jagielski sal_Bool bRet = GetExport().GetMM100UnitConverter().convertEnum(
458*b1cdbd2cSJim Jagielski nTmp, sFieldName, aFieldServiceNameMapping);
459*b1cdbd2cSJim Jagielski
460*b1cdbd2cSJim Jagielski // check return
461*b1cdbd2cSJim Jagielski DBG_ASSERT(bRet, "Unknown field service name encountered!");
462*b1cdbd2cSJim Jagielski if (! bRet)
463*b1cdbd2cSJim Jagielski {
464*b1cdbd2cSJim Jagielski nToken = FIELD_ID_UNKNOWN;
465*b1cdbd2cSJim Jagielski }
466*b1cdbd2cSJim Jagielski else
467*b1cdbd2cSJim Jagielski {
468*b1cdbd2cSJim Jagielski nToken = (enum FieldIdEnum)nTmp;
469*b1cdbd2cSJim Jagielski }
470*b1cdbd2cSJim Jagielski } else {
471*b1cdbd2cSJim Jagielski // invalid service name
472*b1cdbd2cSJim Jagielski nToken = FIELD_ID_UNKNOWN;
473*b1cdbd2cSJim Jagielski }
474*b1cdbd2cSJim Jagielski
475*b1cdbd2cSJim Jagielski // b) map prelim. to final FIELD_IDs
476*b1cdbd2cSJim Jagielski switch (nToken) {
477*b1cdbd2cSJim Jagielski case FIELD_ID_VARIABLE_SET:
478*b1cdbd2cSJim Jagielski if (GetBoolProperty(sPropertyIsInput, xPropSet))
479*b1cdbd2cSJim Jagielski {
480*b1cdbd2cSJim Jagielski nToken = FIELD_ID_VARIABLE_INPUT;
481*b1cdbd2cSJim Jagielski }
482*b1cdbd2cSJim Jagielski else
483*b1cdbd2cSJim Jagielski {
484*b1cdbd2cSJim Jagielski switch (GetIntProperty(sPropertySubType, xPropSet))
485*b1cdbd2cSJim Jagielski {
486*b1cdbd2cSJim Jagielski case SetVariableType::STRING: // text field
487*b1cdbd2cSJim Jagielski case SetVariableType::VAR: // num field
488*b1cdbd2cSJim Jagielski nToken = FIELD_ID_VARIABLE_SET;
489*b1cdbd2cSJim Jagielski break;
490*b1cdbd2cSJim Jagielski case SetVariableType::SEQUENCE:
491*b1cdbd2cSJim Jagielski nToken = FIELD_ID_SEQUENCE;
492*b1cdbd2cSJim Jagielski break;
493*b1cdbd2cSJim Jagielski case SetVariableType::FORMULA:
494*b1cdbd2cSJim Jagielski default:
495*b1cdbd2cSJim Jagielski nToken = FIELD_ID_UNKNOWN;
496*b1cdbd2cSJim Jagielski break;
497*b1cdbd2cSJim Jagielski }
498*b1cdbd2cSJim Jagielski }
499*b1cdbd2cSJim Jagielski break;
500*b1cdbd2cSJim Jagielski
501*b1cdbd2cSJim Jagielski case FIELD_ID_VARIABLE_GET:
502*b1cdbd2cSJim Jagielski switch (GetIntProperty(sPropertySubType, xPropSet))
503*b1cdbd2cSJim Jagielski {
504*b1cdbd2cSJim Jagielski case SetVariableType::STRING: // text field
505*b1cdbd2cSJim Jagielski case SetVariableType::VAR: // num field
506*b1cdbd2cSJim Jagielski nToken = FIELD_ID_VARIABLE_GET;
507*b1cdbd2cSJim Jagielski break;
508*b1cdbd2cSJim Jagielski case SetVariableType::FORMULA:
509*b1cdbd2cSJim Jagielski nToken = FIELD_ID_EXPRESSION;
510*b1cdbd2cSJim Jagielski break;
511*b1cdbd2cSJim Jagielski case SetVariableType::SEQUENCE:
512*b1cdbd2cSJim Jagielski default:
513*b1cdbd2cSJim Jagielski nToken = FIELD_ID_UNKNOWN;
514*b1cdbd2cSJim Jagielski break;
515*b1cdbd2cSJim Jagielski }
516*b1cdbd2cSJim Jagielski break;
517*b1cdbd2cSJim Jagielski
518*b1cdbd2cSJim Jagielski case FIELD_ID_TIME:
519*b1cdbd2cSJim Jagielski if (GetBoolProperty(sPropertyIsDate, xPropSet))
520*b1cdbd2cSJim Jagielski {
521*b1cdbd2cSJim Jagielski nToken = FIELD_ID_DATE;
522*b1cdbd2cSJim Jagielski }
523*b1cdbd2cSJim Jagielski break;
524*b1cdbd2cSJim Jagielski
525*b1cdbd2cSJim Jagielski case FIELD_ID_PAGENUMBER:
526*b1cdbd2cSJim Jagielski // NumberingType not available in non-Writer apps
527*b1cdbd2cSJim Jagielski if (xPropSet->getPropertySetInfo()->
528*b1cdbd2cSJim Jagielski hasPropertyByName(sPropertyNumberingType))
529*b1cdbd2cSJim Jagielski {
530*b1cdbd2cSJim Jagielski if (NumberingType::CHAR_SPECIAL == GetIntProperty(
531*b1cdbd2cSJim Jagielski sPropertyNumberingType, xPropSet))
532*b1cdbd2cSJim Jagielski {
533*b1cdbd2cSJim Jagielski nToken = FIELD_ID_PAGESTRING;
534*b1cdbd2cSJim Jagielski }
535*b1cdbd2cSJim Jagielski }
536*b1cdbd2cSJim Jagielski break;
537*b1cdbd2cSJim Jagielski
538*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CREATION_TIME:
539*b1cdbd2cSJim Jagielski if (GetBoolProperty(sPropertyIsDate, xPropSet))
540*b1cdbd2cSJim Jagielski {
541*b1cdbd2cSJim Jagielski nToken = FIELD_ID_DOCINFO_CREATION_DATE;
542*b1cdbd2cSJim Jagielski }
543*b1cdbd2cSJim Jagielski break;
544*b1cdbd2cSJim Jagielski
545*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_PRINT_TIME:
546*b1cdbd2cSJim Jagielski if (GetBoolProperty(sPropertyIsDate, xPropSet))
547*b1cdbd2cSJim Jagielski {
548*b1cdbd2cSJim Jagielski nToken = FIELD_ID_DOCINFO_PRINT_DATE;
549*b1cdbd2cSJim Jagielski }
550*b1cdbd2cSJim Jagielski break;
551*b1cdbd2cSJim Jagielski
552*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SAVE_TIME:
553*b1cdbd2cSJim Jagielski if (GetBoolProperty(sPropertyIsDate, xPropSet))
554*b1cdbd2cSJim Jagielski {
555*b1cdbd2cSJim Jagielski nToken = FIELD_ID_DOCINFO_SAVE_DATE;
556*b1cdbd2cSJim Jagielski }
557*b1cdbd2cSJim Jagielski break;
558*b1cdbd2cSJim Jagielski
559*b1cdbd2cSJim Jagielski case FIELD_ID_REF_REFERENCE:
560*b1cdbd2cSJim Jagielski switch (GetInt16Property(sPropertyReferenceFieldSource, xPropSet))
561*b1cdbd2cSJim Jagielski {
562*b1cdbd2cSJim Jagielski case ReferenceFieldSource::REFERENCE_MARK:
563*b1cdbd2cSJim Jagielski nToken = FIELD_ID_REF_REFERENCE;
564*b1cdbd2cSJim Jagielski break;
565*b1cdbd2cSJim Jagielski case ReferenceFieldSource::SEQUENCE_FIELD:
566*b1cdbd2cSJim Jagielski nToken = FIELD_ID_REF_SEQUENCE;
567*b1cdbd2cSJim Jagielski break;
568*b1cdbd2cSJim Jagielski case ReferenceFieldSource::BOOKMARK:
569*b1cdbd2cSJim Jagielski nToken = FIELD_ID_REF_BOOKMARK;
570*b1cdbd2cSJim Jagielski break;
571*b1cdbd2cSJim Jagielski case ReferenceFieldSource::FOOTNOTE:
572*b1cdbd2cSJim Jagielski nToken = FIELD_ID_REF_FOOTNOTE;
573*b1cdbd2cSJim Jagielski break;
574*b1cdbd2cSJim Jagielski case ReferenceFieldSource::ENDNOTE:
575*b1cdbd2cSJim Jagielski nToken = FIELD_ID_REF_ENDNOTE;
576*b1cdbd2cSJim Jagielski break;
577*b1cdbd2cSJim Jagielski default:
578*b1cdbd2cSJim Jagielski nToken = FIELD_ID_UNKNOWN;
579*b1cdbd2cSJim Jagielski break;
580*b1cdbd2cSJim Jagielski }
581*b1cdbd2cSJim Jagielski break;
582*b1cdbd2cSJim Jagielski
583*b1cdbd2cSJim Jagielski case FIELD_ID_COMBINED_CHARACTERS:
584*b1cdbd2cSJim Jagielski case FIELD_ID_SCRIPT:
585*b1cdbd2cSJim Jagielski case FIELD_ID_ANNOTATION:
586*b1cdbd2cSJim Jagielski case FIELD_ID_BIBLIOGRAPHY:
587*b1cdbd2cSJim Jagielski case FIELD_ID_DDE:
588*b1cdbd2cSJim Jagielski case FIELD_ID_MACRO:
589*b1cdbd2cSJim Jagielski case FIELD_ID_REFPAGE_SET:
590*b1cdbd2cSJim Jagielski case FIELD_ID_REFPAGE_GET:
591*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_PAGES:
592*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_PARAGRAPHS:
593*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_WORDS:
594*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_CHARACTERS:
595*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_TABLES:
596*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_GRAPHICS:
597*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_OBJECTS:
598*b1cdbd2cSJim Jagielski case FIELD_ID_CONDITIONAL_TEXT:
599*b1cdbd2cSJim Jagielski case FIELD_ID_HIDDEN_TEXT:
600*b1cdbd2cSJim Jagielski case FIELD_ID_HIDDEN_PARAGRAPH:
601*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CREATION_AUTHOR:
602*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_DESCRIPTION:
603*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CUSTOM:
604*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_PRINT_AUTHOR:
605*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_TITLE:
606*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SUBJECT:
607*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_KEYWORDS:
608*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_REVISION:
609*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_EDIT_DURATION:
610*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SAVE_AUTHOR:
611*b1cdbd2cSJim Jagielski case FIELD_ID_TEXT_INPUT:
612*b1cdbd2cSJim Jagielski case FIELD_ID_USER_INPUT:
613*b1cdbd2cSJim Jagielski case FIELD_ID_AUTHOR:
614*b1cdbd2cSJim Jagielski case FIELD_ID_SENDER:
615*b1cdbd2cSJim Jagielski case FIELD_ID_PLACEHOLDER:
616*b1cdbd2cSJim Jagielski case FIELD_ID_USER_GET:
617*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_NEXT:
618*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_SELECT:
619*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_DISPLAY:
620*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_NAME:
621*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_NUMBER:
622*b1cdbd2cSJim Jagielski case FIELD_ID_TEMPLATE_NAME:
623*b1cdbd2cSJim Jagielski case FIELD_ID_CHAPTER:
624*b1cdbd2cSJim Jagielski case FIELD_ID_FILE_NAME:
625*b1cdbd2cSJim Jagielski case FIELD_ID_META:
626*b1cdbd2cSJim Jagielski case FIELD_ID_SHEET_NAME:
627*b1cdbd2cSJim Jagielski case FIELD_ID_MEASURE:
628*b1cdbd2cSJim Jagielski case FIELD_ID_URL:
629*b1cdbd2cSJim Jagielski case FIELD_ID_TABLE_FORMULA:
630*b1cdbd2cSJim Jagielski case FIELD_ID_DROP_DOWN:
631*b1cdbd2cSJim Jagielski ; // these field IDs are final
632*b1cdbd2cSJim Jagielski break;
633*b1cdbd2cSJim Jagielski
634*b1cdbd2cSJim Jagielski default:
635*b1cdbd2cSJim Jagielski nToken = FIELD_ID_UNKNOWN;
636*b1cdbd2cSJim Jagielski }
637*b1cdbd2cSJim Jagielski
638*b1cdbd2cSJim Jagielski // ... and return final FIELD_ID
639*b1cdbd2cSJim Jagielski return nToken;
640*b1cdbd2cSJim Jagielski }
641*b1cdbd2cSJim Jagielski
642*b1cdbd2cSJim Jagielski // is string or numeric field?
IsStringField(FieldIdEnum nFieldType,const Reference<XPropertySet> & xPropSet)643*b1cdbd2cSJim Jagielski sal_Bool XMLTextFieldExport::IsStringField(
644*b1cdbd2cSJim Jagielski FieldIdEnum nFieldType,
645*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet)
646*b1cdbd2cSJim Jagielski {
647*b1cdbd2cSJim Jagielski switch (nFieldType) {
648*b1cdbd2cSJim Jagielski
649*b1cdbd2cSJim Jagielski case FIELD_ID_VARIABLE_GET:
650*b1cdbd2cSJim Jagielski case FIELD_ID_VARIABLE_SET:
651*b1cdbd2cSJim Jagielski case FIELD_ID_VARIABLE_INPUT:
652*b1cdbd2cSJim Jagielski {
653*b1cdbd2cSJim Jagielski // depends on field sub type
654*b1cdbd2cSJim Jagielski return ( GetIntProperty(sPropertySubType, xPropSet) ==
655*b1cdbd2cSJim Jagielski SetVariableType::STRING );
656*b1cdbd2cSJim Jagielski }
657*b1cdbd2cSJim Jagielski
658*b1cdbd2cSJim Jagielski case FIELD_ID_USER_GET:
659*b1cdbd2cSJim Jagielski case FIELD_ID_USER_INPUT:
660*b1cdbd2cSJim Jagielski {
661*b1cdbd2cSJim Jagielski Reference<XTextField> xTextField(xPropSet, UNO_QUERY);
662*b1cdbd2cSJim Jagielski DBG_ASSERT(xTextField.is(), "field is no XTextField!");
663*b1cdbd2cSJim Jagielski sal_Bool bRet = GetBoolProperty(sPropertyIsExpression,
664*b1cdbd2cSJim Jagielski GetMasterPropertySet(xTextField));
665*b1cdbd2cSJim Jagielski return !bRet;
666*b1cdbd2cSJim Jagielski }
667*b1cdbd2cSJim Jagielski
668*b1cdbd2cSJim Jagielski case FIELD_ID_META:
669*b1cdbd2cSJim Jagielski return 0 > GetIntProperty(sPropertyNumberFormat, xPropSet);
670*b1cdbd2cSJim Jagielski
671*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_DISPLAY:
672*b1cdbd2cSJim Jagielski // TODO: depends on... ???
673*b1cdbd2cSJim Jagielski // workaround #no-bug#: no data type
674*b1cdbd2cSJim Jagielski return 5100 == GetIntProperty(sPropertyNumberFormat, xPropSet);
675*b1cdbd2cSJim Jagielski
676*b1cdbd2cSJim Jagielski case FIELD_ID_TABLE_FORMULA:
677*b1cdbd2cSJim Jagielski // legacy field: always a number field (because it always has
678*b1cdbd2cSJim Jagielski // a number format)
679*b1cdbd2cSJim Jagielski return sal_False;
680*b1cdbd2cSJim Jagielski
681*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_PAGES:
682*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_PARAGRAPHS:
683*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_WORDS:
684*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_CHARACTERS:
685*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_TABLES:
686*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_GRAPHICS:
687*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_OBJECTS:
688*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SAVE_TIME:
689*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SAVE_DATE:
690*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CREATION_DATE:
691*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CREATION_TIME:
692*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_PRINT_TIME:
693*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_PRINT_DATE:
694*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_EDIT_DURATION:
695*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_REVISION:
696*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_NUMBER:
697*b1cdbd2cSJim Jagielski case FIELD_ID_EXPRESSION:
698*b1cdbd2cSJim Jagielski case FIELD_ID_SEQUENCE:
699*b1cdbd2cSJim Jagielski case FIELD_ID_DATE:
700*b1cdbd2cSJim Jagielski case FIELD_ID_TIME:
701*b1cdbd2cSJim Jagielski case FIELD_ID_PAGENUMBER:
702*b1cdbd2cSJim Jagielski case FIELD_ID_REFPAGE_SET:
703*b1cdbd2cSJim Jagielski case FIELD_ID_REFPAGE_GET:
704*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CUSTOM:
705*b1cdbd2cSJim Jagielski // always number
706*b1cdbd2cSJim Jagielski return sal_False;
707*b1cdbd2cSJim Jagielski
708*b1cdbd2cSJim Jagielski case FIELD_ID_COMBINED_CHARACTERS:
709*b1cdbd2cSJim Jagielski case FIELD_ID_BIBLIOGRAPHY:
710*b1cdbd2cSJim Jagielski case FIELD_ID_DDE:
711*b1cdbd2cSJim Jagielski case FIELD_ID_REF_REFERENCE:
712*b1cdbd2cSJim Jagielski case FIELD_ID_REF_SEQUENCE:
713*b1cdbd2cSJim Jagielski case FIELD_ID_REF_BOOKMARK:
714*b1cdbd2cSJim Jagielski case FIELD_ID_REF_FOOTNOTE:
715*b1cdbd2cSJim Jagielski case FIELD_ID_REF_ENDNOTE:
716*b1cdbd2cSJim Jagielski case FIELD_ID_MACRO:
717*b1cdbd2cSJim Jagielski case FIELD_ID_TEMPLATE_NAME:
718*b1cdbd2cSJim Jagielski case FIELD_ID_CHAPTER:
719*b1cdbd2cSJim Jagielski case FIELD_ID_FILE_NAME:
720*b1cdbd2cSJim Jagielski case FIELD_ID_CONDITIONAL_TEXT:
721*b1cdbd2cSJim Jagielski case FIELD_ID_HIDDEN_TEXT:
722*b1cdbd2cSJim Jagielski case FIELD_ID_HIDDEN_PARAGRAPH:
723*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CREATION_AUTHOR:
724*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_DESCRIPTION:
725*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_PRINT_AUTHOR:
726*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_TITLE:
727*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SUBJECT:
728*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_KEYWORDS:
729*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SAVE_AUTHOR:
730*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_NAME:
731*b1cdbd2cSJim Jagielski case FIELD_ID_TEXT_INPUT:
732*b1cdbd2cSJim Jagielski case FIELD_ID_SENDER:
733*b1cdbd2cSJim Jagielski case FIELD_ID_AUTHOR:
734*b1cdbd2cSJim Jagielski case FIELD_ID_PAGESTRING:
735*b1cdbd2cSJim Jagielski case FIELD_ID_SHEET_NAME:
736*b1cdbd2cSJim Jagielski case FIELD_ID_MEASURE:
737*b1cdbd2cSJim Jagielski case FIELD_ID_URL:
738*b1cdbd2cSJim Jagielski case FIELD_ID_DROP_DOWN:
739*b1cdbd2cSJim Jagielski // always string:
740*b1cdbd2cSJim Jagielski return sal_True;
741*b1cdbd2cSJim Jagielski
742*b1cdbd2cSJim Jagielski case FIELD_ID_SCRIPT:
743*b1cdbd2cSJim Jagielski case FIELD_ID_ANNOTATION:
744*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_NEXT:
745*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_SELECT:
746*b1cdbd2cSJim Jagielski case FIELD_ID_VARIABLE_DECL:
747*b1cdbd2cSJim Jagielski case FIELD_ID_USER_DECL:
748*b1cdbd2cSJim Jagielski case FIELD_ID_SEQUENCE_DECL:
749*b1cdbd2cSJim Jagielski case FIELD_ID_PLACEHOLDER:
750*b1cdbd2cSJim Jagielski case FIELD_ID_UNKNOWN:
751*b1cdbd2cSJim Jagielski case FIELD_ID_DRAW_HEADER:
752*b1cdbd2cSJim Jagielski case FIELD_ID_DRAW_FOOTER:
753*b1cdbd2cSJim Jagielski case FIELD_ID_DRAW_DATE_TIME:
754*b1cdbd2cSJim Jagielski default:
755*b1cdbd2cSJim Jagielski DBG_ERROR("unkown field type/field has no content");
756*b1cdbd2cSJim Jagielski return sal_True; // invalid info; string in case of doubt
757*b1cdbd2cSJim Jagielski }
758*b1cdbd2cSJim Jagielski }
759*b1cdbd2cSJim Jagielski
760*b1cdbd2cSJim Jagielski /// export the styles needed by the given field. Called on first pass
761*b1cdbd2cSJim Jagielski /// through document
ExportFieldAutoStyle(const Reference<XTextField> & rTextField,const sal_Bool bProgress,const sal_Bool bRecursive)762*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ExportFieldAutoStyle(
763*b1cdbd2cSJim Jagielski const Reference<XTextField> & rTextField, const sal_Bool bProgress,
764*b1cdbd2cSJim Jagielski const sal_Bool bRecursive )
765*b1cdbd2cSJim Jagielski {
766*b1cdbd2cSJim Jagielski // get property set
767*b1cdbd2cSJim Jagielski Reference<XPropertySet> xPropSet(rTextField, UNO_QUERY);
768*b1cdbd2cSJim Jagielski
769*b1cdbd2cSJim Jagielski // add field master to list of used field masters (if desired)
770*b1cdbd2cSJim Jagielski if (NULL != pUsedMasters)
771*b1cdbd2cSJim Jagielski {
772*b1cdbd2cSJim Jagielski Reference<XDependentTextField> xDepField(rTextField, UNO_QUERY);
773*b1cdbd2cSJim Jagielski if (xDepField.is())
774*b1cdbd2cSJim Jagielski {
775*b1cdbd2cSJim Jagielski Reference<XText> xOurText = rTextField->getAnchor()->getText();
776*b1cdbd2cSJim Jagielski
777*b1cdbd2cSJim Jagielski map<Reference<XText>, set<OUString> >::iterator aMapIter =
778*b1cdbd2cSJim Jagielski pUsedMasters->find(xOurText);
779*b1cdbd2cSJim Jagielski
780*b1cdbd2cSJim Jagielski // insert a list for our XText (if necessary)
781*b1cdbd2cSJim Jagielski if (aMapIter == pUsedMasters->end())
782*b1cdbd2cSJim Jagielski {
783*b1cdbd2cSJim Jagielski set<OUString> aSet;
784*b1cdbd2cSJim Jagielski (*pUsedMasters)[xOurText] = aSet;
785*b1cdbd2cSJim Jagielski aMapIter = pUsedMasters->find(xOurText);
786*b1cdbd2cSJim Jagielski }
787*b1cdbd2cSJim Jagielski
788*b1cdbd2cSJim Jagielski // insert this text field master
789*b1cdbd2cSJim Jagielski OUString sFieldMasterName = GetStringProperty(
790*b1cdbd2cSJim Jagielski sPropertyInstanceName, xDepField->getTextFieldMaster());
791*b1cdbd2cSJim Jagielski if (sFieldMasterName.getLength() > 0)
792*b1cdbd2cSJim Jagielski aMapIter->second.insert( sFieldMasterName );
793*b1cdbd2cSJim Jagielski }
794*b1cdbd2cSJim Jagielski // else: no dependent field -> no master -> ignore
795*b1cdbd2cSJim Jagielski }
796*b1cdbd2cSJim Jagielski
797*b1cdbd2cSJim Jagielski // get Field ID
798*b1cdbd2cSJim Jagielski FieldIdEnum nToken = GetFieldID(rTextField, xPropSet);
799*b1cdbd2cSJim Jagielski
800*b1cdbd2cSJim Jagielski // export the character style for all fields
801*b1cdbd2cSJim Jagielski // with one exception: combined character fields export their own
802*b1cdbd2cSJim Jagielski // text style below
803*b1cdbd2cSJim Jagielski Reference <XPropertySet> xRangePropSet(rTextField->getAnchor(), UNO_QUERY);
804*b1cdbd2cSJim Jagielski if (FIELD_ID_COMBINED_CHARACTERS != nToken)
805*b1cdbd2cSJim Jagielski {
806*b1cdbd2cSJim Jagielski GetExport().GetTextParagraphExport()->Add(
807*b1cdbd2cSJim Jagielski XML_STYLE_FAMILY_TEXT_TEXT, xRangePropSet);
808*b1cdbd2cSJim Jagielski }
809*b1cdbd2cSJim Jagielski
810*b1cdbd2cSJim Jagielski // process special styles for each field (e.g. data styles)
811*b1cdbd2cSJim Jagielski switch (nToken) {
812*b1cdbd2cSJim Jagielski
813*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_DISPLAY:
814*b1cdbd2cSJim Jagielski {
815*b1cdbd2cSJim Jagielski sal_Int32 nFormat = GetIntProperty(sPropertyNumberFormat, xPropSet);
816*b1cdbd2cSJim Jagielski // workaround: #no-bug#; see IsStringField(...)
817*b1cdbd2cSJim Jagielski if ( (5100 != nFormat) &&
818*b1cdbd2cSJim Jagielski !GetBoolProperty(sPropertyIsDataBaseFormat, xPropSet) )
819*b1cdbd2cSJim Jagielski {
820*b1cdbd2cSJim Jagielski GetExport().addDataStyle(nFormat);
821*b1cdbd2cSJim Jagielski }
822*b1cdbd2cSJim Jagielski break;
823*b1cdbd2cSJim Jagielski }
824*b1cdbd2cSJim Jagielski
825*b1cdbd2cSJim Jagielski case FIELD_ID_DATE:
826*b1cdbd2cSJim Jagielski case FIELD_ID_TIME:
827*b1cdbd2cSJim Jagielski {
828*b1cdbd2cSJim Jagielski // date and time fields are always number fields, but the
829*b1cdbd2cSJim Jagielski // NumberFormat property is optional (e.g. Calc doesn't
830*b1cdbd2cSJim Jagielski // support it)
831*b1cdbd2cSJim Jagielski Reference<XPropertySetInfo> xPropSetInfo(
832*b1cdbd2cSJim Jagielski xPropSet->getPropertySetInfo() );
833*b1cdbd2cSJim Jagielski if ( xPropSetInfo->hasPropertyByName( sPropertyNumberFormat ) )
834*b1cdbd2cSJim Jagielski {
835*b1cdbd2cSJim Jagielski sal_Int32 nFormat =
836*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyNumberFormat, xPropSet);
837*b1cdbd2cSJim Jagielski
838*b1cdbd2cSJim Jagielski // nFormat may be -1 for numeric fields that display their
839*b1cdbd2cSJim Jagielski // variable name. (Maybe this should be a field type, then?)
840*b1cdbd2cSJim Jagielski if (nFormat != -1)
841*b1cdbd2cSJim Jagielski {
842*b1cdbd2cSJim Jagielski if( ! GetOptionalBoolProperty(
843*b1cdbd2cSJim Jagielski sPropertyIsFixedLanguage,
844*b1cdbd2cSJim Jagielski xPropSet, xPropSetInfo, sal_False ) )
845*b1cdbd2cSJim Jagielski {
846*b1cdbd2cSJim Jagielski nFormat =
847*b1cdbd2cSJim Jagielski GetExport().dataStyleForceSystemLanguage(nFormat);
848*b1cdbd2cSJim Jagielski }
849*b1cdbd2cSJim Jagielski
850*b1cdbd2cSJim Jagielski GetExport().addDataStyle( nFormat,
851*b1cdbd2cSJim Jagielski nToken == FIELD_ID_TIME );
852*b1cdbd2cSJim Jagielski }
853*b1cdbd2cSJim Jagielski }
854*b1cdbd2cSJim Jagielski }
855*b1cdbd2cSJim Jagielski break;
856*b1cdbd2cSJim Jagielski
857*b1cdbd2cSJim Jagielski case FIELD_ID_META:
858*b1cdbd2cSJim Jagielski // recurse into content (does not export element, so can be done first)
859*b1cdbd2cSJim Jagielski if (bRecursive)
860*b1cdbd2cSJim Jagielski {
861*b1cdbd2cSJim Jagielski ExportMetaField(xPropSet, true, bProgress);
862*b1cdbd2cSJim Jagielski }
863*b1cdbd2cSJim Jagielski // fall-through: for the meta-field itself!
864*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_PRINT_TIME:
865*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_PRINT_DATE:
866*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CREATION_DATE:
867*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CREATION_TIME:
868*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SAVE_TIME:
869*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SAVE_DATE:
870*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_EDIT_DURATION:
871*b1cdbd2cSJim Jagielski case FIELD_ID_VARIABLE_SET:
872*b1cdbd2cSJim Jagielski case FIELD_ID_VARIABLE_GET:
873*b1cdbd2cSJim Jagielski case FIELD_ID_VARIABLE_INPUT:
874*b1cdbd2cSJim Jagielski case FIELD_ID_USER_GET:
875*b1cdbd2cSJim Jagielski case FIELD_ID_EXPRESSION:
876*b1cdbd2cSJim Jagielski case FIELD_ID_TABLE_FORMULA:
877*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CUSTOM:
878*b1cdbd2cSJim Jagielski // register number format, if this is a numeric field
879*b1cdbd2cSJim Jagielski if (! IsStringField(nToken, xPropSet)) {
880*b1cdbd2cSJim Jagielski
881*b1cdbd2cSJim Jagielski sal_Int32 nFormat =
882*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyNumberFormat, xPropSet);
883*b1cdbd2cSJim Jagielski
884*b1cdbd2cSJim Jagielski // nFormat may be -1 for numeric fields that display their
885*b1cdbd2cSJim Jagielski // variable name. (Maybe this should be a field type, then?)
886*b1cdbd2cSJim Jagielski if (nFormat != -1)
887*b1cdbd2cSJim Jagielski {
888*b1cdbd2cSJim Jagielski // handle formats for fixed language fields
889*b1cdbd2cSJim Jagielski // for all these fields (except table formula)
890*b1cdbd2cSJim Jagielski if( ( nToken != FIELD_ID_TABLE_FORMULA ) &&
891*b1cdbd2cSJim Jagielski ! GetOptionalBoolProperty(
892*b1cdbd2cSJim Jagielski sPropertyIsFixedLanguage,
893*b1cdbd2cSJim Jagielski xPropSet, xPropSet->getPropertySetInfo(),
894*b1cdbd2cSJim Jagielski sal_False ) )
895*b1cdbd2cSJim Jagielski {
896*b1cdbd2cSJim Jagielski nFormat =
897*b1cdbd2cSJim Jagielski GetExport().dataStyleForceSystemLanguage(nFormat);
898*b1cdbd2cSJim Jagielski }
899*b1cdbd2cSJim Jagielski
900*b1cdbd2cSJim Jagielski GetExport().addDataStyle(nFormat);
901*b1cdbd2cSJim Jagielski }
902*b1cdbd2cSJim Jagielski }
903*b1cdbd2cSJim Jagielski break;
904*b1cdbd2cSJim Jagielski
905*b1cdbd2cSJim Jagielski case FIELD_ID_COMBINED_CHARACTERS:
906*b1cdbd2cSJim Jagielski {
907*b1cdbd2cSJim Jagielski // export text style with the addition of the combined characters
908*b1cdbd2cSJim Jagielski DBG_ASSERT(NULL != pCombinedCharactersPropertyState,
909*b1cdbd2cSJim Jagielski "need proper PropertyState for combined characters");
910*b1cdbd2cSJim Jagielski const XMLPropertyState *aStates[] = { pCombinedCharactersPropertyState, 0 };
911*b1cdbd2cSJim Jagielski GetExport().GetTextParagraphExport()->Add(
912*b1cdbd2cSJim Jagielski XML_STYLE_FAMILY_TEXT_TEXT, xRangePropSet,
913*b1cdbd2cSJim Jagielski aStates);
914*b1cdbd2cSJim Jagielski break;
915*b1cdbd2cSJim Jagielski }
916*b1cdbd2cSJim Jagielski
917*b1cdbd2cSJim Jagielski case FIELD_ID_SCRIPT:
918*b1cdbd2cSJim Jagielski case FIELD_ID_ANNOTATION:
919*b1cdbd2cSJim Jagielski case FIELD_ID_BIBLIOGRAPHY:
920*b1cdbd2cSJim Jagielski case FIELD_ID_DDE:
921*b1cdbd2cSJim Jagielski case FIELD_ID_REF_REFERENCE:
922*b1cdbd2cSJim Jagielski case FIELD_ID_REF_SEQUENCE:
923*b1cdbd2cSJim Jagielski case FIELD_ID_REF_BOOKMARK:
924*b1cdbd2cSJim Jagielski case FIELD_ID_REF_FOOTNOTE:
925*b1cdbd2cSJim Jagielski case FIELD_ID_REF_ENDNOTE:
926*b1cdbd2cSJim Jagielski case FIELD_ID_MACRO:
927*b1cdbd2cSJim Jagielski case FIELD_ID_REFPAGE_SET:
928*b1cdbd2cSJim Jagielski case FIELD_ID_REFPAGE_GET:
929*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_PAGES:
930*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_PARAGRAPHS:
931*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_WORDS:
932*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_CHARACTERS:
933*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_TABLES:
934*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_GRAPHICS:
935*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_OBJECTS:
936*b1cdbd2cSJim Jagielski case FIELD_ID_CONDITIONAL_TEXT:
937*b1cdbd2cSJim Jagielski case FIELD_ID_HIDDEN_TEXT:
938*b1cdbd2cSJim Jagielski case FIELD_ID_HIDDEN_PARAGRAPH:
939*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CREATION_AUTHOR:
940*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_DESCRIPTION:
941*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_PRINT_AUTHOR:
942*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_TITLE:
943*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SUBJECT:
944*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_KEYWORDS:
945*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_REVISION:
946*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SAVE_AUTHOR:
947*b1cdbd2cSJim Jagielski case FIELD_ID_SEQUENCE:
948*b1cdbd2cSJim Jagielski case FIELD_ID_PAGENUMBER:
949*b1cdbd2cSJim Jagielski case FIELD_ID_PAGESTRING:
950*b1cdbd2cSJim Jagielski case FIELD_ID_AUTHOR:
951*b1cdbd2cSJim Jagielski case FIELD_ID_SENDER:
952*b1cdbd2cSJim Jagielski case FIELD_ID_PLACEHOLDER:
953*b1cdbd2cSJim Jagielski case FIELD_ID_USER_INPUT:
954*b1cdbd2cSJim Jagielski case FIELD_ID_TEXT_INPUT:
955*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_NEXT:
956*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_SELECT:
957*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_NAME:
958*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_NUMBER:
959*b1cdbd2cSJim Jagielski case FIELD_ID_TEMPLATE_NAME:
960*b1cdbd2cSJim Jagielski case FIELD_ID_CHAPTER:
961*b1cdbd2cSJim Jagielski case FIELD_ID_FILE_NAME:
962*b1cdbd2cSJim Jagielski case FIELD_ID_SHEET_NAME:
963*b1cdbd2cSJim Jagielski case FIELD_ID_MEASURE:
964*b1cdbd2cSJim Jagielski case FIELD_ID_URL:
965*b1cdbd2cSJim Jagielski case FIELD_ID_DROP_DOWN:
966*b1cdbd2cSJim Jagielski case FIELD_ID_DRAW_DATE_TIME:
967*b1cdbd2cSJim Jagielski case FIELD_ID_DRAW_FOOTER:
968*b1cdbd2cSJim Jagielski case FIELD_ID_DRAW_HEADER:
969*b1cdbd2cSJim Jagielski ; // no formats for these fields!
970*b1cdbd2cSJim Jagielski break;
971*b1cdbd2cSJim Jagielski
972*b1cdbd2cSJim Jagielski case FIELD_ID_UNKNOWN:
973*b1cdbd2cSJim Jagielski default:
974*b1cdbd2cSJim Jagielski DBG_ERROR("unkown field type!");
975*b1cdbd2cSJim Jagielski // ignore -> no format for unkowns
976*b1cdbd2cSJim Jagielski break;
977*b1cdbd2cSJim Jagielski }
978*b1cdbd2cSJim Jagielski }
979*b1cdbd2cSJim Jagielski
980*b1cdbd2cSJim Jagielski /// export the given field to XML. Called on second pass through document
ExportField(const Reference<XTextField> & rTextField,sal_Bool bProgress)981*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ExportField(
982*b1cdbd2cSJim Jagielski const Reference<XTextField> & rTextField, sal_Bool bProgress )
983*b1cdbd2cSJim Jagielski {
984*b1cdbd2cSJim Jagielski // get property set
985*b1cdbd2cSJim Jagielski Reference<XPropertySet> xPropSet(rTextField, UNO_QUERY);
986*b1cdbd2cSJim Jagielski
987*b1cdbd2cSJim Jagielski // get property set of range (for the attributes)
988*b1cdbd2cSJim Jagielski Reference <XPropertySet> xRangePropSet(rTextField->getAnchor(), UNO_QUERY);
989*b1cdbd2cSJim Jagielski
990*b1cdbd2cSJim Jagielski // get Field ID
991*b1cdbd2cSJim Jagielski enum FieldIdEnum nToken = GetFieldID(rTextField, xPropSet);
992*b1cdbd2cSJim Jagielski
993*b1cdbd2cSJim Jagielski // special treatment for combined characters field, because it is
994*b1cdbd2cSJim Jagielski // exported as a style
995*b1cdbd2cSJim Jagielski const XMLPropertyState* aStates[] = { pCombinedCharactersPropertyState, 0 };
996*b1cdbd2cSJim Jagielski const XMLPropertyState **pStates =
997*b1cdbd2cSJim Jagielski FIELD_ID_COMBINED_CHARACTERS == nToken
998*b1cdbd2cSJim Jagielski ? aStates
999*b1cdbd2cSJim Jagielski : 0;
1000*b1cdbd2cSJim Jagielski
1001*b1cdbd2cSJim Jagielski // find out whether we need to set the style or hyperlink
1002*b1cdbd2cSJim Jagielski sal_Bool bHasHyperlink;
1003*b1cdbd2cSJim Jagielski sal_Bool bIsUICharStyle;
1004*b1cdbd2cSJim Jagielski sal_Bool bHasAutoStyle;
1005*b1cdbd2cSJim Jagielski OUString sStyle = GetExport().GetTextParagraphExport()->
1006*b1cdbd2cSJim Jagielski FindTextStyleAndHyperlink( xRangePropSet, bHasHyperlink, bIsUICharStyle,
1007*b1cdbd2cSJim Jagielski bHasAutoStyle, pStates );
1008*b1cdbd2cSJim Jagielski sal_Bool bHasStyle = (sStyle.getLength() > 0);
1009*b1cdbd2cSJim Jagielski
1010*b1cdbd2cSJim Jagielski // export hyperlink (if we have one)
1011*b1cdbd2cSJim Jagielski Reference < XPropertySetInfo > xRangePropSetInfo;
1012*b1cdbd2cSJim Jagielski if( bHasHyperlink )
1013*b1cdbd2cSJim Jagielski {
1014*b1cdbd2cSJim Jagielski Reference<XPropertyState> xRangePropState( xRangePropSet, UNO_QUERY );
1015*b1cdbd2cSJim Jagielski xRangePropSetInfo = xRangePropSet->getPropertySetInfo();
1016*b1cdbd2cSJim Jagielski bHasHyperlink =
1017*b1cdbd2cSJim Jagielski GetExport().GetTextParagraphExport()->addHyperlinkAttributes(
1018*b1cdbd2cSJim Jagielski xRangePropSet, xRangePropState,
1019*b1cdbd2cSJim Jagielski xRangePropSetInfo );
1020*b1cdbd2cSJim Jagielski }
1021*b1cdbd2cSJim Jagielski SvXMLElementExport aHyperlink( GetExport(), bHasHyperlink,
1022*b1cdbd2cSJim Jagielski XML_NAMESPACE_TEXT, XML_A,
1023*b1cdbd2cSJim Jagielski sal_False, sal_False );
1024*b1cdbd2cSJim Jagielski
1025*b1cdbd2cSJim Jagielski if( bHasHyperlink )
1026*b1cdbd2cSJim Jagielski {
1027*b1cdbd2cSJim Jagielski // export events (if supported)
1028*b1cdbd2cSJim Jagielski OUString sHyperLinkEvents(RTL_CONSTASCII_USTRINGPARAM(
1029*b1cdbd2cSJim Jagielski "HyperLinkEvents"));
1030*b1cdbd2cSJim Jagielski if (xRangePropSetInfo->hasPropertyByName(sHyperLinkEvents))
1031*b1cdbd2cSJim Jagielski {
1032*b1cdbd2cSJim Jagielski Any aAny = xRangePropSet->getPropertyValue(sHyperLinkEvents);
1033*b1cdbd2cSJim Jagielski Reference<XNameReplace> xName;
1034*b1cdbd2cSJim Jagielski aAny >>= xName;
1035*b1cdbd2cSJim Jagielski GetExport().GetEventExport().Export(xName, sal_False);
1036*b1cdbd2cSJim Jagielski }
1037*b1cdbd2cSJim Jagielski }
1038*b1cdbd2cSJim Jagielski
1039*b1cdbd2cSJim Jagielski {
1040*b1cdbd2cSJim Jagielski XMLTextCharStyleNamesElementExport aCharStylesExport(
1041*b1cdbd2cSJim Jagielski GetExport(), bIsUICharStyle &&
1042*b1cdbd2cSJim Jagielski GetExport().GetTextParagraphExport()
1043*b1cdbd2cSJim Jagielski ->GetCharStyleNamesPropInfoCache().hasProperty(
1044*b1cdbd2cSJim Jagielski xRangePropSet, xRangePropSetInfo ), bHasAutoStyle,
1045*b1cdbd2cSJim Jagielski xRangePropSet, sPropertyCharStyleNames );
1046*b1cdbd2cSJim Jagielski
1047*b1cdbd2cSJim Jagielski // export span with style (if necessary)
1048*b1cdbd2cSJim Jagielski // (except for combined characters field)
1049*b1cdbd2cSJim Jagielski if( bHasStyle )
1050*b1cdbd2cSJim Jagielski {
1051*b1cdbd2cSJim Jagielski // export <text:span> element
1052*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_TEXT, XML_STYLE_NAME,
1053*b1cdbd2cSJim Jagielski GetExport().EncodeStyleName( sStyle ) );
1054*b1cdbd2cSJim Jagielski }
1055*b1cdbd2cSJim Jagielski SvXMLElementExport aSpan( GetExport(), bHasStyle,
1056*b1cdbd2cSJim Jagielski XML_NAMESPACE_TEXT, XML_SPAN,
1057*b1cdbd2cSJim Jagielski sal_False, sal_False);
1058*b1cdbd2cSJim Jagielski
1059*b1cdbd2cSJim Jagielski // finally, export the field itself
1060*b1cdbd2cSJim Jagielski ExportFieldHelper( rTextField, xPropSet, xRangePropSet, nToken,
1061*b1cdbd2cSJim Jagielski bProgress );
1062*b1cdbd2cSJim Jagielski }
1063*b1cdbd2cSJim Jagielski }
1064*b1cdbd2cSJim Jagielski
1065*b1cdbd2cSJim Jagielski /// export the given field to XML. Called on second pass through document
ExportFieldHelper(const Reference<XTextField> & rTextField,const Reference<XPropertySet> & rPropSet,const Reference<XPropertySet> &,enum FieldIdEnum nToken,sal_Bool bProgress)1066*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ExportFieldHelper(
1067*b1cdbd2cSJim Jagielski const Reference<XTextField> & rTextField,
1068*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & rPropSet,
1069*b1cdbd2cSJim Jagielski const Reference<XPropertySet> &,
1070*b1cdbd2cSJim Jagielski enum FieldIdEnum nToken,
1071*b1cdbd2cSJim Jagielski sal_Bool bProgress )
1072*b1cdbd2cSJim Jagielski {
1073*b1cdbd2cSJim Jagielski // get property set info (because some attributes are not support
1074*b1cdbd2cSJim Jagielski // in all implementations)
1075*b1cdbd2cSJim Jagielski Reference<XPropertySetInfo> xPropSetInfo(rPropSet->getPropertySetInfo());
1076*b1cdbd2cSJim Jagielski
1077*b1cdbd2cSJim Jagielski OUString sPresentation = rTextField->getPresentation(sal_False);
1078*b1cdbd2cSJim Jagielski
1079*b1cdbd2cSJim Jagielski // process each field type
1080*b1cdbd2cSJim Jagielski switch (nToken) {
1081*b1cdbd2cSJim Jagielski case FIELD_ID_AUTHOR:
1082*b1cdbd2cSJim Jagielski // author field: fixed, field (sub-)type
1083*b1cdbd2cSJim Jagielski ProcessBoolean(XML_FIXED,
1084*b1cdbd2cSJim Jagielski GetBoolProperty(sPropertyIsFixed, rPropSet), sal_True);
1085*b1cdbd2cSJim Jagielski ExportElement(MapAuthorFieldName(rPropSet), sPresentation);
1086*b1cdbd2cSJim Jagielski break;
1087*b1cdbd2cSJim Jagielski
1088*b1cdbd2cSJim Jagielski case FIELD_ID_SENDER:
1089*b1cdbd2cSJim Jagielski // sender field: fixed, field (sub-)type
1090*b1cdbd2cSJim Jagielski ProcessBoolean(XML_FIXED,
1091*b1cdbd2cSJim Jagielski GetBoolProperty(sPropertyIsFixed, rPropSet), sal_True);
1092*b1cdbd2cSJim Jagielski ExportElement(MapSenderFieldName(rPropSet), sPresentation);
1093*b1cdbd2cSJim Jagielski break;
1094*b1cdbd2cSJim Jagielski
1095*b1cdbd2cSJim Jagielski case FIELD_ID_PLACEHOLDER:
1096*b1cdbd2cSJim Jagielski // placeholder field: type, name, description
1097*b1cdbd2cSJim Jagielski ProcessString(XML_PLACEHOLDER_TYPE,
1098*b1cdbd2cSJim Jagielski MapPlaceholderType(
1099*b1cdbd2cSJim Jagielski GetInt16Property(sPropertyPlaceholderType, rPropSet)));
1100*b1cdbd2cSJim Jagielski ProcessString(XML_DESCRIPTION,
1101*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyHint,rPropSet), sal_True);
1102*b1cdbd2cSJim Jagielski ExportElement(XML_PLACEHOLDER, sPresentation);
1103*b1cdbd2cSJim Jagielski break;
1104*b1cdbd2cSJim Jagielski
1105*b1cdbd2cSJim Jagielski case FIELD_ID_VARIABLE_SET:
1106*b1cdbd2cSJim Jagielski {
1107*b1cdbd2cSJim Jagielski // variable set field: name, visible, format&value
1108*b1cdbd2cSJim Jagielski ProcessString(XML_NAME,
1109*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyVariableName, rPropSet));
1110*b1cdbd2cSJim Jagielski ProcessDisplay(GetBoolProperty(sPropertyIsVisible, rPropSet),
1111*b1cdbd2cSJim Jagielski sal_False);
1112*b1cdbd2cSJim Jagielski ProcessString(XML_FORMULA, XML_NAMESPACE_OOOW,
1113*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyContent, rPropSet),
1114*b1cdbd2cSJim Jagielski sPresentation);
1115*b1cdbd2cSJim Jagielski ProcessValueAndType(IsStringField(nToken, rPropSet),
1116*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyNumberFormat, rPropSet),
1117*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyContent, rPropSet),
1118*b1cdbd2cSJim Jagielski sPresentation,
1119*b1cdbd2cSJim Jagielski GetDoubleProperty(sPropertyValue, rPropSet),
1120*b1cdbd2cSJim Jagielski sal_True, sal_True, sal_True,
1121*b1cdbd2cSJim Jagielski ! GetOptionalBoolProperty(
1122*b1cdbd2cSJim Jagielski sPropertyIsFixedLanguage,
1123*b1cdbd2cSJim Jagielski rPropSet, xPropSetInfo, sal_False ) );
1124*b1cdbd2cSJim Jagielski ExportElement(XML_VARIABLE_SET, sPresentation);
1125*b1cdbd2cSJim Jagielski break;
1126*b1cdbd2cSJim Jagielski }
1127*b1cdbd2cSJim Jagielski case FIELD_ID_VARIABLE_GET:
1128*b1cdbd2cSJim Jagielski {
1129*b1cdbd2cSJim Jagielski // variable get field: name, format&value
1130*b1cdbd2cSJim Jagielski ProcessString(XML_NAME,
1131*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyContent, rPropSet));
1132*b1cdbd2cSJim Jagielski sal_Bool bCmd = GetBoolProperty(sPropertyIsShowFormula, rPropSet);
1133*b1cdbd2cSJim Jagielski ProcessDisplay(sal_True, bCmd);
1134*b1cdbd2cSJim Jagielski // #i81766# for older versions export of the value-type
1135*b1cdbd2cSJim Jagielski sal_Bool bExportValueType = !bCmd && ( GetExport().getExportFlags() & EXPORT_SAVEBACKWARDCOMPATIBLE );
1136*b1cdbd2cSJim Jagielski // show style, unless name will be shown
1137*b1cdbd2cSJim Jagielski ProcessValueAndType(IsStringField(nToken, rPropSet),
1138*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyNumberFormat, rPropSet),
1139*b1cdbd2cSJim Jagielski sEmpty, sEmpty, 0.0, // values not used
1140*b1cdbd2cSJim Jagielski sal_False,
1141*b1cdbd2cSJim Jagielski bExportValueType,
1142*b1cdbd2cSJim Jagielski !bCmd,
1143*b1cdbd2cSJim Jagielski ! GetOptionalBoolProperty(
1144*b1cdbd2cSJim Jagielski sPropertyIsFixedLanguage,
1145*b1cdbd2cSJim Jagielski rPropSet, xPropSetInfo, sal_False ) );
1146*b1cdbd2cSJim Jagielski ExportElement(XML_VARIABLE_GET, sPresentation);
1147*b1cdbd2cSJim Jagielski break;
1148*b1cdbd2cSJim Jagielski }
1149*b1cdbd2cSJim Jagielski case FIELD_ID_VARIABLE_INPUT:
1150*b1cdbd2cSJim Jagielski // variable input field: name, description, format&value
1151*b1cdbd2cSJim Jagielski ProcessString(XML_NAME,
1152*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyVariableName, rPropSet));
1153*b1cdbd2cSJim Jagielski ProcessString(XML_DESCRIPTION,
1154*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyHint , rPropSet));
1155*b1cdbd2cSJim Jagielski ProcessDisplay(GetBoolProperty(sPropertyIsVisible, rPropSet),
1156*b1cdbd2cSJim Jagielski sal_False);
1157*b1cdbd2cSJim Jagielski ProcessString(XML_FORMULA, XML_NAMESPACE_OOOW,
1158*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyContent, rPropSet),
1159*b1cdbd2cSJim Jagielski sPresentation);
1160*b1cdbd2cSJim Jagielski ProcessValueAndType(IsStringField(nToken, rPropSet),
1161*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyNumberFormat, rPropSet),
1162*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyContent, rPropSet),
1163*b1cdbd2cSJim Jagielski sPresentation,
1164*b1cdbd2cSJim Jagielski GetDoubleProperty(sPropertyValue, rPropSet),
1165*b1cdbd2cSJim Jagielski sal_True, sal_True, sal_True,
1166*b1cdbd2cSJim Jagielski ! GetOptionalBoolProperty(
1167*b1cdbd2cSJim Jagielski sPropertyIsFixedLanguage,
1168*b1cdbd2cSJim Jagielski rPropSet, xPropSetInfo, sal_False ) );
1169*b1cdbd2cSJim Jagielski ExportElement(XML_VARIABLE_INPUT, sPresentation);
1170*b1cdbd2cSJim Jagielski break;
1171*b1cdbd2cSJim Jagielski
1172*b1cdbd2cSJim Jagielski case FIELD_ID_USER_GET:
1173*b1cdbd2cSJim Jagielski // user field: name, hidden, style
1174*b1cdbd2cSJim Jagielski {
1175*b1cdbd2cSJim Jagielski sal_Bool bCmd = GetBoolProperty(sPropertyIsShowFormula, rPropSet);
1176*b1cdbd2cSJim Jagielski ProcessDisplay(GetBoolProperty(sPropertyIsVisible, rPropSet),
1177*b1cdbd2cSJim Jagielski bCmd);
1178*b1cdbd2cSJim Jagielski ProcessValueAndType(IsStringField(nToken, rPropSet),
1179*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyNumberFormat, rPropSet),
1180*b1cdbd2cSJim Jagielski sEmpty, sEmpty, 0.0, // values not used
1181*b1cdbd2cSJim Jagielski sal_False, sal_False, !bCmd,
1182*b1cdbd2cSJim Jagielski ! GetOptionalBoolProperty(
1183*b1cdbd2cSJim Jagielski sPropertyIsFixedLanguage,
1184*b1cdbd2cSJim Jagielski rPropSet, xPropSetInfo, sal_False ) );
1185*b1cdbd2cSJim Jagielski
1186*b1cdbd2cSJim Jagielski // name from FieldMaster
1187*b1cdbd2cSJim Jagielski ProcessString(XML_NAME,
1188*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyName,
1189*b1cdbd2cSJim Jagielski GetMasterPropertySet(rTextField)));
1190*b1cdbd2cSJim Jagielski ExportElement(XML_USER_FIELD_GET, sPresentation);
1191*b1cdbd2cSJim Jagielski break;
1192*b1cdbd2cSJim Jagielski }
1193*b1cdbd2cSJim Jagielski
1194*b1cdbd2cSJim Jagielski case FIELD_ID_USER_INPUT:
1195*b1cdbd2cSJim Jagielski // user input field: name (from FieldMaster), description
1196*b1cdbd2cSJim Jagielski // ProcessString(XML_NAME,
1197*b1cdbd2cSJim Jagielski // GetStringProperty(sPropertyName,
1198*b1cdbd2cSJim Jagielski // GetMasterPropertySet(rTextField)));
1199*b1cdbd2cSJim Jagielski ProcessString(XML_NAME,
1200*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyContent, rPropSet));
1201*b1cdbd2cSJim Jagielski ProcessString(XML_DESCRIPTION,
1202*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyHint, rPropSet));
1203*b1cdbd2cSJim Jagielski ExportElement(XML_USER_FIELD_INPUT, sPresentation);
1204*b1cdbd2cSJim Jagielski break;
1205*b1cdbd2cSJim Jagielski
1206*b1cdbd2cSJim Jagielski case FIELD_ID_SEQUENCE:
1207*b1cdbd2cSJim Jagielski {
1208*b1cdbd2cSJim Jagielski // sequence field: name, formula, seq-format
1209*b1cdbd2cSJim Jagielski OUString sName = GetStringProperty(sPropertyVariableName, rPropSet);
1210*b1cdbd2cSJim Jagielski // TODO: use reference name only if actually beeing referenced.
1211*b1cdbd2cSJim Jagielski ProcessString(XML_REF_NAME,
1212*b1cdbd2cSJim Jagielski MakeSequenceRefName(
1213*b1cdbd2cSJim Jagielski GetInt16Property(sPropertySequenceValue, rPropSet),
1214*b1cdbd2cSJim Jagielski sName));
1215*b1cdbd2cSJim Jagielski ProcessString(XML_NAME, sName);
1216*b1cdbd2cSJim Jagielski ProcessString(XML_FORMULA, XML_NAMESPACE_OOOW,
1217*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyContent, rPropSet),
1218*b1cdbd2cSJim Jagielski sPresentation);
1219*b1cdbd2cSJim Jagielski ProcessNumberingType(GetInt16Property(sPropertyNumberingType,
1220*b1cdbd2cSJim Jagielski rPropSet));
1221*b1cdbd2cSJim Jagielski ExportElement(XML_SEQUENCE, sPresentation);
1222*b1cdbd2cSJim Jagielski break;
1223*b1cdbd2cSJim Jagielski }
1224*b1cdbd2cSJim Jagielski
1225*b1cdbd2cSJim Jagielski case FIELD_ID_EXPRESSION:
1226*b1cdbd2cSJim Jagielski {
1227*b1cdbd2cSJim Jagielski // formula field: formula, format&value
1228*b1cdbd2cSJim Jagielski sal_Bool bCmd = GetBoolProperty(sPropertyIsShowFormula, rPropSet);
1229*b1cdbd2cSJim Jagielski ProcessString(XML_FORMULA, XML_NAMESPACE_OOOW,
1230*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyContent, rPropSet),
1231*b1cdbd2cSJim Jagielski sPresentation);
1232*b1cdbd2cSJim Jagielski ProcessDisplay(sal_True, bCmd);
1233*b1cdbd2cSJim Jagielski ProcessValueAndType(IsStringField(nToken, rPropSet),
1234*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyNumberFormat, rPropSet),
1235*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyContent, rPropSet),
1236*b1cdbd2cSJim Jagielski sPresentation,
1237*b1cdbd2cSJim Jagielski GetDoubleProperty(sPropertyValue, rPropSet),
1238*b1cdbd2cSJim Jagielski !bCmd, !bCmd, !bCmd,
1239*b1cdbd2cSJim Jagielski ! GetOptionalBoolProperty(
1240*b1cdbd2cSJim Jagielski sPropertyIsFixedLanguage,
1241*b1cdbd2cSJim Jagielski rPropSet, xPropSetInfo, sal_False ) );
1242*b1cdbd2cSJim Jagielski ExportElement(XML_EXPRESSION, sPresentation);
1243*b1cdbd2cSJim Jagielski break;
1244*b1cdbd2cSJim Jagielski }
1245*b1cdbd2cSJim Jagielski
1246*b1cdbd2cSJim Jagielski case FIELD_ID_TEXT_INPUT:
1247*b1cdbd2cSJim Jagielski // text input field: description and string-value
1248*b1cdbd2cSJim Jagielski ProcessString(XML_DESCRIPTION,
1249*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyHint, rPropSet));
1250*b1cdbd2cSJim Jagielski ProcessString(XML_HELP,
1251*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyHelp, rPropSet), true);
1252*b1cdbd2cSJim Jagielski ProcessString(XML_HINT,
1253*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyTooltip, rPropSet), true);
1254*b1cdbd2cSJim Jagielski ExportElement(XML_TEXT_INPUT, sPresentation);
1255*b1cdbd2cSJim Jagielski break;
1256*b1cdbd2cSJim Jagielski
1257*b1cdbd2cSJim Jagielski case FIELD_ID_TIME:
1258*b1cdbd2cSJim Jagielski // all properties (except IsDate) are optional!
1259*b1cdbd2cSJim Jagielski if (xPropSetInfo->hasPropertyByName(sPropertyNumberFormat))
1260*b1cdbd2cSJim Jagielski {
1261*b1cdbd2cSJim Jagielski ProcessValueAndType(sal_False,
1262*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyNumberFormat,rPropSet),
1263*b1cdbd2cSJim Jagielski sEmpty, sEmpty, 0.0, // not used
1264*b1cdbd2cSJim Jagielski sal_False, sal_False, sal_True,
1265*b1cdbd2cSJim Jagielski ! GetOptionalBoolProperty(
1266*b1cdbd2cSJim Jagielski sPropertyIsFixedLanguage,
1267*b1cdbd2cSJim Jagielski rPropSet, xPropSetInfo, sal_False ),
1268*b1cdbd2cSJim Jagielski sal_True);
1269*b1cdbd2cSJim Jagielski }
1270*b1cdbd2cSJim Jagielski if (xPropSetInfo->hasPropertyByName(sPropertyDateTimeValue))
1271*b1cdbd2cSJim Jagielski {
1272*b1cdbd2cSJim Jagielski // no value -> current time
1273*b1cdbd2cSJim Jagielski ProcessDateTime(XML_TIME_VALUE,
1274*b1cdbd2cSJim Jagielski GetDateTimeProperty(sPropertyDateTimeValue,
1275*b1cdbd2cSJim Jagielski rPropSet),
1276*b1cdbd2cSJim Jagielski sal_False );
1277*b1cdbd2cSJim Jagielski }
1278*b1cdbd2cSJim Jagielski if (xPropSetInfo->hasPropertyByName(sPropertyDateTime))
1279*b1cdbd2cSJim Jagielski {
1280*b1cdbd2cSJim Jagielski // no value -> current time
1281*b1cdbd2cSJim Jagielski ProcessDateTime(XML_TIME_VALUE,
1282*b1cdbd2cSJim Jagielski GetDateTimeProperty(sPropertyDateTime,rPropSet),
1283*b1cdbd2cSJim Jagielski sal_False );
1284*b1cdbd2cSJim Jagielski }
1285*b1cdbd2cSJim Jagielski if (xPropSetInfo->hasPropertyByName(sPropertyIsFixed))
1286*b1cdbd2cSJim Jagielski {
1287*b1cdbd2cSJim Jagielski ProcessBoolean(XML_FIXED,
1288*b1cdbd2cSJim Jagielski GetBoolProperty(sPropertyIsFixed, rPropSet),
1289*b1cdbd2cSJim Jagielski sal_False);
1290*b1cdbd2cSJim Jagielski }
1291*b1cdbd2cSJim Jagielski if (xPropSetInfo->hasPropertyByName(sPropertyAdjust))
1292*b1cdbd2cSJim Jagielski {
1293*b1cdbd2cSJim Jagielski // adjust value given as integer in minutes
1294*b1cdbd2cSJim Jagielski ProcessDateTime(XML_TIME_ADJUST,
1295*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyAdjust, rPropSet),
1296*b1cdbd2cSJim Jagielski sal_False, sal_True, sal_True);
1297*b1cdbd2cSJim Jagielski }
1298*b1cdbd2cSJim Jagielski ExportElement(XML_TIME, sPresentation);
1299*b1cdbd2cSJim Jagielski break;
1300*b1cdbd2cSJim Jagielski
1301*b1cdbd2cSJim Jagielski case FIELD_ID_DATE:
1302*b1cdbd2cSJim Jagielski // all properties (except IsDate) are optional!
1303*b1cdbd2cSJim Jagielski if (xPropSetInfo->hasPropertyByName(sPropertyNumberFormat))
1304*b1cdbd2cSJim Jagielski {
1305*b1cdbd2cSJim Jagielski ProcessValueAndType(sal_False,
1306*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyNumberFormat,rPropSet),
1307*b1cdbd2cSJim Jagielski sEmpty, sEmpty, 0.0, // not used
1308*b1cdbd2cSJim Jagielski sal_False, sal_False, sal_True,
1309*b1cdbd2cSJim Jagielski ! GetOptionalBoolProperty(
1310*b1cdbd2cSJim Jagielski sPropertyIsFixedLanguage,
1311*b1cdbd2cSJim Jagielski rPropSet, xPropSetInfo, sal_False ) );
1312*b1cdbd2cSJim Jagielski }
1313*b1cdbd2cSJim Jagielski if (xPropSetInfo->hasPropertyByName(sPropertyDateTimeValue))
1314*b1cdbd2cSJim Jagielski {
1315*b1cdbd2cSJim Jagielski // no value -> current date
1316*b1cdbd2cSJim Jagielski ProcessDateTime(XML_DATE_VALUE,
1317*b1cdbd2cSJim Jagielski GetDateTimeProperty(sPropertyDateTimeValue,
1318*b1cdbd2cSJim Jagielski rPropSet),
1319*b1cdbd2cSJim Jagielski // #96457#: date fields should also save time
1320*b1cdbd2cSJim Jagielski sal_False);
1321*b1cdbd2cSJim Jagielski }
1322*b1cdbd2cSJim Jagielski // TODO: remove double-handling after SRC614
1323*b1cdbd2cSJim Jagielski else if (xPropSetInfo->hasPropertyByName(sPropertyDateTime))
1324*b1cdbd2cSJim Jagielski {
1325*b1cdbd2cSJim Jagielski ProcessDateTime(XML_DATE_VALUE,
1326*b1cdbd2cSJim Jagielski GetDateTimeProperty(sPropertyDateTime,rPropSet),
1327*b1cdbd2cSJim Jagielski // #96457#: date fields should also save time
1328*b1cdbd2cSJim Jagielski sal_False);
1329*b1cdbd2cSJim Jagielski }
1330*b1cdbd2cSJim Jagielski if (xPropSetInfo->hasPropertyByName(sPropertyIsFixed))
1331*b1cdbd2cSJim Jagielski {
1332*b1cdbd2cSJim Jagielski ProcessBoolean(XML_FIXED,
1333*b1cdbd2cSJim Jagielski GetBoolProperty(sPropertyIsFixed, rPropSet),
1334*b1cdbd2cSJim Jagielski sal_False);
1335*b1cdbd2cSJim Jagielski }
1336*b1cdbd2cSJim Jagielski if (xPropSetInfo->hasPropertyByName(sPropertyAdjust))
1337*b1cdbd2cSJim Jagielski {
1338*b1cdbd2cSJim Jagielski // adjust value given as number of days
1339*b1cdbd2cSJim Jagielski ProcessDateTime(XML_DATE_ADJUST,
1340*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyAdjust, rPropSet),
1341*b1cdbd2cSJim Jagielski sal_True, sal_True, sal_True);
1342*b1cdbd2cSJim Jagielski }
1343*b1cdbd2cSJim Jagielski ExportElement(XML_DATE, sPresentation);
1344*b1cdbd2cSJim Jagielski break;
1345*b1cdbd2cSJim Jagielski
1346*b1cdbd2cSJim Jagielski case FIELD_ID_PAGENUMBER:
1347*b1cdbd2cSJim Jagielski // all properties are optional
1348*b1cdbd2cSJim Jagielski if (xPropSetInfo->hasPropertyByName(sPropertyNumberingType))
1349*b1cdbd2cSJim Jagielski {
1350*b1cdbd2cSJim Jagielski ProcessNumberingType(GetInt16Property(sPropertyNumberingType,
1351*b1cdbd2cSJim Jagielski rPropSet));
1352*b1cdbd2cSJim Jagielski }
1353*b1cdbd2cSJim Jagielski if (xPropSetInfo->hasPropertyByName(sPropertyOffset))
1354*b1cdbd2cSJim Jagielski {
1355*b1cdbd2cSJim Jagielski sal_Int32 nAdjust = GetIntProperty(sPropertyOffset, rPropSet);
1356*b1cdbd2cSJim Jagielski
1357*b1cdbd2cSJim Jagielski if (xPropSetInfo->hasPropertyByName(sPropertySubType))
1358*b1cdbd2cSJim Jagielski {
1359*b1cdbd2cSJim Jagielski // property SubType used in MapPageNumebrName
1360*b1cdbd2cSJim Jagielski ProcessString(XML_SELECT_PAGE,
1361*b1cdbd2cSJim Jagielski MapPageNumberName(rPropSet, nAdjust));
1362*b1cdbd2cSJim Jagielski }
1363*b1cdbd2cSJim Jagielski ProcessIntegerDef(XML_PAGE_ADJUST, nAdjust, 0);
1364*b1cdbd2cSJim Jagielski }
1365*b1cdbd2cSJim Jagielski ExportElement(XML_PAGE_NUMBER, sPresentation);
1366*b1cdbd2cSJim Jagielski break;
1367*b1cdbd2cSJim Jagielski
1368*b1cdbd2cSJim Jagielski case FIELD_ID_PAGESTRING:
1369*b1cdbd2cSJim Jagielski {
1370*b1cdbd2cSJim Jagielski ProcessString(XML_STRING_VALUE,
1371*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyUserText, rPropSet),
1372*b1cdbd2cSJim Jagielski sPresentation);
1373*b1cdbd2cSJim Jagielski sal_Int32 nDummy = 0; // MapPageNumberName need int
1374*b1cdbd2cSJim Jagielski ProcessString(XML_SELECT_PAGE, MapPageNumberName(rPropSet, nDummy));
1375*b1cdbd2cSJim Jagielski if( 0 == ( GetExport().getExportFlags() & EXPORT_SAVEBACKWARDCOMPATIBLE ) )
1376*b1cdbd2cSJim Jagielski ExportElement(XML_PAGE_CONTINUATION, sPresentation);
1377*b1cdbd2cSJim Jagielski else
1378*b1cdbd2cSJim Jagielski ExportElement(XML_PAGE_CONTINUATION_STRING, sPresentation);
1379*b1cdbd2cSJim Jagielski break;
1380*b1cdbd2cSJim Jagielski }
1381*b1cdbd2cSJim Jagielski
1382*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_NAME:
1383*b1cdbd2cSJim Jagielski ProcessString(XML_TABLE_NAME,
1384*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyDataTableName, rPropSet));
1385*b1cdbd2cSJim Jagielski ProcessCommandType(GetIntProperty(sPropertyDataCommandType, rPropSet));
1386*b1cdbd2cSJim Jagielski ProcessDisplay(GetBoolProperty(sPropertyIsVisible, rPropSet),
1387*b1cdbd2cSJim Jagielski sal_False);
1388*b1cdbd2cSJim Jagielski ExportDataBaseElement(XML_DATABASE_NAME, sPresentation,
1389*b1cdbd2cSJim Jagielski rPropSet, xPropSetInfo);
1390*b1cdbd2cSJim Jagielski break;
1391*b1cdbd2cSJim Jagielski
1392*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_NUMBER:
1393*b1cdbd2cSJim Jagielski ProcessString(XML_TABLE_NAME,
1394*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyDataTableName, rPropSet));
1395*b1cdbd2cSJim Jagielski ProcessCommandType(GetIntProperty(sPropertyDataCommandType, rPropSet));
1396*b1cdbd2cSJim Jagielski ProcessNumberingType(
1397*b1cdbd2cSJim Jagielski GetInt16Property(sPropertyNumberingType,rPropSet));
1398*b1cdbd2cSJim Jagielski ProcessInteger(XML_VALUE,
1399*b1cdbd2cSJim Jagielski GetIntProperty(sPropertySetNumber, rPropSet));
1400*b1cdbd2cSJim Jagielski ProcessDisplay(GetBoolProperty(sPropertyIsVisible, rPropSet),
1401*b1cdbd2cSJim Jagielski sal_False);
1402*b1cdbd2cSJim Jagielski ExportDataBaseElement(XML_DATABASE_ROW_NUMBER, sPresentation,
1403*b1cdbd2cSJim Jagielski rPropSet, xPropSetInfo);
1404*b1cdbd2cSJim Jagielski break;
1405*b1cdbd2cSJim Jagielski
1406*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_NEXT:
1407*b1cdbd2cSJim Jagielski ProcessString(XML_TABLE_NAME,
1408*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyDataTableName, rPropSet));
1409*b1cdbd2cSJim Jagielski ProcessCommandType(GetIntProperty(sPropertyDataCommandType, rPropSet));
1410*b1cdbd2cSJim Jagielski ProcessString(XML_CONDITION, XML_NAMESPACE_OOOW,
1411*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyCondition, rPropSet));
1412*b1cdbd2cSJim Jagielski DBG_ASSERT(sPresentation.equals(sEmpty),
1413*b1cdbd2cSJim Jagielski "Unexpected presentation for database next field");
1414*b1cdbd2cSJim Jagielski ExportDataBaseElement(XML_DATABASE_NEXT, OUString(),
1415*b1cdbd2cSJim Jagielski rPropSet, xPropSetInfo);
1416*b1cdbd2cSJim Jagielski break;
1417*b1cdbd2cSJim Jagielski
1418*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_SELECT:
1419*b1cdbd2cSJim Jagielski ProcessString(XML_TABLE_NAME,
1420*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyDataTableName, rPropSet));
1421*b1cdbd2cSJim Jagielski ProcessCommandType(GetIntProperty(sPropertyDataCommandType, rPropSet));
1422*b1cdbd2cSJim Jagielski ProcessString(XML_CONDITION, XML_NAMESPACE_OOOW,
1423*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyCondition, rPropSet));
1424*b1cdbd2cSJim Jagielski ProcessInteger(XML_ROW_NUMBER,
1425*b1cdbd2cSJim Jagielski GetIntProperty(sPropertySetNumber, rPropSet));
1426*b1cdbd2cSJim Jagielski DBG_ASSERT(sPresentation.equals(sEmpty),
1427*b1cdbd2cSJim Jagielski "Unexpected presentation for database select field");
1428*b1cdbd2cSJim Jagielski ExportDataBaseElement(XML_DATABASE_ROW_SELECT, OUString(),
1429*b1cdbd2cSJim Jagielski rPropSet, xPropSetInfo);
1430*b1cdbd2cSJim Jagielski break;
1431*b1cdbd2cSJim Jagielski
1432*b1cdbd2cSJim Jagielski case FIELD_ID_DATABASE_DISPLAY:
1433*b1cdbd2cSJim Jagielski {
1434*b1cdbd2cSJim Jagielski // get database, table and column name from field master
1435*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xMaster = GetMasterPropertySet(rTextField);
1436*b1cdbd2cSJim Jagielski ProcessString(XML_TABLE_NAME,
1437*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyDataTableName, xMaster));
1438*b1cdbd2cSJim Jagielski ProcessCommandType(GetIntProperty(sPropertyDataCommandType, xMaster));
1439*b1cdbd2cSJim Jagielski ProcessString(XML_COLUMN_NAME,
1440*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyDataColumnName, xMaster));
1441*b1cdbd2cSJim Jagielski // export number format if available (happens only for numbers!)
1442*b1cdbd2cSJim Jagielski if (!GetBoolProperty(sPropertyIsDataBaseFormat, rPropSet))
1443*b1cdbd2cSJim Jagielski {
1444*b1cdbd2cSJim Jagielski ProcessValueAndType(sal_False, // doesn't happen for text
1445*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyNumberFormat,rPropSet),
1446*b1cdbd2cSJim Jagielski sEmpty, sEmpty, 0.0, // not used
1447*b1cdbd2cSJim Jagielski sal_False, sal_False, sal_True, sal_False);
1448*b1cdbd2cSJim Jagielski }
1449*b1cdbd2cSJim Jagielski ProcessDisplay(GetBoolProperty(sPropertyIsVisible, rPropSet),
1450*b1cdbd2cSJim Jagielski sal_False);
1451*b1cdbd2cSJim Jagielski ExportDataBaseElement(XML_DATABASE_DISPLAY, sPresentation,
1452*b1cdbd2cSJim Jagielski xMaster, xMaster->getPropertySetInfo());
1453*b1cdbd2cSJim Jagielski break;
1454*b1cdbd2cSJim Jagielski }
1455*b1cdbd2cSJim Jagielski
1456*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_REVISION:
1457*b1cdbd2cSJim Jagielski ProcessBoolean(XML_FIXED,
1458*b1cdbd2cSJim Jagielski GetBoolProperty(sPropertyIsFixed, rPropSet), sal_False);
1459*b1cdbd2cSJim Jagielski ExportElement(MapDocInfoFieldName(nToken), sPresentation);
1460*b1cdbd2cSJim Jagielski break;
1461*b1cdbd2cSJim Jagielski
1462*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_EDIT_DURATION:
1463*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SAVE_TIME:
1464*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CREATION_TIME:
1465*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_PRINT_TIME:
1466*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SAVE_DATE:
1467*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CREATION_DATE:
1468*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_PRINT_DATE:
1469*b1cdbd2cSJim Jagielski ProcessValueAndType(sal_False,
1470*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyNumberFormat, rPropSet),
1471*b1cdbd2cSJim Jagielski sEmpty, sEmpty, 0.0,
1472*b1cdbd2cSJim Jagielski sal_False, sal_False, sal_True,
1473*b1cdbd2cSJim Jagielski ! GetOptionalBoolProperty(
1474*b1cdbd2cSJim Jagielski sPropertyIsFixedLanguage,
1475*b1cdbd2cSJim Jagielski rPropSet, xPropSetInfo, sal_False ) );
1476*b1cdbd2cSJim Jagielski
1477*b1cdbd2cSJim Jagielski // todo: export date/time value, but values not available -> core bug
1478*b1cdbd2cSJim Jagielski ProcessBoolean(XML_FIXED,
1479*b1cdbd2cSJim Jagielski GetBoolProperty(sPropertyIsFixed, rPropSet), sal_False);
1480*b1cdbd2cSJim Jagielski ExportElement(MapDocInfoFieldName(nToken), sPresentation);
1481*b1cdbd2cSJim Jagielski break;
1482*b1cdbd2cSJim Jagielski
1483*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CREATION_AUTHOR:
1484*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_DESCRIPTION:
1485*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_PRINT_AUTHOR:
1486*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_TITLE:
1487*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SUBJECT:
1488*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_KEYWORDS:
1489*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SAVE_AUTHOR:
1490*b1cdbd2cSJim Jagielski if (xPropSetInfo->hasPropertyByName(sPropertyIsFixed))
1491*b1cdbd2cSJim Jagielski {
1492*b1cdbd2cSJim Jagielski ProcessBoolean(XML_FIXED,
1493*b1cdbd2cSJim Jagielski GetBoolProperty(sPropertyIsFixed, rPropSet), sal_False);
1494*b1cdbd2cSJim Jagielski }
1495*b1cdbd2cSJim Jagielski ExportElement(MapDocInfoFieldName(nToken), sPresentation);
1496*b1cdbd2cSJim Jagielski break;
1497*b1cdbd2cSJim Jagielski
1498*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CUSTOM:
1499*b1cdbd2cSJim Jagielski {
1500*b1cdbd2cSJim Jagielski ProcessValueAndType(sal_False, // doesn't happen for text
1501*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyNumberFormat,rPropSet),
1502*b1cdbd2cSJim Jagielski sEmpty, sEmpty, 0.0, // not used
1503*b1cdbd2cSJim Jagielski sal_False, sal_False, sal_True,
1504*b1cdbd2cSJim Jagielski ! GetOptionalBoolProperty(
1505*b1cdbd2cSJim Jagielski sPropertyIsFixedLanguage,
1506*b1cdbd2cSJim Jagielski rPropSet, xPropSetInfo, sal_False ));
1507*b1cdbd2cSJim Jagielski uno::Any aAny = rPropSet->getPropertyValue( sPropertyName );
1508*b1cdbd2cSJim Jagielski ::rtl::OUString sName;
1509*b1cdbd2cSJim Jagielski aAny >>= sName;
1510*b1cdbd2cSJim Jagielski ProcessString(XML_NAME, sName);
1511*b1cdbd2cSJim Jagielski ProcessBoolean(XML_FIXED, GetBoolProperty(sPropertyIsFixed, rPropSet), sal_False);
1512*b1cdbd2cSJim Jagielski ExportElement(XML_USER_DEFINED, sPresentation);
1513*b1cdbd2cSJim Jagielski break;
1514*b1cdbd2cSJim Jagielski }
1515*b1cdbd2cSJim Jagielski
1516*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_PAGES:
1517*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_PARAGRAPHS:
1518*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_WORDS:
1519*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_CHARACTERS:
1520*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_TABLES:
1521*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_GRAPHICS:
1522*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_OBJECTS:
1523*b1cdbd2cSJim Jagielski // all properties optional (applies to pages only, but I'll do
1524*b1cdbd2cSJim Jagielski // it for all for sake of common implementation)
1525*b1cdbd2cSJim Jagielski if (xPropSetInfo->hasPropertyByName(sPropertyNumberingType))
1526*b1cdbd2cSJim Jagielski {
1527*b1cdbd2cSJim Jagielski ProcessNumberingType(GetInt16Property(sPropertyNumberingType,
1528*b1cdbd2cSJim Jagielski rPropSet));
1529*b1cdbd2cSJim Jagielski }
1530*b1cdbd2cSJim Jagielski ExportElement(MapCountFieldName(nToken), sPresentation);
1531*b1cdbd2cSJim Jagielski break;
1532*b1cdbd2cSJim Jagielski
1533*b1cdbd2cSJim Jagielski case FIELD_ID_CONDITIONAL_TEXT:
1534*b1cdbd2cSJim Jagielski ProcessString(XML_CONDITION, XML_NAMESPACE_OOOW,
1535*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyCondition, rPropSet));
1536*b1cdbd2cSJim Jagielski ProcessString(XML_STRING_VALUE_IF_TRUE,
1537*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyTrueContent, rPropSet));
1538*b1cdbd2cSJim Jagielski ProcessString(XML_STRING_VALUE_IF_FALSE,
1539*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyFalseContent, rPropSet));
1540*b1cdbd2cSJim Jagielski ProcessBoolean(XML_CURRENT_VALUE,
1541*b1cdbd2cSJim Jagielski GetBoolProperty(sPropertyIsConditionTrue, rPropSet),
1542*b1cdbd2cSJim Jagielski sal_False);
1543*b1cdbd2cSJim Jagielski ExportElement(XML_CONDITIONAL_TEXT, sPresentation);
1544*b1cdbd2cSJim Jagielski break;
1545*b1cdbd2cSJim Jagielski
1546*b1cdbd2cSJim Jagielski case FIELD_ID_HIDDEN_TEXT:
1547*b1cdbd2cSJim Jagielski ProcessString(XML_CONDITION, XML_NAMESPACE_OOOW,
1548*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyCondition, rPropSet));
1549*b1cdbd2cSJim Jagielski ProcessString(XML_STRING_VALUE,
1550*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyContent, rPropSet));
1551*b1cdbd2cSJim Jagielski ProcessBoolean(XML_IS_HIDDEN,
1552*b1cdbd2cSJim Jagielski GetBoolProperty(sPropertyIsHidden, rPropSet),
1553*b1cdbd2cSJim Jagielski sal_False);
1554*b1cdbd2cSJim Jagielski ExportElement(XML_HIDDEN_TEXT, sPresentation);
1555*b1cdbd2cSJim Jagielski break;
1556*b1cdbd2cSJim Jagielski
1557*b1cdbd2cSJim Jagielski case FIELD_ID_HIDDEN_PARAGRAPH:
1558*b1cdbd2cSJim Jagielski ProcessString(XML_CONDITION, XML_NAMESPACE_OOOW,
1559*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyCondition, rPropSet));
1560*b1cdbd2cSJim Jagielski ProcessBoolean(XML_IS_HIDDEN,
1561*b1cdbd2cSJim Jagielski GetBoolProperty(sPropertyIsHidden, rPropSet),
1562*b1cdbd2cSJim Jagielski sal_False);
1563*b1cdbd2cSJim Jagielski DBG_ASSERT(sPresentation.equals(sEmpty),
1564*b1cdbd2cSJim Jagielski "Unexpected presentation for hidden paragraph field");
1565*b1cdbd2cSJim Jagielski ExportElement(XML_HIDDEN_PARAGRAPH);
1566*b1cdbd2cSJim Jagielski break;
1567*b1cdbd2cSJim Jagielski
1568*b1cdbd2cSJim Jagielski case FIELD_ID_TEMPLATE_NAME:
1569*b1cdbd2cSJim Jagielski ProcessString(XML_DISPLAY,
1570*b1cdbd2cSJim Jagielski MapTemplateDisplayFormat(
1571*b1cdbd2cSJim Jagielski GetInt16Property(sPropertyFileFormat, rPropSet)));
1572*b1cdbd2cSJim Jagielski ExportElement(XML_TEMPLATE_NAME, sPresentation);
1573*b1cdbd2cSJim Jagielski break;
1574*b1cdbd2cSJim Jagielski
1575*b1cdbd2cSJim Jagielski case FIELD_ID_CHAPTER:
1576*b1cdbd2cSJim Jagielski ProcessString(XML_DISPLAY,
1577*b1cdbd2cSJim Jagielski MapChapterDisplayFormat(
1578*b1cdbd2cSJim Jagielski GetInt16Property(sPropertyChapterFormat, rPropSet)));
1579*b1cdbd2cSJim Jagielski // API numbers 0..9, we number 1..10
1580*b1cdbd2cSJim Jagielski ProcessInteger(XML_OUTLINE_LEVEL,
1581*b1cdbd2cSJim Jagielski GetInt8Property(sPropertyLevel, rPropSet) + 1);
1582*b1cdbd2cSJim Jagielski ExportElement(XML_CHAPTER, sPresentation);
1583*b1cdbd2cSJim Jagielski break;
1584*b1cdbd2cSJim Jagielski
1585*b1cdbd2cSJim Jagielski case FIELD_ID_FILE_NAME:
1586*b1cdbd2cSJim Jagielski // all properties are optional
1587*b1cdbd2cSJim Jagielski if (xPropSetInfo->hasPropertyByName(sPropertyFileFormat))
1588*b1cdbd2cSJim Jagielski {
1589*b1cdbd2cSJim Jagielski ProcessString(XML_DISPLAY,
1590*b1cdbd2cSJim Jagielski MapFilenameDisplayFormat(
1591*b1cdbd2cSJim Jagielski GetInt16Property(sPropertyFileFormat, rPropSet)));
1592*b1cdbd2cSJim Jagielski }
1593*b1cdbd2cSJim Jagielski if (xPropSetInfo->hasPropertyByName(sPropertyIsFixed))
1594*b1cdbd2cSJim Jagielski {
1595*b1cdbd2cSJim Jagielski ProcessBoolean(XML_FIXED,
1596*b1cdbd2cSJim Jagielski GetBoolProperty(sPropertyIsFixed, rPropSet),
1597*b1cdbd2cSJim Jagielski sal_False);
1598*b1cdbd2cSJim Jagielski }
1599*b1cdbd2cSJim Jagielski ExportElement(XML_FILE_NAME, sPresentation);
1600*b1cdbd2cSJim Jagielski break;
1601*b1cdbd2cSJim Jagielski
1602*b1cdbd2cSJim Jagielski case FIELD_ID_REFPAGE_SET:
1603*b1cdbd2cSJim Jagielski ProcessBoolean(XML_ACTIVE,
1604*b1cdbd2cSJim Jagielski GetBoolProperty(sPropertyOn, rPropSet), sal_True);
1605*b1cdbd2cSJim Jagielski ProcessIntegerDef(XML_PAGE_ADJUST,
1606*b1cdbd2cSJim Jagielski GetInt16Property(sPropertyOffset, rPropSet), 0);
1607*b1cdbd2cSJim Jagielski DBG_ASSERT(sPresentation.equals(sEmpty),
1608*b1cdbd2cSJim Jagielski "Unexpected presentation page variable field");
1609*b1cdbd2cSJim Jagielski ExportElement(XML_PAGE_VARIABLE_SET);
1610*b1cdbd2cSJim Jagielski break;
1611*b1cdbd2cSJim Jagielski
1612*b1cdbd2cSJim Jagielski case FIELD_ID_REFPAGE_GET:
1613*b1cdbd2cSJim Jagielski ProcessNumberingType(
1614*b1cdbd2cSJim Jagielski GetInt16Property(sPropertyNumberingType, rPropSet));
1615*b1cdbd2cSJim Jagielski ExportElement(XML_PAGE_VARIABLE_GET, sPresentation);
1616*b1cdbd2cSJim Jagielski break;
1617*b1cdbd2cSJim Jagielski
1618*b1cdbd2cSJim Jagielski case FIELD_ID_MACRO:
1619*b1cdbd2cSJim Jagielski ExportMacro( rPropSet, sPresentation );
1620*b1cdbd2cSJim Jagielski break;
1621*b1cdbd2cSJim Jagielski
1622*b1cdbd2cSJim Jagielski case FIELD_ID_REF_SEQUENCE:
1623*b1cdbd2cSJim Jagielski // reference to sequence: format, name, find value (and element)
1624*b1cdbd2cSJim Jagielski // was: if (nSeqNumber != -1) ...
1625*b1cdbd2cSJim Jagielski ProcessString(XML_REFERENCE_FORMAT,
1626*b1cdbd2cSJim Jagielski MapReferenceType(GetInt16Property(
1627*b1cdbd2cSJim Jagielski sPropertyReferenceFieldPart, rPropSet)),
1628*b1cdbd2cSJim Jagielski XML_TEMPLATE);
1629*b1cdbd2cSJim Jagielski ProcessString(XML_REF_NAME,
1630*b1cdbd2cSJim Jagielski MakeSequenceRefName(
1631*b1cdbd2cSJim Jagielski GetInt16Property(sPropertySequenceNumber, rPropSet),
1632*b1cdbd2cSJim Jagielski GetStringProperty(sPropertySourceName, rPropSet) ) );
1633*b1cdbd2cSJim Jagielski ExportElement(
1634*b1cdbd2cSJim Jagielski MapReferenceSource(
1635*b1cdbd2cSJim Jagielski GetInt16Property(sPropertyReferenceFieldSource, rPropSet)),
1636*b1cdbd2cSJim Jagielski sPresentation);
1637*b1cdbd2cSJim Jagielski break;
1638*b1cdbd2cSJim Jagielski
1639*b1cdbd2cSJim Jagielski case FIELD_ID_REF_REFERENCE:
1640*b1cdbd2cSJim Jagielski case FIELD_ID_REF_BOOKMARK:
1641*b1cdbd2cSJim Jagielski // reference to bookmarks, references: format, name (and element)
1642*b1cdbd2cSJim Jagielski ProcessString(XML_REFERENCE_FORMAT,
1643*b1cdbd2cSJim Jagielski MapReferenceType(GetInt16Property(
1644*b1cdbd2cSJim Jagielski sPropertyReferenceFieldPart, rPropSet)),
1645*b1cdbd2cSJim Jagielski XML_TEMPLATE);
1646*b1cdbd2cSJim Jagielski ProcessString(XML_REF_NAME,
1647*b1cdbd2cSJim Jagielski GetStringProperty(sPropertySourceName, rPropSet));
1648*b1cdbd2cSJim Jagielski ExportElement(
1649*b1cdbd2cSJim Jagielski MapReferenceSource(GetInt16Property(
1650*b1cdbd2cSJim Jagielski sPropertyReferenceFieldSource, rPropSet)),
1651*b1cdbd2cSJim Jagielski sPresentation);
1652*b1cdbd2cSJim Jagielski break;
1653*b1cdbd2cSJim Jagielski
1654*b1cdbd2cSJim Jagielski case FIELD_ID_REF_FOOTNOTE:
1655*b1cdbd2cSJim Jagielski case FIELD_ID_REF_ENDNOTE:
1656*b1cdbd2cSJim Jagielski // reference to end-/footnote: format, generate name, (and element)
1657*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_TEXT, XML_NOTE_CLASS,
1658*b1cdbd2cSJim Jagielski FIELD_ID_REF_ENDNOTE==nToken ? XML_ENDNOTE : XML_FOOTNOTE );
1659*b1cdbd2cSJim Jagielski ProcessString(XML_REFERENCE_FORMAT,
1660*b1cdbd2cSJim Jagielski MapReferenceType(GetInt16Property(
1661*b1cdbd2cSJim Jagielski sPropertyReferenceFieldPart, rPropSet)),
1662*b1cdbd2cSJim Jagielski XML_TEMPLATE);
1663*b1cdbd2cSJim Jagielski ProcessString(XML_REF_NAME,
1664*b1cdbd2cSJim Jagielski MakeFootnoteRefName(GetInt16Property(
1665*b1cdbd2cSJim Jagielski sPropertySequenceNumber, rPropSet)));
1666*b1cdbd2cSJim Jagielski ExportElement(
1667*b1cdbd2cSJim Jagielski MapReferenceSource(GetInt16Property(
1668*b1cdbd2cSJim Jagielski sPropertyReferenceFieldSource, rPropSet)),
1669*b1cdbd2cSJim Jagielski sPresentation);
1670*b1cdbd2cSJim Jagielski break;
1671*b1cdbd2cSJim Jagielski
1672*b1cdbd2cSJim Jagielski case FIELD_ID_DDE:
1673*b1cdbd2cSJim Jagielski // name from field master
1674*b1cdbd2cSJim Jagielski ProcessString(XML_CONNECTION_NAME,
1675*b1cdbd2cSJim Jagielski
1676*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyName,
1677*b1cdbd2cSJim Jagielski GetMasterPropertySet(rTextField)));
1678*b1cdbd2cSJim Jagielski ExportElement(XML_DDE_CONNECTION, sPresentation);
1679*b1cdbd2cSJim Jagielski break;
1680*b1cdbd2cSJim Jagielski
1681*b1cdbd2cSJim Jagielski case FIELD_ID_SHEET_NAME:
1682*b1cdbd2cSJim Jagielski // name of spreadsheet (Calc only)
1683*b1cdbd2cSJim Jagielski ExportElement(XML_SHEET_NAME, sPresentation);
1684*b1cdbd2cSJim Jagielski break;
1685*b1cdbd2cSJim Jagielski
1686*b1cdbd2cSJim Jagielski case FIELD_ID_URL:
1687*b1cdbd2cSJim Jagielski {
1688*b1cdbd2cSJim Jagielski // this field is a special case because it gets mapped onto a
1689*b1cdbd2cSJim Jagielski // hyperlink, rather than one of the regular text field.
1690*b1cdbd2cSJim Jagielski ProcessString(XML_HREF, GetExport().GetRelativeReference(GetStringProperty(sPropertyURL, rPropSet)),
1691*b1cdbd2cSJim Jagielski sal_False, XML_NAMESPACE_XLINK);
1692*b1cdbd2cSJim Jagielski ProcessString(XML_TARGET_FRAME_NAME,
1693*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyTargetFrame,rPropSet),
1694*b1cdbd2cSJim Jagielski sal_True, XML_NAMESPACE_OFFICE);
1695*b1cdbd2cSJim Jagielski SvXMLElementExport aUrlField(rExport, XML_NAMESPACE_TEXT, XML_A,
1696*b1cdbd2cSJim Jagielski sal_False, sal_False);
1697*b1cdbd2cSJim Jagielski GetExport().Characters(sPresentation);
1698*b1cdbd2cSJim Jagielski break;
1699*b1cdbd2cSJim Jagielski }
1700*b1cdbd2cSJim Jagielski
1701*b1cdbd2cSJim Jagielski case FIELD_ID_BIBLIOGRAPHY:
1702*b1cdbd2cSJim Jagielski {
1703*b1cdbd2cSJim Jagielski ProcessBibliographyData(rPropSet);
1704*b1cdbd2cSJim Jagielski ExportElement(XML_BIBLIOGRAPHY_MARK, sPresentation);
1705*b1cdbd2cSJim Jagielski break;
1706*b1cdbd2cSJim Jagielski }
1707*b1cdbd2cSJim Jagielski
1708*b1cdbd2cSJim Jagielski case FIELD_ID_SCRIPT:
1709*b1cdbd2cSJim Jagielski ProcessString(XML_LANGUAGE,
1710*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyScriptType, rPropSet),
1711*b1cdbd2cSJim Jagielski sal_True, XML_NAMESPACE_SCRIPT);
1712*b1cdbd2cSJim Jagielski DBG_ASSERT(sPresentation.equals(sEmpty),
1713*b1cdbd2cSJim Jagielski "Unexpected presentation for script field");
1714*b1cdbd2cSJim Jagielski if (GetBoolProperty(sPropertyURLContent, rPropSet))
1715*b1cdbd2cSJim Jagielski {
1716*b1cdbd2cSJim Jagielski ProcessString(XML_HREF,
1717*b1cdbd2cSJim Jagielski GetExport().GetRelativeReference(GetStringProperty(sPropertyContent, rPropSet)),
1718*b1cdbd2cSJim Jagielski sal_False, XML_NAMESPACE_XLINK);
1719*b1cdbd2cSJim Jagielski ExportElement(XML_SCRIPT);
1720*b1cdbd2cSJim Jagielski }
1721*b1cdbd2cSJim Jagielski else
1722*b1cdbd2cSJim Jagielski {
1723*b1cdbd2cSJim Jagielski ExportElement(XML_SCRIPT,
1724*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyContent, rPropSet));
1725*b1cdbd2cSJim Jagielski }
1726*b1cdbd2cSJim Jagielski break;
1727*b1cdbd2cSJim Jagielski
1728*b1cdbd2cSJim Jagielski case FIELD_ID_ANNOTATION:
1729*b1cdbd2cSJim Jagielski {
1730*b1cdbd2cSJim Jagielski // check for empty presentation (just in case)
1731*b1cdbd2cSJim Jagielski DBG_ASSERT(sPresentation.equals(sEmpty),
1732*b1cdbd2cSJim Jagielski "Unexpected presentation for annotation field");
1733*b1cdbd2cSJim Jagielski
1734*b1cdbd2cSJim Jagielski // annotation element + content
1735*b1cdbd2cSJim Jagielski OUString aAnnotationName;
1736*b1cdbd2cSJim Jagielski rPropSet->getPropertyValue(sPropertyName) >>= aAnnotationName;
1737*b1cdbd2cSJim Jagielski if ( aAnnotationName.getLength() > 0 )
1738*b1cdbd2cSJim Jagielski {
1739*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_OFFICE, XML_NAME, aAnnotationName );
1740*b1cdbd2cSJim Jagielski }
1741*b1cdbd2cSJim Jagielski SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_OFFICE, XML_ANNOTATION, sal_False, sal_True );
1742*b1cdbd2cSJim Jagielski
1743*b1cdbd2cSJim Jagielski // author
1744*b1cdbd2cSJim Jagielski OUString aAuthor( GetStringProperty(sPropertyAuthor, rPropSet) );
1745*b1cdbd2cSJim Jagielski if ( aAuthor.getLength() > 0 )
1746*b1cdbd2cSJim Jagielski {
1747*b1cdbd2cSJim Jagielski SvXMLElementExport aCreatorElem( GetExport(), XML_NAMESPACE_DC,
1748*b1cdbd2cSJim Jagielski XML_CREATOR, sal_True,
1749*b1cdbd2cSJim Jagielski sal_False );
1750*b1cdbd2cSJim Jagielski GetExport().Characters(aAuthor);
1751*b1cdbd2cSJim Jagielski }
1752*b1cdbd2cSJim Jagielski
1753*b1cdbd2cSJim Jagielski // date time
1754*b1cdbd2cSJim Jagielski DateTime aDate( GetDateTimeProperty(sPropertyDateTimeValue, rPropSet) );
1755*b1cdbd2cSJim Jagielski {
1756*b1cdbd2cSJim Jagielski OUStringBuffer aBuffer;
1757*b1cdbd2cSJim Jagielski GetExport().GetMM100UnitConverter().convertDateTime(aBuffer,
1758*b1cdbd2cSJim Jagielski aDate,
1759*b1cdbd2cSJim Jagielski sal_True);
1760*b1cdbd2cSJim Jagielski SvXMLElementExport aDateElem( GetExport(), XML_NAMESPACE_DC,
1761*b1cdbd2cSJim Jagielski XML_DATE, sal_True,
1762*b1cdbd2cSJim Jagielski sal_False );
1763*b1cdbd2cSJim Jagielski GetExport().Characters(aBuffer.makeStringAndClear());
1764*b1cdbd2cSJim Jagielski }
1765*b1cdbd2cSJim Jagielski
1766*b1cdbd2cSJim Jagielski // initials
1767*b1cdbd2cSJim Jagielski if ( GetExport().getDefaultVersion() > SvtSaveOptions::ODFVER_012 )
1768*b1cdbd2cSJim Jagielski {
1769*b1cdbd2cSJim Jagielski OUString aInitials( GetStringProperty(sPropertyInitials, rPropSet) );
1770*b1cdbd2cSJim Jagielski if ( aInitials.getLength() > 0 )
1771*b1cdbd2cSJim Jagielski {
1772*b1cdbd2cSJim Jagielski SvXMLElementExport aCreatorElem(
1773*b1cdbd2cSJim Jagielski GetExport(),
1774*b1cdbd2cSJim Jagielski XML_NAMESPACE_TEXT_EXT,
1775*b1cdbd2cSJim Jagielski XML_SENDER_INITIALS,
1776*b1cdbd2cSJim Jagielski sal_True,
1777*b1cdbd2cSJim Jagielski sal_False );
1778*b1cdbd2cSJim Jagielski GetExport().Characters(aInitials);
1779*b1cdbd2cSJim Jagielski }
1780*b1cdbd2cSJim Jagielski }
1781*b1cdbd2cSJim Jagielski
1782*b1cdbd2cSJim Jagielski com::sun::star::uno::Reference < com::sun::star::text::XText > xText;
1783*b1cdbd2cSJim Jagielski try
1784*b1cdbd2cSJim Jagielski {
1785*b1cdbd2cSJim Jagielski com::sun::star::uno::Any aRet = rPropSet->getPropertyValue(sPropertyTextRange);
1786*b1cdbd2cSJim Jagielski aRet >>= xText;
1787*b1cdbd2cSJim Jagielski }
1788*b1cdbd2cSJim Jagielski catch ( com::sun::star::uno::Exception& )
1789*b1cdbd2cSJim Jagielski {}
1790*b1cdbd2cSJim Jagielski
1791*b1cdbd2cSJim Jagielski if ( xText.is() )
1792*b1cdbd2cSJim Jagielski GetExport().GetTextParagraphExport()->exportText( xText );
1793*b1cdbd2cSJim Jagielski else
1794*b1cdbd2cSJim Jagielski ProcessParagraphSequence(GetStringProperty(sPropertyContent,rPropSet));
1795*b1cdbd2cSJim Jagielski break;
1796*b1cdbd2cSJim Jagielski }
1797*b1cdbd2cSJim Jagielski
1798*b1cdbd2cSJim Jagielski case FIELD_ID_COMBINED_CHARACTERS:
1799*b1cdbd2cSJim Jagielski {
1800*b1cdbd2cSJim Jagielski // The style with the combined characters attribute has
1801*b1cdbd2cSJim Jagielski // already been handled in the ExportField method. So all that
1802*b1cdbd2cSJim Jagielski // is left to do now is to export the characters.
1803*b1cdbd2cSJim Jagielski GetExport().Characters(sPresentation);
1804*b1cdbd2cSJim Jagielski break;
1805*b1cdbd2cSJim Jagielski }
1806*b1cdbd2cSJim Jagielski
1807*b1cdbd2cSJim Jagielski case FIELD_ID_META:
1808*b1cdbd2cSJim Jagielski {
1809*b1cdbd2cSJim Jagielski ExportMetaField(rPropSet, false, bProgress);
1810*b1cdbd2cSJim Jagielski break;
1811*b1cdbd2cSJim Jagielski }
1812*b1cdbd2cSJim Jagielski
1813*b1cdbd2cSJim Jagielski case FIELD_ID_MEASURE:
1814*b1cdbd2cSJim Jagielski {
1815*b1cdbd2cSJim Jagielski ProcessString(XML_KIND, MapMeasureKind(GetInt16Property(sPropertyMeasureKind, rPropSet)));
1816*b1cdbd2cSJim Jagielski ExportElement( XML_MEASURE, sPresentation );
1817*b1cdbd2cSJim Jagielski break;
1818*b1cdbd2cSJim Jagielski }
1819*b1cdbd2cSJim Jagielski
1820*b1cdbd2cSJim Jagielski case FIELD_ID_TABLE_FORMULA:
1821*b1cdbd2cSJim Jagielski ProcessString( XML_FORMULA, XML_NAMESPACE_OOOW,
1822*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyContent, rPropSet) );
1823*b1cdbd2cSJim Jagielski ProcessDisplay( sal_True,
1824*b1cdbd2cSJim Jagielski GetBoolProperty(sPropertyIsShowFormula, rPropSet),
1825*b1cdbd2cSJim Jagielski sal_True );
1826*b1cdbd2cSJim Jagielski ProcessValueAndType( sal_False,
1827*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyNumberFormat, rPropSet),
1828*b1cdbd2cSJim Jagielski sEmpty, sEmpty, 0.0f,
1829*b1cdbd2cSJim Jagielski sal_False, sal_False, sal_True,
1830*b1cdbd2cSJim Jagielski sal_False, sal_False );
1831*b1cdbd2cSJim Jagielski ExportElement( XML_TABLE_FORMULA, sPresentation );
1832*b1cdbd2cSJim Jagielski break;
1833*b1cdbd2cSJim Jagielski
1834*b1cdbd2cSJim Jagielski case FIELD_ID_DROP_DOWN:
1835*b1cdbd2cSJim Jagielski {
1836*b1cdbd2cSJim Jagielski ProcessString(XML_NAME, GetStringProperty(sPropertyName, rPropSet));
1837*b1cdbd2cSJim Jagielski ProcessString(XML_HELP,
1838*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyHelp, rPropSet), true);
1839*b1cdbd2cSJim Jagielski ProcessString(XML_HINT,
1840*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyTooltip, rPropSet), true);
1841*b1cdbd2cSJim Jagielski SvXMLElementExport aElem( GetExport(),
1842*b1cdbd2cSJim Jagielski XML_NAMESPACE_TEXT, XML_DROPDOWN,
1843*b1cdbd2cSJim Jagielski sal_False, sal_False );
1844*b1cdbd2cSJim Jagielski ProcessStringSequence
1845*b1cdbd2cSJim Jagielski (GetStringSequenceProperty( sPropertyItems, rPropSet ),
1846*b1cdbd2cSJim Jagielski GetStringProperty( sPropertySelectedItem, rPropSet ) );
1847*b1cdbd2cSJim Jagielski
1848*b1cdbd2cSJim Jagielski GetExport().Characters( sPresentation );
1849*b1cdbd2cSJim Jagielski }
1850*b1cdbd2cSJim Jagielski break;
1851*b1cdbd2cSJim Jagielski
1852*b1cdbd2cSJim Jagielski case FIELD_ID_DRAW_HEADER:
1853*b1cdbd2cSJim Jagielski {
1854*b1cdbd2cSJim Jagielski SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_PRESENTATION, XML_HEADER, sal_False, sal_False );
1855*b1cdbd2cSJim Jagielski }
1856*b1cdbd2cSJim Jagielski break;
1857*b1cdbd2cSJim Jagielski
1858*b1cdbd2cSJim Jagielski case FIELD_ID_DRAW_FOOTER:
1859*b1cdbd2cSJim Jagielski {
1860*b1cdbd2cSJim Jagielski SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_PRESENTATION, XML_FOOTER, sal_False, sal_False );
1861*b1cdbd2cSJim Jagielski }
1862*b1cdbd2cSJim Jagielski break;
1863*b1cdbd2cSJim Jagielski
1864*b1cdbd2cSJim Jagielski case FIELD_ID_DRAW_DATE_TIME:
1865*b1cdbd2cSJim Jagielski {
1866*b1cdbd2cSJim Jagielski SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_PRESENTATION, XML_DATE_TIME, sal_False, sal_False );
1867*b1cdbd2cSJim Jagielski }
1868*b1cdbd2cSJim Jagielski break;
1869*b1cdbd2cSJim Jagielski
1870*b1cdbd2cSJim Jagielski case FIELD_ID_UNKNOWN:
1871*b1cdbd2cSJim Jagielski default:
1872*b1cdbd2cSJim Jagielski DBG_ERROR("unkown field type encountered!");
1873*b1cdbd2cSJim Jagielski // always export content
1874*b1cdbd2cSJim Jagielski GetExport().Characters(sPresentation);
1875*b1cdbd2cSJim Jagielski }
1876*b1cdbd2cSJim Jagielski }
1877*b1cdbd2cSJim Jagielski
1878*b1cdbd2cSJim Jagielski
1879*b1cdbd2cSJim Jagielski /// export field declarations / field masters
ExportFieldDeclarations()1880*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ExportFieldDeclarations()
1881*b1cdbd2cSJim Jagielski {
1882*b1cdbd2cSJim Jagielski Reference<XText> xEmptyText;
1883*b1cdbd2cSJim Jagielski ExportFieldDeclarations(xEmptyText);
1884*b1cdbd2cSJim Jagielski }
1885*b1cdbd2cSJim Jagielski
1886*b1cdbd2cSJim Jagielski /// export field declarations / field masters
ExportFieldDeclarations(const Reference<XText> & rText)1887*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ExportFieldDeclarations(
1888*b1cdbd2cSJim Jagielski const Reference<XText> & rText )
1889*b1cdbd2cSJim Jagielski {
1890*b1cdbd2cSJim Jagielski // store lists for decl elements
1891*b1cdbd2cSJim Jagielski vector<OUString> aVarName;
1892*b1cdbd2cSJim Jagielski vector<OUString> aUserName;
1893*b1cdbd2cSJim Jagielski vector<OUString> aSeqName;
1894*b1cdbd2cSJim Jagielski vector<OUString> aDdeName;
1895*b1cdbd2cSJim Jagielski
1896*b1cdbd2cSJim Jagielski // get text fields supplier and field master name access
1897*b1cdbd2cSJim Jagielski Reference<XTextFieldsSupplier> xTextFieldsSupp(GetExport().GetModel(),
1898*b1cdbd2cSJim Jagielski UNO_QUERY);
1899*b1cdbd2cSJim Jagielski if( !xTextFieldsSupp.is() )
1900*b1cdbd2cSJim Jagielski return;
1901*b1cdbd2cSJim Jagielski
1902*b1cdbd2cSJim Jagielski Reference<container::XNameAccess> xFieldMasterNameAccess(
1903*b1cdbd2cSJim Jagielski xTextFieldsSupp->getTextFieldMasters(), UNO_QUERY);
1904*b1cdbd2cSJim Jagielski
1905*b1cdbd2cSJim Jagielski // where to get the text field masters from?
1906*b1cdbd2cSJim Jagielski // a) we get a specific XText: then use pUsedMasters
1907*b1cdbd2cSJim Jagielski // b) the XText is empty: then export all text fields
1908*b1cdbd2cSJim Jagielski Sequence<OUString> aFieldMasters;
1909*b1cdbd2cSJim Jagielski if (rText.is())
1910*b1cdbd2cSJim Jagielski {
1911*b1cdbd2cSJim Jagielski // export only used masters
1912*b1cdbd2cSJim Jagielski DBG_ASSERT(NULL != pUsedMasters,
1913*b1cdbd2cSJim Jagielski "field masters must be recorded in order to be "
1914*b1cdbd2cSJim Jagielski "written out separatly" );
1915*b1cdbd2cSJim Jagielski if (NULL != pUsedMasters)
1916*b1cdbd2cSJim Jagielski {
1917*b1cdbd2cSJim Jagielski map<Reference<XText>, set<OUString> > ::iterator aMapIter =
1918*b1cdbd2cSJim Jagielski pUsedMasters->find(rText);
1919*b1cdbd2cSJim Jagielski if (aMapIter != pUsedMasters->end())
1920*b1cdbd2cSJim Jagielski {
1921*b1cdbd2cSJim Jagielski // found the set of used field masters
1922*b1cdbd2cSJim Jagielski set<OUString> & rOurMasters = aMapIter->second;
1923*b1cdbd2cSJim Jagielski
1924*b1cdbd2cSJim Jagielski // copy set to sequence
1925*b1cdbd2cSJim Jagielski aFieldMasters.realloc( rOurMasters.size() );
1926*b1cdbd2cSJim Jagielski sal_Int32 i = 0;
1927*b1cdbd2cSJim Jagielski for( set<OUString>::iterator aSetIter = rOurMasters.begin();
1928*b1cdbd2cSJim Jagielski aSetIter != rOurMasters.end();
1929*b1cdbd2cSJim Jagielski aSetIter++, i++ )
1930*b1cdbd2cSJim Jagielski {
1931*b1cdbd2cSJim Jagielski aFieldMasters[i] = *aSetIter;
1932*b1cdbd2cSJim Jagielski }
1933*b1cdbd2cSJim Jagielski
1934*b1cdbd2cSJim Jagielski pUsedMasters->erase(rText);
1935*b1cdbd2cSJim Jagielski }
1936*b1cdbd2cSJim Jagielski // else: XText not found -> ignore
1937*b1cdbd2cSJim Jagielski }
1938*b1cdbd2cSJim Jagielski // else: no field masters have been recorded -> ignore
1939*b1cdbd2cSJim Jagielski }
1940*b1cdbd2cSJim Jagielski else
1941*b1cdbd2cSJim Jagielski {
1942*b1cdbd2cSJim Jagielski // no XText: export all!
1943*b1cdbd2cSJim Jagielski aFieldMasters = xFieldMasterNameAccess->getElementNames();
1944*b1cdbd2cSJim Jagielski }
1945*b1cdbd2cSJim Jagielski
1946*b1cdbd2cSJim Jagielski for(sal_Int32 i=0; i<aFieldMasters.getLength(); i++) {
1947*b1cdbd2cSJim Jagielski
1948*b1cdbd2cSJim Jagielski // get field master name
1949*b1cdbd2cSJim Jagielski OUString sFieldMaster = aFieldMasters[i];
1950*b1cdbd2cSJim Jagielski
1951*b1cdbd2cSJim Jagielski // workaround for #no-bug#
1952*b1cdbd2cSJim Jagielski static const sal_Char sDB[] =
1953*b1cdbd2cSJim Jagielski "com.sun.star.text.FieldMaster.DataBase.";
1954*b1cdbd2cSJim Jagielski if ( sFieldMaster.matchIgnoreAsciiCaseAsciiL( sDB, sizeof(sDB)-1) )
1955*b1cdbd2cSJim Jagielski {
1956*b1cdbd2cSJim Jagielski continue;
1957*b1cdbd2cSJim Jagielski }
1958*b1cdbd2cSJim Jagielski
1959*b1cdbd2cSJim Jagielski
1960*b1cdbd2cSJim Jagielski OUString sFieldMasterType;
1961*b1cdbd2cSJim Jagielski OUString sVarName;
1962*b1cdbd2cSJim Jagielski ExplodeFieldMasterName(sFieldMaster, sFieldMasterType, sVarName);
1963*b1cdbd2cSJim Jagielski
1964*b1cdbd2cSJim Jagielski // get XPropertySet of this field master
1965*b1cdbd2cSJim Jagielski Reference<XPropertySet> xPropSet;
1966*b1cdbd2cSJim Jagielski Any aAny = xFieldMasterNameAccess->getByName(sFieldMaster);
1967*b1cdbd2cSJim Jagielski aAny >>= xPropSet;
1968*b1cdbd2cSJim Jagielski
1969*b1cdbd2cSJim Jagielski // save interesting field masters
1970*b1cdbd2cSJim Jagielski if (0 == sFieldMasterType.compareToAscii(FIELD_SERVICE_SETEXP))
1971*b1cdbd2cSJim Jagielski {
1972*b1cdbd2cSJim Jagielski sal_Int32 nType = GetIntProperty(sPropertySubType, xPropSet);
1973*b1cdbd2cSJim Jagielski
1974*b1cdbd2cSJim Jagielski // sequence or variable?
1975*b1cdbd2cSJim Jagielski if ( SetVariableType::SEQUENCE == nType )
1976*b1cdbd2cSJim Jagielski {
1977*b1cdbd2cSJim Jagielski aSeqName.push_back( sFieldMaster );
1978*b1cdbd2cSJim Jagielski }
1979*b1cdbd2cSJim Jagielski else
1980*b1cdbd2cSJim Jagielski {
1981*b1cdbd2cSJim Jagielski aVarName.push_back( sFieldMaster );
1982*b1cdbd2cSJim Jagielski }
1983*b1cdbd2cSJim Jagielski }
1984*b1cdbd2cSJim Jagielski else if (0 == sFieldMasterType.compareToAscii(FIELD_SERVICE_USER))
1985*b1cdbd2cSJim Jagielski {
1986*b1cdbd2cSJim Jagielski aUserName.push_back( sFieldMaster );
1987*b1cdbd2cSJim Jagielski }
1988*b1cdbd2cSJim Jagielski else if (0 == sFieldMasterType.compareToAscii(FIELD_SERVICE_DDE))
1989*b1cdbd2cSJim Jagielski {
1990*b1cdbd2cSJim Jagielski aDdeName.push_back( sFieldMaster );
1991*b1cdbd2cSJim Jagielski }
1992*b1cdbd2cSJim Jagielski else
1993*b1cdbd2cSJim Jagielski {
1994*b1cdbd2cSJim Jagielski ; // ignore
1995*b1cdbd2cSJim Jagielski }
1996*b1cdbd2cSJim Jagielski }
1997*b1cdbd2cSJim Jagielski
1998*b1cdbd2cSJim Jagielski // now process fields:
1999*b1cdbd2cSJim Jagielski
2000*b1cdbd2cSJim Jagielski // variable field masters:
2001*b1cdbd2cSJim Jagielski if ( !aVarName.empty() )
2002*b1cdbd2cSJim Jagielski {
2003*b1cdbd2cSJim Jagielski SvXMLElementExport aElem( GetExport(),
2004*b1cdbd2cSJim Jagielski XML_NAMESPACE_TEXT,
2005*b1cdbd2cSJim Jagielski XML_VARIABLE_DECLS,
2006*b1cdbd2cSJim Jagielski sal_True, sal_True );
2007*b1cdbd2cSJim Jagielski
2008*b1cdbd2cSJim Jagielski for (vector<OUString>::iterator aVarIter = aVarName.begin();
2009*b1cdbd2cSJim Jagielski aVarIter != aVarName.end();
2010*b1cdbd2cSJim Jagielski aVarIter++) {
2011*b1cdbd2cSJim Jagielski
2012*b1cdbd2cSJim Jagielski OUString sName = *aVarIter;
2013*b1cdbd2cSJim Jagielski
2014*b1cdbd2cSJim Jagielski // get field master property set
2015*b1cdbd2cSJim Jagielski Reference<XPropertySet> xPropSet;
2016*b1cdbd2cSJim Jagielski Any aAny = xFieldMasterNameAccess->getByName(sName);
2017*b1cdbd2cSJim Jagielski aAny >>= xPropSet;
2018*b1cdbd2cSJim Jagielski
2019*b1cdbd2cSJim Jagielski // field name and type
2020*b1cdbd2cSJim Jagielski OUString sFieldMasterType;
2021*b1cdbd2cSJim Jagielski OUString sVarName;
2022*b1cdbd2cSJim Jagielski ExplodeFieldMasterName(sName, sFieldMasterType, sVarName);
2023*b1cdbd2cSJim Jagielski
2024*b1cdbd2cSJim Jagielski // determine string/numeric field
2025*b1cdbd2cSJim Jagielski sal_Bool bIsString = ( GetIntProperty(sPropertySubType, xPropSet)
2026*b1cdbd2cSJim Jagielski == SetVariableType::STRING );
2027*b1cdbd2cSJim Jagielski
2028*b1cdbd2cSJim Jagielski // get dependent field property set
2029*b1cdbd2cSJim Jagielski Reference<XPropertySet> xFieldPropSet;
2030*b1cdbd2cSJim Jagielski if (GetDependentFieldPropertySet(xPropSet, xFieldPropSet))
2031*b1cdbd2cSJim Jagielski {
2032*b1cdbd2cSJim Jagielski // process value and type.
2033*b1cdbd2cSJim Jagielski ProcessValueAndType(
2034*b1cdbd2cSJim Jagielski bIsString,
2035*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyNumberFormat, xFieldPropSet),
2036*b1cdbd2cSJim Jagielski sEmpty, sEmpty, 0.0,
2037*b1cdbd2cSJim Jagielski sal_False, sal_True, sal_False, sal_False);
2038*b1cdbd2cSJim Jagielski }
2039*b1cdbd2cSJim Jagielski else
2040*b1cdbd2cSJim Jagielski {
2041*b1cdbd2cSJim Jagielski // If no dependent field is found, only string and
2042*b1cdbd2cSJim Jagielski // float types can be supported
2043*b1cdbd2cSJim Jagielski
2044*b1cdbd2cSJim Jagielski // number format: 0 is default number format for 1st
2045*b1cdbd2cSJim Jagielski // language. should be: getDefaultNumberFormat(Locale)
2046*b1cdbd2cSJim Jagielski // from NumberFormats
2047*b1cdbd2cSJim Jagielski ProcessValueAndType(
2048*b1cdbd2cSJim Jagielski bIsString,
2049*b1cdbd2cSJim Jagielski 0, sEmpty, sEmpty, 0.0,
2050*b1cdbd2cSJim Jagielski sal_False, sal_True, sal_False, sal_False);
2051*b1cdbd2cSJim Jagielski }
2052*b1cdbd2cSJim Jagielski
2053*b1cdbd2cSJim Jagielski ProcessString(XML_NAME, sVarName);
2054*b1cdbd2cSJim Jagielski ExportElement(XML_VARIABLE_DECL, sal_True);
2055*b1cdbd2cSJim Jagielski }
2056*b1cdbd2cSJim Jagielski }
2057*b1cdbd2cSJim Jagielski // else: no declarations element
2058*b1cdbd2cSJim Jagielski
2059*b1cdbd2cSJim Jagielski // sequence field masters:
2060*b1cdbd2cSJim Jagielski if ( !aSeqName.empty() )
2061*b1cdbd2cSJim Jagielski {
2062*b1cdbd2cSJim Jagielski SvXMLElementExport aElem( GetExport(),
2063*b1cdbd2cSJim Jagielski XML_NAMESPACE_TEXT,
2064*b1cdbd2cSJim Jagielski XML_SEQUENCE_DECLS,
2065*b1cdbd2cSJim Jagielski sal_True, sal_True );
2066*b1cdbd2cSJim Jagielski
2067*b1cdbd2cSJim Jagielski for (vector<OUString>::iterator aSeqIter = aSeqName.begin();
2068*b1cdbd2cSJim Jagielski aSeqIter != aSeqName.end();
2069*b1cdbd2cSJim Jagielski aSeqIter++) {
2070*b1cdbd2cSJim Jagielski
2071*b1cdbd2cSJim Jagielski OUString sName = *aSeqIter;
2072*b1cdbd2cSJim Jagielski
2073*b1cdbd2cSJim Jagielski // get field master property set
2074*b1cdbd2cSJim Jagielski Reference<XPropertySet> xPropSet;
2075*b1cdbd2cSJim Jagielski Any aAny = xFieldMasterNameAccess->getByName(sName);
2076*b1cdbd2cSJim Jagielski aAny >>= xPropSet;
2077*b1cdbd2cSJim Jagielski
2078*b1cdbd2cSJim Jagielski // field name and type
2079*b1cdbd2cSJim Jagielski OUString sFieldMasterType;
2080*b1cdbd2cSJim Jagielski OUString sVarName;
2081*b1cdbd2cSJim Jagielski ExplodeFieldMasterName(sName, sFieldMasterType, sVarName);
2082*b1cdbd2cSJim Jagielski
2083*b1cdbd2cSJim Jagielski // outline level
2084*b1cdbd2cSJim Jagielski sal_Int32 nLevel = 1 + GetIntProperty(
2085*b1cdbd2cSJim Jagielski sPropertyChapterNumberingLevel, xPropSet);
2086*b1cdbd2cSJim Jagielski DBG_ASSERT(nLevel >= 0, "illegal outline level");
2087*b1cdbd2cSJim Jagielski DBG_ASSERT(nLevel < 127, "possible illegal outline level");
2088*b1cdbd2cSJim Jagielski ProcessInteger(XML_DISPLAY_OUTLINE_LEVEL, nLevel);
2089*b1cdbd2cSJim Jagielski
2090*b1cdbd2cSJim Jagielski // separation character
2091*b1cdbd2cSJim Jagielski if (nLevel > 0) {
2092*b1cdbd2cSJim Jagielski ProcessString(XML_SEPARATION_CHARACTER, GetStringProperty(
2093*b1cdbd2cSJim Jagielski sPropertyNumberingSeparator, xPropSet));
2094*b1cdbd2cSJim Jagielski }
2095*b1cdbd2cSJim Jagielski ProcessString(XML_NAME, sVarName);
2096*b1cdbd2cSJim Jagielski ExportElement(XML_SEQUENCE_DECL, sal_True);
2097*b1cdbd2cSJim Jagielski }
2098*b1cdbd2cSJim Jagielski }
2099*b1cdbd2cSJim Jagielski // else: no declarations element
2100*b1cdbd2cSJim Jagielski
2101*b1cdbd2cSJim Jagielski // user field field masters:
2102*b1cdbd2cSJim Jagielski if ( !aUserName.empty() )
2103*b1cdbd2cSJim Jagielski {
2104*b1cdbd2cSJim Jagielski SvXMLElementExport aElem( GetExport(),
2105*b1cdbd2cSJim Jagielski XML_NAMESPACE_TEXT,
2106*b1cdbd2cSJim Jagielski XML_USER_FIELD_DECLS,
2107*b1cdbd2cSJim Jagielski sal_True, sal_True );
2108*b1cdbd2cSJim Jagielski
2109*b1cdbd2cSJim Jagielski for (vector<OUString>::iterator aUserIter = aUserName.begin();
2110*b1cdbd2cSJim Jagielski aUserIter != aUserName.end();
2111*b1cdbd2cSJim Jagielski aUserIter++) {
2112*b1cdbd2cSJim Jagielski
2113*b1cdbd2cSJim Jagielski OUString sName = *aUserIter;
2114*b1cdbd2cSJim Jagielski
2115*b1cdbd2cSJim Jagielski // get field master property set
2116*b1cdbd2cSJim Jagielski Reference<XPropertySet> xPropSet;
2117*b1cdbd2cSJim Jagielski Any aAny = xFieldMasterNameAccess->getByName(sName);
2118*b1cdbd2cSJim Jagielski aAny >>= xPropSet;
2119*b1cdbd2cSJim Jagielski
2120*b1cdbd2cSJim Jagielski // field name and type
2121*b1cdbd2cSJim Jagielski OUString sFieldMasterType;
2122*b1cdbd2cSJim Jagielski OUString sVarName;
2123*b1cdbd2cSJim Jagielski ExplodeFieldMasterName(sName, sFieldMasterType, sVarName);
2124*b1cdbd2cSJim Jagielski
2125*b1cdbd2cSJim Jagielski if (GetBoolProperty(sPropertyIsExpression, xPropSet))
2126*b1cdbd2cSJim Jagielski {
2127*b1cdbd2cSJim Jagielski // expression:
2128*b1cdbd2cSJim Jagielski ProcessValueAndType(
2129*b1cdbd2cSJim Jagielski sal_False,
2130*b1cdbd2cSJim Jagielski 0, sEmpty, sEmpty,
2131*b1cdbd2cSJim Jagielski GetDoubleProperty(sPropertyValue, xPropSet),
2132*b1cdbd2cSJim Jagielski sal_True,
2133*b1cdbd2cSJim Jagielski sal_True,
2134*b1cdbd2cSJim Jagielski sal_False,
2135*b1cdbd2cSJim Jagielski sal_False);
2136*b1cdbd2cSJim Jagielski }
2137*b1cdbd2cSJim Jagielski else
2138*b1cdbd2cSJim Jagielski {
2139*b1cdbd2cSJim Jagielski // string: write regardless of default
2140*b1cdbd2cSJim Jagielski ProcessString(XML_VALUE_TYPE, XML_STRING, sal_False,
2141*b1cdbd2cSJim Jagielski XML_NAMESPACE_OFFICE);
2142*b1cdbd2cSJim Jagielski ProcessString(XML_STRING_VALUE,
2143*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyContent, xPropSet),
2144*b1cdbd2cSJim Jagielski sal_False, XML_NAMESPACE_OFFICE );
2145*b1cdbd2cSJim Jagielski }
2146*b1cdbd2cSJim Jagielski ProcessString(XML_NAME, sVarName);
2147*b1cdbd2cSJim Jagielski ExportElement(XML_USER_FIELD_DECL, sal_True);
2148*b1cdbd2cSJim Jagielski }
2149*b1cdbd2cSJim Jagielski }
2150*b1cdbd2cSJim Jagielski // else: no declarations element
2151*b1cdbd2cSJim Jagielski
2152*b1cdbd2cSJim Jagielski // DDE field field masters:
2153*b1cdbd2cSJim Jagielski if ( !aDdeName.empty() )
2154*b1cdbd2cSJim Jagielski {
2155*b1cdbd2cSJim Jagielski SvXMLElementExport aElem( GetExport(),
2156*b1cdbd2cSJim Jagielski XML_NAMESPACE_TEXT,
2157*b1cdbd2cSJim Jagielski XML_DDE_CONNECTION_DECLS,
2158*b1cdbd2cSJim Jagielski sal_True, sal_True );
2159*b1cdbd2cSJim Jagielski
2160*b1cdbd2cSJim Jagielski for (vector<OUString>::iterator aDdeIter = aDdeName.begin();
2161*b1cdbd2cSJim Jagielski aDdeIter != aDdeName.end();
2162*b1cdbd2cSJim Jagielski aDdeIter++)
2163*b1cdbd2cSJim Jagielski {
2164*b1cdbd2cSJim Jagielski OUString sName = *aDdeIter;
2165*b1cdbd2cSJim Jagielski
2166*b1cdbd2cSJim Jagielski // get field master property set
2167*b1cdbd2cSJim Jagielski Reference<XPropertySet> xPropSet;
2168*b1cdbd2cSJim Jagielski Any aAny = xFieldMasterNameAccess->getByName(sName);
2169*b1cdbd2cSJim Jagielski aAny >>= xPropSet;
2170*b1cdbd2cSJim Jagielski
2171*b1cdbd2cSJim Jagielski // check if this connection is being used by a field
2172*b1cdbd2cSJim Jagielski Reference<XPropertySet> xDummy;
2173*b1cdbd2cSJim Jagielski if (GetDependentFieldPropertySet(xPropSet, xDummy))
2174*b1cdbd2cSJim Jagielski {
2175*b1cdbd2cSJim Jagielski
2176*b1cdbd2cSJim Jagielski ProcessString(XML_NAME,
2177*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyName, xPropSet),
2178*b1cdbd2cSJim Jagielski sal_False, XML_NAMESPACE_OFFICE);
2179*b1cdbd2cSJim Jagielski
2180*b1cdbd2cSJim Jagielski // export elements; can't use ProcessString because
2181*b1cdbd2cSJim Jagielski // elements are in office namespace
2182*b1cdbd2cSJim Jagielski ProcessString(XML_DDE_APPLICATION,
2183*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyDDECommandType,
2184*b1cdbd2cSJim Jagielski xPropSet),
2185*b1cdbd2cSJim Jagielski sal_False, XML_NAMESPACE_OFFICE);
2186*b1cdbd2cSJim Jagielski ProcessString(XML_DDE_TOPIC,
2187*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyDDECommandFile,
2188*b1cdbd2cSJim Jagielski xPropSet),
2189*b1cdbd2cSJim Jagielski sal_False, XML_NAMESPACE_OFFICE);
2190*b1cdbd2cSJim Jagielski ProcessString(XML_DDE_ITEM,
2191*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyDDECommandElement,
2192*b1cdbd2cSJim Jagielski xPropSet),
2193*b1cdbd2cSJim Jagielski sal_False, XML_NAMESPACE_OFFICE);
2194*b1cdbd2cSJim Jagielski sal_Bool bIsAutomaticUpdate = GetBoolProperty(
2195*b1cdbd2cSJim Jagielski sPropertyIsAutomaticUpdate, xPropSet);
2196*b1cdbd2cSJim Jagielski if (bIsAutomaticUpdate)
2197*b1cdbd2cSJim Jagielski {
2198*b1cdbd2cSJim Jagielski GetExport().AddAttribute(XML_NAMESPACE_OFFICE,
2199*b1cdbd2cSJim Jagielski XML_AUTOMATIC_UPDATE,
2200*b1cdbd2cSJim Jagielski XML_TRUE);
2201*b1cdbd2cSJim Jagielski }
2202*b1cdbd2cSJim Jagielski
2203*b1cdbd2cSJim Jagielski ExportElement(XML_DDE_CONNECTION_DECL, sal_True);
2204*b1cdbd2cSJim Jagielski }
2205*b1cdbd2cSJim Jagielski // else: no dependent field -> no export of field declaration
2206*b1cdbd2cSJim Jagielski }
2207*b1cdbd2cSJim Jagielski }
2208*b1cdbd2cSJim Jagielski // else: no declarations element
2209*b1cdbd2cSJim Jagielski }
2210*b1cdbd2cSJim Jagielski
SetExportOnlyUsedFieldDeclarations(sal_Bool bExportOnlyUsed)2211*b1cdbd2cSJim Jagielski void XMLTextFieldExport::SetExportOnlyUsedFieldDeclarations(
2212*b1cdbd2cSJim Jagielski sal_Bool bExportOnlyUsed)
2213*b1cdbd2cSJim Jagielski {
2214*b1cdbd2cSJim Jagielski delete pUsedMasters;
2215*b1cdbd2cSJim Jagielski pUsedMasters = NULL;
2216*b1cdbd2cSJim Jagielski
2217*b1cdbd2cSJim Jagielski // create used masters set (if none is used)
2218*b1cdbd2cSJim Jagielski if (bExportOnlyUsed)
2219*b1cdbd2cSJim Jagielski pUsedMasters = new map<Reference<XText>, set<OUString> > ;
2220*b1cdbd2cSJim Jagielski }
2221*b1cdbd2cSJim Jagielski
ExportElement(enum XMLTokenEnum eElementName,sal_Bool bAddSpace)2222*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ExportElement(enum XMLTokenEnum eElementName,
2223*b1cdbd2cSJim Jagielski sal_Bool bAddSpace)
2224*b1cdbd2cSJim Jagielski {
2225*b1cdbd2cSJim Jagielski // can't call ExportElement(eElementName, const OUString&) with empty
2226*b1cdbd2cSJim Jagielski // string because xmlprinter only uses empty tags if no content
2227*b1cdbd2cSJim Jagielski // (not even empty content) was written.
2228*b1cdbd2cSJim Jagielski
2229*b1cdbd2cSJim Jagielski DBG_ASSERT(XML_TOKEN_INVALID != eElementName, "invalid element name!");
2230*b1cdbd2cSJim Jagielski if (XML_TOKEN_INVALID != eElementName)
2231*b1cdbd2cSJim Jagielski {
2232*b1cdbd2cSJim Jagielski // Element
2233*b1cdbd2cSJim Jagielski SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_TEXT,
2234*b1cdbd2cSJim Jagielski eElementName, bAddSpace, bAddSpace );
2235*b1cdbd2cSJim Jagielski } // else: ignore
2236*b1cdbd2cSJim Jagielski }
2237*b1cdbd2cSJim Jagielski
ExportElement(enum XMLTokenEnum eElementName,const OUString & sContent,sal_Bool bAddSpace)2238*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ExportElement(enum XMLTokenEnum eElementName,
2239*b1cdbd2cSJim Jagielski const OUString& sContent,
2240*b1cdbd2cSJim Jagielski sal_Bool bAddSpace)
2241*b1cdbd2cSJim Jagielski {
2242*b1cdbd2cSJim Jagielski DBG_ASSERT(eElementName != XML_TOKEN_INVALID, "invalid element name!");
2243*b1cdbd2cSJim Jagielski if (eElementName != XML_TOKEN_INVALID)
2244*b1cdbd2cSJim Jagielski {
2245*b1cdbd2cSJim Jagielski // Element
2246*b1cdbd2cSJim Jagielski SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_TEXT,
2247*b1cdbd2cSJim Jagielski eElementName, bAddSpace, bAddSpace );
2248*b1cdbd2cSJim Jagielski // export content
2249*b1cdbd2cSJim Jagielski GetExport().Characters(sContent);
2250*b1cdbd2cSJim Jagielski } else {
2251*b1cdbd2cSJim Jagielski // always export content
2252*b1cdbd2cSJim Jagielski GetExport().Characters(sContent);
2253*b1cdbd2cSJim Jagielski }
2254*b1cdbd2cSJim Jagielski }
2255*b1cdbd2cSJim Jagielski
ExportMacro(const Reference<XPropertySet> & rPropSet,const OUString & rContent)2256*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ExportMacro(
2257*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & rPropSet,
2258*b1cdbd2cSJim Jagielski const OUString& rContent )
2259*b1cdbd2cSJim Jagielski {
2260*b1cdbd2cSJim Jagielski // some strings we'll need
2261*b1cdbd2cSJim Jagielski OUString sEventType( RTL_CONSTASCII_USTRINGPARAM( "EventType" ));
2262*b1cdbd2cSJim Jagielski OUString sStarBasic( RTL_CONSTASCII_USTRINGPARAM( "StarBasic" ));
2263*b1cdbd2cSJim Jagielski OUString sScript( RTL_CONSTASCII_USTRINGPARAM( "Script" ));
2264*b1cdbd2cSJim Jagielski OUString sLibrary( RTL_CONSTASCII_USTRINGPARAM( "Library" ));
2265*b1cdbd2cSJim Jagielski OUString sMacroName( RTL_CONSTASCII_USTRINGPARAM( "MacroName" ));
2266*b1cdbd2cSJim Jagielski OUString sOnClick( RTL_CONSTASCII_USTRINGPARAM( "OnClick" ));
2267*b1cdbd2cSJim Jagielski OUString sPropertyMacroLibrary( RTL_CONSTASCII_USTRINGPARAM( "MacroLibrary" ));
2268*b1cdbd2cSJim Jagielski OUString sPropertyMacroName( RTL_CONSTASCII_USTRINGPARAM( "MacroName" ));
2269*b1cdbd2cSJim Jagielski OUString sPropertyScriptURL( RTL_CONSTASCII_USTRINGPARAM( "ScriptURL" ));
2270*b1cdbd2cSJim Jagielski
2271*b1cdbd2cSJim Jagielski
2272*b1cdbd2cSJim Jagielski // the description attribute
2273*b1cdbd2cSJim Jagielski ProcessString(XML_DESCRIPTION,
2274*b1cdbd2cSJim Jagielski GetStringProperty(sPropertyHint, rPropSet),
2275*b1cdbd2cSJim Jagielski rContent);
2276*b1cdbd2cSJim Jagielski
2277*b1cdbd2cSJim Jagielski // the element
2278*b1cdbd2cSJim Jagielski SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_TEXT,
2279*b1cdbd2cSJim Jagielski XML_EXECUTE_MACRO, sal_False, sal_False );
2280*b1cdbd2cSJim Jagielski
2281*b1cdbd2cSJim Jagielski // the <office:events>-macro:
2282*b1cdbd2cSJim Jagielski
2283*b1cdbd2cSJim Jagielski // 1) build sequence of PropertyValues
2284*b1cdbd2cSJim Jagielski Sequence<PropertyValue> aSeq;
2285*b1cdbd2cSJim Jagielski OUString sName;
2286*b1cdbd2cSJim Jagielski rPropSet->getPropertyValue( sPropertyScriptURL ) >>= sName;
2287*b1cdbd2cSJim Jagielski
2288*b1cdbd2cSJim Jagielski // if the ScriptURL property is not empty then this is a Scripting
2289*b1cdbd2cSJim Jagielski // Framework URL, otherwise treat it as a Basic Macro
2290*b1cdbd2cSJim Jagielski if (sName.getLength() != 0)
2291*b1cdbd2cSJim Jagielski {
2292*b1cdbd2cSJim Jagielski aSeq = Sequence<PropertyValue> (2);
2293*b1cdbd2cSJim Jagielski PropertyValue* pArr = aSeq.getArray();
2294*b1cdbd2cSJim Jagielski pArr[0].Name = sEventType;
2295*b1cdbd2cSJim Jagielski pArr[0].Value <<= sScript;
2296*b1cdbd2cSJim Jagielski pArr[1].Name = sScript;
2297*b1cdbd2cSJim Jagielski pArr[1].Value = rPropSet->getPropertyValue( sPropertyScriptURL );
2298*b1cdbd2cSJim Jagielski }
2299*b1cdbd2cSJim Jagielski else
2300*b1cdbd2cSJim Jagielski {
2301*b1cdbd2cSJim Jagielski aSeq = Sequence<PropertyValue> (3);
2302*b1cdbd2cSJim Jagielski PropertyValue* pArr = aSeq.getArray();
2303*b1cdbd2cSJim Jagielski pArr[0].Name = sEventType;
2304*b1cdbd2cSJim Jagielski pArr[0].Value <<= sStarBasic;
2305*b1cdbd2cSJim Jagielski pArr[1].Name = sLibrary;
2306*b1cdbd2cSJim Jagielski pArr[1].Value = rPropSet->getPropertyValue( sPropertyMacroLibrary );
2307*b1cdbd2cSJim Jagielski pArr[2].Name = sMacroName;
2308*b1cdbd2cSJim Jagielski pArr[2].Value = rPropSet->getPropertyValue( sPropertyMacroName );
2309*b1cdbd2cSJim Jagielski }
2310*b1cdbd2cSJim Jagielski
2311*b1cdbd2cSJim Jagielski // 2) export the sequence
2312*b1cdbd2cSJim Jagielski GetExport().GetEventExport().ExportSingleEvent( aSeq, sOnClick, sal_False );
2313*b1cdbd2cSJim Jagielski
2314*b1cdbd2cSJim Jagielski // and finally, the field presentation
2315*b1cdbd2cSJim Jagielski GetExport().Characters(rContent);
2316*b1cdbd2cSJim Jagielski }
2317*b1cdbd2cSJim Jagielski
ExportMetaField(const Reference<XPropertySet> & i_xMeta,bool i_bAutoStyles,sal_Bool i_bProgress)2318*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ExportMetaField(
2319*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & i_xMeta,
2320*b1cdbd2cSJim Jagielski bool i_bAutoStyles, sal_Bool i_bProgress )
2321*b1cdbd2cSJim Jagielski {
2322*b1cdbd2cSJim Jagielski bool doExport(!i_bAutoStyles); // do not export element if autostyles
2323*b1cdbd2cSJim Jagielski // check version >= 1.2
2324*b1cdbd2cSJim Jagielski switch (GetExport().getDefaultVersion()) {
2325*b1cdbd2cSJim Jagielski case SvtSaveOptions::ODFVER_011: // fall thru
2326*b1cdbd2cSJim Jagielski case SvtSaveOptions::ODFVER_010: doExport = false; break;
2327*b1cdbd2cSJim Jagielski default: break;
2328*b1cdbd2cSJim Jagielski }
2329*b1cdbd2cSJim Jagielski
2330*b1cdbd2cSJim Jagielski const Reference < XEnumerationAccess > xEA( i_xMeta, UNO_QUERY_THROW );
2331*b1cdbd2cSJim Jagielski const Reference < XEnumeration > xTextEnum( xEA->createEnumeration() );
2332*b1cdbd2cSJim Jagielski
2333*b1cdbd2cSJim Jagielski if (doExport)
2334*b1cdbd2cSJim Jagielski {
2335*b1cdbd2cSJim Jagielski const Reference<rdf::XMetadatable> xMeta( i_xMeta, UNO_QUERY_THROW );
2336*b1cdbd2cSJim Jagielski
2337*b1cdbd2cSJim Jagielski // style:data-style-name
2338*b1cdbd2cSJim Jagielski ProcessValueAndType(sal_False,
2339*b1cdbd2cSJim Jagielski GetIntProperty(sPropertyNumberFormat, i_xMeta),
2340*b1cdbd2cSJim Jagielski sEmpty, sEmpty, 0.0, sal_False, sal_False, sal_True,
2341*b1cdbd2cSJim Jagielski sal_False, sal_False /*, sal_False*/ );
2342*b1cdbd2cSJim Jagielski
2343*b1cdbd2cSJim Jagielski // text:meta-field without xml:id is invalid
2344*b1cdbd2cSJim Jagielski xMeta->ensureMetadataReference();
2345*b1cdbd2cSJim Jagielski
2346*b1cdbd2cSJim Jagielski // xml:id for RDF metadata
2347*b1cdbd2cSJim Jagielski GetExport().AddAttributeXmlId(xMeta);
2348*b1cdbd2cSJim Jagielski }
2349*b1cdbd2cSJim Jagielski
2350*b1cdbd2cSJim Jagielski SvXMLElementExport aElem( GetExport(), doExport,
2351*b1cdbd2cSJim Jagielski XML_NAMESPACE_TEXT, XML_META_FIELD, sal_False, sal_False );
2352*b1cdbd2cSJim Jagielski
2353*b1cdbd2cSJim Jagielski // recurse to export content
2354*b1cdbd2cSJim Jagielski GetExport().GetTextParagraphExport()->
2355*b1cdbd2cSJim Jagielski exportTextRangeEnumeration( xTextEnum, i_bAutoStyles, i_bProgress );
2356*b1cdbd2cSJim Jagielski }
2357*b1cdbd2cSJim Jagielski
2358*b1cdbd2cSJim Jagielski /// export all data-style related attributes
ProcessValueAndType(sal_Bool bIsString,sal_Int32 nFormatKey,const OUString & sContent,const OUString & sDefault,double fValue,sal_Bool bExportValue,sal_Bool bExportValueType,sal_Bool bExportStyle,sal_Bool bForceSystemLanguage,sal_Bool bTimeStyle)2359*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessValueAndType(
2360*b1cdbd2cSJim Jagielski sal_Bool bIsString, /// do we process a string or a number?
2361*b1cdbd2cSJim Jagielski sal_Int32 nFormatKey, /// format key for NumberFormatter; inv. if string
2362*b1cdbd2cSJim Jagielski const OUString& sContent, /// string content; possibly invalid
2363*b1cdbd2cSJim Jagielski const OUString& sDefault, /// default string
2364*b1cdbd2cSJim Jagielski double fValue, /// float content; possibly invalid
2365*b1cdbd2cSJim Jagielski sal_Bool bExportValue, /// export value attribute?
2366*b1cdbd2cSJim Jagielski sal_Bool bExportValueType, /// export value-type attribute?
2367*b1cdbd2cSJim Jagielski sal_Bool bExportStyle, /// export style-sttribute?
2368*b1cdbd2cSJim Jagielski sal_Bool bForceSystemLanguage, /// export language attributes?
2369*b1cdbd2cSJim Jagielski sal_Bool bTimeStyle) // exporting a time style?
2370*b1cdbd2cSJim Jagielski {
2371*b1cdbd2cSJim Jagielski // String or number?
2372*b1cdbd2cSJim Jagielski if (bIsString)
2373*b1cdbd2cSJim Jagielski {
2374*b1cdbd2cSJim Jagielski
2375*b1cdbd2cSJim Jagielski // string: attributes value-type=string, string-value=...
2376*b1cdbd2cSJim Jagielski
2377*b1cdbd2cSJim Jagielski if (bExportValue || bExportValueType)
2378*b1cdbd2cSJim Jagielski {
2379*b1cdbd2cSJim Jagielski XMLNumberFormatAttributesExportHelper::SetNumberFormatAttributes(
2380*b1cdbd2cSJim Jagielski GetExport(), sContent, sDefault, bExportValue);
2381*b1cdbd2cSJim Jagielski }
2382*b1cdbd2cSJim Jagielski
2383*b1cdbd2cSJim Jagielski }
2384*b1cdbd2cSJim Jagielski else
2385*b1cdbd2cSJim Jagielski {
2386*b1cdbd2cSJim Jagielski
2387*b1cdbd2cSJim Jagielski // number: value-type=..., value...=..., data-style-name=...
2388*b1cdbd2cSJim Jagielski
2389*b1cdbd2cSJim Jagielski DBG_ASSERT(bExportValueType || !bExportValue, "value w/o value type not supported!");
2390*b1cdbd2cSJim Jagielski
2391*b1cdbd2cSJim Jagielski // take care of illegal formats
2392*b1cdbd2cSJim Jagielski // (shouldn't happen, but does if document is corrupted)
2393*b1cdbd2cSJim Jagielski if (-1 != nFormatKey)
2394*b1cdbd2cSJim Jagielski {
2395*b1cdbd2cSJim Jagielski if (bExportValue || bExportValueType)
2396*b1cdbd2cSJim Jagielski {
2397*b1cdbd2cSJim Jagielski XMLNumberFormatAttributesExportHelper::
2398*b1cdbd2cSJim Jagielski SetNumberFormatAttributes(
2399*b1cdbd2cSJim Jagielski GetExport(), nFormatKey, fValue, bExportValue);
2400*b1cdbd2cSJim Jagielski }
2401*b1cdbd2cSJim Jagielski
2402*b1cdbd2cSJim Jagielski if (bExportStyle)
2403*b1cdbd2cSJim Jagielski {
2404*b1cdbd2cSJim Jagielski // don't export language (if desired)
2405*b1cdbd2cSJim Jagielski if( bForceSystemLanguage )
2406*b1cdbd2cSJim Jagielski nFormatKey =
2407*b1cdbd2cSJim Jagielski GetExport().dataStyleForceSystemLanguage( nFormatKey );
2408*b1cdbd2cSJim Jagielski
2409*b1cdbd2cSJim Jagielski OUString sDataStyleName =
2410*b1cdbd2cSJim Jagielski GetExport().getDataStyleName(nFormatKey, bTimeStyle);
2411*b1cdbd2cSJim Jagielski if( sDataStyleName.getLength() > 0 )
2412*b1cdbd2cSJim Jagielski {
2413*b1cdbd2cSJim Jagielski GetExport().AddAttribute( XML_NAMESPACE_STYLE,
2414*b1cdbd2cSJim Jagielski XML_DATA_STYLE_NAME,
2415*b1cdbd2cSJim Jagielski sDataStyleName );
2416*b1cdbd2cSJim Jagielski } // else: ignore (no valid number format)
2417*b1cdbd2cSJim Jagielski } // else: ignore (no number format)
2418*b1cdbd2cSJim Jagielski }
2419*b1cdbd2cSJim Jagielski }
2420*b1cdbd2cSJim Jagielski }
2421*b1cdbd2cSJim Jagielski
2422*b1cdbd2cSJim Jagielski
2423*b1cdbd2cSJim Jagielski
2424*b1cdbd2cSJim Jagielski /// process display related properties
ProcessDisplay(sal_Bool bIsVisible,sal_Bool bIsCommand,sal_Bool bValueDefault)2425*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessDisplay(sal_Bool bIsVisible,
2426*b1cdbd2cSJim Jagielski sal_Bool bIsCommand,
2427*b1cdbd2cSJim Jagielski sal_Bool bValueDefault)
2428*b1cdbd2cSJim Jagielski {
2429*b1cdbd2cSJim Jagielski enum XMLTokenEnum eValue;
2430*b1cdbd2cSJim Jagielski
2431*b1cdbd2cSJim Jagielski if (bIsVisible)
2432*b1cdbd2cSJim Jagielski {
2433*b1cdbd2cSJim Jagielski eValue = bIsCommand ? XML_FORMULA : XML_VALUE;
2434*b1cdbd2cSJim Jagielski }
2435*b1cdbd2cSJim Jagielski else
2436*b1cdbd2cSJim Jagielski {
2437*b1cdbd2cSJim Jagielski eValue = XML_NONE;
2438*b1cdbd2cSJim Jagielski }
2439*b1cdbd2cSJim Jagielski
2440*b1cdbd2cSJim Jagielski // omit attribute if default
2441*b1cdbd2cSJim Jagielski if (!bValueDefault || (eValue != XML_VALUE))
2442*b1cdbd2cSJim Jagielski {
2443*b1cdbd2cSJim Jagielski GetExport().AddAttribute(XML_NAMESPACE_TEXT, XML_DISPLAY, eValue);
2444*b1cdbd2cSJim Jagielski }
2445*b1cdbd2cSJim Jagielski }
2446*b1cdbd2cSJim Jagielski
2447*b1cdbd2cSJim Jagielski
2448*b1cdbd2cSJim Jagielski
2449*b1cdbd2cSJim Jagielski /// export boolean property
ProcessBoolean(enum XMLTokenEnum eName,sal_Bool bBool,sal_Bool bDefault)2450*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessBoolean(enum XMLTokenEnum eName,
2451*b1cdbd2cSJim Jagielski sal_Bool bBool, sal_Bool bDefault)
2452*b1cdbd2cSJim Jagielski {
2453*b1cdbd2cSJim Jagielski DBG_ASSERT( eName != XML_TOKEN_INVALID, "invalid element token");
2454*b1cdbd2cSJim Jagielski if ( XML_TOKEN_INVALID == eName )
2455*b1cdbd2cSJim Jagielski return;
2456*b1cdbd2cSJim Jagielski
2457*b1cdbd2cSJim Jagielski // write attribute (if different than default)
2458*b1cdbd2cSJim Jagielski // negate to force 0/1 values (and make sal_Bool comparable)
2459*b1cdbd2cSJim Jagielski if ((!bBool) != (!bDefault)) {
2460*b1cdbd2cSJim Jagielski GetExport().AddAttribute(XML_NAMESPACE_TEXT, eName,
2461*b1cdbd2cSJim Jagielski (bBool ? XML_TRUE : XML_FALSE) );
2462*b1cdbd2cSJim Jagielski }
2463*b1cdbd2cSJim Jagielski }
2464*b1cdbd2cSJim Jagielski
2465*b1cdbd2cSJim Jagielski
2466*b1cdbd2cSJim Jagielski
2467*b1cdbd2cSJim Jagielski
2468*b1cdbd2cSJim Jagielski /// export string attribute
ProcessString(enum XMLTokenEnum eName,const OUString & sValue,sal_Bool bOmitEmpty,sal_uInt16 nPrefix)2469*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessString(enum XMLTokenEnum eName,
2470*b1cdbd2cSJim Jagielski const OUString& sValue,
2471*b1cdbd2cSJim Jagielski sal_Bool bOmitEmpty,
2472*b1cdbd2cSJim Jagielski sal_uInt16 nPrefix)
2473*b1cdbd2cSJim Jagielski {
2474*b1cdbd2cSJim Jagielski DBG_ASSERT( eName != XML_TOKEN_INVALID, "invalid element token");
2475*b1cdbd2cSJim Jagielski if ( XML_TOKEN_INVALID == eName )
2476*b1cdbd2cSJim Jagielski return;
2477*b1cdbd2cSJim Jagielski
2478*b1cdbd2cSJim Jagielski // check for empty string, if applicable
2479*b1cdbd2cSJim Jagielski if ( bOmitEmpty && (sValue.getLength()==0) )
2480*b1cdbd2cSJim Jagielski return;
2481*b1cdbd2cSJim Jagielski
2482*b1cdbd2cSJim Jagielski // write attribute
2483*b1cdbd2cSJim Jagielski GetExport().AddAttribute(nPrefix, eName, sValue);
2484*b1cdbd2cSJim Jagielski }
2485*b1cdbd2cSJim Jagielski
ProcessString(enum XMLTokenEnum eName,sal_uInt16 nValuePrefix,const OUString & sValue,sal_Bool bOmitEmpty,sal_uInt16 nPrefix)2486*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessString(enum XMLTokenEnum eName,
2487*b1cdbd2cSJim Jagielski sal_uInt16 nValuePrefix,
2488*b1cdbd2cSJim Jagielski const OUString& sValue,
2489*b1cdbd2cSJim Jagielski sal_Bool bOmitEmpty,
2490*b1cdbd2cSJim Jagielski sal_uInt16 nPrefix)
2491*b1cdbd2cSJim Jagielski {
2492*b1cdbd2cSJim Jagielski OUString sQValue =
2493*b1cdbd2cSJim Jagielski GetExport().GetNamespaceMap().GetQNameByKey( nValuePrefix, sValue, sal_False );
2494*b1cdbd2cSJim Jagielski ProcessString( eName, sQValue, bOmitEmpty, nPrefix );
2495*b1cdbd2cSJim Jagielski }
2496*b1cdbd2cSJim Jagielski
2497*b1cdbd2cSJim Jagielski /// export a string attribute
ProcessString(enum XMLTokenEnum eName,const::rtl::OUString & sValue,const::rtl::OUString & sDefault,sal_uInt16 nPrefix)2498*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessString(enum XMLTokenEnum eName,
2499*b1cdbd2cSJim Jagielski const ::rtl::OUString& sValue,
2500*b1cdbd2cSJim Jagielski const ::rtl::OUString& sDefault,
2501*b1cdbd2cSJim Jagielski sal_uInt16 nPrefix)
2502*b1cdbd2cSJim Jagielski {
2503*b1cdbd2cSJim Jagielski if (sValue != sDefault)
2504*b1cdbd2cSJim Jagielski {
2505*b1cdbd2cSJim Jagielski ProcessString(eName, sValue, sal_False, nPrefix);
2506*b1cdbd2cSJim Jagielski }
2507*b1cdbd2cSJim Jagielski }
2508*b1cdbd2cSJim Jagielski
2509*b1cdbd2cSJim Jagielski /// export a string attribute
ProcessString(enum XMLTokenEnum eName,sal_uInt16 nValuePrefix,const::rtl::OUString & sValue,const::rtl::OUString & sDefault,sal_uInt16 nPrefix)2510*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessString(enum XMLTokenEnum eName,
2511*b1cdbd2cSJim Jagielski sal_uInt16 nValuePrefix,
2512*b1cdbd2cSJim Jagielski const ::rtl::OUString& sValue,
2513*b1cdbd2cSJim Jagielski const ::rtl::OUString& sDefault,
2514*b1cdbd2cSJim Jagielski sal_uInt16 nPrefix)
2515*b1cdbd2cSJim Jagielski {
2516*b1cdbd2cSJim Jagielski if (sValue != sDefault)
2517*b1cdbd2cSJim Jagielski {
2518*b1cdbd2cSJim Jagielski ProcessString(eName, nValuePrefix, sValue, sal_False, nPrefix);
2519*b1cdbd2cSJim Jagielski }
2520*b1cdbd2cSJim Jagielski }
2521*b1cdbd2cSJim Jagielski
2522*b1cdbd2cSJim Jagielski
2523*b1cdbd2cSJim Jagielski /// export string attribute
ProcessString(enum XMLTokenEnum eName,enum XMLTokenEnum eValue,sal_Bool bOmitEmpty,sal_uInt16 nPrefix)2524*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessString(
2525*b1cdbd2cSJim Jagielski enum XMLTokenEnum eName,
2526*b1cdbd2cSJim Jagielski enum XMLTokenEnum eValue,
2527*b1cdbd2cSJim Jagielski sal_Bool bOmitEmpty,
2528*b1cdbd2cSJim Jagielski sal_uInt16 nPrefix)
2529*b1cdbd2cSJim Jagielski {
2530*b1cdbd2cSJim Jagielski DBG_ASSERT( eName != XML_TOKEN_INVALID, "invalid element token" );
2531*b1cdbd2cSJim Jagielski DBG_ASSERT( bOmitEmpty || (eValue != XML_TOKEN_INVALID),
2532*b1cdbd2cSJim Jagielski "invalid value token" );
2533*b1cdbd2cSJim Jagielski if ( XML_TOKEN_INVALID == eName )
2534*b1cdbd2cSJim Jagielski return;
2535*b1cdbd2cSJim Jagielski
2536*b1cdbd2cSJim Jagielski // check for empty string, if applicable
2537*b1cdbd2cSJim Jagielski if (bOmitEmpty && (eValue == XML_TOKEN_INVALID))
2538*b1cdbd2cSJim Jagielski return;
2539*b1cdbd2cSJim Jagielski
2540*b1cdbd2cSJim Jagielski GetExport().AddAttribute(nPrefix, eName, eValue);
2541*b1cdbd2cSJim Jagielski }
2542*b1cdbd2cSJim Jagielski
2543*b1cdbd2cSJim Jagielski /// export a string attribute
ProcessString(enum XMLTokenEnum eName,enum XMLTokenEnum eValue,enum XMLTokenEnum eDefault,sal_uInt16 nPrefix)2544*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessString(
2545*b1cdbd2cSJim Jagielski enum XMLTokenEnum eName,
2546*b1cdbd2cSJim Jagielski enum XMLTokenEnum eValue,
2547*b1cdbd2cSJim Jagielski enum XMLTokenEnum eDefault,
2548*b1cdbd2cSJim Jagielski sal_uInt16 nPrefix)
2549*b1cdbd2cSJim Jagielski {
2550*b1cdbd2cSJim Jagielski if ( eValue != eDefault )
2551*b1cdbd2cSJim Jagielski ProcessString( eName, eValue, sal_False, nPrefix);
2552*b1cdbd2cSJim Jagielski }
2553*b1cdbd2cSJim Jagielski
2554*b1cdbd2cSJim Jagielski
2555*b1cdbd2cSJim Jagielski /// export a string as a sequence of paragraphs
ProcessParagraphSequence(const::rtl::OUString & sParagraphSequence)2556*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessParagraphSequence(
2557*b1cdbd2cSJim Jagielski const ::rtl::OUString& sParagraphSequence)
2558*b1cdbd2cSJim Jagielski {
2559*b1cdbd2cSJim Jagielski // iterate over all string-pieces separated by return (0x0a) and
2560*b1cdbd2cSJim Jagielski // put each inside a paragraph element.
2561*b1cdbd2cSJim Jagielski SvXMLTokenEnumerator aEnumerator(sParagraphSequence, sal_Char(0x0a));
2562*b1cdbd2cSJim Jagielski OUString aSubString;
2563*b1cdbd2cSJim Jagielski while (aEnumerator.getNextToken(aSubString))
2564*b1cdbd2cSJim Jagielski {
2565*b1cdbd2cSJim Jagielski SvXMLElementExport aParagraph(
2566*b1cdbd2cSJim Jagielski GetExport(), XML_NAMESPACE_TEXT, XML_P, sal_True, sal_False);
2567*b1cdbd2cSJim Jagielski GetExport().Characters(aSubString);
2568*b1cdbd2cSJim Jagielski }
2569*b1cdbd2cSJim Jagielski }
2570*b1cdbd2cSJim Jagielski
2571*b1cdbd2cSJim Jagielski // export an integer attribute
ProcessInteger(enum XMLTokenEnum eName,sal_Int32 nNum)2572*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessInteger(enum XMLTokenEnum eName,
2573*b1cdbd2cSJim Jagielski sal_Int32 nNum)
2574*b1cdbd2cSJim Jagielski {
2575*b1cdbd2cSJim Jagielski DBG_ASSERT( eName != XML_TOKEN_INVALID, "invalid element token");
2576*b1cdbd2cSJim Jagielski if ( XML_TOKEN_INVALID == eName )
2577*b1cdbd2cSJim Jagielski return;
2578*b1cdbd2cSJim Jagielski
2579*b1cdbd2cSJim Jagielski GetExport().AddAttribute(XML_NAMESPACE_TEXT, eName,
2580*b1cdbd2cSJim Jagielski OUString::valueOf(nNum));
2581*b1cdbd2cSJim Jagielski }
2582*b1cdbd2cSJim Jagielski
2583*b1cdbd2cSJim Jagielski /// export an integer attribute, omit if default
ProcessIntegerDef(enum XMLTokenEnum eName,sal_Int32 nNum,sal_Int32 nDefault)2584*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessIntegerDef(enum XMLTokenEnum eName,
2585*b1cdbd2cSJim Jagielski sal_Int32 nNum, sal_Int32 nDefault)
2586*b1cdbd2cSJim Jagielski {
2587*b1cdbd2cSJim Jagielski if (nNum != nDefault)
2588*b1cdbd2cSJim Jagielski ProcessInteger(eName, nNum);
2589*b1cdbd2cSJim Jagielski }
2590*b1cdbd2cSJim Jagielski
2591*b1cdbd2cSJim Jagielski
2592*b1cdbd2cSJim Jagielski
2593*b1cdbd2cSJim Jagielski /// export a numbering type
ProcessNumberingType(sal_Int16 nNumberingType)2594*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessNumberingType(sal_Int16 nNumberingType)
2595*b1cdbd2cSJim Jagielski {
2596*b1cdbd2cSJim Jagielski // process only if real format (not: like page descriptor)
2597*b1cdbd2cSJim Jagielski if (NumberingType::PAGE_DESCRIPTOR != nNumberingType)
2598*b1cdbd2cSJim Jagielski {
2599*b1cdbd2cSJim Jagielski OUStringBuffer sTmp( 10 );
2600*b1cdbd2cSJim Jagielski // number type: num format
2601*b1cdbd2cSJim Jagielski GetExport().GetMM100UnitConverter().convertNumFormat( sTmp,
2602*b1cdbd2cSJim Jagielski nNumberingType );
2603*b1cdbd2cSJim Jagielski GetExport().AddAttribute(XML_NAMESPACE_STYLE, XML_NUM_FORMAT,
2604*b1cdbd2cSJim Jagielski sTmp.makeStringAndClear() );
2605*b1cdbd2cSJim Jagielski // and letter sync, if applicable
2606*b1cdbd2cSJim Jagielski GetExport().GetMM100UnitConverter().convertNumLetterSync( sTmp,
2607*b1cdbd2cSJim Jagielski nNumberingType );
2608*b1cdbd2cSJim Jagielski
2609*b1cdbd2cSJim Jagielski if (sTmp.getLength())
2610*b1cdbd2cSJim Jagielski {
2611*b1cdbd2cSJim Jagielski GetExport().AddAttribute(XML_NAMESPACE_STYLE, XML_NUM_LETTER_SYNC,
2612*b1cdbd2cSJim Jagielski sTmp.makeStringAndClear() );
2613*b1cdbd2cSJim Jagielski }
2614*b1cdbd2cSJim Jagielski }
2615*b1cdbd2cSJim Jagielski // else: like page descriptor => ignore
2616*b1cdbd2cSJim Jagielski }
2617*b1cdbd2cSJim Jagielski
2618*b1cdbd2cSJim Jagielski
2619*b1cdbd2cSJim Jagielski /// export a date, time, or duration
ProcessDateTime(enum XMLTokenEnum eName,double dValue,sal_Bool bIsDate,sal_Bool bIsDuration,sal_Bool bOmitDurationIfZero,sal_uInt16 nPrefix)2620*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessDateTime(enum XMLTokenEnum eName,
2621*b1cdbd2cSJim Jagielski double dValue,
2622*b1cdbd2cSJim Jagielski sal_Bool bIsDate,
2623*b1cdbd2cSJim Jagielski sal_Bool bIsDuration,
2624*b1cdbd2cSJim Jagielski sal_Bool bOmitDurationIfZero,
2625*b1cdbd2cSJim Jagielski sal_uInt16 nPrefix)
2626*b1cdbd2cSJim Jagielski {
2627*b1cdbd2cSJim Jagielski // truncate for date granularity
2628*b1cdbd2cSJim Jagielski if (bIsDate)
2629*b1cdbd2cSJim Jagielski {
2630*b1cdbd2cSJim Jagielski dValue = ::rtl::math::approxFloor(dValue);
2631*b1cdbd2cSJim Jagielski }
2632*b1cdbd2cSJim Jagielski
2633*b1cdbd2cSJim Jagielski OUStringBuffer aBuffer;
2634*b1cdbd2cSJim Jagielski if (bIsDuration)
2635*b1cdbd2cSJim Jagielski {
2636*b1cdbd2cSJim Jagielski // date/time durationM handle bOmitDurationIfZero
2637*b1cdbd2cSJim Jagielski if (!bOmitDurationIfZero || !::rtl::math::approxEqual(dValue, 0.0))
2638*b1cdbd2cSJim Jagielski {
2639*b1cdbd2cSJim Jagielski rExport.GetMM100UnitConverter().convertTime(aBuffer, dValue);
2640*b1cdbd2cSJim Jagielski }
2641*b1cdbd2cSJim Jagielski }
2642*b1cdbd2cSJim Jagielski else
2643*b1cdbd2cSJim Jagielski {
2644*b1cdbd2cSJim Jagielski // date/time value
2645*b1cdbd2cSJim Jagielski rExport.GetMM100UnitConverter().convertDateTime(aBuffer, dValue);
2646*b1cdbd2cSJim Jagielski }
2647*b1cdbd2cSJim Jagielski
2648*b1cdbd2cSJim Jagielski // output attribute
2649*b1cdbd2cSJim Jagielski ProcessString(eName, aBuffer.makeStringAndClear(), sal_True, nPrefix);
2650*b1cdbd2cSJim Jagielski }
2651*b1cdbd2cSJim Jagielski
2652*b1cdbd2cSJim Jagielski /// export a date or time
ProcessDateTime(enum XMLTokenEnum eName,const DateTime & rTime,sal_Bool bIsDate,sal_uInt16 nPrefix)2653*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessDateTime(enum XMLTokenEnum eName,
2654*b1cdbd2cSJim Jagielski const DateTime& rTime,
2655*b1cdbd2cSJim Jagielski sal_Bool bIsDate,
2656*b1cdbd2cSJim Jagielski sal_uInt16 nPrefix)
2657*b1cdbd2cSJim Jagielski {
2658*b1cdbd2cSJim Jagielski OUStringBuffer aBuffer;
2659*b1cdbd2cSJim Jagielski
2660*b1cdbd2cSJim Jagielski DateTime aDateTime(rTime);
2661*b1cdbd2cSJim Jagielski
2662*b1cdbd2cSJim Jagielski // truncate dates
2663*b1cdbd2cSJim Jagielski if(bIsDate)
2664*b1cdbd2cSJim Jagielski {
2665*b1cdbd2cSJim Jagielski aDateTime.HundredthSeconds = 0;
2666*b1cdbd2cSJim Jagielski aDateTime.Seconds = 0;
2667*b1cdbd2cSJim Jagielski aDateTime.Minutes = 0;
2668*b1cdbd2cSJim Jagielski aDateTime.Hours = 0;
2669*b1cdbd2cSJim Jagielski }
2670*b1cdbd2cSJim Jagielski
2671*b1cdbd2cSJim Jagielski // date/time value
2672*b1cdbd2cSJim Jagielski rExport.GetMM100UnitConverter().convertDateTime(aBuffer, aDateTime);
2673*b1cdbd2cSJim Jagielski
2674*b1cdbd2cSJim Jagielski // output attribute
2675*b1cdbd2cSJim Jagielski ProcessString(eName, aBuffer.makeStringAndClear(), sal_True, nPrefix);
2676*b1cdbd2cSJim Jagielski }
2677*b1cdbd2cSJim Jagielski
2678*b1cdbd2cSJim Jagielski /// export date according to ISO 8601
ProcessDate(enum XMLTokenEnum eName,const::com::sun::star::util::Date & rDate,sal_uInt16 nPrefix)2679*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessDate(
2680*b1cdbd2cSJim Jagielski enum XMLTokenEnum eName,
2681*b1cdbd2cSJim Jagielski const ::com::sun::star::util::Date& rDate,
2682*b1cdbd2cSJim Jagielski sal_uInt16 nPrefix)
2683*b1cdbd2cSJim Jagielski {
2684*b1cdbd2cSJim Jagielski // the easiest way: delegate to ProcessDateTime (as date)
2685*b1cdbd2cSJim Jagielski DateTime aDateTime;
2686*b1cdbd2cSJim Jagielski aDateTime.Day = rDate.Day;
2687*b1cdbd2cSJim Jagielski aDateTime.Month = rDate.Month;
2688*b1cdbd2cSJim Jagielski aDateTime.Year = rDate.Year;
2689*b1cdbd2cSJim Jagielski ProcessDateTime(eName, aDateTime, sal_True, nPrefix);
2690*b1cdbd2cSJim Jagielski }
2691*b1cdbd2cSJim Jagielski
2692*b1cdbd2cSJim Jagielski
2693*b1cdbd2cSJim Jagielski /// export a date, time, or duration
ProcessDateTime(enum XMLTokenEnum eName,sal_Int32 nMinutes,sal_Bool bIsDate,sal_Bool bIsDuration,sal_Bool bOmitDurationIfZero,sal_uInt16 nPrefix)2694*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessDateTime(enum XMLTokenEnum eName,
2695*b1cdbd2cSJim Jagielski sal_Int32 nMinutes,
2696*b1cdbd2cSJim Jagielski sal_Bool bIsDate,
2697*b1cdbd2cSJim Jagielski sal_Bool bIsDuration,
2698*b1cdbd2cSJim Jagielski sal_Bool bOmitDurationIfZero,
2699*b1cdbd2cSJim Jagielski sal_uInt16 nPrefix)
2700*b1cdbd2cSJim Jagielski {
2701*b1cdbd2cSJim Jagielski // handle bOmitDurationIfZero here, because we can precisely compare ints
2702*b1cdbd2cSJim Jagielski if (!(bIsDuration && bOmitDurationIfZero && (nMinutes==0)))
2703*b1cdbd2cSJim Jagielski {
2704*b1cdbd2cSJim Jagielski ProcessDateTime(eName, (double)nMinutes / (double)(24*60),
2705*b1cdbd2cSJim Jagielski bIsDate, bIsDuration, bOmitDurationIfZero, nPrefix);
2706*b1cdbd2cSJim Jagielski }
2707*b1cdbd2cSJim Jagielski }
2708*b1cdbd2cSJim Jagielski
2709*b1cdbd2cSJim Jagielski
2710*b1cdbd2cSJim Jagielski SvXMLEnumMapEntry __READONLY_DATA aBibliographyDataTypeMap[] =
2711*b1cdbd2cSJim Jagielski {
2712*b1cdbd2cSJim Jagielski { XML_ARTICLE, BibliographyDataType::ARTICLE },
2713*b1cdbd2cSJim Jagielski { XML_BOOK, BibliographyDataType::BOOK },
2714*b1cdbd2cSJim Jagielski { XML_BOOKLET, BibliographyDataType::BOOKLET },
2715*b1cdbd2cSJim Jagielski { XML_CONFERENCE, BibliographyDataType::CONFERENCE },
2716*b1cdbd2cSJim Jagielski { XML_CUSTOM1, BibliographyDataType::CUSTOM1 },
2717*b1cdbd2cSJim Jagielski { XML_CUSTOM2, BibliographyDataType::CUSTOM2 },
2718*b1cdbd2cSJim Jagielski { XML_CUSTOM3, BibliographyDataType::CUSTOM3 },
2719*b1cdbd2cSJim Jagielski { XML_CUSTOM4, BibliographyDataType::CUSTOM4 },
2720*b1cdbd2cSJim Jagielski { XML_CUSTOM5, BibliographyDataType::CUSTOM5 },
2721*b1cdbd2cSJim Jagielski { XML_EMAIL, BibliographyDataType::EMAIL },
2722*b1cdbd2cSJim Jagielski { XML_INBOOK, BibliographyDataType::INBOOK },
2723*b1cdbd2cSJim Jagielski { XML_INCOLLECTION, BibliographyDataType::INCOLLECTION },
2724*b1cdbd2cSJim Jagielski { XML_INPROCEEDINGS, BibliographyDataType::INPROCEEDINGS },
2725*b1cdbd2cSJim Jagielski { XML_JOURNAL, BibliographyDataType::JOURNAL },
2726*b1cdbd2cSJim Jagielski { XML_MANUAL, BibliographyDataType::MANUAL },
2727*b1cdbd2cSJim Jagielski { XML_MASTERSTHESIS, BibliographyDataType::MASTERSTHESIS },
2728*b1cdbd2cSJim Jagielski { XML_MISC, BibliographyDataType::MISC },
2729*b1cdbd2cSJim Jagielski { XML_PHDTHESIS, BibliographyDataType::PHDTHESIS },
2730*b1cdbd2cSJim Jagielski { XML_PROCEEDINGS, BibliographyDataType::PROCEEDINGS },
2731*b1cdbd2cSJim Jagielski { XML_TECHREPORT, BibliographyDataType::TECHREPORT },
2732*b1cdbd2cSJim Jagielski { XML_UNPUBLISHED, BibliographyDataType::UNPUBLISHED },
2733*b1cdbd2cSJim Jagielski { XML_WWW, BibliographyDataType::WWW },
2734*b1cdbd2cSJim Jagielski { XML_TOKEN_INVALID, 0 }
2735*b1cdbd2cSJim Jagielski };
2736*b1cdbd2cSJim Jagielski
2737*b1cdbd2cSJim Jagielski
2738*b1cdbd2cSJim Jagielski
ProcessBibliographyData(const Reference<XPropertySet> & rPropSet)2739*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessBibliographyData(
2740*b1cdbd2cSJim Jagielski const Reference<XPropertySet>& rPropSet)
2741*b1cdbd2cSJim Jagielski {
2742*b1cdbd2cSJim Jagielski // get the values
2743*b1cdbd2cSJim Jagielski Any aAny = rPropSet->getPropertyValue(sPropertyFields);
2744*b1cdbd2cSJim Jagielski Sequence<PropertyValue> aValues;
2745*b1cdbd2cSJim Jagielski aAny >>= aValues;
2746*b1cdbd2cSJim Jagielski
2747*b1cdbd2cSJim Jagielski // one attribute per value (unless empty)
2748*b1cdbd2cSJim Jagielski sal_Int32 nLength = aValues.getLength();
2749*b1cdbd2cSJim Jagielski for (sal_Int32 i = 0; i < nLength; i++)
2750*b1cdbd2cSJim Jagielski {
2751*b1cdbd2cSJim Jagielski if (aValues[i].Name.equalsAsciiL("BibiliographicType",
2752*b1cdbd2cSJim Jagielski sizeof("BibiliographicType")-1))
2753*b1cdbd2cSJim Jagielski {
2754*b1cdbd2cSJim Jagielski sal_Int16 nTypeId = 0;
2755*b1cdbd2cSJim Jagielski aValues[i].Value >>= nTypeId;
2756*b1cdbd2cSJim Jagielski OUStringBuffer sBuf;
2757*b1cdbd2cSJim Jagielski
2758*b1cdbd2cSJim Jagielski if (SvXMLUnitConverter::convertEnum(sBuf, nTypeId,
2759*b1cdbd2cSJim Jagielski aBibliographyDataTypeMap))
2760*b1cdbd2cSJim Jagielski {
2761*b1cdbd2cSJim Jagielski rExport.AddAttribute(XML_NAMESPACE_TEXT,
2762*b1cdbd2cSJim Jagielski XML_BIBLIOGRAPHY_TYPE,
2763*b1cdbd2cSJim Jagielski sBuf.makeStringAndClear());
2764*b1cdbd2cSJim Jagielski }
2765*b1cdbd2cSJim Jagielski // else: ignore this argument
2766*b1cdbd2cSJim Jagielski }
2767*b1cdbd2cSJim Jagielski else
2768*b1cdbd2cSJim Jagielski {
2769*b1cdbd2cSJim Jagielski OUString sStr;
2770*b1cdbd2cSJim Jagielski aValues[i].Value >>= sStr;
2771*b1cdbd2cSJim Jagielski
2772*b1cdbd2cSJim Jagielski if (sStr.getLength() > 0)
2773*b1cdbd2cSJim Jagielski {
2774*b1cdbd2cSJim Jagielski rExport.AddAttribute(XML_NAMESPACE_TEXT,
2775*b1cdbd2cSJim Jagielski MapBibliographyFieldName(aValues[i].Name),
2776*b1cdbd2cSJim Jagielski sStr);
2777*b1cdbd2cSJim Jagielski }
2778*b1cdbd2cSJim Jagielski }
2779*b1cdbd2cSJim Jagielski }
2780*b1cdbd2cSJim Jagielski }
2781*b1cdbd2cSJim Jagielski
2782*b1cdbd2cSJim Jagielski /// export CommandTypeAttribute
ProcessCommandType(sal_Int32 nCommandType)2783*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessCommandType(
2784*b1cdbd2cSJim Jagielski sal_Int32 nCommandType)
2785*b1cdbd2cSJim Jagielski {
2786*b1cdbd2cSJim Jagielski enum XMLTokenEnum eToken = XML_TOKEN_INVALID;
2787*b1cdbd2cSJim Jagielski switch( nCommandType )
2788*b1cdbd2cSJim Jagielski {
2789*b1cdbd2cSJim Jagielski case sdb::CommandType::TABLE: eToken = XML_TABLE; break;
2790*b1cdbd2cSJim Jagielski case sdb::CommandType::QUERY: eToken = XML_QUERY; break;
2791*b1cdbd2cSJim Jagielski case sdb::CommandType::COMMAND: eToken = XML_COMMAND; break;
2792*b1cdbd2cSJim Jagielski }
2793*b1cdbd2cSJim Jagielski
2794*b1cdbd2cSJim Jagielski if( eToken != XML_TOKEN_INVALID )
2795*b1cdbd2cSJim Jagielski rExport.AddAttribute( XML_NAMESPACE_TEXT, XML_TABLE_TYPE, eToken );
2796*b1cdbd2cSJim Jagielski }
2797*b1cdbd2cSJim Jagielski
2798*b1cdbd2cSJim Jagielski
ProcessStringSequence(const Sequence<OUString> & rSequence,const OUString sSelected)2799*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessStringSequence(
2800*b1cdbd2cSJim Jagielski const Sequence<OUString>& rSequence,
2801*b1cdbd2cSJim Jagielski const OUString sSelected )
2802*b1cdbd2cSJim Jagielski {
2803*b1cdbd2cSJim Jagielski // find selected element
2804*b1cdbd2cSJim Jagielski sal_Int32 nSelected = -1;
2805*b1cdbd2cSJim Jagielski sal_Int32 nLength = rSequence.getLength();
2806*b1cdbd2cSJim Jagielski const OUString* pSequence = rSequence.getConstArray();
2807*b1cdbd2cSJim Jagielski for( sal_Int32 i = 0; i < nLength; i++ )
2808*b1cdbd2cSJim Jagielski {
2809*b1cdbd2cSJim Jagielski if( pSequence[i] == sSelected )
2810*b1cdbd2cSJim Jagielski nSelected = i;
2811*b1cdbd2cSJim Jagielski }
2812*b1cdbd2cSJim Jagielski
2813*b1cdbd2cSJim Jagielski // delegate to ProcessStringSequence(OUString,sal_Int32)
2814*b1cdbd2cSJim Jagielski ProcessStringSequence( rSequence, nSelected );
2815*b1cdbd2cSJim Jagielski }
2816*b1cdbd2cSJim Jagielski
ProcessStringSequence(const Sequence<OUString> & rSequence,sal_Int32 nSelected)2817*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ProcessStringSequence(
2818*b1cdbd2cSJim Jagielski const Sequence<OUString>& rSequence,
2819*b1cdbd2cSJim Jagielski sal_Int32 nSelected )
2820*b1cdbd2cSJim Jagielski {
2821*b1cdbd2cSJim Jagielski sal_Int32 nLength = rSequence.getLength();
2822*b1cdbd2cSJim Jagielski const OUString* pSequence = rSequence.getConstArray();
2823*b1cdbd2cSJim Jagielski for( sal_Int32 i = 0; i < nLength; i++ )
2824*b1cdbd2cSJim Jagielski {
2825*b1cdbd2cSJim Jagielski if( i == nSelected )
2826*b1cdbd2cSJim Jagielski rExport.AddAttribute( XML_NAMESPACE_TEXT,
2827*b1cdbd2cSJim Jagielski XML_CURRENT_SELECTED, XML_TRUE );
2828*b1cdbd2cSJim Jagielski rExport.AddAttribute( XML_NAMESPACE_TEXT, XML_VALUE, pSequence[i] );
2829*b1cdbd2cSJim Jagielski SvXMLElementExport aElement( rExport, XML_NAMESPACE_TEXT, XML_LABEL,
2830*b1cdbd2cSJim Jagielski sal_False, sal_False );
2831*b1cdbd2cSJim Jagielski }
2832*b1cdbd2cSJim Jagielski }
2833*b1cdbd2cSJim Jagielski
ExportDataBaseElement(enum XMLTokenEnum eElementName,const OUString & sPresentation,const Reference<XPropertySet> & rPropertySet,const Reference<XPropertySetInfo> & rPropertySetInfo)2834*b1cdbd2cSJim Jagielski void XMLTextFieldExport::ExportDataBaseElement(
2835*b1cdbd2cSJim Jagielski enum XMLTokenEnum eElementName,
2836*b1cdbd2cSJim Jagielski const OUString& sPresentation,
2837*b1cdbd2cSJim Jagielski const Reference<XPropertySet>& rPropertySet,
2838*b1cdbd2cSJim Jagielski const Reference<XPropertySetInfo>& rPropertySetInfo )
2839*b1cdbd2cSJim Jagielski {
2840*b1cdbd2cSJim Jagielski DBG_ASSERT( eElementName != XML_TOKEN_INVALID, "need token" );
2841*b1cdbd2cSJim Jagielski DBG_ASSERT( rPropertySet.is(), "need property set" );
2842*b1cdbd2cSJim Jagielski DBG_ASSERT( rPropertySetInfo.is(), "need property set info" );
2843*b1cdbd2cSJim Jagielski
2844*b1cdbd2cSJim Jagielski // get database properties
2845*b1cdbd2cSJim Jagielski OUString sDataBaseName;
2846*b1cdbd2cSJim Jagielski OUString sDataBaseURL;
2847*b1cdbd2cSJim Jagielski OUString sStr;
2848*b1cdbd2cSJim Jagielski if( ( rPropertySet->getPropertyValue( sPropertyDataBaseName ) >>= sStr )
2849*b1cdbd2cSJim Jagielski && ( sStr.getLength() > 0 ) )
2850*b1cdbd2cSJim Jagielski {
2851*b1cdbd2cSJim Jagielski sDataBaseName = sStr;
2852*b1cdbd2cSJim Jagielski }
2853*b1cdbd2cSJim Jagielski else if( rPropertySetInfo->hasPropertyByName( sPropertyDataBaseURL ) &&
2854*b1cdbd2cSJim Jagielski (rPropertySet->getPropertyValue( sPropertyDataBaseURL ) >>= sStr) &&
2855*b1cdbd2cSJim Jagielski (sStr.getLength() > 0) )
2856*b1cdbd2cSJim Jagielski {
2857*b1cdbd2cSJim Jagielski sDataBaseURL = sStr;
2858*b1cdbd2cSJim Jagielski }
2859*b1cdbd2cSJim Jagielski
2860*b1cdbd2cSJim Jagielski // add database name property (if present)
2861*b1cdbd2cSJim Jagielski if( sDataBaseName.getLength() > 0 )
2862*b1cdbd2cSJim Jagielski rExport.AddAttribute( XML_NAMESPACE_TEXT, XML_DATABASE_NAME,
2863*b1cdbd2cSJim Jagielski sDataBaseName );
2864*b1cdbd2cSJim Jagielski SvXMLElementExport aDataBaseElement( GetExport(),
2865*b1cdbd2cSJim Jagielski XML_NAMESPACE_TEXT, eElementName,
2866*b1cdbd2cSJim Jagielski sal_False, sal_False );
2867*b1cdbd2cSJim Jagielski
2868*b1cdbd2cSJim Jagielski // write URL as children
2869*b1cdbd2cSJim Jagielski if( sDataBaseURL.getLength() > 0 )
2870*b1cdbd2cSJim Jagielski {
2871*b1cdbd2cSJim Jagielski rExport.AddAttribute( XML_NAMESPACE_XLINK, XML_HREF, sDataBaseURL );
2872*b1cdbd2cSJim Jagielski SvXMLElementExport aDataSourceElement(
2873*b1cdbd2cSJim Jagielski GetExport(), XML_NAMESPACE_FORM, XML_CONNECTION_RESOURCE,
2874*b1cdbd2cSJim Jagielski sal_False, sal_False );
2875*b1cdbd2cSJim Jagielski }
2876*b1cdbd2cSJim Jagielski
2877*b1cdbd2cSJim Jagielski // write presentation
2878*b1cdbd2cSJim Jagielski rExport.Characters( sPresentation );
2879*b1cdbd2cSJim Jagielski }
2880*b1cdbd2cSJim Jagielski
2881*b1cdbd2cSJim Jagielski
2882*b1cdbd2cSJim Jagielski
2883*b1cdbd2cSJim Jagielski // explode a field master name into field type and field name
ExplodeFieldMasterName(const OUString & sMasterName,OUString & sFieldType,OUString & sVarName)2884*b1cdbd2cSJim Jagielski sal_Bool XMLTextFieldExport::ExplodeFieldMasterName(
2885*b1cdbd2cSJim Jagielski const OUString& sMasterName, OUString& sFieldType, OUString& sVarName)
2886*b1cdbd2cSJim Jagielski {
2887*b1cdbd2cSJim Jagielski sal_Int32 nLength = sFieldMasterPrefix.getLength();
2888*b1cdbd2cSJim Jagielski sal_Int32 nSeparator = sMasterName.indexOf('.', nLength);
2889*b1cdbd2cSJim Jagielski sal_Bool bReturn = sal_True;
2890*b1cdbd2cSJim Jagielski
2891*b1cdbd2cSJim Jagielski #ifdef DBG_UTIL
2892*b1cdbd2cSJim Jagielski // check for service name
2893*b1cdbd2cSJim Jagielski bReturn &= (0 == sFieldMasterPrefix.compareTo(sMasterName, nLength));
2894*b1cdbd2cSJim Jagielski #endif
2895*b1cdbd2cSJim Jagielski
2896*b1cdbd2cSJim Jagielski // '.' found?
2897*b1cdbd2cSJim Jagielski if (nSeparator <= nLength) {
2898*b1cdbd2cSJim Jagielski nSeparator = sMasterName.getLength();
2899*b1cdbd2cSJim Jagielski DBG_WARNING("no field var name!");
2900*b1cdbd2cSJim Jagielski bReturn = sal_False;
2901*b1cdbd2cSJim Jagielski }
2902*b1cdbd2cSJim Jagielski else
2903*b1cdbd2cSJim Jagielski {
2904*b1cdbd2cSJim Jagielski sFieldType = sMasterName.copy(nLength, nSeparator-nLength);
2905*b1cdbd2cSJim Jagielski sVarName = sMasterName.copy(nSeparator+1);
2906*b1cdbd2cSJim Jagielski }
2907*b1cdbd2cSJim Jagielski
2908*b1cdbd2cSJim Jagielski return bReturn;
2909*b1cdbd2cSJim Jagielski }
2910*b1cdbd2cSJim Jagielski
2911*b1cdbd2cSJim Jagielski
2912*b1cdbd2cSJim Jagielski // for XDependentTextFields, get PropertySet of FieldMaster
GetMasterPropertySet(const Reference<XTextField> & rTextField)2913*b1cdbd2cSJim Jagielski Reference<XPropertySet> XMLTextFieldExport::GetMasterPropertySet(
2914*b1cdbd2cSJim Jagielski const Reference<XTextField> & rTextField)
2915*b1cdbd2cSJim Jagielski {
2916*b1cdbd2cSJim Jagielski // name, value => get Property set of TextFieldMaster
2917*b1cdbd2cSJim Jagielski Reference<XDependentTextField> xDep(rTextField, UNO_QUERY);
2918*b1cdbd2cSJim Jagielski return xDep->getTextFieldMaster();
2919*b1cdbd2cSJim Jagielski }
2920*b1cdbd2cSJim Jagielski
2921*b1cdbd2cSJim Jagielski // get PropertySet of (any; the first) dependent field
GetDependentFieldPropertySet(const Reference<XPropertySet> & xMaster,Reference<XPropertySet> & xField)2922*b1cdbd2cSJim Jagielski sal_Bool XMLTextFieldExport::GetDependentFieldPropertySet(
2923*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xMaster,
2924*b1cdbd2cSJim Jagielski Reference<XPropertySet> & xField)
2925*b1cdbd2cSJim Jagielski {
2926*b1cdbd2cSJim Jagielski Any aAny;
2927*b1cdbd2cSJim Jagielski Sequence<Reference<XDependentTextField> > aFields;
2928*b1cdbd2cSJim Jagielski aAny = xMaster->getPropertyValue(sPropertyDependentTextFields);
2929*b1cdbd2cSJim Jagielski aAny >>= aFields;
2930*b1cdbd2cSJim Jagielski
2931*b1cdbd2cSJim Jagielski // any fields?
2932*b1cdbd2cSJim Jagielski if (aFields.getLength() > 0)
2933*b1cdbd2cSJim Jagielski {
2934*b1cdbd2cSJim Jagielski // get first one and return
2935*b1cdbd2cSJim Jagielski Reference<XDependentTextField> xTField = aFields[0];
2936*b1cdbd2cSJim Jagielski xField = Reference<XPropertySet>(xTField, UNO_QUERY);
2937*b1cdbd2cSJim Jagielski DBG_ASSERT(xField.is(),
2938*b1cdbd2cSJim Jagielski "Surprisinlgy, this TextField refuses to be a PropertySet!");
2939*b1cdbd2cSJim Jagielski return sal_True;
2940*b1cdbd2cSJim Jagielski }
2941*b1cdbd2cSJim Jagielski else
2942*b1cdbd2cSJim Jagielski {
2943*b1cdbd2cSJim Jagielski return sal_False;
2944*b1cdbd2cSJim Jagielski }
2945*b1cdbd2cSJim Jagielski }
2946*b1cdbd2cSJim Jagielski
2947*b1cdbd2cSJim Jagielski
2948*b1cdbd2cSJim Jagielski /// map placeholder type
MapPlaceholderType(sal_uInt16 nType)2949*b1cdbd2cSJim Jagielski enum XMLTokenEnum XMLTextFieldExport::MapPlaceholderType(sal_uInt16 nType)
2950*b1cdbd2cSJim Jagielski {
2951*b1cdbd2cSJim Jagielski enum XMLTokenEnum eType = XML_TEXT;
2952*b1cdbd2cSJim Jagielski
2953*b1cdbd2cSJim Jagielski switch (nType)
2954*b1cdbd2cSJim Jagielski {
2955*b1cdbd2cSJim Jagielski case PlaceholderType::TEXT:
2956*b1cdbd2cSJim Jagielski eType = XML_TEXT;
2957*b1cdbd2cSJim Jagielski break;
2958*b1cdbd2cSJim Jagielski
2959*b1cdbd2cSJim Jagielski case PlaceholderType::TABLE:
2960*b1cdbd2cSJim Jagielski eType = XML_TABLE;
2961*b1cdbd2cSJim Jagielski break;
2962*b1cdbd2cSJim Jagielski
2963*b1cdbd2cSJim Jagielski case PlaceholderType::TEXTFRAME:
2964*b1cdbd2cSJim Jagielski eType = XML_TEXT_BOX;
2965*b1cdbd2cSJim Jagielski break;
2966*b1cdbd2cSJim Jagielski
2967*b1cdbd2cSJim Jagielski case PlaceholderType::GRAPHIC:
2968*b1cdbd2cSJim Jagielski eType = XML_IMAGE;
2969*b1cdbd2cSJim Jagielski break;
2970*b1cdbd2cSJim Jagielski
2971*b1cdbd2cSJim Jagielski case PlaceholderType::OBJECT:
2972*b1cdbd2cSJim Jagielski eType = XML_OBJECT;
2973*b1cdbd2cSJim Jagielski break;
2974*b1cdbd2cSJim Jagielski
2975*b1cdbd2cSJim Jagielski default:
2976*b1cdbd2cSJim Jagielski // unkown placeholder: XML_TEXT
2977*b1cdbd2cSJim Jagielski DBG_ERROR("unkown placeholder type");
2978*b1cdbd2cSJim Jagielski }
2979*b1cdbd2cSJim Jagielski
2980*b1cdbd2cSJim Jagielski return eType;
2981*b1cdbd2cSJim Jagielski }
2982*b1cdbd2cSJim Jagielski
2983*b1cdbd2cSJim Jagielski
2984*b1cdbd2cSJim Jagielski /// element name for author fields
MapAuthorFieldName(const Reference<XPropertySet> & xPropSet)2985*b1cdbd2cSJim Jagielski enum XMLTokenEnum XMLTextFieldExport::MapAuthorFieldName(
2986*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet)
2987*b1cdbd2cSJim Jagielski {
2988*b1cdbd2cSJim Jagielski // Initalen oder voller Name?
2989*b1cdbd2cSJim Jagielski return GetBoolProperty(sPropertyFullName, xPropSet)
2990*b1cdbd2cSJim Jagielski ? XML_AUTHOR_NAME : XML_AUTHOR_INITIALS;
2991*b1cdbd2cSJim Jagielski }
2992*b1cdbd2cSJim Jagielski
MapPageNumberName(const Reference<XPropertySet> & xPropSet,sal_Int32 & nOffset)2993*b1cdbd2cSJim Jagielski enum XMLTokenEnum XMLTextFieldExport::MapPageNumberName(
2994*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet,
2995*b1cdbd2cSJim Jagielski sal_Int32& nOffset)
2996*b1cdbd2cSJim Jagielski {
2997*b1cdbd2cSJim Jagielski enum XMLTokenEnum eName = XML_TOKEN_INVALID;
2998*b1cdbd2cSJim Jagielski PageNumberType ePage;
2999*b1cdbd2cSJim Jagielski Any aAny = xPropSet->getPropertyValue(sPropertySubType);
3000*b1cdbd2cSJim Jagielski ePage = *(PageNumberType*)aAny.getValue();
3001*b1cdbd2cSJim Jagielski
3002*b1cdbd2cSJim Jagielski switch (ePage)
3003*b1cdbd2cSJim Jagielski {
3004*b1cdbd2cSJim Jagielski case PageNumberType_PREV:
3005*b1cdbd2cSJim Jagielski eName = XML_PREVIOUS;
3006*b1cdbd2cSJim Jagielski nOffset += 1;
3007*b1cdbd2cSJim Jagielski break;
3008*b1cdbd2cSJim Jagielski case PageNumberType_CURRENT:
3009*b1cdbd2cSJim Jagielski eName = XML_CURRENT;
3010*b1cdbd2cSJim Jagielski break;
3011*b1cdbd2cSJim Jagielski case PageNumberType_NEXT:
3012*b1cdbd2cSJim Jagielski eName = XML_NEXT;
3013*b1cdbd2cSJim Jagielski nOffset -= 1;
3014*b1cdbd2cSJim Jagielski break;
3015*b1cdbd2cSJim Jagielski default:
3016*b1cdbd2cSJim Jagielski DBG_ERROR("unknown page number type");
3017*b1cdbd2cSJim Jagielski eName = XML_TOKEN_INVALID;
3018*b1cdbd2cSJim Jagielski break;
3019*b1cdbd2cSJim Jagielski }
3020*b1cdbd2cSJim Jagielski
3021*b1cdbd2cSJim Jagielski return eName;
3022*b1cdbd2cSJim Jagielski }
3023*b1cdbd2cSJim Jagielski
3024*b1cdbd2cSJim Jagielski /// map TemplateDisplayFormat to XML
MapTemplateDisplayFormat(sal_Int16 nFormat)3025*b1cdbd2cSJim Jagielski enum XMLTokenEnum XMLTextFieldExport::MapTemplateDisplayFormat(sal_Int16 nFormat)
3026*b1cdbd2cSJim Jagielski {
3027*b1cdbd2cSJim Jagielski enum XMLTokenEnum eName = XML_TOKEN_INVALID;
3028*b1cdbd2cSJim Jagielski
3029*b1cdbd2cSJim Jagielski switch (nFormat)
3030*b1cdbd2cSJim Jagielski {
3031*b1cdbd2cSJim Jagielski case TemplateDisplayFormat::FULL:
3032*b1cdbd2cSJim Jagielski eName = XML_FULL;
3033*b1cdbd2cSJim Jagielski break;
3034*b1cdbd2cSJim Jagielski case TemplateDisplayFormat::PATH:
3035*b1cdbd2cSJim Jagielski eName = XML_PATH;
3036*b1cdbd2cSJim Jagielski break;
3037*b1cdbd2cSJim Jagielski case TemplateDisplayFormat::NAME:
3038*b1cdbd2cSJim Jagielski eName = XML_NAME;
3039*b1cdbd2cSJim Jagielski break;
3040*b1cdbd2cSJim Jagielski case TemplateDisplayFormat::NAME_AND_EXT:
3041*b1cdbd2cSJim Jagielski eName = XML_NAME_AND_EXTENSION;
3042*b1cdbd2cSJim Jagielski break;
3043*b1cdbd2cSJim Jagielski case TemplateDisplayFormat::AREA:
3044*b1cdbd2cSJim Jagielski eName = XML_AREA;
3045*b1cdbd2cSJim Jagielski break;
3046*b1cdbd2cSJim Jagielski case TemplateDisplayFormat::TITLE:
3047*b1cdbd2cSJim Jagielski eName = XML_TITLE;
3048*b1cdbd2cSJim Jagielski break;
3049*b1cdbd2cSJim Jagielski default:
3050*b1cdbd2cSJim Jagielski DBG_ERROR("unknown template display format");
3051*b1cdbd2cSJim Jagielski eName = XML_TOKEN_INVALID;
3052*b1cdbd2cSJim Jagielski break;
3053*b1cdbd2cSJim Jagielski }
3054*b1cdbd2cSJim Jagielski
3055*b1cdbd2cSJim Jagielski return eName;
3056*b1cdbd2cSJim Jagielski }
3057*b1cdbd2cSJim Jagielski
3058*b1cdbd2cSJim Jagielski /// map count/statistics field token to XML name
MapCountFieldName(FieldIdEnum nToken)3059*b1cdbd2cSJim Jagielski enum XMLTokenEnum XMLTextFieldExport::MapCountFieldName(FieldIdEnum nToken)
3060*b1cdbd2cSJim Jagielski {
3061*b1cdbd2cSJim Jagielski enum XMLTokenEnum eElement = XML_TOKEN_INVALID;
3062*b1cdbd2cSJim Jagielski
3063*b1cdbd2cSJim Jagielski switch (nToken)
3064*b1cdbd2cSJim Jagielski {
3065*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_PAGES:
3066*b1cdbd2cSJim Jagielski eElement = XML_PAGE_COUNT;
3067*b1cdbd2cSJim Jagielski break;
3068*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_PARAGRAPHS:
3069*b1cdbd2cSJim Jagielski eElement = XML_PARAGRAPH_COUNT;
3070*b1cdbd2cSJim Jagielski break;
3071*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_WORDS:
3072*b1cdbd2cSJim Jagielski eElement = XML_WORD_COUNT;
3073*b1cdbd2cSJim Jagielski break;
3074*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_CHARACTERS:
3075*b1cdbd2cSJim Jagielski eElement = XML_CHARACTER_COUNT;
3076*b1cdbd2cSJim Jagielski break;
3077*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_TABLES:
3078*b1cdbd2cSJim Jagielski eElement = XML_TABLE_COUNT;
3079*b1cdbd2cSJim Jagielski break;
3080*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_GRAPHICS:
3081*b1cdbd2cSJim Jagielski eElement = XML_IMAGE_COUNT;
3082*b1cdbd2cSJim Jagielski break;
3083*b1cdbd2cSJim Jagielski case FIELD_ID_COUNT_OBJECTS:
3084*b1cdbd2cSJim Jagielski eElement = XML_OBJECT_COUNT;
3085*b1cdbd2cSJim Jagielski break;
3086*b1cdbd2cSJim Jagielski default:
3087*b1cdbd2cSJim Jagielski DBG_ERROR("no count field token");
3088*b1cdbd2cSJim Jagielski eElement = XML_TOKEN_INVALID;
3089*b1cdbd2cSJim Jagielski break;
3090*b1cdbd2cSJim Jagielski }
3091*b1cdbd2cSJim Jagielski
3092*b1cdbd2cSJim Jagielski return eElement;
3093*b1cdbd2cSJim Jagielski }
3094*b1cdbd2cSJim Jagielski
3095*b1cdbd2cSJim Jagielski /// map ChapterDisplayFormat to XML string
MapChapterDisplayFormat(sal_Int16 nFormat)3096*b1cdbd2cSJim Jagielski enum XMLTokenEnum XMLTextFieldExport::MapChapterDisplayFormat(sal_Int16 nFormat)
3097*b1cdbd2cSJim Jagielski {
3098*b1cdbd2cSJim Jagielski enum XMLTokenEnum eName = XML_TOKEN_INVALID;
3099*b1cdbd2cSJim Jagielski
3100*b1cdbd2cSJim Jagielski switch (nFormat)
3101*b1cdbd2cSJim Jagielski {
3102*b1cdbd2cSJim Jagielski case ChapterFormat::NAME:
3103*b1cdbd2cSJim Jagielski eName = XML_NAME;
3104*b1cdbd2cSJim Jagielski break;
3105*b1cdbd2cSJim Jagielski case ChapterFormat::NUMBER:
3106*b1cdbd2cSJim Jagielski eName = XML_NUMBER;
3107*b1cdbd2cSJim Jagielski break;
3108*b1cdbd2cSJim Jagielski case ChapterFormat::NAME_NUMBER:
3109*b1cdbd2cSJim Jagielski eName = XML_NUMBER_AND_NAME;
3110*b1cdbd2cSJim Jagielski break;
3111*b1cdbd2cSJim Jagielski case ChapterFormat::NO_PREFIX_SUFFIX:
3112*b1cdbd2cSJim Jagielski eName = XML_PLAIN_NUMBER_AND_NAME;
3113*b1cdbd2cSJim Jagielski break;
3114*b1cdbd2cSJim Jagielski case ChapterFormat::DIGIT:
3115*b1cdbd2cSJim Jagielski eName = XML_PLAIN_NUMBER;
3116*b1cdbd2cSJim Jagielski break;
3117*b1cdbd2cSJim Jagielski default:
3118*b1cdbd2cSJim Jagielski DBG_ERROR("unkown chapter display format");
3119*b1cdbd2cSJim Jagielski eName = XML_TOKEN_INVALID;
3120*b1cdbd2cSJim Jagielski break;
3121*b1cdbd2cSJim Jagielski }
3122*b1cdbd2cSJim Jagielski
3123*b1cdbd2cSJim Jagielski return eName;
3124*b1cdbd2cSJim Jagielski }
3125*b1cdbd2cSJim Jagielski
3126*b1cdbd2cSJim Jagielski
3127*b1cdbd2cSJim Jagielski /// map FilenameDisplayFormat to XML attribute names
MapFilenameDisplayFormat(sal_Int16 nFormat)3128*b1cdbd2cSJim Jagielski enum XMLTokenEnum XMLTextFieldExport::MapFilenameDisplayFormat(sal_Int16 nFormat)
3129*b1cdbd2cSJim Jagielski {
3130*b1cdbd2cSJim Jagielski enum XMLTokenEnum eName = XML_TOKEN_INVALID;
3131*b1cdbd2cSJim Jagielski
3132*b1cdbd2cSJim Jagielski switch (nFormat)
3133*b1cdbd2cSJim Jagielski {
3134*b1cdbd2cSJim Jagielski case FilenameDisplayFormat::FULL:
3135*b1cdbd2cSJim Jagielski eName = XML_FULL;
3136*b1cdbd2cSJim Jagielski break;
3137*b1cdbd2cSJim Jagielski case FilenameDisplayFormat::PATH:
3138*b1cdbd2cSJim Jagielski eName = XML_PATH;
3139*b1cdbd2cSJim Jagielski break;
3140*b1cdbd2cSJim Jagielski case FilenameDisplayFormat::NAME:
3141*b1cdbd2cSJim Jagielski eName = XML_NAME;
3142*b1cdbd2cSJim Jagielski break;
3143*b1cdbd2cSJim Jagielski case FilenameDisplayFormat::NAME_AND_EXT:
3144*b1cdbd2cSJim Jagielski eName = XML_NAME_AND_EXTENSION;
3145*b1cdbd2cSJim Jagielski break;
3146*b1cdbd2cSJim Jagielski default:
3147*b1cdbd2cSJim Jagielski DBG_ERROR("unknown filename display format");
3148*b1cdbd2cSJim Jagielski }
3149*b1cdbd2cSJim Jagielski
3150*b1cdbd2cSJim Jagielski return eName;
3151*b1cdbd2cSJim Jagielski }
3152*b1cdbd2cSJim Jagielski
3153*b1cdbd2cSJim Jagielski
3154*b1cdbd2cSJim Jagielski /// map ReferenceFieldPart to XML string
MapReferenceType(sal_Int16 nType)3155*b1cdbd2cSJim Jagielski enum XMLTokenEnum XMLTextFieldExport::MapReferenceType(sal_Int16 nType)
3156*b1cdbd2cSJim Jagielski {
3157*b1cdbd2cSJim Jagielski enum XMLTokenEnum eElement = XML_TOKEN_INVALID;
3158*b1cdbd2cSJim Jagielski
3159*b1cdbd2cSJim Jagielski switch (nType)
3160*b1cdbd2cSJim Jagielski {
3161*b1cdbd2cSJim Jagielski case ReferenceFieldPart::PAGE:
3162*b1cdbd2cSJim Jagielski eElement = XML_PAGE;
3163*b1cdbd2cSJim Jagielski break;
3164*b1cdbd2cSJim Jagielski case ReferenceFieldPart::CHAPTER:
3165*b1cdbd2cSJim Jagielski eElement = XML_CHAPTER;
3166*b1cdbd2cSJim Jagielski break;
3167*b1cdbd2cSJim Jagielski case ReferenceFieldPart::TEXT:
3168*b1cdbd2cSJim Jagielski eElement = XML_TEXT;
3169*b1cdbd2cSJim Jagielski break;
3170*b1cdbd2cSJim Jagielski case ReferenceFieldPart::UP_DOWN:
3171*b1cdbd2cSJim Jagielski eElement = XML_DIRECTION;
3172*b1cdbd2cSJim Jagielski break;
3173*b1cdbd2cSJim Jagielski case ReferenceFieldPart::CATEGORY_AND_NUMBER:
3174*b1cdbd2cSJim Jagielski eElement = XML_CATEGORY_AND_VALUE;
3175*b1cdbd2cSJim Jagielski break;
3176*b1cdbd2cSJim Jagielski case ReferenceFieldPart::ONLY_CAPTION:
3177*b1cdbd2cSJim Jagielski eElement = XML_CAPTION;
3178*b1cdbd2cSJim Jagielski break;
3179*b1cdbd2cSJim Jagielski case ReferenceFieldPart::ONLY_SEQUENCE_NUMBER:
3180*b1cdbd2cSJim Jagielski eElement = XML_VALUE;
3181*b1cdbd2cSJim Jagielski break;
3182*b1cdbd2cSJim Jagielski case ReferenceFieldPart::PAGE_DESC:
3183*b1cdbd2cSJim Jagielski // small hack: this value never gets written, because
3184*b1cdbd2cSJim Jagielski // XML_TEMPLATE is default
3185*b1cdbd2cSJim Jagielski eElement = XML_TEMPLATE;
3186*b1cdbd2cSJim Jagielski break;
3187*b1cdbd2cSJim Jagielski // --> OD 2007-09-14 #i81002#
3188*b1cdbd2cSJim Jagielski case ReferenceFieldPart::NUMBER:
3189*b1cdbd2cSJim Jagielski eElement = XML_NUMBER;
3190*b1cdbd2cSJim Jagielski break;
3191*b1cdbd2cSJim Jagielski case ReferenceFieldPart::NUMBER_NO_CONTEXT:
3192*b1cdbd2cSJim Jagielski eElement = XML_NUMBER_NO_SUPERIOR;
3193*b1cdbd2cSJim Jagielski break;
3194*b1cdbd2cSJim Jagielski case ReferenceFieldPart::NUMBER_FULL_CONTEXT:
3195*b1cdbd2cSJim Jagielski eElement = XML_NUMBER_ALL_SUPERIOR;
3196*b1cdbd2cSJim Jagielski break;
3197*b1cdbd2cSJim Jagielski // <--
3198*b1cdbd2cSJim Jagielski default:
3199*b1cdbd2cSJim Jagielski DBG_ERROR("unknown reference type");
3200*b1cdbd2cSJim Jagielski eElement = XML_TEMPLATE;
3201*b1cdbd2cSJim Jagielski break;
3202*b1cdbd2cSJim Jagielski }
3203*b1cdbd2cSJim Jagielski
3204*b1cdbd2cSJim Jagielski return eElement;
3205*b1cdbd2cSJim Jagielski }
3206*b1cdbd2cSJim Jagielski
3207*b1cdbd2cSJim Jagielski /// map ReferenceFieldPart to XML string
MapReferenceSource(sal_Int16 nType)3208*b1cdbd2cSJim Jagielski enum XMLTokenEnum XMLTextFieldExport::MapReferenceSource(sal_Int16 nType)
3209*b1cdbd2cSJim Jagielski {
3210*b1cdbd2cSJim Jagielski enum XMLTokenEnum eElement = XML_TOKEN_INVALID;
3211*b1cdbd2cSJim Jagielski
3212*b1cdbd2cSJim Jagielski switch (nType)
3213*b1cdbd2cSJim Jagielski {
3214*b1cdbd2cSJim Jagielski case ReferenceFieldSource::REFERENCE_MARK:
3215*b1cdbd2cSJim Jagielski eElement = XML_REFERENCE_REF;
3216*b1cdbd2cSJim Jagielski break;
3217*b1cdbd2cSJim Jagielski case ReferenceFieldSource::SEQUENCE_FIELD:
3218*b1cdbd2cSJim Jagielski eElement = XML_SEQUENCE_REF;
3219*b1cdbd2cSJim Jagielski break;
3220*b1cdbd2cSJim Jagielski case ReferenceFieldSource::BOOKMARK:
3221*b1cdbd2cSJim Jagielski eElement = XML_BOOKMARK_REF;
3222*b1cdbd2cSJim Jagielski break;
3223*b1cdbd2cSJim Jagielski case ReferenceFieldSource::FOOTNOTE:
3224*b1cdbd2cSJim Jagielski case ReferenceFieldSource::ENDNOTE:
3225*b1cdbd2cSJim Jagielski eElement = XML_NOTE_REF;
3226*b1cdbd2cSJim Jagielski break;
3227*b1cdbd2cSJim Jagielski default:
3228*b1cdbd2cSJim Jagielski DBG_ERROR("unkown reference source");
3229*b1cdbd2cSJim Jagielski break;
3230*b1cdbd2cSJim Jagielski }
3231*b1cdbd2cSJim Jagielski
3232*b1cdbd2cSJim Jagielski return eElement;
3233*b1cdbd2cSJim Jagielski }
3234*b1cdbd2cSJim Jagielski
3235*b1cdbd2cSJim Jagielski
3236*b1cdbd2cSJim Jagielski /// element name for sender fields
MapSenderFieldName(const Reference<XPropertySet> & xPropSet)3237*b1cdbd2cSJim Jagielski enum XMLTokenEnum XMLTextFieldExport::MapSenderFieldName(
3238*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet)
3239*b1cdbd2cSJim Jagielski {
3240*b1cdbd2cSJim Jagielski enum XMLTokenEnum eName = XML_TOKEN_INVALID;
3241*b1cdbd2cSJim Jagielski
3242*b1cdbd2cSJim Jagielski // sub-field type
3243*b1cdbd2cSJim Jagielski switch (GetInt16Property(sPropertyFieldSubType, xPropSet))
3244*b1cdbd2cSJim Jagielski {
3245*b1cdbd2cSJim Jagielski case UserDataPart::COMPANY :
3246*b1cdbd2cSJim Jagielski eName = XML_SENDER_COMPANY;
3247*b1cdbd2cSJim Jagielski break;
3248*b1cdbd2cSJim Jagielski case UserDataPart::FIRSTNAME :
3249*b1cdbd2cSJim Jagielski eName = XML_SENDER_FIRSTNAME;
3250*b1cdbd2cSJim Jagielski break;
3251*b1cdbd2cSJim Jagielski case UserDataPart::NAME :
3252*b1cdbd2cSJim Jagielski eName = XML_SENDER_LASTNAME;
3253*b1cdbd2cSJim Jagielski break;
3254*b1cdbd2cSJim Jagielski case UserDataPart::SHORTCUT :
3255*b1cdbd2cSJim Jagielski eName = XML_SENDER_INITIALS;
3256*b1cdbd2cSJim Jagielski break;
3257*b1cdbd2cSJim Jagielski case UserDataPart::STREET :
3258*b1cdbd2cSJim Jagielski eName = XML_SENDER_STREET;
3259*b1cdbd2cSJim Jagielski break;
3260*b1cdbd2cSJim Jagielski case UserDataPart::COUNTRY :
3261*b1cdbd2cSJim Jagielski eName = XML_SENDER_COUNTRY;
3262*b1cdbd2cSJim Jagielski break;
3263*b1cdbd2cSJim Jagielski case UserDataPart::ZIP :
3264*b1cdbd2cSJim Jagielski eName = XML_SENDER_POSTAL_CODE;
3265*b1cdbd2cSJim Jagielski break;
3266*b1cdbd2cSJim Jagielski case UserDataPart::CITY :
3267*b1cdbd2cSJim Jagielski eName = XML_SENDER_CITY;
3268*b1cdbd2cSJim Jagielski break;
3269*b1cdbd2cSJim Jagielski case UserDataPart::TITLE :
3270*b1cdbd2cSJim Jagielski eName = XML_SENDER_TITLE;
3271*b1cdbd2cSJim Jagielski break;
3272*b1cdbd2cSJim Jagielski case UserDataPart::POSITION :
3273*b1cdbd2cSJim Jagielski eName = XML_SENDER_POSITION;
3274*b1cdbd2cSJim Jagielski break;
3275*b1cdbd2cSJim Jagielski case UserDataPart::PHONE_PRIVATE :
3276*b1cdbd2cSJim Jagielski eName = XML_SENDER_PHONE_PRIVATE;
3277*b1cdbd2cSJim Jagielski break;
3278*b1cdbd2cSJim Jagielski case UserDataPart::PHONE_COMPANY :
3279*b1cdbd2cSJim Jagielski eName = XML_SENDER_PHONE_WORK;
3280*b1cdbd2cSJim Jagielski break;
3281*b1cdbd2cSJim Jagielski case UserDataPart::FAX :
3282*b1cdbd2cSJim Jagielski eName = XML_SENDER_FAX;
3283*b1cdbd2cSJim Jagielski break;
3284*b1cdbd2cSJim Jagielski case UserDataPart::EMAIL :
3285*b1cdbd2cSJim Jagielski eName = XML_SENDER_EMAIL;
3286*b1cdbd2cSJim Jagielski break;
3287*b1cdbd2cSJim Jagielski case UserDataPart::STATE :
3288*b1cdbd2cSJim Jagielski eName = XML_SENDER_STATE_OR_PROVINCE;
3289*b1cdbd2cSJim Jagielski break;
3290*b1cdbd2cSJim Jagielski default:
3291*b1cdbd2cSJim Jagielski DBG_WARNING("unknown sender type");
3292*b1cdbd2cSJim Jagielski eName = XML_TOKEN_INVALID;
3293*b1cdbd2cSJim Jagielski break;
3294*b1cdbd2cSJim Jagielski }
3295*b1cdbd2cSJim Jagielski
3296*b1cdbd2cSJim Jagielski return eName;
3297*b1cdbd2cSJim Jagielski }
3298*b1cdbd2cSJim Jagielski
MapDocInfoFieldName(enum FieldIdEnum nToken)3299*b1cdbd2cSJim Jagielski enum XMLTokenEnum XMLTextFieldExport::MapDocInfoFieldName(
3300*b1cdbd2cSJim Jagielski enum FieldIdEnum nToken)
3301*b1cdbd2cSJim Jagielski {
3302*b1cdbd2cSJim Jagielski enum XMLTokenEnum eElement = XML_TOKEN_INVALID;
3303*b1cdbd2cSJim Jagielski
3304*b1cdbd2cSJim Jagielski switch (nToken)
3305*b1cdbd2cSJim Jagielski {
3306*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CREATION_AUTHOR:
3307*b1cdbd2cSJim Jagielski eElement = XML_INITIAL_CREATOR;
3308*b1cdbd2cSJim Jagielski break;
3309*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CREATION_DATE:
3310*b1cdbd2cSJim Jagielski eElement = XML_CREATION_DATE;
3311*b1cdbd2cSJim Jagielski break;
3312*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_CREATION_TIME:
3313*b1cdbd2cSJim Jagielski eElement = XML_CREATION_TIME;
3314*b1cdbd2cSJim Jagielski break;
3315*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_DESCRIPTION:
3316*b1cdbd2cSJim Jagielski eElement = XML_DESCRIPTION;
3317*b1cdbd2cSJim Jagielski break;
3318*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_PRINT_TIME:
3319*b1cdbd2cSJim Jagielski eElement = XML_PRINT_TIME;
3320*b1cdbd2cSJim Jagielski break;
3321*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_PRINT_DATE:
3322*b1cdbd2cSJim Jagielski eElement = XML_PRINT_DATE;
3323*b1cdbd2cSJim Jagielski break;
3324*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_PRINT_AUTHOR:
3325*b1cdbd2cSJim Jagielski eElement = XML_PRINTED_BY;
3326*b1cdbd2cSJim Jagielski break;
3327*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_TITLE:
3328*b1cdbd2cSJim Jagielski eElement = XML_TITLE;
3329*b1cdbd2cSJim Jagielski break;
3330*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SUBJECT:
3331*b1cdbd2cSJim Jagielski eElement = XML_SUBJECT;
3332*b1cdbd2cSJim Jagielski break;
3333*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_KEYWORDS:
3334*b1cdbd2cSJim Jagielski eElement = XML_KEYWORDS;
3335*b1cdbd2cSJim Jagielski break;
3336*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_REVISION:
3337*b1cdbd2cSJim Jagielski eElement = XML_EDITING_CYCLES;
3338*b1cdbd2cSJim Jagielski break;
3339*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_EDIT_DURATION:
3340*b1cdbd2cSJim Jagielski eElement = XML_EDITING_DURATION;
3341*b1cdbd2cSJim Jagielski break;
3342*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SAVE_TIME:
3343*b1cdbd2cSJim Jagielski eElement = XML_MODIFICATION_TIME;
3344*b1cdbd2cSJim Jagielski break;
3345*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SAVE_DATE:
3346*b1cdbd2cSJim Jagielski eElement = XML_MODIFICATION_DATE;
3347*b1cdbd2cSJim Jagielski break;
3348*b1cdbd2cSJim Jagielski case FIELD_ID_DOCINFO_SAVE_AUTHOR:
3349*b1cdbd2cSJim Jagielski eElement = XML_CREATOR;
3350*b1cdbd2cSJim Jagielski break;
3351*b1cdbd2cSJim Jagielski default:
3352*b1cdbd2cSJim Jagielski DBG_WARNING("unknown docinfo field type!");
3353*b1cdbd2cSJim Jagielski eElement = XML_TOKEN_INVALID;
3354*b1cdbd2cSJim Jagielski break;
3355*b1cdbd2cSJim Jagielski }
3356*b1cdbd2cSJim Jagielski
3357*b1cdbd2cSJim Jagielski return eElement;
3358*b1cdbd2cSJim Jagielski }
3359*b1cdbd2cSJim Jagielski
MapBibliographyFieldName(OUString sName)3360*b1cdbd2cSJim Jagielski enum XMLTokenEnum XMLTextFieldExport::MapBibliographyFieldName(OUString sName)
3361*b1cdbd2cSJim Jagielski {
3362*b1cdbd2cSJim Jagielski enum XMLTokenEnum eName = XML_TOKEN_INVALID;
3363*b1cdbd2cSJim Jagielski
3364*b1cdbd2cSJim Jagielski if (sName.equalsAsciiL("Identifier", sizeof("Identifier")-1))
3365*b1cdbd2cSJim Jagielski {
3366*b1cdbd2cSJim Jagielski eName = XML_IDENTIFIER;
3367*b1cdbd2cSJim Jagielski }
3368*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("BibiliographicType",
3369*b1cdbd2cSJim Jagielski sizeof("BibiliographicType")-1))
3370*b1cdbd2cSJim Jagielski {
3371*b1cdbd2cSJim Jagielski eName = XML_BIBLIOGRAPHY_TYPE;
3372*b1cdbd2cSJim Jagielski }
3373*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Address", sizeof("Address")-1))
3374*b1cdbd2cSJim Jagielski {
3375*b1cdbd2cSJim Jagielski eName = XML_ADDRESS;
3376*b1cdbd2cSJim Jagielski }
3377*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Annote", sizeof("Annote")-1))
3378*b1cdbd2cSJim Jagielski {
3379*b1cdbd2cSJim Jagielski eName = XML_ANNOTE;
3380*b1cdbd2cSJim Jagielski }
3381*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Author", sizeof("Author")-1))
3382*b1cdbd2cSJim Jagielski {
3383*b1cdbd2cSJim Jagielski eName = XML_AUTHOR;
3384*b1cdbd2cSJim Jagielski }
3385*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Booktitle", sizeof("Booktitle")-1))
3386*b1cdbd2cSJim Jagielski {
3387*b1cdbd2cSJim Jagielski eName = XML_BOOKTITLE;
3388*b1cdbd2cSJim Jagielski }
3389*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Chapter", sizeof("Chapter")-1))
3390*b1cdbd2cSJim Jagielski {
3391*b1cdbd2cSJim Jagielski eName = XML_CHAPTER;
3392*b1cdbd2cSJim Jagielski }
3393*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Edition", sizeof("Edition")-1))
3394*b1cdbd2cSJim Jagielski {
3395*b1cdbd2cSJim Jagielski eName = XML_EDITION;
3396*b1cdbd2cSJim Jagielski }
3397*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Editor", sizeof("Editor")-1))
3398*b1cdbd2cSJim Jagielski {
3399*b1cdbd2cSJim Jagielski eName = XML_EDITOR;
3400*b1cdbd2cSJim Jagielski }
3401*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Howpublished", sizeof("Howpublished")-1))
3402*b1cdbd2cSJim Jagielski {
3403*b1cdbd2cSJim Jagielski eName = XML_HOWPUBLISHED;
3404*b1cdbd2cSJim Jagielski }
3405*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Institution", sizeof("Institution")-1))
3406*b1cdbd2cSJim Jagielski {
3407*b1cdbd2cSJim Jagielski eName = XML_INSTITUTION;
3408*b1cdbd2cSJim Jagielski }
3409*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Journal", sizeof("Journal")-1))
3410*b1cdbd2cSJim Jagielski {
3411*b1cdbd2cSJim Jagielski eName = XML_JOURNAL;
3412*b1cdbd2cSJim Jagielski }
3413*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Month", sizeof("Month")-1))
3414*b1cdbd2cSJim Jagielski {
3415*b1cdbd2cSJim Jagielski eName = XML_MONTH;
3416*b1cdbd2cSJim Jagielski }
3417*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Note", sizeof("Note")-1))
3418*b1cdbd2cSJim Jagielski {
3419*b1cdbd2cSJim Jagielski eName = XML_NOTE;
3420*b1cdbd2cSJim Jagielski }
3421*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Number", sizeof("Number")-1))
3422*b1cdbd2cSJim Jagielski {
3423*b1cdbd2cSJim Jagielski eName = XML_NUMBER;
3424*b1cdbd2cSJim Jagielski }
3425*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Organizations", sizeof("Organizations")-1))
3426*b1cdbd2cSJim Jagielski {
3427*b1cdbd2cSJim Jagielski eName = XML_ORGANIZATIONS;
3428*b1cdbd2cSJim Jagielski }
3429*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Pages", sizeof("Pages")-1))
3430*b1cdbd2cSJim Jagielski {
3431*b1cdbd2cSJim Jagielski eName = XML_PAGES;
3432*b1cdbd2cSJim Jagielski }
3433*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Publisher", sizeof("Publisher")-1))
3434*b1cdbd2cSJim Jagielski {
3435*b1cdbd2cSJim Jagielski eName = XML_PUBLISHER;
3436*b1cdbd2cSJim Jagielski }
3437*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("School", sizeof("School")-1))
3438*b1cdbd2cSJim Jagielski {
3439*b1cdbd2cSJim Jagielski eName = XML_SCHOOL;
3440*b1cdbd2cSJim Jagielski }
3441*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Series", sizeof("Series")-1))
3442*b1cdbd2cSJim Jagielski {
3443*b1cdbd2cSJim Jagielski eName = XML_SERIES;
3444*b1cdbd2cSJim Jagielski }
3445*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Title", sizeof("Title")-1))
3446*b1cdbd2cSJim Jagielski {
3447*b1cdbd2cSJim Jagielski eName = XML_TITLE;
3448*b1cdbd2cSJim Jagielski }
3449*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Report_Type", sizeof("Report_Type")-1))
3450*b1cdbd2cSJim Jagielski {
3451*b1cdbd2cSJim Jagielski eName = XML_REPORT_TYPE;
3452*b1cdbd2cSJim Jagielski }
3453*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Volume", sizeof("Volume")-1))
3454*b1cdbd2cSJim Jagielski {
3455*b1cdbd2cSJim Jagielski eName = XML_VOLUME;
3456*b1cdbd2cSJim Jagielski }
3457*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Year", sizeof("Year")-1))
3458*b1cdbd2cSJim Jagielski {
3459*b1cdbd2cSJim Jagielski eName = XML_YEAR;
3460*b1cdbd2cSJim Jagielski }
3461*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("URL", sizeof("URL")-1))
3462*b1cdbd2cSJim Jagielski {
3463*b1cdbd2cSJim Jagielski eName = XML_URL;
3464*b1cdbd2cSJim Jagielski }
3465*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Custom1", sizeof("Custom1")-1))
3466*b1cdbd2cSJim Jagielski {
3467*b1cdbd2cSJim Jagielski eName = XML_CUSTOM1;
3468*b1cdbd2cSJim Jagielski }
3469*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Custom2", sizeof("Custom2")-1))
3470*b1cdbd2cSJim Jagielski {
3471*b1cdbd2cSJim Jagielski eName = XML_CUSTOM2;
3472*b1cdbd2cSJim Jagielski }
3473*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Custom3", sizeof("Custom3")-1))
3474*b1cdbd2cSJim Jagielski {
3475*b1cdbd2cSJim Jagielski eName = XML_CUSTOM3;
3476*b1cdbd2cSJim Jagielski }
3477*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Custom4", sizeof("Custom4")-1))
3478*b1cdbd2cSJim Jagielski {
3479*b1cdbd2cSJim Jagielski eName = XML_CUSTOM4;
3480*b1cdbd2cSJim Jagielski }
3481*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("Custom5", sizeof("Custom5")-1))
3482*b1cdbd2cSJim Jagielski {
3483*b1cdbd2cSJim Jagielski eName = XML_CUSTOM5;
3484*b1cdbd2cSJim Jagielski }
3485*b1cdbd2cSJim Jagielski else if (sName.equalsAsciiL("ISBN", sizeof("ISBN")-1))
3486*b1cdbd2cSJim Jagielski {
3487*b1cdbd2cSJim Jagielski eName = XML_ISBN;
3488*b1cdbd2cSJim Jagielski }
3489*b1cdbd2cSJim Jagielski else
3490*b1cdbd2cSJim Jagielski {
3491*b1cdbd2cSJim Jagielski DBG_ERROR("Unknown bibliography info data");
3492*b1cdbd2cSJim Jagielski eName = XML_TOKEN_INVALID;
3493*b1cdbd2cSJim Jagielski }
3494*b1cdbd2cSJim Jagielski
3495*b1cdbd2cSJim Jagielski return eName;
3496*b1cdbd2cSJim Jagielski }
3497*b1cdbd2cSJim Jagielski
MapMeasureKind(sal_Int16 nKind)3498*b1cdbd2cSJim Jagielski enum XMLTokenEnum XMLTextFieldExport::MapMeasureKind(sal_Int16 nKind)
3499*b1cdbd2cSJim Jagielski {
3500*b1cdbd2cSJim Jagielski switch( nKind )
3501*b1cdbd2cSJim Jagielski {
3502*b1cdbd2cSJim Jagielski case 0:
3503*b1cdbd2cSJim Jagielski return XML_VALUE;
3504*b1cdbd2cSJim Jagielski case 1:
3505*b1cdbd2cSJim Jagielski return XML_UNIT;
3506*b1cdbd2cSJim Jagielski }
3507*b1cdbd2cSJim Jagielski return XML_GAP;
3508*b1cdbd2cSJim Jagielski }
3509*b1cdbd2cSJim Jagielski
MakeFootnoteRefName(sal_Int16 nSeqNo)3510*b1cdbd2cSJim Jagielski OUString XMLTextFieldExport::MakeFootnoteRefName(
3511*b1cdbd2cSJim Jagielski sal_Int16 nSeqNo)
3512*b1cdbd2cSJim Jagielski {
3513*b1cdbd2cSJim Jagielski // generate foot-/endnote ID
3514*b1cdbd2cSJim Jagielski OUStringBuffer aBuf;
3515*b1cdbd2cSJim Jagielski aBuf.appendAscii("ftn");
3516*b1cdbd2cSJim Jagielski aBuf.append((sal_Int32)nSeqNo);
3517*b1cdbd2cSJim Jagielski return aBuf.makeStringAndClear();
3518*b1cdbd2cSJim Jagielski }
3519*b1cdbd2cSJim Jagielski
MakeSequenceRefName(sal_Int16 nSeqNo,const OUString & rSeqName)3520*b1cdbd2cSJim Jagielski OUString XMLTextFieldExport::MakeSequenceRefName(
3521*b1cdbd2cSJim Jagielski sal_Int16 nSeqNo,
3522*b1cdbd2cSJim Jagielski const OUString& rSeqName)
3523*b1cdbd2cSJim Jagielski {
3524*b1cdbd2cSJim Jagielski // generate foot-/endnote ID
3525*b1cdbd2cSJim Jagielski OUStringBuffer aBuf;
3526*b1cdbd2cSJim Jagielski aBuf.appendAscii("ref");
3527*b1cdbd2cSJim Jagielski aBuf.append(rSeqName);
3528*b1cdbd2cSJim Jagielski aBuf.append((sal_Int32)nSeqNo);
3529*b1cdbd2cSJim Jagielski return aBuf.makeStringAndClear();
3530*b1cdbd2cSJim Jagielski }
3531*b1cdbd2cSJim Jagielski
3532*b1cdbd2cSJim Jagielski //
3533*b1cdbd2cSJim Jagielski // Property accessor helper functions
3534*b1cdbd2cSJim Jagielski //
3535*b1cdbd2cSJim Jagielski
3536*b1cdbd2cSJim Jagielski // to be relegated (does that word exist?) to a more appropriate place
3537*b1cdbd2cSJim Jagielski //
3538*b1cdbd2cSJim Jagielski
3539*b1cdbd2cSJim Jagielski
GetBoolProperty(const OUString & sPropName,const Reference<XPropertySet> & xPropSet)3540*b1cdbd2cSJim Jagielski inline sal_Bool GetBoolProperty(
3541*b1cdbd2cSJim Jagielski const OUString& sPropName,
3542*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet)
3543*b1cdbd2cSJim Jagielski {
3544*b1cdbd2cSJim Jagielski Any aAny = xPropSet->getPropertyValue(sPropName);
3545*b1cdbd2cSJim Jagielski sal_Bool bBool = *(sal_Bool *)aAny.getValue();
3546*b1cdbd2cSJim Jagielski return bBool;
3547*b1cdbd2cSJim Jagielski }
3548*b1cdbd2cSJim Jagielski
GetOptionalBoolProperty(const OUString & sPropName,const Reference<XPropertySet> & xPropSet,const Reference<XPropertySetInfo> & xPropSetInfo,sal_Bool bDefault)3549*b1cdbd2cSJim Jagielski inline sal_Bool GetOptionalBoolProperty(
3550*b1cdbd2cSJim Jagielski const OUString& sPropName,
3551*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet,
3552*b1cdbd2cSJim Jagielski const Reference<XPropertySetInfo> & xPropSetInfo,
3553*b1cdbd2cSJim Jagielski sal_Bool bDefault)
3554*b1cdbd2cSJim Jagielski {
3555*b1cdbd2cSJim Jagielski return xPropSetInfo->hasPropertyByName( sPropName )
3556*b1cdbd2cSJim Jagielski ? GetBoolProperty( sPropName, xPropSet ) : bDefault;
3557*b1cdbd2cSJim Jagielski }
3558*b1cdbd2cSJim Jagielski
GetDoubleProperty(const OUString & sPropName,const Reference<XPropertySet> & xPropSet)3559*b1cdbd2cSJim Jagielski inline double GetDoubleProperty(
3560*b1cdbd2cSJim Jagielski const OUString& sPropName,
3561*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet)
3562*b1cdbd2cSJim Jagielski {
3563*b1cdbd2cSJim Jagielski Any aAny = xPropSet->getPropertyValue(sPropName);
3564*b1cdbd2cSJim Jagielski double fDouble = 0.0;
3565*b1cdbd2cSJim Jagielski aAny >>= fDouble;
3566*b1cdbd2cSJim Jagielski return fDouble;
3567*b1cdbd2cSJim Jagielski }
3568*b1cdbd2cSJim Jagielski
GetStringProperty(const OUString & sPropName,const Reference<XPropertySet> & xPropSet)3569*b1cdbd2cSJim Jagielski inline OUString const GetStringProperty(
3570*b1cdbd2cSJim Jagielski const OUString& sPropName,
3571*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet)
3572*b1cdbd2cSJim Jagielski {
3573*b1cdbd2cSJim Jagielski Any aAny = xPropSet->getPropertyValue(sPropName);
3574*b1cdbd2cSJim Jagielski OUString sString;
3575*b1cdbd2cSJim Jagielski aAny >>= sString;
3576*b1cdbd2cSJim Jagielski return sString;
3577*b1cdbd2cSJim Jagielski }
3578*b1cdbd2cSJim Jagielski
GetIntProperty(const OUString & sPropName,const Reference<XPropertySet> & xPropSet)3579*b1cdbd2cSJim Jagielski inline sal_Int32 GetIntProperty(
3580*b1cdbd2cSJim Jagielski const OUString& sPropName,
3581*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet)
3582*b1cdbd2cSJim Jagielski {
3583*b1cdbd2cSJim Jagielski Any aAny = xPropSet->getPropertyValue(sPropName);
3584*b1cdbd2cSJim Jagielski sal_Int32 nInt = 0;
3585*b1cdbd2cSJim Jagielski aAny >>= nInt;
3586*b1cdbd2cSJim Jagielski return nInt;
3587*b1cdbd2cSJim Jagielski }
3588*b1cdbd2cSJim Jagielski
GetInt16Property(const OUString & sPropName,const Reference<XPropertySet> & xPropSet)3589*b1cdbd2cSJim Jagielski inline sal_Int16 GetInt16Property(
3590*b1cdbd2cSJim Jagielski const OUString& sPropName,
3591*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet)
3592*b1cdbd2cSJim Jagielski {
3593*b1cdbd2cSJim Jagielski Any aAny = xPropSet->getPropertyValue(sPropName);
3594*b1cdbd2cSJim Jagielski sal_Int16 nInt = 0;
3595*b1cdbd2cSJim Jagielski aAny >>= nInt;
3596*b1cdbd2cSJim Jagielski return nInt;
3597*b1cdbd2cSJim Jagielski }
3598*b1cdbd2cSJim Jagielski
GetInt8Property(const OUString & sPropName,const Reference<XPropertySet> & xPropSet)3599*b1cdbd2cSJim Jagielski inline sal_Int8 GetInt8Property(
3600*b1cdbd2cSJim Jagielski const OUString& sPropName,
3601*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet)
3602*b1cdbd2cSJim Jagielski {
3603*b1cdbd2cSJim Jagielski Any aAny = xPropSet->getPropertyValue(sPropName);
3604*b1cdbd2cSJim Jagielski sal_Int8 nInt = 0;
3605*b1cdbd2cSJim Jagielski aAny >>= nInt;
3606*b1cdbd2cSJim Jagielski return nInt;
3607*b1cdbd2cSJim Jagielski }
3608*b1cdbd2cSJim Jagielski
GetDateTimeProperty(const OUString & sPropName,const Reference<XPropertySet> & xPropSet)3609*b1cdbd2cSJim Jagielski inline DateTime const GetDateTimeProperty(
3610*b1cdbd2cSJim Jagielski const OUString& sPropName,
3611*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet)
3612*b1cdbd2cSJim Jagielski {
3613*b1cdbd2cSJim Jagielski Any aAny = xPropSet->getPropertyValue(sPropName);
3614*b1cdbd2cSJim Jagielski DateTime aTime;
3615*b1cdbd2cSJim Jagielski aAny >>= aTime;
3616*b1cdbd2cSJim Jagielski return aTime;
3617*b1cdbd2cSJim Jagielski }
3618*b1cdbd2cSJim Jagielski
GetDateProperty(const OUString & sPropName,const Reference<XPropertySet> & xPropSet)3619*b1cdbd2cSJim Jagielski inline Date const GetDateProperty(
3620*b1cdbd2cSJim Jagielski const OUString& sPropName,
3621*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet)
3622*b1cdbd2cSJim Jagielski {
3623*b1cdbd2cSJim Jagielski Any aAny = xPropSet->getPropertyValue(sPropName);
3624*b1cdbd2cSJim Jagielski Date aDate;
3625*b1cdbd2cSJim Jagielski aAny >>= aDate;
3626*b1cdbd2cSJim Jagielski return aDate;
3627*b1cdbd2cSJim Jagielski }
3628*b1cdbd2cSJim Jagielski
GetStringSequenceProperty(const OUString & sPropName,const Reference<XPropertySet> & xPropSet)3629*b1cdbd2cSJim Jagielski inline Sequence<OUString> const GetStringSequenceProperty(
3630*b1cdbd2cSJim Jagielski const OUString& sPropName,
3631*b1cdbd2cSJim Jagielski const Reference<XPropertySet> & xPropSet)
3632*b1cdbd2cSJim Jagielski {
3633*b1cdbd2cSJim Jagielski Any aAny = xPropSet->getPropertyValue(sPropName);
3634*b1cdbd2cSJim Jagielski Sequence<OUString> aSequence;
3635*b1cdbd2cSJim Jagielski aAny >>= aSequence;
3636*b1cdbd2cSJim Jagielski return aSequence;
3637*b1cdbd2cSJim Jagielski }
3638