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