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
10cdf0e10cSrcweir *
1163bba73cSAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir *
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.
19cdf0e10cSrcweir *
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 * Import of all text fields except those from txtvfldi.cxx
30cdf0e10cSrcweir * (variable related text fields and database display fields)
31cdf0e10cSrcweir */
32cdf0e10cSrcweir #include "txtfldi.hxx"
33cdf0e10cSrcweir #include "txtvfldi.hxx"
34cdf0e10cSrcweir #include <xmloff/xmlimp.hxx>
35cdf0e10cSrcweir #include <xmloff/xmlnumi.hxx>
36cdf0e10cSrcweir #include <xmloff/txtimp.hxx>
37cdf0e10cSrcweir #include "xmloff/xmlnmspe.hxx"
38cdf0e10cSrcweir #include <xmloff/nmspmap.hxx>
39cdf0e10cSrcweir #include <xmloff/xmltoken.hxx>
40cdf0e10cSrcweir #include <xmloff/xmluconv.hxx>
41cdf0e10cSrcweir #include <xmloff/xmlement.hxx>
42cdf0e10cSrcweir #include "XMLStringBufferImportContext.hxx"
43cdf0e10cSrcweir #include <xmloff/XMLEventsImportContext.hxx>
44cdf0e10cSrcweir #include <com/sun/star/xml/sax/XAttributeList.hpp>
45cdf0e10cSrcweir #include <com/sun/star/text/UserDataPart.hpp>
46cdf0e10cSrcweir #include <com/sun/star/style/NumberingType.hpp>
47cdf0e10cSrcweir #include <com/sun/star/text/PlaceholderType.hpp>
48cdf0e10cSrcweir #include <com/sun/star/text/ReferenceFieldPart.hpp>
49cdf0e10cSrcweir #include <com/sun/star/text/ReferenceFieldSource.hpp>
50cdf0e10cSrcweir #include <com/sun/star/text/XTextField.hpp>
51cdf0e10cSrcweir #include <com/sun/star/text/XTextContent.hpp>
52cdf0e10cSrcweir #include <com/sun/star/beans/XPropertySet.hpp>
53cdf0e10cSrcweir #include <com/sun/star/beans/XPropertySetInfo.hpp>
54cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp>
55cdf0e10cSrcweir #include <com/sun/star/text/XTextFieldsSupplier.hpp>
56cdf0e10cSrcweir #include <com/sun/star/text/XDependentTextField.hpp>
57cdf0e10cSrcweir #include <com/sun/star/text/SetVariableType.hpp>
58cdf0e10cSrcweir #include <com/sun/star/text/FilenameDisplayFormat.hpp>
59cdf0e10cSrcweir #include <com/sun/star/text/ChapterFormat.hpp>
60cdf0e10cSrcweir #include <com/sun/star/text/TemplateDisplayFormat.hpp>
61cdf0e10cSrcweir #include <com/sun/star/beans/PropertyValue.hpp>
62cdf0e10cSrcweir #include <com/sun/star/text/BibliographyDataType.hpp>
63cdf0e10cSrcweir #include <com/sun/star/text/BibliographyDataField.hpp>
64cdf0e10cSrcweir #include <com/sun/star/util/XUpdatable.hpp>
65cdf0e10cSrcweir #include <com/sun/star/sdb/CommandType.hpp>
66cdf0e10cSrcweir
67cdf0e10cSrcweir #include <rtl/ustring.hxx>
68cdf0e10cSrcweir #include <rtl/ustrbuf.hxx>
69cdf0e10cSrcweir #include <rtl/math.hxx>
70cdf0e10cSrcweir #include <tools/debug.hxx>
71cdf0e10cSrcweir
72cdf0e10cSrcweir
73cdf0e10cSrcweir using ::rtl::OUString;
74cdf0e10cSrcweir using ::rtl::OUStringBuffer;
75cdf0e10cSrcweir
76cdf0e10cSrcweir using namespace ::com::sun::star;
77cdf0e10cSrcweir using namespace ::com::sun::star::uno;
78cdf0e10cSrcweir using namespace ::com::sun::star::text;
79cdf0e10cSrcweir using namespace ::com::sun::star::lang;
80cdf0e10cSrcweir using namespace ::com::sun::star::beans;
81cdf0e10cSrcweir using namespace ::com::sun::star::document;
82cdf0e10cSrcweir using namespace ::com::sun::star::util;
83cdf0e10cSrcweir using namespace ::com::sun::star::xml::sax;
84cdf0e10cSrcweir using namespace ::xmloff::token;
85cdf0e10cSrcweir
86cdf0e10cSrcweir
87cdf0e10cSrcweir //
88cdf0e10cSrcweir // SO API string constants
89cdf0e10cSrcweir //
90cdf0e10cSrcweir
91cdf0e10cSrcweir // service prefix and service anems
92cdf0e10cSrcweir const sal_Char sAPI_textfield_prefix[] = "com.sun.star.text.TextField.";
93cdf0e10cSrcweir const sal_Char sAPI_fieldmaster_prefix[] = "com.sun.star.text.FieldMaster.";
94cdf0e10cSrcweir const sal_Char sAPI_presentation_prefix[] = "com.sun.star.presentation.TextField.";
95cdf0e10cSrcweir
96cdf0e10cSrcweir const sal_Char sAPI_extended_user[] = "ExtendedUser";
97cdf0e10cSrcweir const sal_Char sAPI_user_data_type[] = "UserDataType";
98cdf0e10cSrcweir const sal_Char sAPI_jump_edit[] = "JumpEdit";
99cdf0e10cSrcweir const sal_Char sAPI_get_expression[] = "GetExpression";
100cdf0e10cSrcweir const sal_Char sAPI_set_expression[] = "SetExpression";
101cdf0e10cSrcweir const sal_Char sAPI_user[] = "User";
102cdf0e10cSrcweir const sal_Char sAPI_date_time[] = "DateTime";
103cdf0e10cSrcweir const sal_Char sAPI_page_number[] = "PageNumber";
104cdf0e10cSrcweir const sal_Char sAPI_database_next[] = "DatabaseNextSet";
105cdf0e10cSrcweir const sal_Char sAPI_database_select[] = "DatabaseNumberOfSet";
106cdf0e10cSrcweir const sal_Char sAPI_database_number[] = "DatabaseSetNumber";
107cdf0e10cSrcweir const sal_Char sAPI_database[] = "Database";
108cdf0e10cSrcweir const sal_Char sAPI_database_name[] = "DatabaseName";
109cdf0e10cSrcweir const sal_Char sAPI_docinfo_change_author[] = "DocInfo.ChangeAuthor";
110cdf0e10cSrcweir const sal_Char sAPI_docinfo_change_date_time[] = "DocInfo.ChangeDateTime";
111cdf0e10cSrcweir const sal_Char sAPI_docinfo_edit_time[] = "DocInfo.EditTime";
112cdf0e10cSrcweir const sal_Char sAPI_docinfo_description[] = "DocInfo.Description";
113cdf0e10cSrcweir const sal_Char sAPI_docinfo_create_author[] = "DocInfo.CreateAuthor";
114cdf0e10cSrcweir const sal_Char sAPI_docinfo_create_date_time[] = "DocInfo.CreateDateTime";
115cdf0e10cSrcweir const sal_Char sAPI_docinfo_custom[] = "DocInfo.Custom";
116cdf0e10cSrcweir const sal_Char sAPI_docinfo_print_author[] = "DocInfo.PrintAuthor";
117cdf0e10cSrcweir const sal_Char sAPI_docinfo_print_date_time[] = "DocInfo.PrintDateTime";
118cdf0e10cSrcweir const sal_Char sAPI_docinfo_keywords[] = "DocInfo.KeyWords";
119cdf0e10cSrcweir const sal_Char sAPI_docinfo_subject[] = "DocInfo.Subject";
120cdf0e10cSrcweir const sal_Char sAPI_docinfo_title[] = "DocInfo.Title";
121cdf0e10cSrcweir const sal_Char sAPI_docinfo_revision[] = "DocInfo.Revision";
122cdf0e10cSrcweir const sal_Char sAPI_hidden_paragraph[] = "HiddenParagraph";
123cdf0e10cSrcweir const sal_Char sAPI_hidden_text[] = "HiddenText";
124cdf0e10cSrcweir const sal_Char sAPI_conditional_text[] = "ConditionalText";
125cdf0e10cSrcweir const sal_Char sAPI_file_name[] = "FileName";
126cdf0e10cSrcweir const sal_Char sAPI_chapter[] = "Chapter";
127cdf0e10cSrcweir const sal_Char sAPI_template_name[] = "TemplateName";
128cdf0e10cSrcweir const sal_Char sAPI_page_count[] = "PageCount";
129cdf0e10cSrcweir const sal_Char sAPI_paragraph_count[] = "ParagraphCount";
130cdf0e10cSrcweir const sal_Char sAPI_word_count[] = "WordCount";
131cdf0e10cSrcweir const sal_Char sAPI_character_count[] = "CharacterCount";
132cdf0e10cSrcweir const sal_Char sAPI_table_count[] = "TableCount";
133cdf0e10cSrcweir const sal_Char sAPI_graphic_object_count[] = "GraphicObjectCount";
134cdf0e10cSrcweir const sal_Char sAPI_embedded_object_count[] = "EmbeddedObjectCount";
135cdf0e10cSrcweir const sal_Char sAPI_reference_page_set[] = "ReferencePageSet";
136cdf0e10cSrcweir const sal_Char sAPI_reference_page_get[] = "ReferencePageGet";
137cdf0e10cSrcweir const sal_Char sAPI_macro[] = "Macro";
138cdf0e10cSrcweir const sal_Char sAPI_dde[] = "DDE";
139cdf0e10cSrcweir const sal_Char sAPI_get_reference[] = "GetReference";
140cdf0e10cSrcweir const sal_Char sAPI_sheet_name[] = "SheetName";
141cdf0e10cSrcweir const sal_Char sAPI_url[] = "URL";
142cdf0e10cSrcweir const sal_Char sAPI_bibliography[] = "Bibliography";
143cdf0e10cSrcweir const sal_Char sAPI_annotation[] = "Annotation";
144cdf0e10cSrcweir const sal_Char sAPI_script[] = "Script";
145cdf0e10cSrcweir const sal_Char sAPI_measure[] = "Measure";
146cdf0e10cSrcweir const sal_Char sAPI_drop_down[] = "DropDown";
147cdf0e10cSrcweir const sal_Char sAPI_header[] = "Header";
148cdf0e10cSrcweir const sal_Char sAPI_footer[] = "Footer";
149cdf0e10cSrcweir const sal_Char sAPI_datetime[] = "DateTime";
150cdf0e10cSrcweir
151cdf0e10cSrcweir // property names
152cdf0e10cSrcweir const sal_Char sAPI_is_fixed[] = "IsFixed";
153cdf0e10cSrcweir const sal_Char sAPI_content[] = "Content";
154cdf0e10cSrcweir const sal_Char sAPI_value[] = "Value";
155cdf0e10cSrcweir const sal_Char sAPI_author[] = "Author";
1563b32dd21SOliver-Rainer Wittmann const sal_Char sAPI_initials[] = "Initials";
157cdf0e10cSrcweir const sal_Char sAPI_full_name[] = "FullName";
158cdf0e10cSrcweir const sal_Char sAPI_place_holder_type[] = "PlaceHolderType";
159cdf0e10cSrcweir const sal_Char sAPI_place_holder[] = "PlaceHolder";
160cdf0e10cSrcweir const sal_Char sAPI_hint[] = "Hint";
161cdf0e10cSrcweir const sal_Char sAPI_variable_name[] = "VariableName";
162cdf0e10cSrcweir const sal_Char sAPI_name[] = "Name";
163cdf0e10cSrcweir const sal_Char sAPI_sub_type[] = "SubType";
164cdf0e10cSrcweir const sal_Char sAPI_numbering_separator[] = "NumberingSeparator";
165cdf0e10cSrcweir const sal_Char sAPI_chapter_numbering_level[] = "ChapterNumberingLevel";
166cdf0e10cSrcweir const sal_Char sAPI_variable_subtype[] = "VariableSubtype";
167cdf0e10cSrcweir const sal_Char sAPI_formula[] = "Formula";
168cdf0e10cSrcweir const sal_Char sAPI_date_time_value[] = "DateTimeValue";
169cdf0e10cSrcweir const sal_Char sAPI_number_format[] = "NumberFormat";
170cdf0e10cSrcweir const sal_Char sAPI_user_text[] = "UserText";
171cdf0e10cSrcweir const sal_Char sAPI_numbering_type[] = "NumberingType";
172cdf0e10cSrcweir const sal_Char sAPI_offset[] = "Offset";
173cdf0e10cSrcweir const sal_Char sAPI_data_base_name[] = "DataBaseName";
174cdf0e10cSrcweir const sal_Char sAPI_data_base_u_r_l[] = "DataBaseURL";
175cdf0e10cSrcweir const sal_Char sAPI_data_table_name[] = "DataTableName";
176cdf0e10cSrcweir const sal_Char sAPI_condition[] = "Condition";
177cdf0e10cSrcweir const sal_Char sAPI_set_number[] = "SetNumber";
178cdf0e10cSrcweir const sal_Char sAPI_is_data_base_format[] = "DataBaseFormat";
179cdf0e10cSrcweir const sal_Char sAPI_true_content[] = "TrueContent";
180cdf0e10cSrcweir const sal_Char sAPI_false_content[] = "FalseContent";
181cdf0e10cSrcweir const sal_Char sAPI_revision[] = "Revision";
182cdf0e10cSrcweir const sal_Char sAPI_file_format[] = "FileFormat";
183cdf0e10cSrcweir const sal_Char sAPI_chapter_format[] = "ChapterFormat";
184cdf0e10cSrcweir const sal_Char sAPI_level[] = "Level";
185cdf0e10cSrcweir const sal_Char sAPI_is_date[] = "IsDate";
186cdf0e10cSrcweir const sal_Char sAPI_adjust[] = "Adjust";
187cdf0e10cSrcweir const sal_Char sAPI_on[] = "On";
188cdf0e10cSrcweir const sal_Char sAPI_is_automatic_update[] = "IsAutomaticUpdate";
189cdf0e10cSrcweir const sal_Char sAPI_source_name[] = "SourceName";
190cdf0e10cSrcweir const sal_Char sAPI_current_presentation[] = "CurrentPresentation";
191cdf0e10cSrcweir const sal_Char sAPI_reference_field_part[] = "ReferenceFieldPart";
192cdf0e10cSrcweir const sal_Char sAPI_reference_field_source[] = "ReferenceFieldSource";
193cdf0e10cSrcweir const sal_Char sAPI_dde_command_type[] = "DDECommandType";
194cdf0e10cSrcweir const sal_Char sAPI_dde_command_file[] = "DDECommandFile";
195cdf0e10cSrcweir const sal_Char sAPI_dde_command_element[] = "DDECommandElement";
196cdf0e10cSrcweir // sAPI_url: also used as service name
197cdf0e10cSrcweir const sal_Char sAPI_target_frame[] = "TargetFrame";
198cdf0e10cSrcweir const sal_Char sAPI_representation[] = "Representation";
199cdf0e10cSrcweir const sal_Char sAPI_date[] = "Date";
200cdf0e10cSrcweir const sal_Char sAPI_url_content[] = "URLContent";
201cdf0e10cSrcweir const sal_Char sAPI_script_type[] = "ScriptType";
202cdf0e10cSrcweir const sal_Char sAPI_is_hidden[] = "IsHidden";
203cdf0e10cSrcweir const sal_Char sAPI_is_condition_true[] = "IsConditionTrue";
204cdf0e10cSrcweir const sal_Char sAPI_data_command_type[] = "DataCommandType";
205cdf0e10cSrcweir const sal_Char sAPI_is_fixed_language[] = "IsFixedLanguage";
206cdf0e10cSrcweir const sal_Char sAPI_is_visible[] = "IsVisible";
207cdf0e10cSrcweir const sal_Char sAPI_TextRange[] = "TextRange";
208cdf0e10cSrcweir
209cdf0e10cSrcweir const sal_Char sAPI_true[] = "sal_True";
210cdf0e10cSrcweir
211cdf0e10cSrcweir
212cdf0e10cSrcweir TYPEINIT1( XMLTextFieldImportContext, SvXMLImportContext);
213cdf0e10cSrcweir
XMLTextFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,const sal_Char * pService,sal_uInt16 nPrefix,const OUString & rElementName)214cdf0e10cSrcweir XMLTextFieldImportContext::XMLTextFieldImportContext(
215cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
216cdf0e10cSrcweir const sal_Char* pService,
217cdf0e10cSrcweir sal_uInt16 nPrefix, const OUString& rElementName)
218cdf0e10cSrcweir : SvXMLImportContext( rImport, nPrefix, rElementName )
219cdf0e10cSrcweir , sIsFixed(RTL_CONSTASCII_USTRINGPARAM(sAPI_is_fixed))
220cdf0e10cSrcweir , rTextImportHelper(rHlp)
221cdf0e10cSrcweir , sServicePrefix(RTL_CONSTASCII_USTRINGPARAM(sAPI_textfield_prefix))
222cdf0e10cSrcweir , bValid(sal_False)
223cdf0e10cSrcweir {
224cdf0e10cSrcweir DBG_ASSERT(NULL != pService, "Need service name!");
225cdf0e10cSrcweir sServiceName = OUString::createFromAscii(pService);
226cdf0e10cSrcweir }
227cdf0e10cSrcweir
StartElement(const Reference<XAttributeList> & xAttrList)228cdf0e10cSrcweir void XMLTextFieldImportContext::StartElement(
229cdf0e10cSrcweir const Reference<XAttributeList> & xAttrList)
230cdf0e10cSrcweir {
231cdf0e10cSrcweir // process attributes
232cdf0e10cSrcweir sal_Int16 nLength = xAttrList->getLength();
233cdf0e10cSrcweir for(sal_Int16 i=0; i<nLength; i++) {
234cdf0e10cSrcweir
235cdf0e10cSrcweir OUString sLocalName;
236cdf0e10cSrcweir sal_uInt16 nPrefix = GetImport().GetNamespaceMap().
237cdf0e10cSrcweir GetKeyByAttrName( xAttrList->getNameByIndex(i), &sLocalName );
238cdf0e10cSrcweir
239cdf0e10cSrcweir ProcessAttribute(rTextImportHelper.GetTextFieldAttrTokenMap().
240cdf0e10cSrcweir Get(nPrefix, sLocalName),
241cdf0e10cSrcweir xAttrList->getValueByIndex(i) );
242cdf0e10cSrcweir }
243cdf0e10cSrcweir }
244cdf0e10cSrcweir
~XMLTextFieldImportContext()245cdf0e10cSrcweir XMLTextFieldImportContext::~XMLTextFieldImportContext() {
246cdf0e10cSrcweir }
247cdf0e10cSrcweir
GetContent()248cdf0e10cSrcweir OUString XMLTextFieldImportContext::GetContent()
249cdf0e10cSrcweir {
250cdf0e10cSrcweir if (sContent.getLength()==0)
251cdf0e10cSrcweir {
252cdf0e10cSrcweir sContent = sContentBuffer.makeStringAndClear();
253cdf0e10cSrcweir }
254cdf0e10cSrcweir
255cdf0e10cSrcweir return sContent;
256cdf0e10cSrcweir }
257cdf0e10cSrcweir
EndElement()258cdf0e10cSrcweir void XMLTextFieldImportContext::EndElement()
259cdf0e10cSrcweir {
260cdf0e10cSrcweir DBG_ASSERT(GetServiceName().getLength()>0, "no service name for element!");
261cdf0e10cSrcweir if (bValid)
262cdf0e10cSrcweir {
263cdf0e10cSrcweir
264cdf0e10cSrcweir // create field/Service
265cdf0e10cSrcweir Reference<XPropertySet> xPropSet;
266cdf0e10cSrcweir if (CreateField(xPropSet, sServicePrefix + GetServiceName()))
267cdf0e10cSrcweir {
268cdf0e10cSrcweir // set field properties
269cdf0e10cSrcweir PrepareField(xPropSet);
270cdf0e10cSrcweir
271cdf0e10cSrcweir // attach field to document
272cdf0e10cSrcweir Reference<XTextContent> xTextContent(xPropSet, UNO_QUERY);
273cdf0e10cSrcweir
274cdf0e10cSrcweir // workaround for #80606#
275cdf0e10cSrcweir try
276cdf0e10cSrcweir {
277cdf0e10cSrcweir rTextImportHelper.InsertTextContent(xTextContent);
278cdf0e10cSrcweir }
279cdf0e10cSrcweir catch (lang::IllegalArgumentException e)
280cdf0e10cSrcweir {
281cdf0e10cSrcweir // ignore
282cdf0e10cSrcweir }
283cdf0e10cSrcweir return;
284cdf0e10cSrcweir }
285cdf0e10cSrcweir }
286cdf0e10cSrcweir
287cdf0e10cSrcweir // in case of error: write element content
288cdf0e10cSrcweir rTextImportHelper.InsertString(GetContent());
289cdf0e10cSrcweir }
290cdf0e10cSrcweir
Characters(const OUString & rContent)291cdf0e10cSrcweir void XMLTextFieldImportContext::Characters(const OUString& rContent)
292cdf0e10cSrcweir {
293cdf0e10cSrcweir sContentBuffer.append(rContent);
294cdf0e10cSrcweir }
295cdf0e10cSrcweir
CreateField(Reference<XPropertySet> & xField,const OUString & rServiceName)296cdf0e10cSrcweir sal_Bool XMLTextFieldImportContext::CreateField(
297cdf0e10cSrcweir Reference<XPropertySet> & xField,
298cdf0e10cSrcweir const OUString& rServiceName)
299cdf0e10cSrcweir {
300cdf0e10cSrcweir // instantiate new XTextField:
301cdf0e10cSrcweir // ask import for model, model is factory, ask factory to create service
302cdf0e10cSrcweir
303cdf0e10cSrcweir Reference<XMultiServiceFactory> xFactory(GetImport().GetModel(),UNO_QUERY);
304cdf0e10cSrcweir if( xFactory.is() )
305cdf0e10cSrcweir {
306cdf0e10cSrcweir Reference<XInterface> xIfc = xFactory->createInstance(rServiceName);
307cdf0e10cSrcweir if( xIfc.is() )
308cdf0e10cSrcweir {
309cdf0e10cSrcweir Reference<XPropertySet> xTmp( xIfc, UNO_QUERY );
310cdf0e10cSrcweir
311cdf0e10cSrcweir xField = xTmp;
312cdf0e10cSrcweir } else {
313cdf0e10cSrcweir return sal_False; // can't create instance
314cdf0e10cSrcweir }
315cdf0e10cSrcweir } else {
316cdf0e10cSrcweir return sal_False; // can't get MultiServiceFactory
317cdf0e10cSrcweir }
318cdf0e10cSrcweir
319cdf0e10cSrcweir return sal_True;
320cdf0e10cSrcweir }
321cdf0e10cSrcweir
322cdf0e10cSrcweir /// create the appropriate field context from
323cdf0e10cSrcweir XMLTextFieldImportContext*
CreateTextFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrefix,const OUString & rName,sal_uInt16 nToken)324cdf0e10cSrcweir XMLTextFieldImportContext::CreateTextFieldImportContext(
325cdf0e10cSrcweir SvXMLImport& rImport,
326cdf0e10cSrcweir XMLTextImportHelper& rHlp,
327cdf0e10cSrcweir sal_uInt16 nPrefix,
328cdf0e10cSrcweir const OUString& rName,
329cdf0e10cSrcweir sal_uInt16 nToken)
330cdf0e10cSrcweir {
331cdf0e10cSrcweir XMLTextFieldImportContext* pContext = NULL;
332cdf0e10cSrcweir
333cdf0e10cSrcweir switch (nToken)
334cdf0e10cSrcweir {
335cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_FIRSTNAME:
336cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_LASTNAME:
337cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_INITIALS:
338cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_TITLE:
339cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_POSITION:
340cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_EMAIL:
341cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_PHONE_PRIVATE:
342cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_FAX:
343cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_COMPANY:
344cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_PHONE_WORK:
345cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_STREET:
346cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_CITY:
347cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_POSTAL_CODE:
348cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_COUNTRY:
349cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_STATE_OR_PROVINCE:
350cdf0e10cSrcweir pContext =
351cdf0e10cSrcweir new XMLSenderFieldImportContext( rImport, rHlp,
352cdf0e10cSrcweir nPrefix, rName, nToken );
353cdf0e10cSrcweir break;
354cdf0e10cSrcweir
355cdf0e10cSrcweir case XML_TOK_TEXT_AUTHOR_NAME:
356cdf0e10cSrcweir case XML_TOK_TEXT_AUTHOR_INITIALS:
357cdf0e10cSrcweir pContext =
358cdf0e10cSrcweir new XMLAuthorFieldImportContext( rImport, rHlp,
359cdf0e10cSrcweir nPrefix, rName, nToken );
360cdf0e10cSrcweir break;
361cdf0e10cSrcweir
362cdf0e10cSrcweir case XML_TOK_TEXT_PLACEHOLDER:
363cdf0e10cSrcweir pContext =
364cdf0e10cSrcweir new XMLPlaceholderFieldImportContext( rImport, rHlp,
365cdf0e10cSrcweir nPrefix, rName);
366cdf0e10cSrcweir break;
367cdf0e10cSrcweir case XML_TOK_TEXT_SEQUENCE:
368cdf0e10cSrcweir pContext =
369cdf0e10cSrcweir new XMLSequenceFieldImportContext( rImport, rHlp,
370cdf0e10cSrcweir nPrefix, rName );
371cdf0e10cSrcweir break;
372cdf0e10cSrcweir case XML_TOK_TEXT_TEXT_INPUT:
373cdf0e10cSrcweir pContext =
374cdf0e10cSrcweir new XMLTextInputFieldImportContext( rImport, rHlp,
375cdf0e10cSrcweir nPrefix, rName );
376cdf0e10cSrcweir break;
377cdf0e10cSrcweir case XML_TOK_TEXT_EXPRESSION:
378cdf0e10cSrcweir pContext =
379cdf0e10cSrcweir new XMLExpressionFieldImportContext( rImport, rHlp,
380cdf0e10cSrcweir nPrefix, rName );
381cdf0e10cSrcweir break;
382cdf0e10cSrcweir case XML_TOK_TEXT_VARIABLE_SET:
383cdf0e10cSrcweir pContext =
384cdf0e10cSrcweir new XMLVariableSetFieldImportContext( rImport, rHlp,
385cdf0e10cSrcweir nPrefix, rName );
386cdf0e10cSrcweir break;
387cdf0e10cSrcweir case XML_TOK_TEXT_VARIABLE_INPUT:
388cdf0e10cSrcweir pContext =
389cdf0e10cSrcweir new XMLVariableInputFieldImportContext( rImport, rHlp,
390cdf0e10cSrcweir nPrefix, rName );
391cdf0e10cSrcweir break;
392cdf0e10cSrcweir case XML_TOK_TEXT_VARIABLE_GET:
393cdf0e10cSrcweir pContext =
394cdf0e10cSrcweir new XMLVariableGetFieldImportContext( rImport, rHlp,
395cdf0e10cSrcweir nPrefix, rName );
396cdf0e10cSrcweir break;
397cdf0e10cSrcweir case XML_TOK_TEXT_USER_FIELD_GET:
398cdf0e10cSrcweir pContext = new XMLUserFieldImportContext( rImport, rHlp,
399cdf0e10cSrcweir nPrefix, rName );
400cdf0e10cSrcweir break;
401cdf0e10cSrcweir case XML_TOK_TEXT_USER_FIELD_INPUT:
402cdf0e10cSrcweir pContext = new XMLUserFieldInputImportContext( rImport, rHlp,
403cdf0e10cSrcweir nPrefix, rName );
404cdf0e10cSrcweir break;
405cdf0e10cSrcweir case XML_TOK_TEXT_TIME:
406cdf0e10cSrcweir pContext = new XMLTimeFieldImportContext( rImport, rHlp,
407cdf0e10cSrcweir nPrefix, rName );
408cdf0e10cSrcweir break;
409cdf0e10cSrcweir case XML_TOK_TEXT_PAGE_CONTINUATION_STRING:
410cdf0e10cSrcweir case XML_TOK_TEXT_PAGE_CONTINUATION:
411cdf0e10cSrcweir pContext = new XMLPageContinuationImportContext( rImport, rHlp,
412cdf0e10cSrcweir nPrefix, rName );
413cdf0e10cSrcweir break;
414cdf0e10cSrcweir
415cdf0e10cSrcweir case XML_TOK_TEXT_PAGE_NUMBER:
416cdf0e10cSrcweir pContext = new XMLPageNumberImportContext( rImport, rHlp,
417cdf0e10cSrcweir nPrefix, rName );
418cdf0e10cSrcweir break;
419cdf0e10cSrcweir
420cdf0e10cSrcweir case XML_TOK_TEXT_DATE:
421cdf0e10cSrcweir pContext = new XMLDateFieldImportContext( rImport, rHlp,
422cdf0e10cSrcweir nPrefix, rName );
423cdf0e10cSrcweir break;
424cdf0e10cSrcweir
425cdf0e10cSrcweir case XML_TOK_TEXT_DATABASE_NAME:
426cdf0e10cSrcweir pContext = new XMLDatabaseNameImportContext( rImport, rHlp,
427cdf0e10cSrcweir nPrefix, rName );
428cdf0e10cSrcweir break;
429cdf0e10cSrcweir case XML_TOK_TEXT_DATABASE_NEXT:
430cdf0e10cSrcweir pContext = new XMLDatabaseNextImportContext( rImport, rHlp,
431cdf0e10cSrcweir nPrefix, rName );
432cdf0e10cSrcweir break;
433cdf0e10cSrcweir case XML_TOK_TEXT_DATABASE_SELECT:
434cdf0e10cSrcweir pContext = new XMLDatabaseSelectImportContext( rImport, rHlp,
435cdf0e10cSrcweir nPrefix, rName );
436cdf0e10cSrcweir break;
437cdf0e10cSrcweir case XML_TOK_TEXT_DATABASE_ROW_NUMBER:
438cdf0e10cSrcweir pContext = new XMLDatabaseNumberImportContext( rImport, rHlp,
439cdf0e10cSrcweir nPrefix, rName );
440cdf0e10cSrcweir break;
441cdf0e10cSrcweir case XML_TOK_TEXT_DATABASE_DISPLAY:
442cdf0e10cSrcweir pContext = new XMLDatabaseDisplayImportContext( rImport, rHlp,
443cdf0e10cSrcweir nPrefix, rName );
444cdf0e10cSrcweir break;
445cdf0e10cSrcweir case XML_TOK_TEXT_CONDITIONAL_TEXT:
446cdf0e10cSrcweir pContext = new XMLConditionalTextImportContext( rImport, rHlp,
447cdf0e10cSrcweir nPrefix, rName );
448cdf0e10cSrcweir break;
449cdf0e10cSrcweir case XML_TOK_TEXT_HIDDEN_TEXT:
450cdf0e10cSrcweir pContext = new XMLHiddenTextImportContext( rImport, rHlp,
451cdf0e10cSrcweir nPrefix, rName );
452cdf0e10cSrcweir break;
453cdf0e10cSrcweir case XML_TOK_TEXT_HIDDEN_PARAGRAPH:
454cdf0e10cSrcweir pContext = new XMLHiddenParagraphImportContext( rImport, rHlp,
455cdf0e10cSrcweir nPrefix, rName );
456cdf0e10cSrcweir break;
457cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_DESCRIPTION:
458cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_TITLE:
459cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_SUBJECT:
460cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_KEYWORDS:
461cdf0e10cSrcweir pContext = new XMLSimpleDocInfoImportContext( rImport, rHlp,
462cdf0e10cSrcweir nPrefix, rName,
463cdf0e10cSrcweir nToken, sal_True,
464cdf0e10cSrcweir sal_False );
465cdf0e10cSrcweir break;
466cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_CREATION_AUTHOR:
467cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_PRINT_AUTHOR:
468cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_SAVE_AUTHOR:
469cdf0e10cSrcweir pContext = new XMLSimpleDocInfoImportContext( rImport, rHlp,
470cdf0e10cSrcweir nPrefix, rName,
471cdf0e10cSrcweir nToken, sal_False,
472cdf0e10cSrcweir sal_True );
473cdf0e10cSrcweir break;
474cdf0e10cSrcweir
475cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_CREATION_DATE:
476cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_CREATION_TIME:
477cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_PRINT_DATE:
478cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_PRINT_TIME:
479cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_SAVE_DATE:
480cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_SAVE_TIME:
481cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_EDIT_DURATION:
482cdf0e10cSrcweir pContext = new XMLDateTimeDocInfoImportContext( rImport, rHlp,
483cdf0e10cSrcweir nPrefix, rName,
484cdf0e10cSrcweir nToken );
485cdf0e10cSrcweir break;
486cdf0e10cSrcweir
487cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_REVISION:
488cdf0e10cSrcweir pContext = new XMLRevisionDocInfoImportContext( rImport, rHlp,
489cdf0e10cSrcweir nPrefix, rName,
490cdf0e10cSrcweir nToken );
491cdf0e10cSrcweir break;
492cdf0e10cSrcweir
493cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_USER_DEFINED:
494cdf0e10cSrcweir pContext = new XMLUserDocInfoImportContext( rImport, rHlp,
495cdf0e10cSrcweir nPrefix, rName,
496cdf0e10cSrcweir nToken );
497cdf0e10cSrcweir break;
498cdf0e10cSrcweir
499cdf0e10cSrcweir case XML_TOK_TEXT_FILENAME:
500cdf0e10cSrcweir pContext = new XMLFileNameImportContext( rImport, rHlp,
501cdf0e10cSrcweir nPrefix, rName );
502cdf0e10cSrcweir break;
503cdf0e10cSrcweir
504cdf0e10cSrcweir case XML_TOK_TEXT_CHAPTER:
505cdf0e10cSrcweir pContext = new XMLChapterImportContext( rImport, rHlp,
506cdf0e10cSrcweir nPrefix, rName );
507cdf0e10cSrcweir break;
508cdf0e10cSrcweir
509cdf0e10cSrcweir case XML_TOK_TEXT_TEMPLATENAME:
510cdf0e10cSrcweir pContext = new XMLTemplateNameImportContext( rImport, rHlp,
511cdf0e10cSrcweir nPrefix, rName );
512cdf0e10cSrcweir break;
513cdf0e10cSrcweir
514cdf0e10cSrcweir case XML_TOK_TEXT_WORD_COUNT:
515cdf0e10cSrcweir case XML_TOK_TEXT_PARAGRAPH_COUNT:
516cdf0e10cSrcweir case XML_TOK_TEXT_TABLE_COUNT:
517cdf0e10cSrcweir case XML_TOK_TEXT_CHARACTER_COUNT:
518cdf0e10cSrcweir case XML_TOK_TEXT_IMAGE_COUNT:
519cdf0e10cSrcweir case XML_TOK_TEXT_OBJECT_COUNT:
520cdf0e10cSrcweir case XML_TOK_TEXT_PAGE_COUNT:
521cdf0e10cSrcweir pContext = new XMLCountFieldImportContext( rImport, rHlp,
522cdf0e10cSrcweir nPrefix, rName, nToken);
523cdf0e10cSrcweir break;
524cdf0e10cSrcweir
525cdf0e10cSrcweir case XML_TOK_TEXT_GET_PAGE_VAR:
526cdf0e10cSrcweir pContext = new XMLPageVarGetFieldImportContext( rImport, rHlp,
527cdf0e10cSrcweir nPrefix, rName );
528cdf0e10cSrcweir break;
529cdf0e10cSrcweir
530cdf0e10cSrcweir case XML_TOK_TEXT_SET_PAGE_VAR:
531cdf0e10cSrcweir pContext = new XMLPageVarSetFieldImportContext( rImport, rHlp,
532cdf0e10cSrcweir nPrefix, rName );
533cdf0e10cSrcweir break;
534cdf0e10cSrcweir
535cdf0e10cSrcweir case XML_TOK_TEXT_MACRO:
536cdf0e10cSrcweir pContext = new XMLMacroFieldImportContext( rImport, rHlp,
537cdf0e10cSrcweir nPrefix, rName );
538cdf0e10cSrcweir break;
539cdf0e10cSrcweir
540cdf0e10cSrcweir case XML_TOK_TEXT_DDE:
541cdf0e10cSrcweir pContext = new XMLDdeFieldImportContext( rImport, rHlp,
542cdf0e10cSrcweir nPrefix, rName );
543cdf0e10cSrcweir break;
544cdf0e10cSrcweir
545cdf0e10cSrcweir case XML_TOK_TEXT_REFERENCE_REF:
546cdf0e10cSrcweir case XML_TOK_TEXT_BOOKMARK_REF:
547cdf0e10cSrcweir case XML_TOK_TEXT_NOTE_REF:
548cdf0e10cSrcweir case XML_TOK_TEXT_SEQUENCE_REF:
549cdf0e10cSrcweir pContext = new XMLReferenceFieldImportContext( rImport, rHlp,
550cdf0e10cSrcweir nToken,
551cdf0e10cSrcweir nPrefix, rName );
552cdf0e10cSrcweir break;
553cdf0e10cSrcweir
554cdf0e10cSrcweir case XML_TOK_TEXT_SHEET_NAME:
555cdf0e10cSrcweir pContext = new XMLSheetNameImportContext( rImport, rHlp,
556cdf0e10cSrcweir nPrefix, rName );
557cdf0e10cSrcweir break;
558cdf0e10cSrcweir
559cdf0e10cSrcweir case XML_TOK_TEXT_BIBLIOGRAPHY_MARK:
560cdf0e10cSrcweir pContext = new XMLBibliographyFieldImportContext( rImport, rHlp,
561cdf0e10cSrcweir nPrefix, rName );
562cdf0e10cSrcweir break;
563cdf0e10cSrcweir
564cdf0e10cSrcweir case XML_TOK_TEXT_ANNOTATION:
5653b32dd21SOliver-Rainer Wittmann case XML_TOK_TEXT_ANNOTATION_END:
5663b32dd21SOliver-Rainer Wittmann pContext =
5673b32dd21SOliver-Rainer Wittmann new XMLAnnotationImportContext( rImport, rHlp, nToken, nPrefix, rName);
568cdf0e10cSrcweir break;
569cdf0e10cSrcweir
570cdf0e10cSrcweir case XML_TOK_TEXT_SCRIPT:
571cdf0e10cSrcweir pContext = new XMLScriptImportContext( rImport, rHlp,
572cdf0e10cSrcweir nPrefix, rName);
573cdf0e10cSrcweir break;
574cdf0e10cSrcweir
575cdf0e10cSrcweir case XML_TOK_TEXT_MEASURE:
576cdf0e10cSrcweir pContext = new XMLMeasureFieldImportContext( rImport, rHlp,
577cdf0e10cSrcweir nPrefix, rName );
578cdf0e10cSrcweir break;
579cdf0e10cSrcweir
580cdf0e10cSrcweir case XML_TOK_TEXT_TABLE_FORMULA:
581cdf0e10cSrcweir pContext = new XMLTableFormulaImportContext( rImport, rHlp,
582cdf0e10cSrcweir nPrefix, rName );
583cdf0e10cSrcweir break;
584cdf0e10cSrcweir case XML_TOK_TEXT_DROPDOWN:
585cdf0e10cSrcweir pContext = new XMLDropDownFieldImportContext( rImport, rHlp,
586cdf0e10cSrcweir nPrefix, rName );
587cdf0e10cSrcweir break;
588cdf0e10cSrcweir case XML_TOK_DRAW_HEADER:
589cdf0e10cSrcweir pContext = new XMLHeaderFieldImportContext( rImport, rHlp,
590cdf0e10cSrcweir nPrefix, rName );
591cdf0e10cSrcweir break;
592cdf0e10cSrcweir case XML_TOK_DRAW_FOOTER:
593cdf0e10cSrcweir pContext = new XMLFooterFieldImportContext( rImport, rHlp,
594cdf0e10cSrcweir nPrefix, rName );
595cdf0e10cSrcweir break;
596cdf0e10cSrcweir case XML_TOK_DRAW_DATE_TIME:
597cdf0e10cSrcweir pContext = new XMLDateTimeFieldImportContext( rImport, rHlp,
598cdf0e10cSrcweir nPrefix, rName );
599cdf0e10cSrcweir break;
600cdf0e10cSrcweir
601cdf0e10cSrcweir default:
602cdf0e10cSrcweir // ignore! May not even be a textfield.
603cdf0e10cSrcweir // (Reminder: This method is called inside default:-branch)
604cdf0e10cSrcweir pContext = NULL;
605cdf0e10cSrcweir break;
606cdf0e10cSrcweir }
607cdf0e10cSrcweir
608cdf0e10cSrcweir return pContext;
609cdf0e10cSrcweir }
610cdf0e10cSrcweir
611cdf0e10cSrcweir
ForceUpdate(const Reference<XPropertySet> & rPropertySet)612cdf0e10cSrcweir void XMLTextFieldImportContext::ForceUpdate(
613cdf0e10cSrcweir const Reference<XPropertySet> & rPropertySet)
614cdf0e10cSrcweir {
615cdf0e10cSrcweir // force update
616cdf0e10cSrcweir Reference<XUpdatable> xUpdate(rPropertySet, UNO_QUERY);
617cdf0e10cSrcweir if (xUpdate.is())
618cdf0e10cSrcweir {
619cdf0e10cSrcweir xUpdate->update();
620cdf0e10cSrcweir }
621cdf0e10cSrcweir else
622cdf0e10cSrcweir {
623cdf0e10cSrcweir DBG_ERROR("Expected XUpdatable support!");
624cdf0e10cSrcweir }
625cdf0e10cSrcweir }
626cdf0e10cSrcweir
627cdf0e10cSrcweir
628cdf0e10cSrcweir
629cdf0e10cSrcweir //
630cdf0e10cSrcweir // XMLSenderFieldImportContext
631cdf0e10cSrcweir //
632cdf0e10cSrcweir
633cdf0e10cSrcweir TYPEINIT1( XMLSenderFieldImportContext, XMLTextFieldImportContext);
634cdf0e10cSrcweir
XMLSenderFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName,sal_uInt16 nToken)635cdf0e10cSrcweir XMLSenderFieldImportContext::XMLSenderFieldImportContext(
636cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
637cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName,
638cdf0e10cSrcweir sal_uInt16 nToken)
639cdf0e10cSrcweir : XMLTextFieldImportContext(rImport, rHlp, sAPI_extended_user,nPrfx, sLocalName)
640cdf0e10cSrcweir , sPropertyFixed(RTL_CONSTASCII_USTRINGPARAM(sAPI_is_fixed))
641cdf0e10cSrcweir , sPropertyFieldSubType(RTL_CONSTASCII_USTRINGPARAM(sAPI_user_data_type))
642cdf0e10cSrcweir , sPropertyContent(RTL_CONSTASCII_USTRINGPARAM(sAPI_content))
643cdf0e10cSrcweir , bFixed(sal_True)
644cdf0e10cSrcweir , nElementToken(nToken)
645cdf0e10cSrcweir {
646cdf0e10cSrcweir }
647cdf0e10cSrcweir
StartElement(const Reference<XAttributeList> & xAttrList)648cdf0e10cSrcweir void XMLSenderFieldImportContext::StartElement(
649cdf0e10cSrcweir const Reference<XAttributeList> & xAttrList)
650cdf0e10cSrcweir {
651cdf0e10cSrcweir bValid = sal_True;
652cdf0e10cSrcweir switch (nElementToken) {
653cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_FIRSTNAME:
654cdf0e10cSrcweir nSubType = UserDataPart::FIRSTNAME;
655cdf0e10cSrcweir break;
656cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_LASTNAME:
657cdf0e10cSrcweir nSubType = UserDataPart::NAME;
658cdf0e10cSrcweir break;
659cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_INITIALS:
660cdf0e10cSrcweir nSubType = UserDataPart::SHORTCUT;
661cdf0e10cSrcweir break;
662cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_TITLE:
663cdf0e10cSrcweir nSubType = UserDataPart::TITLE;
664cdf0e10cSrcweir break;
665cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_POSITION:
666cdf0e10cSrcweir nSubType = UserDataPart::POSITION;
667cdf0e10cSrcweir break;
668cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_EMAIL:
669cdf0e10cSrcweir nSubType = UserDataPart::EMAIL;
670cdf0e10cSrcweir break;
671cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_PHONE_PRIVATE:
672cdf0e10cSrcweir nSubType = UserDataPart::PHONE_PRIVATE;
673cdf0e10cSrcweir break;
674cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_FAX:
675cdf0e10cSrcweir nSubType = UserDataPart::FAX;
676cdf0e10cSrcweir break;
677cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_COMPANY:
678cdf0e10cSrcweir nSubType = UserDataPart::COMPANY;
679cdf0e10cSrcweir break;
680cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_PHONE_WORK:
681cdf0e10cSrcweir nSubType = UserDataPart::PHONE_COMPANY;
682cdf0e10cSrcweir break;
683cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_STREET:
684cdf0e10cSrcweir nSubType = UserDataPart::STREET;
685cdf0e10cSrcweir break;
686cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_CITY:
687cdf0e10cSrcweir nSubType = UserDataPart::CITY;
688cdf0e10cSrcweir break;
689cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_POSTAL_CODE:
690cdf0e10cSrcweir nSubType = UserDataPart::ZIP;
691cdf0e10cSrcweir break;
692cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_COUNTRY:
693cdf0e10cSrcweir nSubType = UserDataPart::COUNTRY;
694cdf0e10cSrcweir break;
695cdf0e10cSrcweir case XML_TOK_TEXT_SENDER_STATE_OR_PROVINCE:
696cdf0e10cSrcweir nSubType = UserDataPart::STATE;
697cdf0e10cSrcweir break;
698cdf0e10cSrcweir default:
699cdf0e10cSrcweir bValid = sal_False;
700cdf0e10cSrcweir break;
701cdf0e10cSrcweir }
702cdf0e10cSrcweir
703cdf0e10cSrcweir // process Attributes
704cdf0e10cSrcweir XMLTextFieldImportContext::StartElement(xAttrList);
705cdf0e10cSrcweir }
706cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)707cdf0e10cSrcweir void XMLSenderFieldImportContext::ProcessAttribute(
708cdf0e10cSrcweir sal_uInt16 nAttrToken,
709cdf0e10cSrcweir const OUString& sAttrValue)
710cdf0e10cSrcweir {
711cdf0e10cSrcweir if (XML_TOK_TEXTFIELD_FIXED == nAttrToken) {
712cdf0e10cSrcweir
713cdf0e10cSrcweir // set bVal
714cdf0e10cSrcweir sal_Bool bVal;
715cdf0e10cSrcweir sal_Bool bRet = GetImport().GetMM100UnitConverter().
716cdf0e10cSrcweir convertBool(bVal, sAttrValue);
717cdf0e10cSrcweir
718cdf0e10cSrcweir // set bFixed if successfull
719cdf0e10cSrcweir if (bRet) {
720cdf0e10cSrcweir bFixed = bVal;
721cdf0e10cSrcweir }
722cdf0e10cSrcweir }
723cdf0e10cSrcweir }
724cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & rPropSet)725cdf0e10cSrcweir void XMLSenderFieldImportContext::PrepareField(
726cdf0e10cSrcweir const Reference<XPropertySet> & rPropSet)
727cdf0e10cSrcweir {
728cdf0e10cSrcweir // set members
729cdf0e10cSrcweir Any aAny;
730cdf0e10cSrcweir aAny <<= nSubType;
731cdf0e10cSrcweir rPropSet->setPropertyValue(sPropertyFieldSubType, aAny);
732cdf0e10cSrcweir
733cdf0e10cSrcweir // set fixed
734cdf0e10cSrcweir aAny.setValue( &bFixed, ::getBooleanCppuType() );
735cdf0e10cSrcweir rPropSet->setPropertyValue(sPropertyFixed, aAny);
736cdf0e10cSrcweir
737cdf0e10cSrcweir // set content if fixed
738cdf0e10cSrcweir if (bFixed)
739cdf0e10cSrcweir {
740cdf0e10cSrcweir // in organizer or styles-only mode: force update
741cdf0e10cSrcweir if (GetImport().GetTextImport()->IsOrganizerMode() ||
742cdf0e10cSrcweir GetImport().GetTextImport()->IsStylesOnlyMode() )
743cdf0e10cSrcweir {
744cdf0e10cSrcweir ForceUpdate(rPropSet);
745cdf0e10cSrcweir }
746cdf0e10cSrcweir else
747cdf0e10cSrcweir {
748cdf0e10cSrcweir aAny <<= GetContent();
749cdf0e10cSrcweir rPropSet->setPropertyValue(sPropertyContent, aAny);
750cdf0e10cSrcweir }
751cdf0e10cSrcweir }
752cdf0e10cSrcweir }
753cdf0e10cSrcweir
754cdf0e10cSrcweir
755cdf0e10cSrcweir
756cdf0e10cSrcweir //
757cdf0e10cSrcweir // XMLAuthorFieldImportContext
758cdf0e10cSrcweir //
759cdf0e10cSrcweir
760cdf0e10cSrcweir TYPEINIT1( XMLAuthorFieldImportContext, XMLSenderFieldImportContext);
761cdf0e10cSrcweir
XMLAuthorFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName,sal_uInt16 nToken)762cdf0e10cSrcweir XMLAuthorFieldImportContext::XMLAuthorFieldImportContext(
763cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
764cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName,
765cdf0e10cSrcweir sal_uInt16 nToken)
766cdf0e10cSrcweir : XMLSenderFieldImportContext(rImport, rHlp, nPrfx, sLocalName, nToken)
767cdf0e10cSrcweir , bAuthorFullName(sal_True)
768cdf0e10cSrcweir , sServiceAuthor(RTL_CONSTASCII_USTRINGPARAM(sAPI_author))
769cdf0e10cSrcweir , sPropertyAuthorFullName(RTL_CONSTASCII_USTRINGPARAM(sAPI_full_name))
770cdf0e10cSrcweir , sPropertyFixed(RTL_CONSTASCII_USTRINGPARAM(sAPI_is_fixed))
771cdf0e10cSrcweir , sPropertyContent(RTL_CONSTASCII_USTRINGPARAM(sAPI_content))
772cdf0e10cSrcweir {
773cdf0e10cSrcweir // overwrite service name from XMLSenderFieldImportContext
774cdf0e10cSrcweir SetServiceName(sServiceAuthor);
775cdf0e10cSrcweir }
776cdf0e10cSrcweir
StartElement(const Reference<XAttributeList> & xAttrList)777cdf0e10cSrcweir void XMLAuthorFieldImportContext::StartElement(
778cdf0e10cSrcweir const Reference<XAttributeList> & xAttrList) {
779cdf0e10cSrcweir
780cdf0e10cSrcweir bAuthorFullName = (XML_TOK_TEXT_AUTHOR_INITIALS != nElementToken);
781cdf0e10cSrcweir bValid = sal_True;
782cdf0e10cSrcweir
783cdf0e10cSrcweir // process Attributes
784cdf0e10cSrcweir XMLTextFieldImportContext::StartElement(xAttrList);
785cdf0e10cSrcweir }
786cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & rPropSet)787cdf0e10cSrcweir void XMLAuthorFieldImportContext::PrepareField(
788cdf0e10cSrcweir const Reference<XPropertySet> & rPropSet)
789cdf0e10cSrcweir {
790cdf0e10cSrcweir // set members
791cdf0e10cSrcweir Any aAny;
792cdf0e10cSrcweir aAny.setValue( &bAuthorFullName, ::getBooleanCppuType() );
793cdf0e10cSrcweir rPropSet->setPropertyValue(sPropertyAuthorFullName, aAny);
794cdf0e10cSrcweir
795cdf0e10cSrcweir aAny.setValue( &bFixed, ::getBooleanCppuType() );
796cdf0e10cSrcweir rPropSet->setPropertyValue(sPropertyFixed, aAny);
797cdf0e10cSrcweir
798cdf0e10cSrcweir // set content if fixed
799cdf0e10cSrcweir if (bFixed)
800cdf0e10cSrcweir {
801cdf0e10cSrcweir // organizer or styles-only mode: force update
802cdf0e10cSrcweir if (GetImport().GetTextImport()->IsOrganizerMode() ||
803cdf0e10cSrcweir GetImport().GetTextImport()->IsStylesOnlyMode() )
804cdf0e10cSrcweir {
805cdf0e10cSrcweir ForceUpdate(rPropSet);
806cdf0e10cSrcweir }
807cdf0e10cSrcweir else
808cdf0e10cSrcweir {
809cdf0e10cSrcweir aAny <<= GetContent();
810cdf0e10cSrcweir rPropSet->setPropertyValue(sPropertyContent, aAny);
811cdf0e10cSrcweir }
812cdf0e10cSrcweir }
813cdf0e10cSrcweir }
814cdf0e10cSrcweir
815cdf0e10cSrcweir
816cdf0e10cSrcweir //
817cdf0e10cSrcweir // page continuation string
818cdf0e10cSrcweir //
819cdf0e10cSrcweir
820cdf0e10cSrcweir TYPEINIT1( XMLPageContinuationImportContext, XMLTextFieldImportContext );
821cdf0e10cSrcweir
822cdf0e10cSrcweir static SvXMLEnumMapEntry __READONLY_DATA lcl_aSelectPageAttrMap[] =
823cdf0e10cSrcweir {
824cdf0e10cSrcweir { XML_PREVIOUS, PageNumberType_PREV },
825cdf0e10cSrcweir { XML_CURRENT, PageNumberType_CURRENT },
826cdf0e10cSrcweir { XML_NEXT, PageNumberType_NEXT },
827cdf0e10cSrcweir { XML_TOKEN_INVALID, 0 },
828cdf0e10cSrcweir };
829cdf0e10cSrcweir
XMLPageContinuationImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)830cdf0e10cSrcweir XMLPageContinuationImportContext::XMLPageContinuationImportContext(
831cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp, sal_uInt16 nPrfx,
832cdf0e10cSrcweir const OUString& sLocalName)
833cdf0e10cSrcweir : XMLTextFieldImportContext(rImport, rHlp, sAPI_page_number, nPrfx, sLocalName)
834cdf0e10cSrcweir , sPropertySubType(RTL_CONSTASCII_USTRINGPARAM(sAPI_sub_type))
835cdf0e10cSrcweir , sPropertyUserText(RTL_CONSTASCII_USTRINGPARAM(sAPI_user_text))
836cdf0e10cSrcweir , sPropertyNumberingType(RTL_CONSTASCII_USTRINGPARAM(sAPI_numbering_type))
837cdf0e10cSrcweir , eSelectPage(PageNumberType_CURRENT)
838cdf0e10cSrcweir , sStringOK(sal_False)
839cdf0e10cSrcweir {
840cdf0e10cSrcweir bValid = sal_True;
841cdf0e10cSrcweir }
842cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)843cdf0e10cSrcweir void XMLPageContinuationImportContext::ProcessAttribute(
844cdf0e10cSrcweir sal_uInt16 nAttrToken, const OUString& sAttrValue )
845cdf0e10cSrcweir {
846cdf0e10cSrcweir switch(nAttrToken)
847cdf0e10cSrcweir {
848cdf0e10cSrcweir case XML_TOK_TEXTFIELD_SELECT_PAGE:
849cdf0e10cSrcweir {
850cdf0e10cSrcweir sal_uInt16 nTmp;
851cdf0e10cSrcweir if (SvXMLUnitConverter::convertEnum(nTmp, sAttrValue,
852cdf0e10cSrcweir lcl_aSelectPageAttrMap)
853cdf0e10cSrcweir && (PageNumberType_CURRENT != nTmp) )
854cdf0e10cSrcweir {
855cdf0e10cSrcweir eSelectPage = (PageNumberType)nTmp;
856cdf0e10cSrcweir }
857cdf0e10cSrcweir break;
858cdf0e10cSrcweir }
859cdf0e10cSrcweir case XML_TOK_TEXTFIELD_STRING_VALUE:
860cdf0e10cSrcweir sString = sAttrValue;
861cdf0e10cSrcweir sStringOK = sal_True;
862cdf0e10cSrcweir break;
863cdf0e10cSrcweir }
864cdf0e10cSrcweir }
865cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)866cdf0e10cSrcweir void XMLPageContinuationImportContext::PrepareField(
867cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
868cdf0e10cSrcweir {
869cdf0e10cSrcweir Any aAny;
870cdf0e10cSrcweir
871cdf0e10cSrcweir aAny <<= eSelectPage;
872cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertySubType, aAny);
873cdf0e10cSrcweir
874cdf0e10cSrcweir aAny <<= (sStringOK ? sString : GetContent());
875cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyUserText, aAny);
876cdf0e10cSrcweir
877cdf0e10cSrcweir aAny <<= style::NumberingType::CHAR_SPECIAL;
878cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyNumberingType, aAny);
879cdf0e10cSrcweir }
880cdf0e10cSrcweir
881cdf0e10cSrcweir
882cdf0e10cSrcweir
883cdf0e10cSrcweir //
884cdf0e10cSrcweir // page number field
885cdf0e10cSrcweir //
886cdf0e10cSrcweir
887cdf0e10cSrcweir TYPEINIT1( XMLPageNumberImportContext, XMLTextFieldImportContext );
888cdf0e10cSrcweir
XMLPageNumberImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)889cdf0e10cSrcweir XMLPageNumberImportContext::XMLPageNumberImportContext(
890cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp, sal_uInt16 nPrfx,
891cdf0e10cSrcweir const OUString& sLocalName)
892cdf0e10cSrcweir : XMLTextFieldImportContext(rImport, rHlp, sAPI_page_number, nPrfx, sLocalName)
893cdf0e10cSrcweir , sPropertySubType(RTL_CONSTASCII_USTRINGPARAM(sAPI_sub_type))
894cdf0e10cSrcweir , sPropertyNumberingType(RTL_CONSTASCII_USTRINGPARAM(sAPI_numbering_type))
895cdf0e10cSrcweir , sPropertyOffset(RTL_CONSTASCII_USTRINGPARAM(sAPI_offset))
896cdf0e10cSrcweir , sNumberSync(GetXMLToken(XML_FALSE))
897cdf0e10cSrcweir , nPageAdjust(0)
898cdf0e10cSrcweir , eSelectPage(PageNumberType_CURRENT)
899cdf0e10cSrcweir , sNumberFormatOK(sal_False)
900cdf0e10cSrcweir {
901cdf0e10cSrcweir bValid = sal_True;
902cdf0e10cSrcweir }
903cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)904cdf0e10cSrcweir void XMLPageNumberImportContext::ProcessAttribute(
905cdf0e10cSrcweir sal_uInt16 nAttrToken,
906cdf0e10cSrcweir const OUString& sAttrValue )
907cdf0e10cSrcweir {
908cdf0e10cSrcweir switch (nAttrToken)
909cdf0e10cSrcweir {
910cdf0e10cSrcweir case XML_TOK_TEXTFIELD_NUM_FORMAT:
911cdf0e10cSrcweir sNumberFormat = sAttrValue;
912cdf0e10cSrcweir sNumberFormatOK = sal_True;
913cdf0e10cSrcweir break;
914cdf0e10cSrcweir case XML_TOK_TEXTFIELD_NUM_LETTER_SYNC:
915cdf0e10cSrcweir sNumberSync = sAttrValue;
916cdf0e10cSrcweir break;
917cdf0e10cSrcweir case XML_TOK_TEXTFIELD_SELECT_PAGE:
918cdf0e10cSrcweir {
919cdf0e10cSrcweir sal_uInt16 nTmp;
920cdf0e10cSrcweir if (SvXMLUnitConverter::convertEnum(nTmp, sAttrValue,
921cdf0e10cSrcweir lcl_aSelectPageAttrMap))
922cdf0e10cSrcweir {
923cdf0e10cSrcweir eSelectPage = (PageNumberType)nTmp;
924cdf0e10cSrcweir }
925cdf0e10cSrcweir break;
926cdf0e10cSrcweir }
927cdf0e10cSrcweir case XML_TOK_TEXTFIELD_PAGE_ADJUST:
928cdf0e10cSrcweir {
929cdf0e10cSrcweir sal_Int32 nTmp;
930cdf0e10cSrcweir if (SvXMLUnitConverter::convertNumber(nTmp, sAttrValue))
931cdf0e10cSrcweir {
932cdf0e10cSrcweir nPageAdjust = (sal_Int16)nTmp;
933cdf0e10cSrcweir }
934cdf0e10cSrcweir break;
935cdf0e10cSrcweir }
936cdf0e10cSrcweir }
937cdf0e10cSrcweir }
938cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)939cdf0e10cSrcweir void XMLPageNumberImportContext::PrepareField(
940cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
941cdf0e10cSrcweir {
942cdf0e10cSrcweir Any aAny;
943cdf0e10cSrcweir
944cdf0e10cSrcweir // all properties are optional
945cdf0e10cSrcweir Reference<XPropertySetInfo> xPropertySetInfo(
946cdf0e10cSrcweir xPropertySet->getPropertySetInfo());
947cdf0e10cSrcweir
948cdf0e10cSrcweir if (xPropertySetInfo->hasPropertyByName(sPropertyNumberingType))
949cdf0e10cSrcweir {
950cdf0e10cSrcweir sal_Int16 nNumType;
951cdf0e10cSrcweir if( sNumberFormatOK )
952cdf0e10cSrcweir {
953cdf0e10cSrcweir nNumType= style::NumberingType::ARABIC;
954cdf0e10cSrcweir GetImport().GetMM100UnitConverter().convertNumFormat( nNumType,
955cdf0e10cSrcweir sNumberFormat,
956cdf0e10cSrcweir sNumberSync );
957cdf0e10cSrcweir }
958cdf0e10cSrcweir else
959cdf0e10cSrcweir nNumType = style::NumberingType::PAGE_DESCRIPTOR;
960cdf0e10cSrcweir
961cdf0e10cSrcweir aAny <<= nNumType;
962cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyNumberingType, aAny);
963cdf0e10cSrcweir }
964cdf0e10cSrcweir
965cdf0e10cSrcweir if (xPropertySetInfo->hasPropertyByName(sPropertyOffset))
966cdf0e10cSrcweir {
967cdf0e10cSrcweir // adjust offset
968cdf0e10cSrcweir switch (eSelectPage)
969cdf0e10cSrcweir {
970cdf0e10cSrcweir case PageNumberType_PREV:
971cdf0e10cSrcweir nPageAdjust--;
972cdf0e10cSrcweir break;
973cdf0e10cSrcweir case PageNumberType_CURRENT:
974cdf0e10cSrcweir break;
975cdf0e10cSrcweir case PageNumberType_NEXT:
976cdf0e10cSrcweir nPageAdjust++;
977cdf0e10cSrcweir break;
978cdf0e10cSrcweir default:
979cdf0e10cSrcweir DBG_WARNING("unknown page number type");
980cdf0e10cSrcweir }
981cdf0e10cSrcweir aAny <<= nPageAdjust;
982cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyOffset, aAny);
983cdf0e10cSrcweir }
984cdf0e10cSrcweir
985cdf0e10cSrcweir if (xPropertySetInfo->hasPropertyByName(sPropertySubType))
986cdf0e10cSrcweir {
987cdf0e10cSrcweir aAny <<= eSelectPage;
988cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertySubType, aAny);
989cdf0e10cSrcweir }
990cdf0e10cSrcweir }
991cdf0e10cSrcweir
992cdf0e10cSrcweir
993cdf0e10cSrcweir
994cdf0e10cSrcweir //
995cdf0e10cSrcweir // Placeholder
996cdf0e10cSrcweir //
997cdf0e10cSrcweir
998cdf0e10cSrcweir TYPEINIT1( XMLPlaceholderFieldImportContext, XMLTextFieldImportContext);
999cdf0e10cSrcweir
XMLPlaceholderFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)1000cdf0e10cSrcweir XMLPlaceholderFieldImportContext::XMLPlaceholderFieldImportContext(
1001cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
1002cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName)
1003cdf0e10cSrcweir : XMLTextFieldImportContext(rImport, rHlp, sAPI_jump_edit,nPrfx, sLocalName)
1004cdf0e10cSrcweir , sPropertyPlaceholderType(RTL_CONSTASCII_USTRINGPARAM(sAPI_place_holder_type))
1005cdf0e10cSrcweir , sPropertyPlaceholder(RTL_CONSTASCII_USTRINGPARAM(sAPI_place_holder))
1006cdf0e10cSrcweir , sPropertyHint(RTL_CONSTASCII_USTRINGPARAM(sAPI_hint))
1007cdf0e10cSrcweir {
1008cdf0e10cSrcweir }
1009cdf0e10cSrcweir
1010cdf0e10cSrcweir /// process attribute values
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)1011cdf0e10cSrcweir void XMLPlaceholderFieldImportContext::ProcessAttribute(
1012cdf0e10cSrcweir sal_uInt16 nAttrToken, const OUString& sAttrValue )
1013cdf0e10cSrcweir {
1014cdf0e10cSrcweir switch (nAttrToken) {
1015cdf0e10cSrcweir case XML_TOK_TEXTFIELD_DESCRIPTION:
1016cdf0e10cSrcweir sDescription = sAttrValue;
1017cdf0e10cSrcweir break;
1018cdf0e10cSrcweir
1019cdf0e10cSrcweir case XML_TOK_TEXTFIELD_PLACEHOLDER_TYPE:
1020cdf0e10cSrcweir bValid = sal_True;
1021cdf0e10cSrcweir if (IsXMLToken(sAttrValue, XML_TABLE))
1022cdf0e10cSrcweir {
1023cdf0e10cSrcweir nPlaceholderType = PlaceholderType::TABLE;
1024cdf0e10cSrcweir }
1025cdf0e10cSrcweir else if (IsXMLToken(sAttrValue, XML_TEXT))
1026cdf0e10cSrcweir {
1027cdf0e10cSrcweir nPlaceholderType = PlaceholderType::TEXT;
1028cdf0e10cSrcweir }
1029cdf0e10cSrcweir else if (IsXMLToken(sAttrValue, XML_TEXT_BOX))
1030cdf0e10cSrcweir {
1031cdf0e10cSrcweir nPlaceholderType = PlaceholderType::TEXTFRAME;
1032cdf0e10cSrcweir }
1033cdf0e10cSrcweir else if (IsXMLToken(sAttrValue, XML_IMAGE))
1034cdf0e10cSrcweir {
1035cdf0e10cSrcweir nPlaceholderType = PlaceholderType::GRAPHIC;
1036cdf0e10cSrcweir }
1037cdf0e10cSrcweir else if (IsXMLToken(sAttrValue, XML_OBJECT))
1038cdf0e10cSrcweir {
1039cdf0e10cSrcweir nPlaceholderType = PlaceholderType::OBJECT;
1040cdf0e10cSrcweir }
1041cdf0e10cSrcweir else
1042cdf0e10cSrcweir {
1043cdf0e10cSrcweir bValid = sal_False;
1044cdf0e10cSrcweir }
1045cdf0e10cSrcweir break;
1046cdf0e10cSrcweir
1047cdf0e10cSrcweir default:
1048cdf0e10cSrcweir ; // ignore
1049cdf0e10cSrcweir }
1050cdf0e10cSrcweir }
1051cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)1052cdf0e10cSrcweir void XMLPlaceholderFieldImportContext::PrepareField(
1053cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet) {
1054cdf0e10cSrcweir
1055cdf0e10cSrcweir Any aAny;
1056cdf0e10cSrcweir aAny <<= sDescription;
1057cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyHint, aAny);
1058cdf0e10cSrcweir
1059cdf0e10cSrcweir // remove <...> around content (if present)
1060cdf0e10cSrcweir OUString aContent = GetContent();
1061cdf0e10cSrcweir sal_Int32 nStart = 0;
1062cdf0e10cSrcweir sal_Int32 nLength = aContent.getLength();
1063cdf0e10cSrcweir if ((nLength > 0) && (aContent.getStr()[0] == '<'))
1064cdf0e10cSrcweir {
1065cdf0e10cSrcweir --nLength;
1066cdf0e10cSrcweir ++nStart;
1067cdf0e10cSrcweir }
1068cdf0e10cSrcweir if ((nLength > 0) && (aContent.getStr()[aContent.getLength()-1] == '>'))
1069cdf0e10cSrcweir {
1070cdf0e10cSrcweir --nLength;
1071cdf0e10cSrcweir }
1072cdf0e10cSrcweir aAny <<= aContent.copy(nStart, nLength);
1073cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyPlaceholder, aAny);
1074cdf0e10cSrcweir
1075cdf0e10cSrcweir aAny <<= nPlaceholderType;
1076cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyPlaceholderType, aAny);
1077cdf0e10cSrcweir }
1078cdf0e10cSrcweir
1079cdf0e10cSrcweir
1080cdf0e10cSrcweir //
1081cdf0e10cSrcweir // time field
1082cdf0e10cSrcweir //
1083cdf0e10cSrcweir
1084cdf0e10cSrcweir TYPEINIT1( XMLTimeFieldImportContext, XMLTextFieldImportContext);
1085cdf0e10cSrcweir
XMLTimeFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)1086cdf0e10cSrcweir XMLTimeFieldImportContext::XMLTimeFieldImportContext(
1087cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
1088cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName)
1089cdf0e10cSrcweir : XMLTextFieldImportContext(rImport, rHlp, sAPI_date_time, nPrfx, sLocalName)
1090cdf0e10cSrcweir , sPropertyNumberFormat(RTL_CONSTASCII_USTRINGPARAM(sAPI_number_format))
1091cdf0e10cSrcweir , sPropertyFixed(RTL_CONSTASCII_USTRINGPARAM(sAPI_is_fixed))
1092cdf0e10cSrcweir , sPropertyDateTimeValue(RTL_CONSTASCII_USTRINGPARAM(sAPI_date_time_value))
1093cdf0e10cSrcweir , sPropertyDateTime(RTL_CONSTASCII_USTRINGPARAM(sAPI_date_time))
1094cdf0e10cSrcweir , sPropertyAdjust(RTL_CONSTASCII_USTRINGPARAM(sAPI_adjust))
1095cdf0e10cSrcweir , sPropertyIsDate(RTL_CONSTASCII_USTRINGPARAM(sAPI_is_date))
1096cdf0e10cSrcweir , sPropertyIsFixedLanguage(RTL_CONSTASCII_USTRINGPARAM(sAPI_is_fixed_language))
1097cdf0e10cSrcweir , fTimeValue(0.0)
1098cdf0e10cSrcweir , nAdjust(0)
1099cdf0e10cSrcweir , nFormatKey(0)
1100cdf0e10cSrcweir , bTimeOK(sal_False)
1101cdf0e10cSrcweir , bFormatOK(sal_False)
1102cdf0e10cSrcweir , bFixed(sal_False)
1103cdf0e10cSrcweir , bIsDate(sal_False)
1104cdf0e10cSrcweir , bIsDefaultLanguage( sal_True )
1105cdf0e10cSrcweir {
1106cdf0e10cSrcweir bValid = sal_True; // always valid!
1107cdf0e10cSrcweir }
1108cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)1109cdf0e10cSrcweir void XMLTimeFieldImportContext::ProcessAttribute(
1110cdf0e10cSrcweir sal_uInt16 nAttrToken, const OUString& sAttrValue )
1111cdf0e10cSrcweir {
1112cdf0e10cSrcweir switch (nAttrToken)
1113cdf0e10cSrcweir {
1114cdf0e10cSrcweir case XML_TOK_TEXTFIELD_TIME_VALUE:
1115cdf0e10cSrcweir {
1116cdf0e10cSrcweir double fTmp;
1117cdf0e10cSrcweir if (GetImport().GetMM100UnitConverter().
1118cdf0e10cSrcweir convertDateTime(fTmp, sAttrValue))
1119cdf0e10cSrcweir {
1120cdf0e10cSrcweir fTimeValue = fTmp;
1121cdf0e10cSrcweir bTimeOK = sal_True;
1122cdf0e10cSrcweir }
1123cdf0e10cSrcweir
1124cdf0e10cSrcweir if (GetImport().GetMM100UnitConverter().
1125cdf0e10cSrcweir convertDateTime(aDateTimeValue, sAttrValue ))
1126cdf0e10cSrcweir {
1127cdf0e10cSrcweir bTimeOK = sal_True;
1128cdf0e10cSrcweir }
1129cdf0e10cSrcweir break;
1130cdf0e10cSrcweir }
1131cdf0e10cSrcweir case XML_TOK_TEXTFIELD_FIXED:
1132cdf0e10cSrcweir {
1133cdf0e10cSrcweir sal_Bool bTmp;
1134cdf0e10cSrcweir if (SvXMLUnitConverter::convertBool(bTmp, sAttrValue))
1135cdf0e10cSrcweir {
1136cdf0e10cSrcweir bFixed = bTmp;
1137cdf0e10cSrcweir }
1138cdf0e10cSrcweir break;
1139cdf0e10cSrcweir }
1140cdf0e10cSrcweir case XML_TOK_TEXTFIELD_DATA_STYLE_NAME:
1141cdf0e10cSrcweir {
1142cdf0e10cSrcweir sal_Int32 nKey = GetImportHelper().GetDataStyleKey(
1143cdf0e10cSrcweir sAttrValue, &bIsDefaultLanguage);
1144cdf0e10cSrcweir if (-1 != nKey)
1145cdf0e10cSrcweir {
1146cdf0e10cSrcweir nFormatKey = nKey;
1147cdf0e10cSrcweir bFormatOK = sal_True;
1148cdf0e10cSrcweir }
1149cdf0e10cSrcweir break;
1150cdf0e10cSrcweir }
1151cdf0e10cSrcweir case XML_TOK_TEXTFIELD_TIME_ADJUST:
1152cdf0e10cSrcweir {
1153cdf0e10cSrcweir double fTmp;
1154cdf0e10cSrcweir
1155cdf0e10cSrcweir if (SvXMLUnitConverter::convertTime(fTmp, sAttrValue))
1156cdf0e10cSrcweir {
1157cdf0e10cSrcweir // convert to minutes
1158cdf0e10cSrcweir nAdjust = (sal_Int32)::rtl::math::approxFloor(fTmp * 60 * 24);
1159cdf0e10cSrcweir }
1160cdf0e10cSrcweir break;
1161cdf0e10cSrcweir }
1162cdf0e10cSrcweir }
1163cdf0e10cSrcweir }
1164cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & rPropertySet)1165cdf0e10cSrcweir void XMLTimeFieldImportContext::PrepareField(
1166cdf0e10cSrcweir const Reference<XPropertySet> & rPropertySet)
1167cdf0e10cSrcweir {
1168cdf0e10cSrcweir Any aAny;
1169cdf0e10cSrcweir
1170cdf0e10cSrcweir // all properties are optional (except IsDate)
1171cdf0e10cSrcweir Reference<XPropertySetInfo> xPropertySetInfo(
1172cdf0e10cSrcweir rPropertySet->getPropertySetInfo());
1173cdf0e10cSrcweir
1174cdf0e10cSrcweir if (xPropertySetInfo->hasPropertyByName(sPropertyFixed))
1175cdf0e10cSrcweir {
1176cdf0e10cSrcweir aAny.setValue( &bFixed, ::getBooleanCppuType() );
1177cdf0e10cSrcweir rPropertySet->setPropertyValue(sPropertyFixed, aAny);
1178cdf0e10cSrcweir }
1179cdf0e10cSrcweir
1180cdf0e10cSrcweir aAny.setValue( &bIsDate, ::getBooleanCppuType() );
1181cdf0e10cSrcweir rPropertySet->setPropertyValue(sPropertyIsDate, aAny);
1182cdf0e10cSrcweir
1183cdf0e10cSrcweir if (xPropertySetInfo->hasPropertyByName(sPropertyAdjust))
1184cdf0e10cSrcweir {
1185cdf0e10cSrcweir aAny <<= nAdjust;
1186cdf0e10cSrcweir rPropertySet->setPropertyValue(sPropertyAdjust, aAny);
1187cdf0e10cSrcweir }
1188cdf0e10cSrcweir
1189cdf0e10cSrcweir // set value
1190cdf0e10cSrcweir if (bFixed)
1191cdf0e10cSrcweir {
1192cdf0e10cSrcweir // organizer or styles-only mode: force update
1193cdf0e10cSrcweir if (GetImport().GetTextImport()->IsOrganizerMode() ||
1194cdf0e10cSrcweir GetImport().GetTextImport()->IsStylesOnlyMode() )
1195cdf0e10cSrcweir {
1196cdf0e10cSrcweir ForceUpdate(rPropertySet);
1197cdf0e10cSrcweir }
1198cdf0e10cSrcweir else
1199cdf0e10cSrcweir {
1200cdf0e10cSrcweir // normal mode: set value (if present)
1201cdf0e10cSrcweir if (bTimeOK)
1202cdf0e10cSrcweir {
1203cdf0e10cSrcweir if (xPropertySetInfo->hasPropertyByName(sPropertyDateTimeValue))
1204cdf0e10cSrcweir {
1205cdf0e10cSrcweir aAny <<= aDateTimeValue;
1206cdf0e10cSrcweir rPropertySet->setPropertyValue(sPropertyDateTimeValue,aAny);
1207cdf0e10cSrcweir }
1208cdf0e10cSrcweir else if (xPropertySetInfo->hasPropertyByName(sPropertyDateTime))
1209cdf0e10cSrcweir {
1210cdf0e10cSrcweir aAny <<= aDateTimeValue;
1211cdf0e10cSrcweir rPropertySet->setPropertyValue(sPropertyDateTime, aAny);
1212cdf0e10cSrcweir }
1213cdf0e10cSrcweir }
1214cdf0e10cSrcweir }
1215cdf0e10cSrcweir }
1216cdf0e10cSrcweir
1217cdf0e10cSrcweir if (bFormatOK &&
1218cdf0e10cSrcweir xPropertySetInfo->hasPropertyByName(sPropertyNumberFormat))
1219cdf0e10cSrcweir {
1220cdf0e10cSrcweir aAny <<= nFormatKey;
1221cdf0e10cSrcweir rPropertySet->setPropertyValue(sPropertyNumberFormat, aAny);
1222cdf0e10cSrcweir
1223cdf0e10cSrcweir if( xPropertySetInfo->hasPropertyByName( sPropertyIsFixedLanguage ) )
1224cdf0e10cSrcweir {
1225cdf0e10cSrcweir sal_Bool bIsFixedLanguage = ! bIsDefaultLanguage;
1226cdf0e10cSrcweir aAny.setValue( &bIsFixedLanguage, ::getBooleanCppuType() );
1227cdf0e10cSrcweir rPropertySet->setPropertyValue( sPropertyIsFixedLanguage, aAny );
1228cdf0e10cSrcweir }
1229cdf0e10cSrcweir }
1230cdf0e10cSrcweir }
1231cdf0e10cSrcweir
1232cdf0e10cSrcweir
1233cdf0e10cSrcweir
1234cdf0e10cSrcweir //
1235cdf0e10cSrcweir // date field
1236cdf0e10cSrcweir //
1237cdf0e10cSrcweir
1238cdf0e10cSrcweir TYPEINIT1( XMLDateFieldImportContext, XMLTimeFieldImportContext );
1239cdf0e10cSrcweir
XMLDateFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)1240cdf0e10cSrcweir XMLDateFieldImportContext::XMLDateFieldImportContext(
1241cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
1242cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName) :
1243cdf0e10cSrcweir XMLTimeFieldImportContext(rImport, rHlp, nPrfx, sLocalName)
1244cdf0e10cSrcweir {
1245cdf0e10cSrcweir bIsDate = sal_True; // always a date!
1246cdf0e10cSrcweir }
1247cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const::rtl::OUString & sAttrValue)1248cdf0e10cSrcweir void XMLDateFieldImportContext::ProcessAttribute(
1249cdf0e10cSrcweir sal_uInt16 nAttrToken,
1250cdf0e10cSrcweir const ::rtl::OUString& sAttrValue )
1251cdf0e10cSrcweir {
1252cdf0e10cSrcweir switch (nAttrToken)
1253cdf0e10cSrcweir {
1254cdf0e10cSrcweir case XML_TOK_TEXTFIELD_DATE_VALUE:
1255cdf0e10cSrcweir {
1256cdf0e10cSrcweir double fTmp;
1257cdf0e10cSrcweir
1258cdf0e10cSrcweir if (GetImport().GetMM100UnitConverter().
1259cdf0e10cSrcweir convertDateTime(fTmp, sAttrValue))
1260cdf0e10cSrcweir {
1261cdf0e10cSrcweir // #96457#: don't truncate in order to read date+time
1262cdf0e10cSrcweir fTimeValue = fTmp;
1263cdf0e10cSrcweir bTimeOK = sal_True;
1264cdf0e10cSrcweir }
1265cdf0e10cSrcweir
1266cdf0e10cSrcweir if (GetImport().GetMM100UnitConverter().
1267cdf0e10cSrcweir convertDateTime(aDateTimeValue, sAttrValue ))
1268cdf0e10cSrcweir {
1269cdf0e10cSrcweir bTimeOK = sal_True;
1270cdf0e10cSrcweir }
1271cdf0e10cSrcweir break;
1272cdf0e10cSrcweir }
1273cdf0e10cSrcweir case XML_TOK_TEXTFIELD_DATE_ADJUST:
1274cdf0e10cSrcweir // delegate to superclass, pretending it was a time-adjust attr.
1275cdf0e10cSrcweir XMLTimeFieldImportContext::ProcessAttribute(
1276cdf0e10cSrcweir XML_TOK_TEXTFIELD_TIME_ADJUST,
1277cdf0e10cSrcweir sAttrValue);
1278cdf0e10cSrcweir break;
1279cdf0e10cSrcweir case XML_TOK_TEXTFIELD_TIME_VALUE:
1280cdf0e10cSrcweir case XML_TOK_TEXTFIELD_TIME_ADJUST:
1281cdf0e10cSrcweir ; // ignore time-adjust and time-value attributes
1282cdf0e10cSrcweir break;
1283cdf0e10cSrcweir default:
1284cdf0e10cSrcweir // all others: delegate to super-class
1285cdf0e10cSrcweir XMLTimeFieldImportContext::ProcessAttribute(nAttrToken,
1286cdf0e10cSrcweir sAttrValue);
1287cdf0e10cSrcweir break;
1288cdf0e10cSrcweir }
1289cdf0e10cSrcweir }
1290cdf0e10cSrcweir
1291cdf0e10cSrcweir
1292cdf0e10cSrcweir
1293cdf0e10cSrcweir
1294cdf0e10cSrcweir //
1295cdf0e10cSrcweir // database field superclass
1296cdf0e10cSrcweir //
1297cdf0e10cSrcweir
1298cdf0e10cSrcweir TYPEINIT1( XMLDatabaseFieldImportContext, XMLTextFieldImportContext );
1299cdf0e10cSrcweir
XMLDatabaseFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,const sal_Char * pServiceName,sal_uInt16 nPrfx,const OUString & sLocalName,bool bUseDisply)1300cdf0e10cSrcweir XMLDatabaseFieldImportContext::XMLDatabaseFieldImportContext(
1301cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
1302cdf0e10cSrcweir const sal_Char* pServiceName, sal_uInt16 nPrfx,
1303cdf0e10cSrcweir const OUString& sLocalName, bool bUseDisply)
1304cdf0e10cSrcweir : XMLTextFieldImportContext(rImport, rHlp, pServiceName, nPrfx, sLocalName)
1305cdf0e10cSrcweir , sPropertyDataBaseName(RTL_CONSTASCII_USTRINGPARAM(sAPI_data_base_name))
1306cdf0e10cSrcweir , sPropertyDataBaseURL(RTL_CONSTASCII_USTRINGPARAM(sAPI_data_base_u_r_l))
1307cdf0e10cSrcweir , sPropertyTableName(RTL_CONSTASCII_USTRINGPARAM(sAPI_data_table_name))
1308cdf0e10cSrcweir , sPropertyDataCommandType(RTL_CONSTASCII_USTRINGPARAM(sAPI_data_command_type))
1309cdf0e10cSrcweir , sPropertyIsVisible(RTL_CONSTASCII_USTRINGPARAM(sAPI_is_visible))
1310cdf0e10cSrcweir , nCommandType( sdb::CommandType::TABLE )
1311cdf0e10cSrcweir , bCommandTypeOK(sal_False)
1312cdf0e10cSrcweir , bDisplay( sal_True )
1313cdf0e10cSrcweir , bDisplayOK( false )
1314cdf0e10cSrcweir , bUseDisplay( bUseDisply )
1315cdf0e10cSrcweir , bDatabaseOK(sal_False)
1316cdf0e10cSrcweir , bDatabaseNameOK(sal_False)
1317cdf0e10cSrcweir , bDatabaseURLOK(sal_False)
1318cdf0e10cSrcweir , bTableOK(sal_False)
1319cdf0e10cSrcweir {
1320cdf0e10cSrcweir }
1321cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)1322cdf0e10cSrcweir void XMLDatabaseFieldImportContext::ProcessAttribute(
1323cdf0e10cSrcweir sal_uInt16 nAttrToken, const OUString& sAttrValue )
1324cdf0e10cSrcweir {
1325cdf0e10cSrcweir switch (nAttrToken)
1326cdf0e10cSrcweir {
1327cdf0e10cSrcweir case XML_TOK_TEXTFIELD_DATABASE_NAME:
1328cdf0e10cSrcweir sDatabaseName = sAttrValue;
1329cdf0e10cSrcweir bDatabaseOK = sal_True;
1330cdf0e10cSrcweir bDatabaseNameOK = sal_True;
1331cdf0e10cSrcweir break;
1332cdf0e10cSrcweir case XML_TOK_TEXTFIELD_TABLE_NAME:
1333cdf0e10cSrcweir sTableName = sAttrValue;
1334cdf0e10cSrcweir bTableOK = sal_True;
1335cdf0e10cSrcweir break;
1336cdf0e10cSrcweir case XML_TOK_TEXTFIELD_TABLE_TYPE:
1337cdf0e10cSrcweir if( IsXMLToken( sAttrValue, XML_TABLE ) )
1338cdf0e10cSrcweir {
1339cdf0e10cSrcweir nCommandType = sdb::CommandType::TABLE;
1340cdf0e10cSrcweir bCommandTypeOK = sal_True;
1341cdf0e10cSrcweir }
1342cdf0e10cSrcweir else if( IsXMLToken( sAttrValue, XML_QUERY ) )
1343cdf0e10cSrcweir {
1344cdf0e10cSrcweir nCommandType = sdb::CommandType::QUERY;
1345cdf0e10cSrcweir bCommandTypeOK = sal_True;
1346cdf0e10cSrcweir }
1347cdf0e10cSrcweir else if( IsXMLToken( sAttrValue, XML_COMMAND ) )
1348cdf0e10cSrcweir {
1349cdf0e10cSrcweir nCommandType = sdb::CommandType::COMMAND;
1350cdf0e10cSrcweir bCommandTypeOK = sal_True;
1351cdf0e10cSrcweir }
1352cdf0e10cSrcweir break;
1353cdf0e10cSrcweir case XML_TOK_TEXTFIELD_DISPLAY:
1354cdf0e10cSrcweir if( IsXMLToken( sAttrValue, XML_NONE ) )
1355cdf0e10cSrcweir {
1356cdf0e10cSrcweir bDisplay = sal_False;
1357cdf0e10cSrcweir bDisplayOK = true;
1358cdf0e10cSrcweir }
1359cdf0e10cSrcweir else if( IsXMLToken( sAttrValue, XML_VALUE ) )
1360cdf0e10cSrcweir {
1361cdf0e10cSrcweir bDisplay = sal_True;
1362cdf0e10cSrcweir bDisplayOK = true;
1363cdf0e10cSrcweir }
1364cdf0e10cSrcweir break;
1365cdf0e10cSrcweir }
1366cdf0e10cSrcweir }
1367cdf0e10cSrcweir
CreateChildContext(sal_uInt16 p_nPrefix,const OUString & rLocalName,const Reference<XAttributeList> & xAttrList)1368cdf0e10cSrcweir SvXMLImportContext* XMLDatabaseFieldImportContext::CreateChildContext(
1369cdf0e10cSrcweir sal_uInt16 p_nPrefix,
1370cdf0e10cSrcweir const OUString& rLocalName,
1371cdf0e10cSrcweir const Reference<XAttributeList>& xAttrList )
1372cdf0e10cSrcweir {
1373cdf0e10cSrcweir if( ( p_nPrefix == XML_NAMESPACE_FORM ) &&
1374cdf0e10cSrcweir IsXMLToken( rLocalName, XML_CONNECTION_RESOURCE ) )
1375cdf0e10cSrcweir {
1376cdf0e10cSrcweir // process attribute list directly
1377cdf0e10cSrcweir sal_Int16 nLength = xAttrList->getLength();
1378cdf0e10cSrcweir for( sal_Int16 n = 0; n < nLength; n++ )
1379cdf0e10cSrcweir {
1380cdf0e10cSrcweir OUString sLocalName;
1381cdf0e10cSrcweir sal_uInt16 nPrefix = GetImport().GetNamespaceMap().
1382cdf0e10cSrcweir GetKeyByAttrName( xAttrList->getNameByIndex(n), &sLocalName );
1383cdf0e10cSrcweir
1384cdf0e10cSrcweir if( ( nPrefix == XML_NAMESPACE_XLINK ) &&
1385cdf0e10cSrcweir IsXMLToken( sLocalName, XML_HREF ) )
1386cdf0e10cSrcweir {
1387cdf0e10cSrcweir sDatabaseURL = xAttrList->getValueByIndex(n);
1388cdf0e10cSrcweir bDatabaseOK = sal_True;
1389cdf0e10cSrcweir bDatabaseURLOK = sal_True;
1390cdf0e10cSrcweir }
1391cdf0e10cSrcweir }
1392cdf0e10cSrcweir
1393cdf0e10cSrcweir // we call ProcessAttribute in order to set bValid appropriatly
1394cdf0e10cSrcweir ProcessAttribute( XML_TOKEN_INVALID, OUString() );
1395cdf0e10cSrcweir }
1396cdf0e10cSrcweir
1397cdf0e10cSrcweir return SvXMLImportContext::CreateChildContext(p_nPrefix, rLocalName,
1398cdf0e10cSrcweir xAttrList);
1399cdf0e10cSrcweir }
1400cdf0e10cSrcweir
1401cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)1402cdf0e10cSrcweir void XMLDatabaseFieldImportContext::PrepareField(
1403cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
1404cdf0e10cSrcweir {
1405cdf0e10cSrcweir Any aAny;
1406cdf0e10cSrcweir
1407cdf0e10cSrcweir aAny <<= sTableName;
1408cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyTableName, aAny);
1409cdf0e10cSrcweir
1410cdf0e10cSrcweir if( bDatabaseNameOK )
1411cdf0e10cSrcweir {
1412cdf0e10cSrcweir aAny <<= sDatabaseName;
1413cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyDataBaseName, aAny);
1414cdf0e10cSrcweir }
1415cdf0e10cSrcweir else if( bDatabaseURLOK )
1416cdf0e10cSrcweir {
1417cdf0e10cSrcweir aAny <<= sDatabaseURL;
1418cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyDataBaseURL, aAny);
1419cdf0e10cSrcweir }
1420cdf0e10cSrcweir
1421cdf0e10cSrcweir // #99980# load/save command type for all fields; also load
1422cdf0e10cSrcweir // old documents without command type
1423cdf0e10cSrcweir if( bCommandTypeOK )
1424cdf0e10cSrcweir {
1425cdf0e10cSrcweir aAny <<= nCommandType;
1426cdf0e10cSrcweir xPropertySet->setPropertyValue( sPropertyDataCommandType, aAny );
1427cdf0e10cSrcweir }
1428cdf0e10cSrcweir
1429cdf0e10cSrcweir if( bUseDisplay && bDisplayOK )
1430cdf0e10cSrcweir {
1431cdf0e10cSrcweir aAny.setValue( &bDisplay, ::getBooleanCppuType() );
1432cdf0e10cSrcweir xPropertySet->setPropertyValue( sPropertyIsVisible, aAny );
1433cdf0e10cSrcweir }
1434cdf0e10cSrcweir }
1435cdf0e10cSrcweir
1436cdf0e10cSrcweir
1437cdf0e10cSrcweir
1438cdf0e10cSrcweir //
1439cdf0e10cSrcweir // database name field
1440cdf0e10cSrcweir //
1441cdf0e10cSrcweir
1442cdf0e10cSrcweir TYPEINIT1( XMLDatabaseNameImportContext, XMLDatabaseFieldImportContext );
1443cdf0e10cSrcweir
XMLDatabaseNameImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)1444cdf0e10cSrcweir XMLDatabaseNameImportContext::XMLDatabaseNameImportContext(
1445cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
1446cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName) :
1447cdf0e10cSrcweir XMLDatabaseFieldImportContext(rImport, rHlp, sAPI_database_name,
1448cdf0e10cSrcweir nPrfx, sLocalName, true)
1449cdf0e10cSrcweir {
1450cdf0e10cSrcweir }
1451cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)1452cdf0e10cSrcweir void XMLDatabaseNameImportContext::ProcessAttribute(
1453cdf0e10cSrcweir sal_uInt16 nAttrToken, const OUString& sAttrValue )
1454cdf0e10cSrcweir {
1455cdf0e10cSrcweir // delegate to superclass and check for success
1456cdf0e10cSrcweir XMLDatabaseFieldImportContext::ProcessAttribute(nAttrToken, sAttrValue);
1457cdf0e10cSrcweir bValid = bDatabaseOK && bTableOK;
1458cdf0e10cSrcweir }
1459cdf0e10cSrcweir
1460cdf0e10cSrcweir
1461cdf0e10cSrcweir
1462cdf0e10cSrcweir //
1463cdf0e10cSrcweir // database next field
1464cdf0e10cSrcweir //
1465cdf0e10cSrcweir
1466cdf0e10cSrcweir TYPEINIT1( XMLDatabaseNextImportContext, XMLDatabaseFieldImportContext );
1467cdf0e10cSrcweir
XMLDatabaseNextImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,const sal_Char * pServiceName,sal_uInt16 nPrfx,const OUString & sLocalName)1468cdf0e10cSrcweir XMLDatabaseNextImportContext::XMLDatabaseNextImportContext(
1469cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
1470cdf0e10cSrcweir const sal_Char* pServiceName, sal_uInt16 nPrfx,
1471cdf0e10cSrcweir const OUString& sLocalName) :
1472cdf0e10cSrcweir XMLDatabaseFieldImportContext(rImport, rHlp, pServiceName,
1473cdf0e10cSrcweir nPrfx, sLocalName, false),
1474cdf0e10cSrcweir sPropertyCondition(RTL_CONSTASCII_USTRINGPARAM(sAPI_condition)),
1475cdf0e10cSrcweir sTrue(RTL_CONSTASCII_USTRINGPARAM(sAPI_true)),
1476cdf0e10cSrcweir sCondition(),
1477cdf0e10cSrcweir bConditionOK(sal_False)
1478cdf0e10cSrcweir {
1479cdf0e10cSrcweir }
1480cdf0e10cSrcweir
XMLDatabaseNextImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)1481cdf0e10cSrcweir XMLDatabaseNextImportContext::XMLDatabaseNextImportContext(
1482cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
1483cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName)
1484cdf0e10cSrcweir : XMLDatabaseFieldImportContext(rImport, rHlp, sAPI_database_next, nPrfx, sLocalName, false)
1485cdf0e10cSrcweir , sPropertyCondition(RTL_CONSTASCII_USTRINGPARAM(sAPI_condition))
1486cdf0e10cSrcweir , sTrue(RTL_CONSTASCII_USTRINGPARAM(sAPI_true))
1487cdf0e10cSrcweir , bConditionOK(sal_False)
1488cdf0e10cSrcweir {
1489cdf0e10cSrcweir }
1490cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)1491cdf0e10cSrcweir void XMLDatabaseNextImportContext::ProcessAttribute(
1492cdf0e10cSrcweir sal_uInt16 nAttrToken, const OUString& sAttrValue )
1493cdf0e10cSrcweir {
1494cdf0e10cSrcweir if (XML_TOK_TEXTFIELD_CONDITION == nAttrToken)
1495cdf0e10cSrcweir {
1496cdf0e10cSrcweir OUString sTmp;
1497cdf0e10cSrcweir sal_uInt16 nPrefix = GetImport().GetNamespaceMap()._GetKeyByAttrName(
1498cdf0e10cSrcweir sAttrValue, &sTmp, sal_False );
1499cdf0e10cSrcweir if( XML_NAMESPACE_OOOW == nPrefix )
1500cdf0e10cSrcweir {
1501cdf0e10cSrcweir sCondition = sTmp;
1502cdf0e10cSrcweir bConditionOK = sal_True;
1503cdf0e10cSrcweir }
1504cdf0e10cSrcweir else
1505cdf0e10cSrcweir sCondition = sAttrValue;
1506cdf0e10cSrcweir }
1507cdf0e10cSrcweir else
1508cdf0e10cSrcweir {
1509cdf0e10cSrcweir XMLDatabaseFieldImportContext::ProcessAttribute(nAttrToken,
1510cdf0e10cSrcweir sAttrValue);
1511cdf0e10cSrcweir }
1512cdf0e10cSrcweir
1513cdf0e10cSrcweir bValid = bDatabaseOK && bTableOK;
1514cdf0e10cSrcweir }
1515cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)1516cdf0e10cSrcweir void XMLDatabaseNextImportContext::PrepareField(
1517cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
1518cdf0e10cSrcweir {
1519cdf0e10cSrcweir Any aAny;
1520cdf0e10cSrcweir
1521cdf0e10cSrcweir aAny <<= bConditionOK ? sCondition : sTrue;
1522cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyCondition, aAny);
1523cdf0e10cSrcweir
1524cdf0e10cSrcweir XMLDatabaseFieldImportContext::PrepareField(xPropertySet);
1525cdf0e10cSrcweir }
1526cdf0e10cSrcweir
1527cdf0e10cSrcweir
1528cdf0e10cSrcweir
1529cdf0e10cSrcweir //
1530cdf0e10cSrcweir // database select field
1531cdf0e10cSrcweir //
1532cdf0e10cSrcweir
1533cdf0e10cSrcweir TYPEINIT1( XMLDatabaseSelectImportContext, XMLDatabaseNextImportContext );
1534cdf0e10cSrcweir
XMLDatabaseSelectImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const::rtl::OUString & sLocalName)1535cdf0e10cSrcweir XMLDatabaseSelectImportContext::XMLDatabaseSelectImportContext(
1536cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
1537cdf0e10cSrcweir sal_uInt16 nPrfx, const ::rtl::OUString& sLocalName) :
1538cdf0e10cSrcweir XMLDatabaseNextImportContext(rImport, rHlp, sAPI_database_select,
1539cdf0e10cSrcweir nPrfx, sLocalName),
1540cdf0e10cSrcweir sPropertySetNumber(RTL_CONSTASCII_USTRINGPARAM(sAPI_set_number)),
1541cdf0e10cSrcweir nNumber(0),
1542cdf0e10cSrcweir bNumberOK(sal_False)
1543cdf0e10cSrcweir {
1544cdf0e10cSrcweir }
1545cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const::rtl::OUString & sAttrValue)1546cdf0e10cSrcweir void XMLDatabaseSelectImportContext::ProcessAttribute(
1547cdf0e10cSrcweir sal_uInt16 nAttrToken,
1548cdf0e10cSrcweir const ::rtl::OUString& sAttrValue )
1549cdf0e10cSrcweir {
1550cdf0e10cSrcweir if (XML_TOK_TEXTFIELD_ROW_NUMBER == nAttrToken)
1551cdf0e10cSrcweir {
1552cdf0e10cSrcweir sal_Int32 nTmp;
1553cdf0e10cSrcweir if (SvXMLUnitConverter::convertNumber( nTmp, sAttrValue
1554cdf0e10cSrcweir /* , nMin, nMax ??? */ ))
1555cdf0e10cSrcweir {
1556cdf0e10cSrcweir nNumber = nTmp;
1557cdf0e10cSrcweir bNumberOK = sal_True;
1558cdf0e10cSrcweir }
1559cdf0e10cSrcweir }
1560cdf0e10cSrcweir else
1561cdf0e10cSrcweir {
1562cdf0e10cSrcweir XMLDatabaseNextImportContext::ProcessAttribute(nAttrToken, sAttrValue);
1563cdf0e10cSrcweir }
1564cdf0e10cSrcweir
1565cdf0e10cSrcweir bValid = bTableOK && bDatabaseOK && bNumberOK;
1566cdf0e10cSrcweir }
1567cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)1568cdf0e10cSrcweir void XMLDatabaseSelectImportContext::PrepareField(
1569cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
1570cdf0e10cSrcweir {
1571cdf0e10cSrcweir Any aAny;
1572cdf0e10cSrcweir
1573cdf0e10cSrcweir aAny <<= nNumber;
1574cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertySetNumber, aAny);
1575cdf0e10cSrcweir
1576cdf0e10cSrcweir XMLDatabaseNextImportContext::PrepareField(xPropertySet);
1577cdf0e10cSrcweir }
1578cdf0e10cSrcweir
1579cdf0e10cSrcweir
1580cdf0e10cSrcweir
1581cdf0e10cSrcweir //
1582cdf0e10cSrcweir // database display row number field
1583cdf0e10cSrcweir //
1584cdf0e10cSrcweir
1585cdf0e10cSrcweir TYPEINIT1( XMLDatabaseNumberImportContext, XMLDatabaseFieldImportContext );
1586cdf0e10cSrcweir
XMLDatabaseNumberImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)1587cdf0e10cSrcweir XMLDatabaseNumberImportContext::XMLDatabaseNumberImportContext(
1588cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
1589cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName) :
1590cdf0e10cSrcweir XMLDatabaseFieldImportContext(rImport, rHlp, sAPI_database_number,
1591cdf0e10cSrcweir nPrfx, sLocalName, true),
1592cdf0e10cSrcweir sPropertyNumberingType(
1593cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(sAPI_numbering_type)),
1594cdf0e10cSrcweir sPropertySetNumber(RTL_CONSTASCII_USTRINGPARAM(sAPI_set_number)),
1595cdf0e10cSrcweir sNumberFormat(RTL_CONSTASCII_USTRINGPARAM("1")),
1596cdf0e10cSrcweir sNumberSync(GetXMLToken(XML_FALSE)),
1597cdf0e10cSrcweir nValue(0),
1598cdf0e10cSrcweir bValueOK(sal_False)
1599cdf0e10cSrcweir {
1600cdf0e10cSrcweir }
1601cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)1602cdf0e10cSrcweir void XMLDatabaseNumberImportContext::ProcessAttribute(
1603cdf0e10cSrcweir sal_uInt16 nAttrToken,
1604cdf0e10cSrcweir const OUString& sAttrValue )
1605cdf0e10cSrcweir {
1606cdf0e10cSrcweir switch (nAttrToken)
1607cdf0e10cSrcweir {
1608cdf0e10cSrcweir case XML_TOK_TEXTFIELD_NUM_FORMAT:
1609cdf0e10cSrcweir sNumberFormat = sAttrValue;
1610cdf0e10cSrcweir break;
1611cdf0e10cSrcweir case XML_TOK_TEXTFIELD_NUM_LETTER_SYNC:
1612cdf0e10cSrcweir sNumberSync = sAttrValue;
1613cdf0e10cSrcweir break;
1614cdf0e10cSrcweir case XML_TOK_TEXTFIELD_VALUE:
1615cdf0e10cSrcweir {
1616cdf0e10cSrcweir sal_Int32 nTmp;
1617cdf0e10cSrcweir if (SvXMLUnitConverter::convertNumber( nTmp, sAttrValue ))
1618cdf0e10cSrcweir {
1619cdf0e10cSrcweir nValue = nTmp;
1620cdf0e10cSrcweir bValueOK = sal_True;
1621cdf0e10cSrcweir }
1622cdf0e10cSrcweir break;
1623cdf0e10cSrcweir }
1624cdf0e10cSrcweir default:
1625cdf0e10cSrcweir XMLDatabaseFieldImportContext::ProcessAttribute(nAttrToken,
1626cdf0e10cSrcweir sAttrValue);
1627cdf0e10cSrcweir break;
1628cdf0e10cSrcweir }
1629cdf0e10cSrcweir
1630cdf0e10cSrcweir bValid = bTableOK && bDatabaseOK;
1631cdf0e10cSrcweir }
1632cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)1633cdf0e10cSrcweir void XMLDatabaseNumberImportContext::PrepareField(
1634cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
1635cdf0e10cSrcweir {
1636cdf0e10cSrcweir Any aAny;
1637cdf0e10cSrcweir
1638cdf0e10cSrcweir sal_Int16 nNumType = style::NumberingType::ARABIC;
1639cdf0e10cSrcweir GetImport().GetMM100UnitConverter().convertNumFormat( nNumType,
1640cdf0e10cSrcweir sNumberFormat,
1641cdf0e10cSrcweir sNumberSync );
1642cdf0e10cSrcweir aAny <<= nNumType;
1643cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyNumberingType, aAny);
1644cdf0e10cSrcweir
1645cdf0e10cSrcweir if (bValueOK)
1646cdf0e10cSrcweir {
1647cdf0e10cSrcweir aAny <<= nValue;
1648cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertySetNumber, aAny);
1649cdf0e10cSrcweir }
1650cdf0e10cSrcweir
1651cdf0e10cSrcweir XMLDatabaseFieldImportContext::PrepareField(xPropertySet);
1652cdf0e10cSrcweir }
1653cdf0e10cSrcweir
1654cdf0e10cSrcweir
1655cdf0e10cSrcweir
1656cdf0e10cSrcweir //
1657cdf0e10cSrcweir // Simple doc info fields
1658cdf0e10cSrcweir //
1659cdf0e10cSrcweir
1660cdf0e10cSrcweir TYPEINIT1( XMLSimpleDocInfoImportContext, XMLTextFieldImportContext );
1661cdf0e10cSrcweir
XMLSimpleDocInfoImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName,sal_uInt16 nToken,sal_Bool bContent,sal_Bool bAuthor)1662cdf0e10cSrcweir XMLSimpleDocInfoImportContext::XMLSimpleDocInfoImportContext(
1663cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
1664cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName, sal_uInt16 nToken,
1665cdf0e10cSrcweir sal_Bool bContent, sal_Bool bAuthor)
1666cdf0e10cSrcweir : XMLTextFieldImportContext(rImport, rHlp, MapTokenToServiceName(nToken),nPrfx, sLocalName)
1667cdf0e10cSrcweir , sPropertyFixed(RTL_CONSTASCII_USTRINGPARAM(sAPI_is_fixed))
1668cdf0e10cSrcweir , sPropertyContent(RTL_CONSTASCII_USTRINGPARAM(sAPI_content))
1669cdf0e10cSrcweir , sPropertyAuthor(RTL_CONSTASCII_USTRINGPARAM(sAPI_author))
1670cdf0e10cSrcweir , sPropertyCurrentPresentation(RTL_CONSTASCII_USTRINGPARAM(sAPI_current_presentation))
1671cdf0e10cSrcweir , bFixed(sal_False)
1672cdf0e10cSrcweir , bHasAuthor(bAuthor)
1673cdf0e10cSrcweir , bHasContent(bContent)
1674cdf0e10cSrcweir {
1675cdf0e10cSrcweir bValid = sal_True;
1676cdf0e10cSrcweir }
1677cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)1678cdf0e10cSrcweir void XMLSimpleDocInfoImportContext::ProcessAttribute(
1679cdf0e10cSrcweir sal_uInt16 nAttrToken,
1680cdf0e10cSrcweir const OUString& sAttrValue )
1681cdf0e10cSrcweir {
1682cdf0e10cSrcweir if (XML_TOK_TEXTFIELD_FIXED == nAttrToken)
1683cdf0e10cSrcweir {
1684cdf0e10cSrcweir sal_Bool bTmp;
1685cdf0e10cSrcweir if (SvXMLUnitConverter::convertBool(bTmp, sAttrValue))
1686cdf0e10cSrcweir {
1687cdf0e10cSrcweir bFixed = bTmp;
1688cdf0e10cSrcweir }
1689cdf0e10cSrcweir }
1690cdf0e10cSrcweir }
1691cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & rPropertySet)1692cdf0e10cSrcweir void XMLSimpleDocInfoImportContext::PrepareField(
1693cdf0e10cSrcweir const Reference<XPropertySet> & rPropertySet)
1694cdf0e10cSrcweir {
1695cdf0e10cSrcweir // title field in Calc has no Fixed property
1696cdf0e10cSrcweir Reference<XPropertySetInfo> xPropertySetInfo(rPropertySet->getPropertySetInfo());
1697cdf0e10cSrcweir if (xPropertySetInfo->hasPropertyByName(sPropertyFixed))
1698cdf0e10cSrcweir {
1699cdf0e10cSrcweir Any aAny;
1700cdf0e10cSrcweir aAny.setValue(&bFixed, ::getBooleanCppuType() );
1701cdf0e10cSrcweir rPropertySet->setPropertyValue(sPropertyFixed, aAny);
1702cdf0e10cSrcweir
1703cdf0e10cSrcweir // set Content and CurrentPresentation (if fixed)
1704cdf0e10cSrcweir if (bFixed)
1705cdf0e10cSrcweir {
1706cdf0e10cSrcweir // in organizer-mode or styles-only-mode, only force update
1707cdf0e10cSrcweir if (GetImport().GetTextImport()->IsOrganizerMode() ||
1708cdf0e10cSrcweir GetImport().GetTextImport()->IsStylesOnlyMode() )
1709cdf0e10cSrcweir {
1710cdf0e10cSrcweir ForceUpdate(rPropertySet);
1711cdf0e10cSrcweir }
1712cdf0e10cSrcweir else
1713cdf0e10cSrcweir {
1714cdf0e10cSrcweir // set content (author, if that's the name) and current
1715cdf0e10cSrcweir // presentation
1716cdf0e10cSrcweir aAny <<= GetContent();
1717cdf0e10cSrcweir
1718cdf0e10cSrcweir if (bFixed && bHasAuthor)
1719cdf0e10cSrcweir {
1720cdf0e10cSrcweir rPropertySet->setPropertyValue(sPropertyAuthor, aAny);
1721cdf0e10cSrcweir }
1722cdf0e10cSrcweir
1723cdf0e10cSrcweir if (bFixed && bHasContent)
1724cdf0e10cSrcweir {
1725cdf0e10cSrcweir rPropertySet->setPropertyValue(sPropertyContent, aAny);
1726cdf0e10cSrcweir }
1727cdf0e10cSrcweir
1728cdf0e10cSrcweir rPropertySet->setPropertyValue(sPropertyCurrentPresentation, aAny);
1729cdf0e10cSrcweir }
1730cdf0e10cSrcweir }
1731cdf0e10cSrcweir }
1732cdf0e10cSrcweir }
1733cdf0e10cSrcweir
MapTokenToServiceName(sal_uInt16 nToken)1734cdf0e10cSrcweir const sal_Char* XMLSimpleDocInfoImportContext::MapTokenToServiceName(
1735cdf0e10cSrcweir sal_uInt16 nToken)
1736cdf0e10cSrcweir {
1737cdf0e10cSrcweir const sal_Char* pServiceName = NULL;
1738cdf0e10cSrcweir
1739cdf0e10cSrcweir switch(nToken)
1740cdf0e10cSrcweir {
1741cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_CREATION_AUTHOR:
1742cdf0e10cSrcweir pServiceName = sAPI_docinfo_create_author;
1743cdf0e10cSrcweir break;
1744cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_CREATION_DATE:
1745cdf0e10cSrcweir pServiceName = sAPI_docinfo_create_date_time;
1746cdf0e10cSrcweir break;
1747cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_CREATION_TIME:
1748cdf0e10cSrcweir pServiceName = sAPI_docinfo_create_date_time;
1749cdf0e10cSrcweir break;
1750cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_DESCRIPTION:
1751cdf0e10cSrcweir pServiceName = sAPI_docinfo_description;
1752cdf0e10cSrcweir break;
1753cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_EDIT_DURATION:
1754cdf0e10cSrcweir pServiceName = sAPI_docinfo_edit_time;
1755cdf0e10cSrcweir break;
1756cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_USER_DEFINED:
1757cdf0e10cSrcweir pServiceName = sAPI_docinfo_custom;
1758cdf0e10cSrcweir break;
1759cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_PRINT_AUTHOR:
1760cdf0e10cSrcweir pServiceName = sAPI_docinfo_print_author;
1761cdf0e10cSrcweir break;
1762cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_PRINT_DATE:
1763cdf0e10cSrcweir pServiceName = sAPI_docinfo_print_date_time;
1764cdf0e10cSrcweir break;
1765cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_PRINT_TIME:
1766cdf0e10cSrcweir pServiceName = sAPI_docinfo_print_date_time;
1767cdf0e10cSrcweir break;
1768cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_KEYWORDS:
1769cdf0e10cSrcweir pServiceName = sAPI_docinfo_keywords;
1770cdf0e10cSrcweir break;
1771cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_SUBJECT:
1772cdf0e10cSrcweir pServiceName = sAPI_docinfo_subject;
1773cdf0e10cSrcweir break;
1774cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_REVISION:
1775cdf0e10cSrcweir pServiceName = sAPI_docinfo_revision;
1776cdf0e10cSrcweir break;
1777cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_SAVE_AUTHOR:
1778cdf0e10cSrcweir pServiceName = sAPI_docinfo_change_author;
1779cdf0e10cSrcweir break;
1780cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_SAVE_DATE:
1781cdf0e10cSrcweir pServiceName = sAPI_docinfo_change_date_time;
1782cdf0e10cSrcweir break;
1783cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_SAVE_TIME:
1784cdf0e10cSrcweir pServiceName = sAPI_docinfo_change_date_time;
1785cdf0e10cSrcweir break;
1786cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_TITLE:
1787cdf0e10cSrcweir pServiceName = sAPI_docinfo_title;
1788cdf0e10cSrcweir break;
1789cdf0e10cSrcweir
1790cdf0e10cSrcweir default:
1791cdf0e10cSrcweir DBG_ERROR("no docinfo field token");
1792cdf0e10cSrcweir pServiceName = NULL;
1793cdf0e10cSrcweir break;
1794cdf0e10cSrcweir }
1795cdf0e10cSrcweir
1796cdf0e10cSrcweir return pServiceName;
1797cdf0e10cSrcweir }
1798cdf0e10cSrcweir
1799cdf0e10cSrcweir
1800cdf0e10cSrcweir //
1801cdf0e10cSrcweir // revision field
1802cdf0e10cSrcweir //
1803cdf0e10cSrcweir
1804cdf0e10cSrcweir TYPEINIT1( XMLRevisionDocInfoImportContext, XMLSimpleDocInfoImportContext );
1805cdf0e10cSrcweir
XMLRevisionDocInfoImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName,sal_uInt16 nToken)1806cdf0e10cSrcweir XMLRevisionDocInfoImportContext::XMLRevisionDocInfoImportContext(
1807cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp, sal_uInt16 nPrfx,
1808cdf0e10cSrcweir const OUString& sLocalName, sal_uInt16 nToken) :
1809cdf0e10cSrcweir XMLSimpleDocInfoImportContext(rImport, rHlp, nPrfx, sLocalName,
1810cdf0e10cSrcweir nToken, sal_False, sal_False),
1811cdf0e10cSrcweir sPropertyRevision(RTL_CONSTASCII_USTRINGPARAM(sAPI_revision))
1812cdf0e10cSrcweir {
1813cdf0e10cSrcweir bValid = sal_True;
1814cdf0e10cSrcweir }
1815cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & rPropertySet)1816cdf0e10cSrcweir void XMLRevisionDocInfoImportContext::PrepareField(
1817cdf0e10cSrcweir const Reference<XPropertySet> & rPropertySet)
1818cdf0e10cSrcweir {
1819cdf0e10cSrcweir XMLSimpleDocInfoImportContext::PrepareField(rPropertySet);
1820cdf0e10cSrcweir
1821cdf0e10cSrcweir // set revision number
1822cdf0e10cSrcweir // if fixed, if not in organizer-mode, if not in styles-only-mode
1823cdf0e10cSrcweir if (bFixed)
1824cdf0e10cSrcweir {
1825cdf0e10cSrcweir if ( GetImport().GetTextImport()->IsOrganizerMode() ||
1826cdf0e10cSrcweir GetImport().GetTextImport()->IsStylesOnlyMode() )
1827cdf0e10cSrcweir {
1828cdf0e10cSrcweir ForceUpdate(rPropertySet);
1829cdf0e10cSrcweir }
1830cdf0e10cSrcweir else
1831cdf0e10cSrcweir {
1832cdf0e10cSrcweir sal_Int32 nTmp;
1833cdf0e10cSrcweir if (SvXMLUnitConverter::convertNumber(nTmp, GetContent()))
1834cdf0e10cSrcweir {
1835cdf0e10cSrcweir Any aAny;
1836cdf0e10cSrcweir aAny <<= nTmp;
1837cdf0e10cSrcweir rPropertySet->setPropertyValue(sPropertyRevision, aAny);
1838cdf0e10cSrcweir }
1839cdf0e10cSrcweir }
1840cdf0e10cSrcweir }
1841cdf0e10cSrcweir }
1842cdf0e10cSrcweir
1843cdf0e10cSrcweir
1844cdf0e10cSrcweir
1845cdf0e10cSrcweir //
1846cdf0e10cSrcweir // DocInfo fields with date/time attributes
1847cdf0e10cSrcweir //
1848cdf0e10cSrcweir
1849cdf0e10cSrcweir TYPEINIT1( XMLDateTimeDocInfoImportContext, XMLSimpleDocInfoImportContext );
1850cdf0e10cSrcweir
XMLDateTimeDocInfoImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName,sal_uInt16 nToken)1851cdf0e10cSrcweir XMLDateTimeDocInfoImportContext::XMLDateTimeDocInfoImportContext(
1852cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp, sal_uInt16 nPrfx,
1853cdf0e10cSrcweir const OUString& sLocalName, sal_uInt16 nToken)
1854cdf0e10cSrcweir : XMLSimpleDocInfoImportContext(rImport, rHlp, nPrfx, sLocalName,nToken, sal_False, sal_False)
1855cdf0e10cSrcweir , sPropertyNumberFormat(RTL_CONSTASCII_USTRINGPARAM(sAPI_number_format))
1856cdf0e10cSrcweir , sPropertyIsDate(RTL_CONSTASCII_USTRINGPARAM(sAPI_is_date))
1857cdf0e10cSrcweir , sPropertyIsFixedLanguage(RTL_CONSTASCII_USTRINGPARAM(sAPI_is_fixed_language))
1858cdf0e10cSrcweir , nFormat(0)
1859cdf0e10cSrcweir , bFormatOK(sal_False)
1860cdf0e10cSrcweir , bIsDefaultLanguage(sal_True)
1861cdf0e10cSrcweir {
1862cdf0e10cSrcweir // we allow processing of EDIT_DURATION here, because import of actual
1863cdf0e10cSrcweir // is not supported anyway. If it was, we'd need an extra import class
1864cdf0e10cSrcweir // because times and time durations are presented differently!
1865cdf0e10cSrcweir
1866cdf0e10cSrcweir bValid = sal_True;
1867cdf0e10cSrcweir switch (nToken)
1868cdf0e10cSrcweir {
1869cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_CREATION_DATE:
1870cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_PRINT_DATE:
1871cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_SAVE_DATE:
1872cdf0e10cSrcweir bIsDate = sal_True;
1873cdf0e10cSrcweir bHasDateTime = sal_True;
1874cdf0e10cSrcweir break;
1875cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_CREATION_TIME:
1876cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_PRINT_TIME:
1877cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_SAVE_TIME:
1878cdf0e10cSrcweir bIsDate = sal_False;
1879cdf0e10cSrcweir bHasDateTime = sal_True;
1880cdf0e10cSrcweir break;
1881cdf0e10cSrcweir case XML_TOK_TEXT_DOCUMENT_EDIT_DURATION:
1882cdf0e10cSrcweir bIsDate = sal_False;
1883cdf0e10cSrcweir bHasDateTime = sal_False;
1884cdf0e10cSrcweir break;
1885cdf0e10cSrcweir default:
1886cdf0e10cSrcweir DBG_ERROR(
1887cdf0e10cSrcweir "XMLDateTimeDocInfoImportContext needs date/time doc. fields");
1888cdf0e10cSrcweir bValid = sal_False;
1889cdf0e10cSrcweir break;
1890cdf0e10cSrcweir }
1891cdf0e10cSrcweir }
1892cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)1893cdf0e10cSrcweir void XMLDateTimeDocInfoImportContext::ProcessAttribute(
1894cdf0e10cSrcweir sal_uInt16 nAttrToken,
1895cdf0e10cSrcweir const OUString& sAttrValue )
1896cdf0e10cSrcweir {
1897cdf0e10cSrcweir switch (nAttrToken)
1898cdf0e10cSrcweir {
1899cdf0e10cSrcweir case XML_TOK_TEXTFIELD_DATA_STYLE_NAME:
1900cdf0e10cSrcweir {
1901cdf0e10cSrcweir sal_Int32 nKey = GetImportHelper().GetDataStyleKey(
1902cdf0e10cSrcweir sAttrValue, &bIsDefaultLanguage);
1903cdf0e10cSrcweir if (-1 != nKey)
1904cdf0e10cSrcweir {
1905cdf0e10cSrcweir nFormat = nKey;
1906cdf0e10cSrcweir bFormatOK = sal_True;
1907cdf0e10cSrcweir }
1908cdf0e10cSrcweir break;
1909cdf0e10cSrcweir }
1910cdf0e10cSrcweir case XML_TOK_TEXTFIELD_FIXED:
1911cdf0e10cSrcweir XMLSimpleDocInfoImportContext::ProcessAttribute(nAttrToken,
1912cdf0e10cSrcweir sAttrValue);
1913cdf0e10cSrcweir break;
1914cdf0e10cSrcweir default:
1915cdf0e10cSrcweir // ignore -> we can't set date/time value anyway!
1916cdf0e10cSrcweir break;
1917cdf0e10cSrcweir }
1918cdf0e10cSrcweir }
1919cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)1920cdf0e10cSrcweir void XMLDateTimeDocInfoImportContext::PrepareField(
1921cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
1922cdf0e10cSrcweir {
1923cdf0e10cSrcweir // process fixed and presentation
1924cdf0e10cSrcweir XMLSimpleDocInfoImportContext::PrepareField(xPropertySet);
1925cdf0e10cSrcweir
1926cdf0e10cSrcweir Any aAny;
1927cdf0e10cSrcweir
1928cdf0e10cSrcweir if (bHasDateTime)
1929cdf0e10cSrcweir {
1930cdf0e10cSrcweir aAny.setValue( &bIsDate, ::getBooleanCppuType());
1931cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyIsDate, aAny);
1932cdf0e10cSrcweir }
1933cdf0e10cSrcweir
1934cdf0e10cSrcweir if (bFormatOK)
1935cdf0e10cSrcweir {
1936cdf0e10cSrcweir aAny <<= nFormat;
1937cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyNumberFormat, aAny);
1938cdf0e10cSrcweir
1939cdf0e10cSrcweir if( xPropertySet->getPropertySetInfo()->
1940cdf0e10cSrcweir hasPropertyByName( sPropertyIsFixedLanguage ) )
1941cdf0e10cSrcweir {
1942cdf0e10cSrcweir sal_Bool bIsFixedLanguage = ! bIsDefaultLanguage;
1943cdf0e10cSrcweir aAny.setValue( &bIsFixedLanguage, ::getBooleanCppuType() );
1944cdf0e10cSrcweir xPropertySet->setPropertyValue( sPropertyIsFixedLanguage, aAny );
1945cdf0e10cSrcweir }
1946cdf0e10cSrcweir }
1947cdf0e10cSrcweir
1948cdf0e10cSrcweir // can't set date/time/duration value! Sorry.
1949cdf0e10cSrcweir }
1950cdf0e10cSrcweir
1951cdf0e10cSrcweir
1952cdf0e10cSrcweir //
1953cdf0e10cSrcweir // user defined docinfo fields
1954cdf0e10cSrcweir //
1955cdf0e10cSrcweir
1956cdf0e10cSrcweir TYPEINIT1( XMLUserDocInfoImportContext, XMLSimpleDocInfoImportContext );
1957cdf0e10cSrcweir
XMLUserDocInfoImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName,sal_uInt16 nToken)1958cdf0e10cSrcweir XMLUserDocInfoImportContext::XMLUserDocInfoImportContext(
1959cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
1960cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName, sal_uInt16 nToken) :
1961cdf0e10cSrcweir XMLSimpleDocInfoImportContext(rImport, rHlp, nPrfx,
1962cdf0e10cSrcweir sLocalName, nToken,
1963cdf0e10cSrcweir sal_False, sal_False)
1964cdf0e10cSrcweir , sPropertyName(RTL_CONSTASCII_USTRINGPARAM(sAPI_name))
1965cdf0e10cSrcweir , sPropertyNumberFormat(RTL_CONSTASCII_USTRINGPARAM(sAPI_number_format))
1966cdf0e10cSrcweir , sPropertyIsFixedLanguage(RTL_CONSTASCII_USTRINGPARAM(sAPI_is_fixed_language))
1967cdf0e10cSrcweir , nFormat(0)
1968cdf0e10cSrcweir , bFormatOK(sal_False)
1969cdf0e10cSrcweir , bIsDefaultLanguage( sal_True )
1970cdf0e10cSrcweir {
1971cdf0e10cSrcweir bValid = sal_False;
1972cdf0e10cSrcweir }
1973cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)1974cdf0e10cSrcweir void XMLUserDocInfoImportContext::ProcessAttribute(
1975cdf0e10cSrcweir sal_uInt16 nAttrToken,
1976cdf0e10cSrcweir const OUString& sAttrValue )
1977cdf0e10cSrcweir {
1978cdf0e10cSrcweir switch (nAttrToken)
1979cdf0e10cSrcweir {
1980cdf0e10cSrcweir case XML_TOK_TEXTFIELD_DATA_STYLE_NAME:
1981cdf0e10cSrcweir {
1982cdf0e10cSrcweir sal_Int32 nKey = GetImportHelper().GetDataStyleKey(
1983cdf0e10cSrcweir sAttrValue, &bIsDefaultLanguage);
1984cdf0e10cSrcweir if (-1 != nKey)
1985cdf0e10cSrcweir {
1986cdf0e10cSrcweir nFormat = nKey;
1987cdf0e10cSrcweir bFormatOK = sal_True;
1988cdf0e10cSrcweir }
1989cdf0e10cSrcweir break;
1990cdf0e10cSrcweir }
1991cdf0e10cSrcweir case XML_TOK_TEXTFIELD_NAME:
1992cdf0e10cSrcweir {
1993cdf0e10cSrcweir if (!bValid)
1994cdf0e10cSrcweir {
1995cdf0e10cSrcweir SetServiceName(OUString::createFromAscii( sAPI_docinfo_custom ) );
1996cdf0e10cSrcweir aName = sAttrValue;
1997cdf0e10cSrcweir bValid = sal_True;
1998cdf0e10cSrcweir }
1999cdf0e10cSrcweir break;
2000cdf0e10cSrcweir }
2001cdf0e10cSrcweir
2002cdf0e10cSrcweir default:
2003cdf0e10cSrcweir XMLSimpleDocInfoImportContext::ProcessAttribute(nAttrToken,
2004cdf0e10cSrcweir sAttrValue);
2005cdf0e10cSrcweir break;
2006cdf0e10cSrcweir }
2007cdf0e10cSrcweir }
2008cdf0e10cSrcweir
PrepareField(const::com::sun::star::uno::Reference<::com::sun::star::beans::XPropertySet> & xPropertySet)2009cdf0e10cSrcweir void XMLUserDocInfoImportContext::PrepareField(
2010cdf0e10cSrcweir const ::com::sun::star::uno::Reference<
2011cdf0e10cSrcweir ::com::sun::star::beans::XPropertySet> & xPropertySet)
2012cdf0e10cSrcweir {
2013cdf0e10cSrcweir uno::Any aAny;
2014cdf0e10cSrcweir if ( aName.getLength() )
2015cdf0e10cSrcweir {
2016cdf0e10cSrcweir aAny <<= aName;
2017cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyName, aAny);
2018cdf0e10cSrcweir }
2019cdf0e10cSrcweir Reference<XPropertySetInfo> xPropertySetInfo(
2020cdf0e10cSrcweir xPropertySet->getPropertySetInfo());
2021cdf0e10cSrcweir if (bFormatOK &&
2022cdf0e10cSrcweir xPropertySetInfo->hasPropertyByName(sPropertyNumberFormat))
2023cdf0e10cSrcweir {
2024cdf0e10cSrcweir aAny <<= nFormat;
2025cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyNumberFormat, aAny);
2026cdf0e10cSrcweir
2027cdf0e10cSrcweir if( xPropertySetInfo->hasPropertyByName( sPropertyIsFixedLanguage ) )
2028cdf0e10cSrcweir {
2029cdf0e10cSrcweir sal_Bool bIsFixedLanguage = ! bIsDefaultLanguage;
2030cdf0e10cSrcweir aAny.setValue( &bIsFixedLanguage, ::getBooleanCppuType() );
2031cdf0e10cSrcweir xPropertySet->setPropertyValue( sPropertyIsFixedLanguage, aAny );
2032cdf0e10cSrcweir }
2033cdf0e10cSrcweir }
2034cdf0e10cSrcweir
2035cdf0e10cSrcweir // call superclass to handle "fixed"
2036cdf0e10cSrcweir XMLSimpleDocInfoImportContext::PrepareField(xPropertySet);
2037cdf0e10cSrcweir }
2038cdf0e10cSrcweir
2039cdf0e10cSrcweir
2040cdf0e10cSrcweir //
2041cdf0e10cSrcweir // import hidden paragraph fields
2042cdf0e10cSrcweir //
2043cdf0e10cSrcweir
2044cdf0e10cSrcweir TYPEINIT1( XMLHiddenParagraphImportContext, XMLTextFieldImportContext );
2045cdf0e10cSrcweir
XMLHiddenParagraphImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)2046cdf0e10cSrcweir XMLHiddenParagraphImportContext::XMLHiddenParagraphImportContext(
2047cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
2048cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName) :
2049cdf0e10cSrcweir XMLTextFieldImportContext(rImport, rHlp, sAPI_hidden_paragraph,
2050cdf0e10cSrcweir nPrfx, sLocalName),
2051cdf0e10cSrcweir sPropertyCondition(RTL_CONSTASCII_USTRINGPARAM(sAPI_condition)),
2052cdf0e10cSrcweir sPropertyIsHidden(RTL_CONSTASCII_USTRINGPARAM(sAPI_is_hidden)),
2053cdf0e10cSrcweir sCondition(),
2054cdf0e10cSrcweir bIsHidden(sal_False)
2055cdf0e10cSrcweir {
2056cdf0e10cSrcweir }
2057cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)2058cdf0e10cSrcweir void XMLHiddenParagraphImportContext::ProcessAttribute(
2059cdf0e10cSrcweir sal_uInt16 nAttrToken,
2060cdf0e10cSrcweir const OUString& sAttrValue )
2061cdf0e10cSrcweir {
2062cdf0e10cSrcweir if (XML_TOK_TEXTFIELD_CONDITION == nAttrToken)
2063cdf0e10cSrcweir {
2064cdf0e10cSrcweir OUString sTmp;
2065cdf0e10cSrcweir sal_uInt16 nPrefix = GetImport().GetNamespaceMap()._GetKeyByAttrName(
2066cdf0e10cSrcweir sAttrValue, &sTmp, sal_False );
2067cdf0e10cSrcweir if( XML_NAMESPACE_OOOW == nPrefix )
2068cdf0e10cSrcweir {
2069cdf0e10cSrcweir sCondition = sTmp;
2070cdf0e10cSrcweir bValid = sal_True;
2071cdf0e10cSrcweir }
2072cdf0e10cSrcweir else
2073cdf0e10cSrcweir sCondition = sAttrValue;
2074cdf0e10cSrcweir }
2075cdf0e10cSrcweir else if (XML_TOK_TEXTFIELD_IS_HIDDEN == nAttrToken)
2076cdf0e10cSrcweir {
2077cdf0e10cSrcweir sal_Bool bTmp;
2078cdf0e10cSrcweir if (SvXMLUnitConverter::convertBool(bTmp, sAttrValue))
2079cdf0e10cSrcweir {
2080cdf0e10cSrcweir bIsHidden = bTmp;
2081cdf0e10cSrcweir }
2082cdf0e10cSrcweir }
2083cdf0e10cSrcweir }
2084cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)2085cdf0e10cSrcweir void XMLHiddenParagraphImportContext::PrepareField(
2086cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
2087cdf0e10cSrcweir {
2088cdf0e10cSrcweir Any aAny;
2089cdf0e10cSrcweir aAny <<= sCondition;
2090cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyCondition, aAny);
2091cdf0e10cSrcweir
2092cdf0e10cSrcweir aAny.setValue( &bIsHidden, ::getBooleanCppuType() );
2093cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyIsHidden, aAny);
2094cdf0e10cSrcweir }
2095cdf0e10cSrcweir
2096cdf0e10cSrcweir
2097cdf0e10cSrcweir
2098cdf0e10cSrcweir //
2099cdf0e10cSrcweir // import conditional text (<text:conditional-text>)
2100cdf0e10cSrcweir //
2101cdf0e10cSrcweir
2102cdf0e10cSrcweir TYPEINIT1( XMLConditionalTextImportContext, XMLTextFieldImportContext );
2103cdf0e10cSrcweir
XMLConditionalTextImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)2104cdf0e10cSrcweir XMLConditionalTextImportContext::XMLConditionalTextImportContext(
2105cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
2106cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName) :
2107cdf0e10cSrcweir XMLTextFieldImportContext(rImport, rHlp, sAPI_conditional_text,
2108cdf0e10cSrcweir nPrfx, sLocalName),
2109cdf0e10cSrcweir sPropertyCondition(RTL_CONSTASCII_USTRINGPARAM(sAPI_condition)),
2110cdf0e10cSrcweir sPropertyTrueContent(RTL_CONSTASCII_USTRINGPARAM(sAPI_true_content)),
2111cdf0e10cSrcweir sPropertyFalseContent(RTL_CONSTASCII_USTRINGPARAM(sAPI_false_content)),
2112cdf0e10cSrcweir sPropertyIsConditionTrue(RTL_CONSTASCII_USTRINGPARAM(sAPI_is_condition_true)),
2113cdf0e10cSrcweir sPropertyCurrentPresentation(RTL_CONSTASCII_USTRINGPARAM(sAPI_current_presentation)),
2114cdf0e10cSrcweir bConditionOK(sal_False),
2115cdf0e10cSrcweir bTrueOK(sal_False),
2116cdf0e10cSrcweir bFalseOK(sal_False),
2117cdf0e10cSrcweir bCurrentValue(sal_False)
2118cdf0e10cSrcweir {
2119cdf0e10cSrcweir }
2120cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)2121cdf0e10cSrcweir void XMLConditionalTextImportContext::ProcessAttribute(
2122cdf0e10cSrcweir sal_uInt16 nAttrToken,
2123cdf0e10cSrcweir const OUString& sAttrValue )
2124cdf0e10cSrcweir {
2125cdf0e10cSrcweir switch (nAttrToken)
2126cdf0e10cSrcweir {
2127cdf0e10cSrcweir case XML_TOK_TEXTFIELD_CONDITION:
2128cdf0e10cSrcweir {
2129cdf0e10cSrcweir OUString sTmp;
2130cdf0e10cSrcweir sal_uInt16 nPrefix = GetImport().GetNamespaceMap().
2131cdf0e10cSrcweir _GetKeyByAttrName( sAttrValue, &sTmp, sal_False );
2132cdf0e10cSrcweir if( XML_NAMESPACE_OOOW == nPrefix )
2133cdf0e10cSrcweir {
2134cdf0e10cSrcweir sCondition = sTmp;
2135cdf0e10cSrcweir bConditionOK = sal_True;
2136cdf0e10cSrcweir }
2137cdf0e10cSrcweir else
2138cdf0e10cSrcweir sCondition = sAttrValue;
2139cdf0e10cSrcweir }
2140cdf0e10cSrcweir break;
2141cdf0e10cSrcweir case XML_TOK_TEXTFIELD_STRING_VALUE_IF_FALSE:
2142cdf0e10cSrcweir sFalseContent = sAttrValue;
2143cdf0e10cSrcweir bFalseOK = sal_True;
2144cdf0e10cSrcweir break;
2145cdf0e10cSrcweir case XML_TOK_TEXTFIELD_STRING_VALUE_IF_TRUE:
2146cdf0e10cSrcweir sTrueContent = sAttrValue;
2147cdf0e10cSrcweir bTrueOK = sal_True;
2148cdf0e10cSrcweir break;
2149cdf0e10cSrcweir case XML_TOK_TEXTFIELD_CURRENT_VALUE:
2150cdf0e10cSrcweir {
2151cdf0e10cSrcweir sal_Bool bTmp;
2152cdf0e10cSrcweir if (SvXMLUnitConverter::convertBool(bTmp, sAttrValue))
2153cdf0e10cSrcweir {
2154cdf0e10cSrcweir bCurrentValue = bTmp;
2155cdf0e10cSrcweir }
2156cdf0e10cSrcweir break;
2157cdf0e10cSrcweir }
2158cdf0e10cSrcweir }
2159cdf0e10cSrcweir
2160cdf0e10cSrcweir bValid = bConditionOK && bFalseOK && bTrueOK;
2161cdf0e10cSrcweir }
2162cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)2163cdf0e10cSrcweir void XMLConditionalTextImportContext::PrepareField(
2164cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
2165cdf0e10cSrcweir {
2166cdf0e10cSrcweir Any aAny;
2167cdf0e10cSrcweir
2168cdf0e10cSrcweir aAny <<= sCondition;
2169cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyCondition, aAny);
2170cdf0e10cSrcweir
2171cdf0e10cSrcweir aAny <<= sFalseContent;
2172cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyFalseContent, aAny);
2173cdf0e10cSrcweir
2174cdf0e10cSrcweir aAny <<= sTrueContent;
2175cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyTrueContent, aAny);
2176cdf0e10cSrcweir
2177cdf0e10cSrcweir aAny.setValue( &bCurrentValue, ::getBooleanCppuType() );
2178cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyIsConditionTrue, aAny);
2179cdf0e10cSrcweir
2180cdf0e10cSrcweir aAny <<= GetContent();
2181cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyCurrentPresentation, aAny);
2182cdf0e10cSrcweir }
2183cdf0e10cSrcweir
2184cdf0e10cSrcweir
2185cdf0e10cSrcweir
2186cdf0e10cSrcweir //
2187cdf0e10cSrcweir // hidden text
2188cdf0e10cSrcweir //
2189cdf0e10cSrcweir
2190cdf0e10cSrcweir TYPEINIT1( XMLHiddenTextImportContext, XMLTextFieldImportContext);
2191cdf0e10cSrcweir
XMLHiddenTextImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)2192cdf0e10cSrcweir XMLHiddenTextImportContext::XMLHiddenTextImportContext(
2193cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
2194cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName) :
2195cdf0e10cSrcweir XMLTextFieldImportContext(rImport, rHlp, sAPI_hidden_text,
2196cdf0e10cSrcweir nPrfx, sLocalName),
2197cdf0e10cSrcweir sPropertyCondition(RTL_CONSTASCII_USTRINGPARAM(sAPI_condition)),
2198cdf0e10cSrcweir sPropertyContent(RTL_CONSTASCII_USTRINGPARAM(sAPI_content)),
2199cdf0e10cSrcweir sPropertyIsHidden(RTL_CONSTASCII_USTRINGPARAM(sAPI_is_hidden)),
2200cdf0e10cSrcweir bConditionOK(sal_False),
2201cdf0e10cSrcweir bStringOK(sal_False),
2202cdf0e10cSrcweir bIsHidden(sal_False)
2203cdf0e10cSrcweir {
2204cdf0e10cSrcweir }
2205cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)2206cdf0e10cSrcweir void XMLHiddenTextImportContext::ProcessAttribute(
2207cdf0e10cSrcweir sal_uInt16 nAttrToken,
2208cdf0e10cSrcweir const OUString& sAttrValue )
2209cdf0e10cSrcweir {
2210cdf0e10cSrcweir switch (nAttrToken)
2211cdf0e10cSrcweir {
2212cdf0e10cSrcweir case XML_TOK_TEXTFIELD_CONDITION:
2213cdf0e10cSrcweir {
2214cdf0e10cSrcweir OUString sTmp;
2215cdf0e10cSrcweir sal_uInt16 nPrefix = GetImport().GetNamespaceMap().
2216cdf0e10cSrcweir _GetKeyByAttrName( sAttrValue, &sTmp, sal_False );
2217cdf0e10cSrcweir if( XML_NAMESPACE_OOOW == nPrefix )
2218cdf0e10cSrcweir {
2219cdf0e10cSrcweir sCondition = sTmp;
2220cdf0e10cSrcweir bConditionOK = sal_True;
2221cdf0e10cSrcweir }
2222cdf0e10cSrcweir else
2223cdf0e10cSrcweir sCondition = sAttrValue;
2224cdf0e10cSrcweir }
2225cdf0e10cSrcweir break;
2226cdf0e10cSrcweir case XML_TOK_TEXTFIELD_STRING_VALUE:
2227cdf0e10cSrcweir sString = sAttrValue;
2228cdf0e10cSrcweir bStringOK = sal_True;
2229cdf0e10cSrcweir break;
2230cdf0e10cSrcweir case XML_TOK_TEXTFIELD_IS_HIDDEN:
2231cdf0e10cSrcweir {
2232cdf0e10cSrcweir sal_Bool bTmp;
2233cdf0e10cSrcweir if (SvXMLUnitConverter::convertBool(bTmp, sAttrValue))
2234cdf0e10cSrcweir {
2235cdf0e10cSrcweir bIsHidden = bTmp;
2236cdf0e10cSrcweir }
2237cdf0e10cSrcweir break;
2238cdf0e10cSrcweir }
2239cdf0e10cSrcweir }
2240cdf0e10cSrcweir
2241cdf0e10cSrcweir bValid = bConditionOK && bStringOK;
2242cdf0e10cSrcweir }
2243cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)2244cdf0e10cSrcweir void XMLHiddenTextImportContext::PrepareField(
2245cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
2246cdf0e10cSrcweir {
2247cdf0e10cSrcweir Any aAny;
2248cdf0e10cSrcweir
2249cdf0e10cSrcweir aAny <<= sCondition;
2250cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyCondition, aAny);
2251cdf0e10cSrcweir
2252cdf0e10cSrcweir aAny <<= sString;
2253cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyContent, aAny);
2254cdf0e10cSrcweir
2255cdf0e10cSrcweir aAny.setValue( &bIsHidden, ::getBooleanCppuType() );
2256cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyIsHidden, aAny);
2257cdf0e10cSrcweir }
2258cdf0e10cSrcweir
2259cdf0e10cSrcweir
2260cdf0e10cSrcweir
2261cdf0e10cSrcweir //
2262cdf0e10cSrcweir // file name fields
2263cdf0e10cSrcweir //
2264cdf0e10cSrcweir
2265cdf0e10cSrcweir TYPEINIT1( XMLFileNameImportContext, XMLTextFieldImportContext );
2266cdf0e10cSrcweir
2267cdf0e10cSrcweir static const SvXMLEnumMapEntry aFilenameDisplayMap[] =
2268cdf0e10cSrcweir {
2269cdf0e10cSrcweir { XML_PATH, FilenameDisplayFormat::PATH },
2270cdf0e10cSrcweir { XML_NAME, FilenameDisplayFormat::NAME },
2271cdf0e10cSrcweir { XML_NAME_AND_EXTENSION, FilenameDisplayFormat::NAME_AND_EXT },
2272cdf0e10cSrcweir { XML_FULL, FilenameDisplayFormat::FULL },
2273cdf0e10cSrcweir { XML_TOKEN_INVALID, 0 }
2274cdf0e10cSrcweir };
2275cdf0e10cSrcweir
XMLFileNameImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)2276cdf0e10cSrcweir XMLFileNameImportContext::XMLFileNameImportContext(
2277cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp, sal_uInt16 nPrfx,
2278cdf0e10cSrcweir const OUString& sLocalName) :
2279cdf0e10cSrcweir XMLTextFieldImportContext(rImport, rHlp, sAPI_file_name,
2280cdf0e10cSrcweir nPrfx, sLocalName),
2281cdf0e10cSrcweir sPropertyFixed(RTL_CONSTASCII_USTRINGPARAM(sAPI_is_fixed)),
2282cdf0e10cSrcweir sPropertyFileFormat(RTL_CONSTASCII_USTRINGPARAM(sAPI_file_format)),
2283cdf0e10cSrcweir sPropertyCurrentPresentation(
2284cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(sAPI_current_presentation)),
2285cdf0e10cSrcweir nFormat(FilenameDisplayFormat::FULL),
2286cdf0e10cSrcweir bFixed(sal_False)
2287cdf0e10cSrcweir {
2288cdf0e10cSrcweir bValid = sal_True;
2289cdf0e10cSrcweir }
2290cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const::rtl::OUString & sAttrValue)2291cdf0e10cSrcweir void XMLFileNameImportContext::ProcessAttribute(
2292cdf0e10cSrcweir sal_uInt16 nAttrToken,
2293cdf0e10cSrcweir const ::rtl::OUString& sAttrValue )
2294cdf0e10cSrcweir {
2295cdf0e10cSrcweir switch (nAttrToken)
2296cdf0e10cSrcweir {
2297cdf0e10cSrcweir case XML_TOK_TEXTFIELD_FIXED:
2298cdf0e10cSrcweir {
2299cdf0e10cSrcweir sal_Bool bTmp;
2300cdf0e10cSrcweir if (SvXMLUnitConverter::convertBool(bTmp, sAttrValue))
2301cdf0e10cSrcweir {
2302cdf0e10cSrcweir bFixed = bTmp;
2303cdf0e10cSrcweir }
2304cdf0e10cSrcweir break;
2305cdf0e10cSrcweir }
2306cdf0e10cSrcweir case XML_TOK_TEXTFIELD_DISPLAY:
2307cdf0e10cSrcweir {
2308cdf0e10cSrcweir sal_uInt16 nTmp;
2309cdf0e10cSrcweir if (SvXMLUnitConverter::convertEnum(nTmp, sAttrValue,
2310cdf0e10cSrcweir aFilenameDisplayMap))
2311cdf0e10cSrcweir {
2312cdf0e10cSrcweir nFormat = (sal_uInt16)nTmp;
2313cdf0e10cSrcweir }
2314cdf0e10cSrcweir break;
2315cdf0e10cSrcweir }
2316cdf0e10cSrcweir default:
2317cdf0e10cSrcweir ; // unkown attribute: ignore
2318cdf0e10cSrcweir break;
2319cdf0e10cSrcweir }
2320cdf0e10cSrcweir }
2321cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)2322cdf0e10cSrcweir void XMLFileNameImportContext::PrepareField(
2323cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
2324cdf0e10cSrcweir {
2325cdf0e10cSrcweir Any aAny;
2326cdf0e10cSrcweir
2327cdf0e10cSrcweir // properties are optional
2328cdf0e10cSrcweir Reference<XPropertySetInfo> xPropertySetInfo(
2329cdf0e10cSrcweir xPropertySet->getPropertySetInfo());
2330cdf0e10cSrcweir
2331cdf0e10cSrcweir if (xPropertySetInfo->hasPropertyByName(sPropertyFixed))
2332cdf0e10cSrcweir {
2333cdf0e10cSrcweir aAny <<= bFixed;
2334cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyFixed, aAny);
2335cdf0e10cSrcweir }
2336cdf0e10cSrcweir
2337cdf0e10cSrcweir if (xPropertySetInfo->hasPropertyByName(sPropertyFileFormat))
2338cdf0e10cSrcweir {
2339cdf0e10cSrcweir aAny <<= nFormat;
2340cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyFileFormat, aAny);
2341cdf0e10cSrcweir }
2342cdf0e10cSrcweir
2343cdf0e10cSrcweir if (xPropertySetInfo->hasPropertyByName(sPropertyCurrentPresentation))
2344cdf0e10cSrcweir {
2345cdf0e10cSrcweir aAny <<= GetContent();
2346cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyCurrentPresentation, aAny);
2347cdf0e10cSrcweir }
2348cdf0e10cSrcweir }
2349cdf0e10cSrcweir
2350cdf0e10cSrcweir
2351cdf0e10cSrcweir //
2352cdf0e10cSrcweir // template name field
2353cdf0e10cSrcweir //
2354cdf0e10cSrcweir
2355cdf0e10cSrcweir static const SvXMLEnumMapEntry aTemplateDisplayMap[] =
2356cdf0e10cSrcweir {
2357cdf0e10cSrcweir { XML_FULL, TemplateDisplayFormat::FULL },
2358cdf0e10cSrcweir { XML_PATH, TemplateDisplayFormat::PATH },
2359cdf0e10cSrcweir { XML_NAME, TemplateDisplayFormat::NAME },
2360cdf0e10cSrcweir { XML_NAME_AND_EXTENSION, TemplateDisplayFormat::NAME_AND_EXT },
2361cdf0e10cSrcweir { XML_AREA, TemplateDisplayFormat::AREA },
2362cdf0e10cSrcweir { XML_TITLE, TemplateDisplayFormat::TITLE },
2363cdf0e10cSrcweir { XML_TOKEN_INVALID, 0 }
2364cdf0e10cSrcweir };
2365cdf0e10cSrcweir
2366cdf0e10cSrcweir TYPEINIT1( XMLTemplateNameImportContext, XMLTextFieldImportContext );
2367cdf0e10cSrcweir
XMLTemplateNameImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)2368cdf0e10cSrcweir XMLTemplateNameImportContext::XMLTemplateNameImportContext(
2369cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp, sal_uInt16 nPrfx,
2370cdf0e10cSrcweir const OUString& sLocalName) :
2371cdf0e10cSrcweir XMLTextFieldImportContext(rImport, rHlp, sAPI_template_name,
2372cdf0e10cSrcweir nPrfx, sLocalName),
2373cdf0e10cSrcweir sPropertyFileFormat(RTL_CONSTASCII_USTRINGPARAM(sAPI_file_format)),
2374cdf0e10cSrcweir nFormat(TemplateDisplayFormat::FULL)
2375cdf0e10cSrcweir {
2376cdf0e10cSrcweir bValid = sal_True;
2377cdf0e10cSrcweir }
2378cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)2379cdf0e10cSrcweir void XMLTemplateNameImportContext::ProcessAttribute(
2380cdf0e10cSrcweir sal_uInt16 nAttrToken,
2381cdf0e10cSrcweir const OUString& sAttrValue )
2382cdf0e10cSrcweir {
2383cdf0e10cSrcweir switch (nAttrToken)
2384cdf0e10cSrcweir {
2385cdf0e10cSrcweir case XML_TOK_TEXTFIELD_DISPLAY:
2386cdf0e10cSrcweir {
2387cdf0e10cSrcweir sal_uInt16 nTmp;
2388cdf0e10cSrcweir if (SvXMLUnitConverter::convertEnum(nTmp, sAttrValue,
2389cdf0e10cSrcweir aTemplateDisplayMap))
2390cdf0e10cSrcweir {
2391cdf0e10cSrcweir nFormat = (sal_uInt16)nTmp;
2392cdf0e10cSrcweir }
2393cdf0e10cSrcweir break;
2394cdf0e10cSrcweir }
2395cdf0e10cSrcweir default:
2396cdf0e10cSrcweir ; // unknown attribute: ignore
2397cdf0e10cSrcweir break;
2398cdf0e10cSrcweir }
2399cdf0e10cSrcweir }
2400cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)2401cdf0e10cSrcweir void XMLTemplateNameImportContext::PrepareField(
2402cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
2403cdf0e10cSrcweir {
2404cdf0e10cSrcweir Any aAny;
2405cdf0e10cSrcweir
2406cdf0e10cSrcweir aAny <<= nFormat;
2407cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyFileFormat, aAny);
2408cdf0e10cSrcweir }
2409cdf0e10cSrcweir
2410cdf0e10cSrcweir
2411cdf0e10cSrcweir //
2412cdf0e10cSrcweir // import chapter fields
2413cdf0e10cSrcweir //
2414cdf0e10cSrcweir
2415cdf0e10cSrcweir TYPEINIT1( XMLChapterImportContext, XMLTextFieldImportContext );
2416cdf0e10cSrcweir
2417cdf0e10cSrcweir static const SvXMLEnumMapEntry aChapterDisplayMap[] =
2418cdf0e10cSrcweir {
2419cdf0e10cSrcweir { XML_NAME, ChapterFormat::NAME },
2420cdf0e10cSrcweir { XML_NUMBER, ChapterFormat::NUMBER },
2421cdf0e10cSrcweir { XML_NUMBER_AND_NAME, ChapterFormat::NAME_NUMBER },
2422cdf0e10cSrcweir { XML_PLAIN_NUMBER_AND_NAME, ChapterFormat::NO_PREFIX_SUFFIX },
2423cdf0e10cSrcweir { XML_PLAIN_NUMBER, ChapterFormat::DIGIT },
2424cdf0e10cSrcweir { XML_TOKEN_INVALID, 0 }
2425cdf0e10cSrcweir };
2426cdf0e10cSrcweir
XMLChapterImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)2427cdf0e10cSrcweir XMLChapterImportContext::XMLChapterImportContext(
2428cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
2429cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName) :
2430cdf0e10cSrcweir XMLTextFieldImportContext(rImport, rHlp, sAPI_chapter,
2431cdf0e10cSrcweir nPrfx, sLocalName),
2432cdf0e10cSrcweir sPropertyChapterFormat(
2433cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(sAPI_chapter_format)),
2434cdf0e10cSrcweir sPropertyLevel(RTL_CONSTASCII_USTRINGPARAM(sAPI_level)),
2435cdf0e10cSrcweir nFormat(ChapterFormat::NAME_NUMBER),
2436cdf0e10cSrcweir nLevel(0)
2437cdf0e10cSrcweir {
2438cdf0e10cSrcweir bValid = sal_True;
2439cdf0e10cSrcweir }
2440cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)2441cdf0e10cSrcweir void XMLChapterImportContext::ProcessAttribute(
2442cdf0e10cSrcweir sal_uInt16 nAttrToken,
2443cdf0e10cSrcweir const OUString& sAttrValue )
2444cdf0e10cSrcweir {
2445cdf0e10cSrcweir switch (nAttrToken)
2446cdf0e10cSrcweir {
2447cdf0e10cSrcweir case XML_TOK_TEXTFIELD_DISPLAY:
2448cdf0e10cSrcweir {
2449cdf0e10cSrcweir sal_uInt16 nTmp;
2450cdf0e10cSrcweir if (SvXMLUnitConverter::convertEnum(nTmp, sAttrValue,
2451cdf0e10cSrcweir aChapterDisplayMap))
2452cdf0e10cSrcweir {
2453cdf0e10cSrcweir nFormat = (sal_Int16)nTmp;
2454cdf0e10cSrcweir }
2455cdf0e10cSrcweir break;
2456cdf0e10cSrcweir }
2457cdf0e10cSrcweir case XML_TOK_TEXTFIELD_OUTLINE_LEVEL:
2458cdf0e10cSrcweir {
2459cdf0e10cSrcweir sal_Int32 nTmp;
2460cdf0e10cSrcweir if (SvXMLUnitConverter::convertNumber(
2461cdf0e10cSrcweir nTmp, sAttrValue, 1,
2462cdf0e10cSrcweir GetImport().GetTextImport()->GetChapterNumbering()->getCount()
2463cdf0e10cSrcweir ))
2464cdf0e10cSrcweir {
2465cdf0e10cSrcweir // API numbers 0..9, we number 1..10
2466cdf0e10cSrcweir nLevel = (sal_Int8)nTmp;
2467cdf0e10cSrcweir nLevel--;
2468cdf0e10cSrcweir }
2469cdf0e10cSrcweir break;
2470cdf0e10cSrcweir }
2471cdf0e10cSrcweir default:
2472cdf0e10cSrcweir ; // unknown attribute: ignore
2473cdf0e10cSrcweir break;
2474cdf0e10cSrcweir }
2475cdf0e10cSrcweir }
2476cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)2477cdf0e10cSrcweir void XMLChapterImportContext::PrepareField(
2478cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
2479cdf0e10cSrcweir {
2480cdf0e10cSrcweir Any aAny;
2481cdf0e10cSrcweir
2482cdf0e10cSrcweir aAny <<= nFormat;
2483cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyChapterFormat, aAny);
2484cdf0e10cSrcweir
2485cdf0e10cSrcweir aAny <<= nLevel;
2486cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyLevel, aAny);
2487cdf0e10cSrcweir }
2488cdf0e10cSrcweir
2489cdf0e10cSrcweir
2490cdf0e10cSrcweir //
2491cdf0e10cSrcweir // counting fields
2492cdf0e10cSrcweir //
2493cdf0e10cSrcweir
2494cdf0e10cSrcweir TYPEINIT1( XMLCountFieldImportContext, XMLTextFieldImportContext );
2495cdf0e10cSrcweir
XMLCountFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName,sal_uInt16 nToken)2496cdf0e10cSrcweir XMLCountFieldImportContext::XMLCountFieldImportContext(
2497cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
2498cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName, sal_uInt16 nToken) :
2499cdf0e10cSrcweir XMLTextFieldImportContext(rImport, rHlp, MapTokenToServiceName(nToken),
2500cdf0e10cSrcweir nPrfx, sLocalName),
2501cdf0e10cSrcweir sPropertyNumberingType(
2502cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(sAPI_numbering_type)),
2503cdf0e10cSrcweir sNumberFormat(),
2504cdf0e10cSrcweir sLetterSync(),
2505cdf0e10cSrcweir bNumberFormatOK(sal_False)
2506cdf0e10cSrcweir {
2507cdf0e10cSrcweir bValid = sal_True;
2508cdf0e10cSrcweir }
2509cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)2510cdf0e10cSrcweir void XMLCountFieldImportContext::ProcessAttribute(
2511cdf0e10cSrcweir sal_uInt16 nAttrToken,
2512cdf0e10cSrcweir const OUString& sAttrValue )
2513cdf0e10cSrcweir {
2514cdf0e10cSrcweir switch (nAttrToken)
2515cdf0e10cSrcweir {
2516cdf0e10cSrcweir case XML_TOK_TEXTFIELD_NUM_FORMAT:
2517cdf0e10cSrcweir sNumberFormat = sAttrValue;
2518cdf0e10cSrcweir bNumberFormatOK = sal_True;
2519cdf0e10cSrcweir break;
2520cdf0e10cSrcweir case XML_TOK_TEXTFIELD_NUM_LETTER_SYNC:
2521cdf0e10cSrcweir sLetterSync = sAttrValue;
2522cdf0e10cSrcweir break;
2523cdf0e10cSrcweir }
2524cdf0e10cSrcweir }
2525cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)2526cdf0e10cSrcweir void XMLCountFieldImportContext::PrepareField(
2527cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
2528cdf0e10cSrcweir {
2529cdf0e10cSrcweir Any aAny;
2530cdf0e10cSrcweir
2531cdf0e10cSrcweir // properties optional
2532cdf0e10cSrcweir // (only page count, but do for all to save common implementation)
2533cdf0e10cSrcweir
2534cdf0e10cSrcweir if (xPropertySet->getPropertySetInfo()->
2535cdf0e10cSrcweir hasPropertyByName(sPropertyNumberingType))
2536cdf0e10cSrcweir {
2537cdf0e10cSrcweir sal_Int16 nNumType;
2538cdf0e10cSrcweir if( bNumberFormatOK )
2539cdf0e10cSrcweir {
2540cdf0e10cSrcweir nNumType= style::NumberingType::ARABIC;
2541cdf0e10cSrcweir GetImport().GetMM100UnitConverter().convertNumFormat( nNumType,
2542cdf0e10cSrcweir sNumberFormat,
2543cdf0e10cSrcweir sLetterSync );
2544cdf0e10cSrcweir }
2545cdf0e10cSrcweir else
2546cdf0e10cSrcweir nNumType = style::NumberingType::PAGE_DESCRIPTOR;
2547cdf0e10cSrcweir aAny <<= nNumType;
2548cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyNumberingType, aAny);
2549cdf0e10cSrcweir }
2550cdf0e10cSrcweir }
2551cdf0e10cSrcweir
MapTokenToServiceName(sal_uInt16 nToken)2552cdf0e10cSrcweir const sal_Char* XMLCountFieldImportContext::MapTokenToServiceName(
2553cdf0e10cSrcweir sal_uInt16 nToken)
2554cdf0e10cSrcweir {
2555cdf0e10cSrcweir const sal_Char* pServiceName = NULL;
2556cdf0e10cSrcweir
2557cdf0e10cSrcweir switch (nToken)
2558cdf0e10cSrcweir {
2559cdf0e10cSrcweir case XML_TOK_TEXT_WORD_COUNT:
2560cdf0e10cSrcweir pServiceName = sAPI_word_count;
2561cdf0e10cSrcweir break;
2562cdf0e10cSrcweir case XML_TOK_TEXT_PARAGRAPH_COUNT:
2563cdf0e10cSrcweir pServiceName = sAPI_paragraph_count;
2564cdf0e10cSrcweir break;
2565cdf0e10cSrcweir case XML_TOK_TEXT_TABLE_COUNT:
2566cdf0e10cSrcweir pServiceName = sAPI_table_count;
2567cdf0e10cSrcweir break;
2568cdf0e10cSrcweir case XML_TOK_TEXT_CHARACTER_COUNT:
2569cdf0e10cSrcweir pServiceName = sAPI_character_count;
2570cdf0e10cSrcweir break;
2571cdf0e10cSrcweir case XML_TOK_TEXT_IMAGE_COUNT:
2572cdf0e10cSrcweir pServiceName = sAPI_graphic_object_count;
2573cdf0e10cSrcweir break;
2574cdf0e10cSrcweir case XML_TOK_TEXT_OBJECT_COUNT:
2575cdf0e10cSrcweir pServiceName = sAPI_embedded_object_count;
2576cdf0e10cSrcweir break;
2577cdf0e10cSrcweir case XML_TOK_TEXT_PAGE_COUNT:
2578cdf0e10cSrcweir pServiceName = sAPI_page_count;
2579cdf0e10cSrcweir break;
2580cdf0e10cSrcweir default:
2581cdf0e10cSrcweir pServiceName = NULL;
2582cdf0e10cSrcweir DBG_ERROR("unknown count field!");
2583cdf0e10cSrcweir break;
2584cdf0e10cSrcweir }
2585cdf0e10cSrcweir
2586cdf0e10cSrcweir return pServiceName;
2587cdf0e10cSrcweir }
2588cdf0e10cSrcweir
2589cdf0e10cSrcweir
2590cdf0e10cSrcweir
2591cdf0e10cSrcweir //
2592cdf0e10cSrcweir // page variable import
2593cdf0e10cSrcweir //
2594cdf0e10cSrcweir
2595cdf0e10cSrcweir TYPEINIT1( XMLPageVarGetFieldImportContext, XMLTextFieldImportContext );
2596cdf0e10cSrcweir
XMLPageVarGetFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)2597cdf0e10cSrcweir XMLPageVarGetFieldImportContext::XMLPageVarGetFieldImportContext(
2598cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
2599cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName) :
2600cdf0e10cSrcweir XMLTextFieldImportContext(rImport, rHlp, sAPI_reference_page_get,
2601cdf0e10cSrcweir nPrfx, sLocalName),
2602cdf0e10cSrcweir sPropertyNumberingType(
2603cdf0e10cSrcweir RTL_CONSTASCII_USTRINGPARAM(sAPI_numbering_type)),
2604cdf0e10cSrcweir sNumberFormat(),
2605cdf0e10cSrcweir sLetterSync(),
2606cdf0e10cSrcweir bNumberFormatOK(sal_False)
2607cdf0e10cSrcweir {
2608cdf0e10cSrcweir bValid = sal_True;
2609cdf0e10cSrcweir }
2610cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)2611cdf0e10cSrcweir void XMLPageVarGetFieldImportContext::ProcessAttribute(
2612cdf0e10cSrcweir sal_uInt16 nAttrToken,
2613cdf0e10cSrcweir const OUString& sAttrValue )
2614cdf0e10cSrcweir {
2615cdf0e10cSrcweir switch (nAttrToken)
2616cdf0e10cSrcweir {
2617cdf0e10cSrcweir case XML_TOK_TEXTFIELD_NUM_FORMAT:
2618cdf0e10cSrcweir sNumberFormat = sAttrValue;
2619cdf0e10cSrcweir bNumberFormatOK = sal_True;
2620cdf0e10cSrcweir break;
2621cdf0e10cSrcweir case XML_TOK_TEXTFIELD_NUM_LETTER_SYNC:
2622cdf0e10cSrcweir sLetterSync = sAttrValue;
2623cdf0e10cSrcweir break;
2624cdf0e10cSrcweir }
2625cdf0e10cSrcweir }
2626cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)2627cdf0e10cSrcweir void XMLPageVarGetFieldImportContext::PrepareField(
2628cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
2629cdf0e10cSrcweir {
2630cdf0e10cSrcweir Any aAny;
2631cdf0e10cSrcweir
2632cdf0e10cSrcweir sal_Int16 nNumType;
2633cdf0e10cSrcweir if( bNumberFormatOK )
2634cdf0e10cSrcweir {
2635cdf0e10cSrcweir nNumType= style::NumberingType::ARABIC;
2636cdf0e10cSrcweir GetImport().GetMM100UnitConverter().convertNumFormat( nNumType,
2637cdf0e10cSrcweir sNumberFormat,
2638cdf0e10cSrcweir sLetterSync );
2639cdf0e10cSrcweir }
2640cdf0e10cSrcweir else
2641cdf0e10cSrcweir nNumType = style::NumberingType::PAGE_DESCRIPTOR;
2642cdf0e10cSrcweir aAny <<= nNumType;
2643cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyNumberingType, aAny);
2644cdf0e10cSrcweir
2645cdf0e10cSrcweir // display old content (#96657#)
2646cdf0e10cSrcweir aAny <<= GetContent();
2647cdf0e10cSrcweir xPropertySet->setPropertyValue(
2648cdf0e10cSrcweir OUString(RTL_CONSTASCII_USTRINGPARAM(sAPI_current_presentation)),
2649cdf0e10cSrcweir aAny );
2650cdf0e10cSrcweir }
2651cdf0e10cSrcweir
2652cdf0e10cSrcweir
2653cdf0e10cSrcweir
2654cdf0e10cSrcweir //
2655cdf0e10cSrcweir // page variable set fields
2656cdf0e10cSrcweir //
2657cdf0e10cSrcweir
2658cdf0e10cSrcweir TYPEINIT1(XMLPageVarSetFieldImportContext, XMLTextFieldImportContext);
2659cdf0e10cSrcweir
XMLPageVarSetFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)2660cdf0e10cSrcweir XMLPageVarSetFieldImportContext::XMLPageVarSetFieldImportContext(
2661cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp, sal_uInt16 nPrfx,
2662cdf0e10cSrcweir const OUString& sLocalName) :
2663cdf0e10cSrcweir XMLTextFieldImportContext(rImport, rHlp, sAPI_reference_page_set,
2664cdf0e10cSrcweir nPrfx, sLocalName),
2665cdf0e10cSrcweir sPropertyOn(RTL_CONSTASCII_USTRINGPARAM(sAPI_on)),
2666cdf0e10cSrcweir sPropertyOffset(RTL_CONSTASCII_USTRINGPARAM(sAPI_offset)),
2667cdf0e10cSrcweir nAdjust(0),
2668cdf0e10cSrcweir bActive(sal_True)
2669cdf0e10cSrcweir {
2670cdf0e10cSrcweir bValid = sal_True;
2671cdf0e10cSrcweir }
2672cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const::rtl::OUString & sAttrValue)2673cdf0e10cSrcweir void XMLPageVarSetFieldImportContext::ProcessAttribute(
2674cdf0e10cSrcweir sal_uInt16 nAttrToken,
2675cdf0e10cSrcweir const ::rtl::OUString& sAttrValue )
2676cdf0e10cSrcweir {
2677cdf0e10cSrcweir switch (nAttrToken)
2678cdf0e10cSrcweir {
2679cdf0e10cSrcweir case XML_TOK_TEXTFIELD_ACTIVE:
2680cdf0e10cSrcweir {
2681cdf0e10cSrcweir sal_Bool bTmp;
2682cdf0e10cSrcweir if (SvXMLUnitConverter::convertBool(bTmp, sAttrValue))
2683cdf0e10cSrcweir {
2684cdf0e10cSrcweir bActive = bTmp;
2685cdf0e10cSrcweir }
2686cdf0e10cSrcweir }
2687cdf0e10cSrcweir case XML_TOK_TEXTFIELD_PAGE_ADJUST:
2688cdf0e10cSrcweir {
2689cdf0e10cSrcweir sal_Int32 nTmp;
2690cdf0e10cSrcweir if (SvXMLUnitConverter::convertNumber(nTmp, sAttrValue))
2691cdf0e10cSrcweir {
2692cdf0e10cSrcweir nAdjust = (sal_Int16)nTmp;
2693cdf0e10cSrcweir }
2694cdf0e10cSrcweir }
2695cdf0e10cSrcweir }
2696cdf0e10cSrcweir }
2697cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)2698cdf0e10cSrcweir void XMLPageVarSetFieldImportContext::PrepareField(
2699cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
2700cdf0e10cSrcweir {
2701cdf0e10cSrcweir Any aAny;
2702cdf0e10cSrcweir
2703cdf0e10cSrcweir aAny.setValue(&bActive, ::getBooleanCppuType());
2704cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyOn, aAny);
2705cdf0e10cSrcweir
2706cdf0e10cSrcweir aAny <<= nAdjust;
2707cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyOffset, aAny);
2708cdf0e10cSrcweir }
2709cdf0e10cSrcweir
2710cdf0e10cSrcweir
2711cdf0e10cSrcweir
2712cdf0e10cSrcweir //
2713cdf0e10cSrcweir // macro fields
2714cdf0e10cSrcweir //
2715cdf0e10cSrcweir
2716cdf0e10cSrcweir TYPEINIT1( XMLMacroFieldImportContext, XMLTextFieldImportContext );
2717cdf0e10cSrcweir
XMLMacroFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)2718cdf0e10cSrcweir XMLMacroFieldImportContext::XMLMacroFieldImportContext(
2719cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp, sal_uInt16 nPrfx,
2720cdf0e10cSrcweir const OUString& sLocalName) :
2721cdf0e10cSrcweir XMLTextFieldImportContext(rImport, rHlp, sAPI_macro,
2722cdf0e10cSrcweir nPrfx, sLocalName),
2723cdf0e10cSrcweir sPropertyHint(RTL_CONSTASCII_USTRINGPARAM(sAPI_hint)),
2724cdf0e10cSrcweir sPropertyMacroName(RTL_CONSTASCII_USTRINGPARAM("MacroName")),
2725cdf0e10cSrcweir sPropertyScriptURL(RTL_CONSTASCII_USTRINGPARAM("ScriptURL")),
2726cdf0e10cSrcweir bDescriptionOK(sal_False)
2727cdf0e10cSrcweir {
2728cdf0e10cSrcweir }
2729cdf0e10cSrcweir
CreateChildContext(sal_uInt16 nPrefix,const OUString & rLocalName,const Reference<XAttributeList> & xAttrList)2730cdf0e10cSrcweir SvXMLImportContext* XMLMacroFieldImportContext::CreateChildContext(
2731cdf0e10cSrcweir sal_uInt16 nPrefix,
2732cdf0e10cSrcweir const OUString& rLocalName,
2733cdf0e10cSrcweir const Reference<XAttributeList> & xAttrList )
2734cdf0e10cSrcweir {
2735cdf0e10cSrcweir SvXMLImportContext* pContext = NULL;
2736cdf0e10cSrcweir
2737cdf0e10cSrcweir if ( (nPrefix == XML_NAMESPACE_OFFICE) &&
2738cdf0e10cSrcweir IsXMLToken( rLocalName, XML_EVENT_LISTENERS ) )
2739cdf0e10cSrcweir {
2740cdf0e10cSrcweir // create events context and remember it!
2741cdf0e10cSrcweir pContext = new XMLEventsImportContext(
2742cdf0e10cSrcweir GetImport(), nPrefix, rLocalName );
2743cdf0e10cSrcweir xEventContext = pContext;
2744cdf0e10cSrcweir bValid = sal_True;
2745cdf0e10cSrcweir }
2746cdf0e10cSrcweir else
2747cdf0e10cSrcweir pContext = SvXMLImportContext::CreateChildContext(
2748cdf0e10cSrcweir nPrefix, rLocalName, xAttrList);
2749cdf0e10cSrcweir
2750cdf0e10cSrcweir return pContext;
2751cdf0e10cSrcweir }
2752cdf0e10cSrcweir
2753cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)2754cdf0e10cSrcweir void XMLMacroFieldImportContext::ProcessAttribute(
2755cdf0e10cSrcweir sal_uInt16 nAttrToken,
2756cdf0e10cSrcweir const OUString& sAttrValue )
2757cdf0e10cSrcweir {
2758cdf0e10cSrcweir switch (nAttrToken)
2759cdf0e10cSrcweir {
2760cdf0e10cSrcweir case XML_TOK_TEXTFIELD_DESCRIPTION:
2761cdf0e10cSrcweir sDescription = sAttrValue;
2762cdf0e10cSrcweir bDescriptionOK = sal_True;
2763cdf0e10cSrcweir break;
2764cdf0e10cSrcweir case XML_TOK_TEXTFIELD_NAME:
2765cdf0e10cSrcweir sMacro = sAttrValue;
2766cdf0e10cSrcweir bValid = sal_True;
2767cdf0e10cSrcweir break;
2768cdf0e10cSrcweir }
2769cdf0e10cSrcweir }
2770cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)2771cdf0e10cSrcweir void XMLMacroFieldImportContext::PrepareField(
2772cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
2773cdf0e10cSrcweir {
2774cdf0e10cSrcweir Any aAny;
2775cdf0e10cSrcweir
2776cdf0e10cSrcweir OUString sOnClick(RTL_CONSTASCII_USTRINGPARAM("OnClick"));
2777cdf0e10cSrcweir OUString sPropertyMacroLibrary(RTL_CONSTASCII_USTRINGPARAM("MacroLibrary"));
2778cdf0e10cSrcweir
2779cdf0e10cSrcweir aAny <<= (bDescriptionOK ? sDescription : GetContent());
2780cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyHint, aAny);
2781cdf0e10cSrcweir
2782cdf0e10cSrcweir // if we have an events child element, we'll look for the OnClick
2783cdf0e10cSrcweir // event if not, it may be an old (pre-638i) document. Then, we'll
2784cdf0e10cSrcweir // have to look at the name attribute.
2785cdf0e10cSrcweir OUString sMacroName;
2786cdf0e10cSrcweir OUString sLibraryName;
2787cdf0e10cSrcweir OUString sScriptURL;
2788cdf0e10cSrcweir
2789cdf0e10cSrcweir if ( xEventContext.Is() )
2790cdf0e10cSrcweir {
2791cdf0e10cSrcweir // get event sequence
2792cdf0e10cSrcweir XMLEventsImportContext* pEvents =
2793cdf0e10cSrcweir (XMLEventsImportContext*)&xEventContext;
2794cdf0e10cSrcweir Sequence<PropertyValue> aValues;
2795cdf0e10cSrcweir pEvents->GetEventSequence( sOnClick, aValues );
2796cdf0e10cSrcweir
2797cdf0e10cSrcweir sal_Int32 nLength = aValues.getLength();
2798cdf0e10cSrcweir for( sal_Int32 i = 0; i < nLength; i++ )
2799cdf0e10cSrcweir {
2800cdf0e10cSrcweir if ( aValues[i].Name.equalsAsciiL( "ScriptType",
2801cdf0e10cSrcweir sizeof("ScriptType")-1 ) )
2802cdf0e10cSrcweir {
2803cdf0e10cSrcweir // ignore ScriptType
2804cdf0e10cSrcweir }
2805cdf0e10cSrcweir else if ( aValues[i].Name.equalsAsciiL( "Library",
2806cdf0e10cSrcweir sizeof("Library")-1 ) )
2807cdf0e10cSrcweir {
2808cdf0e10cSrcweir aValues[i].Value >>= sLibraryName;
2809cdf0e10cSrcweir }
2810cdf0e10cSrcweir else if ( aValues[i].Name.equalsAsciiL( "MacroName",
2811cdf0e10cSrcweir sizeof("MacroName")-1 ) )
2812cdf0e10cSrcweir {
2813cdf0e10cSrcweir aValues[i].Value >>= sMacroName;
2814cdf0e10cSrcweir }
2815cdf0e10cSrcweir if ( aValues[i].Name.equalsAsciiL( "Script",
2816cdf0e10cSrcweir sizeof("Script")-1 ) )
2817cdf0e10cSrcweir {
2818cdf0e10cSrcweir aValues[i].Value >>= sScriptURL;
2819cdf0e10cSrcweir }
2820cdf0e10cSrcweir }
2821cdf0e10cSrcweir }
2822cdf0e10cSrcweir else
2823cdf0e10cSrcweir {
2824cdf0e10cSrcweir // disassemble old-style macro-name: Everything before the
2825cdf0e10cSrcweir // third-last dot is the library
2826cdf0e10cSrcweir sal_Int32 nPos = sMacro.getLength() + 1; // the loop starts with nPos--
2827cdf0e10cSrcweir const sal_Unicode* pBuf = sMacro.getStr();
2828cdf0e10cSrcweir for( sal_Int32 i = 0; (i < 3) && (nPos > 0); i++ )
2829cdf0e10cSrcweir {
2830cdf0e10cSrcweir nPos--;
2831cdf0e10cSrcweir while ( (pBuf[nPos] != '.') && (nPos > 0) )
2832cdf0e10cSrcweir nPos--;
2833cdf0e10cSrcweir }
2834cdf0e10cSrcweir
2835cdf0e10cSrcweir if (nPos > 0)
2836cdf0e10cSrcweir {
2837cdf0e10cSrcweir sLibraryName = sMacro.copy(0, nPos);
2838cdf0e10cSrcweir sMacroName = sMacro.copy(nPos+1);
2839cdf0e10cSrcweir }
2840cdf0e10cSrcweir else
2841cdf0e10cSrcweir sMacroName = sMacro;
2842cdf0e10cSrcweir }
2843cdf0e10cSrcweir
2844cdf0e10cSrcweir aAny <<= sScriptURL;
2845cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyScriptURL, aAny);
2846cdf0e10cSrcweir
2847cdf0e10cSrcweir aAny <<= sMacroName;
2848cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyMacroName, aAny);
2849cdf0e10cSrcweir
2850cdf0e10cSrcweir aAny <<= sLibraryName;
2851cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyMacroLibrary, aAny);
2852cdf0e10cSrcweir }
2853cdf0e10cSrcweir
2854cdf0e10cSrcweir
2855cdf0e10cSrcweir
2856cdf0e10cSrcweir //
2857cdf0e10cSrcweir // reference field import
2858cdf0e10cSrcweir //
2859cdf0e10cSrcweir
2860cdf0e10cSrcweir TYPEINIT1( XMLReferenceFieldImportContext, XMLTextFieldImportContext );
2861cdf0e10cSrcweir
XMLReferenceFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nToken,sal_uInt16 nPrfx,const OUString & sLocalName)2862cdf0e10cSrcweir XMLReferenceFieldImportContext::XMLReferenceFieldImportContext(
2863cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
2864cdf0e10cSrcweir sal_uInt16 nToken, sal_uInt16 nPrfx, const OUString& sLocalName)
2865cdf0e10cSrcweir : XMLTextFieldImportContext(rImport, rHlp, sAPI_get_reference, nPrfx, sLocalName)
2866cdf0e10cSrcweir , sPropertyReferenceFieldPart(RTL_CONSTASCII_USTRINGPARAM(sAPI_reference_field_part))
2867cdf0e10cSrcweir , sPropertyReferenceFieldSource(RTL_CONSTASCII_USTRINGPARAM(sAPI_reference_field_source))
2868cdf0e10cSrcweir , sPropertySourceName(RTL_CONSTASCII_USTRINGPARAM(sAPI_source_name))
2869cdf0e10cSrcweir , sPropertyCurrentPresentation(RTL_CONSTASCII_USTRINGPARAM(sAPI_current_presentation))
2870cdf0e10cSrcweir , nElementToken(nToken)
2871cdf0e10cSrcweir , nType(ReferenceFieldPart::PAGE_DESC)
2872cdf0e10cSrcweir , bNameOK(sal_False)
2873cdf0e10cSrcweir , bTypeOK(sal_False)
2874cdf0e10cSrcweir , bSeqNumberOK(sal_False)
2875cdf0e10cSrcweir {
2876cdf0e10cSrcweir }
2877cdf0e10cSrcweir
2878cdf0e10cSrcweir static SvXMLEnumMapEntry __READONLY_DATA lcl_aReferenceTypeTokenMap[] =
2879cdf0e10cSrcweir {
2880cdf0e10cSrcweir { XML_PAGE, ReferenceFieldPart::PAGE},
2881cdf0e10cSrcweir { XML_CHAPTER, ReferenceFieldPart::CHAPTER },
2882cdf0e10cSrcweir { XML_TEXT, ReferenceFieldPart::TEXT },
2883cdf0e10cSrcweir { XML_DIRECTION, ReferenceFieldPart::UP_DOWN },
2884cdf0e10cSrcweir { XML_CATEGORY_AND_VALUE, ReferenceFieldPart::CATEGORY_AND_NUMBER },
2885cdf0e10cSrcweir { XML_CAPTION, ReferenceFieldPart::ONLY_CAPTION },
2886cdf0e10cSrcweir { XML_VALUE, ReferenceFieldPart::ONLY_SEQUENCE_NUMBER },
2887cdf0e10cSrcweir // --> OD 2007-09-14 #i81002#
2888cdf0e10cSrcweir { XML_NUMBER, ReferenceFieldPart::NUMBER },
2889cdf0e10cSrcweir { XML_NUMBER_NO_SUPERIOR, ReferenceFieldPart::NUMBER_NO_CONTEXT },
2890cdf0e10cSrcweir { XML_NUMBER_ALL_SUPERIOR, ReferenceFieldPart::NUMBER_FULL_CONTEXT },
2891cdf0e10cSrcweir // <--
2892cdf0e10cSrcweir { XML_TOKEN_INVALID, 0 }
2893cdf0e10cSrcweir };
2894cdf0e10cSrcweir
StartElement(const Reference<XAttributeList> & xAttrList)2895cdf0e10cSrcweir void XMLReferenceFieldImportContext::StartElement(
2896cdf0e10cSrcweir const Reference<XAttributeList> & xAttrList)
2897cdf0e10cSrcweir {
2898cdf0e10cSrcweir bTypeOK = sal_True;
2899cdf0e10cSrcweir switch (nElementToken)
2900cdf0e10cSrcweir {
2901cdf0e10cSrcweir case XML_TOK_TEXT_REFERENCE_REF:
2902cdf0e10cSrcweir nSource = ReferenceFieldSource::REFERENCE_MARK;
2903cdf0e10cSrcweir break;
2904cdf0e10cSrcweir case XML_TOK_TEXT_BOOKMARK_REF:
2905cdf0e10cSrcweir nSource = ReferenceFieldSource::BOOKMARK;
2906cdf0e10cSrcweir break;
2907cdf0e10cSrcweir case XML_TOK_TEXT_NOTE_REF:
2908cdf0e10cSrcweir nSource = ReferenceFieldSource::FOOTNOTE;
2909cdf0e10cSrcweir break;
2910cdf0e10cSrcweir case XML_TOK_TEXT_SEQUENCE_REF:
2911cdf0e10cSrcweir nSource = ReferenceFieldSource::SEQUENCE_FIELD;
2912cdf0e10cSrcweir break;
2913cdf0e10cSrcweir default:
2914cdf0e10cSrcweir bTypeOK = sal_False;
2915cdf0e10cSrcweir DBG_ERROR("unknown reference field");
2916cdf0e10cSrcweir break;
2917cdf0e10cSrcweir }
2918cdf0e10cSrcweir
2919cdf0e10cSrcweir XMLTextFieldImportContext::StartElement(xAttrList);
2920cdf0e10cSrcweir }
2921cdf0e10cSrcweir
2922cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)2923cdf0e10cSrcweir void XMLReferenceFieldImportContext::ProcessAttribute(
2924cdf0e10cSrcweir sal_uInt16 nAttrToken,
2925cdf0e10cSrcweir const OUString& sAttrValue )
2926cdf0e10cSrcweir {
2927cdf0e10cSrcweir switch (nAttrToken)
2928cdf0e10cSrcweir {
2929cdf0e10cSrcweir case XML_TOK_TEXTFIELD_NOTE_CLASS:
2930cdf0e10cSrcweir if( IsXMLToken( sAttrValue, XML_ENDNOTE ) )
2931cdf0e10cSrcweir nSource = ReferenceFieldSource::ENDNOTE;
2932cdf0e10cSrcweir break;
2933cdf0e10cSrcweir case XML_TOK_TEXTFIELD_REF_NAME:
2934cdf0e10cSrcweir sName = sAttrValue;
2935cdf0e10cSrcweir bNameOK = sal_True;
2936cdf0e10cSrcweir break;
2937cdf0e10cSrcweir case XML_TOK_TEXTFIELD_REFERENCE_FORMAT:
2938cdf0e10cSrcweir {
2939cdf0e10cSrcweir sal_uInt16 nToken;
2940cdf0e10cSrcweir if (SvXMLUnitConverter::convertEnum(nToken, sAttrValue,
2941cdf0e10cSrcweir lcl_aReferenceTypeTokenMap))
2942cdf0e10cSrcweir {
2943cdf0e10cSrcweir nType = nToken;
2944cdf0e10cSrcweir }
2945cdf0e10cSrcweir
2946cdf0e10cSrcweir // check for sequence-only-attributes
2947cdf0e10cSrcweir if ( (XML_TOK_TEXT_SEQUENCE_REF != nElementToken) &&
2948cdf0e10cSrcweir ( (nType == ReferenceFieldPart::CATEGORY_AND_NUMBER) ||
2949cdf0e10cSrcweir (nType == ReferenceFieldPart::ONLY_CAPTION) ||
2950cdf0e10cSrcweir (nType == ReferenceFieldPart::ONLY_SEQUENCE_NUMBER) ) )
2951cdf0e10cSrcweir {
2952cdf0e10cSrcweir nType = ReferenceFieldPart::PAGE_DESC;
2953cdf0e10cSrcweir }
2954cdf0e10cSrcweir
2955cdf0e10cSrcweir break;
2956cdf0e10cSrcweir }
2957cdf0e10cSrcweir }
2958cdf0e10cSrcweir
2959cdf0e10cSrcweir // bValid: we need proper element type and name
2960cdf0e10cSrcweir bValid = bTypeOK && bNameOK;
2961cdf0e10cSrcweir }
2962cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)2963cdf0e10cSrcweir void XMLReferenceFieldImportContext::PrepareField(
2964cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
2965cdf0e10cSrcweir {
2966cdf0e10cSrcweir Any aAny;
2967cdf0e10cSrcweir
2968cdf0e10cSrcweir aAny <<= nType;
2969cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyReferenceFieldPart, aAny);
2970cdf0e10cSrcweir
2971cdf0e10cSrcweir aAny <<= nSource;
2972cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyReferenceFieldSource, aAny);
2973cdf0e10cSrcweir
2974cdf0e10cSrcweir switch (nElementToken)
2975cdf0e10cSrcweir {
2976cdf0e10cSrcweir case XML_TOK_TEXT_REFERENCE_REF:
2977cdf0e10cSrcweir case XML_TOK_TEXT_BOOKMARK_REF:
2978cdf0e10cSrcweir aAny <<= sName;
2979cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertySourceName, aAny);
2980cdf0e10cSrcweir break;
2981cdf0e10cSrcweir
2982cdf0e10cSrcweir case XML_TOK_TEXT_NOTE_REF:
2983cdf0e10cSrcweir GetImportHelper().ProcessFootnoteReference(sName, xPropertySet);
2984cdf0e10cSrcweir break;
2985cdf0e10cSrcweir
2986cdf0e10cSrcweir case XML_TOK_TEXT_SEQUENCE_REF:
2987cdf0e10cSrcweir GetImportHelper().ProcessSequenceReference(sName, xPropertySet);
2988cdf0e10cSrcweir break;
2989cdf0e10cSrcweir }
2990cdf0e10cSrcweir
2991cdf0e10cSrcweir aAny <<= GetContent();
2992cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyCurrentPresentation, aAny);
2993cdf0e10cSrcweir }
2994cdf0e10cSrcweir
2995cdf0e10cSrcweir
2996cdf0e10cSrcweir
2997cdf0e10cSrcweir //
2998cdf0e10cSrcweir // field declarations container
2999cdf0e10cSrcweir //
3000cdf0e10cSrcweir
3001cdf0e10cSrcweir enum DdeFieldDeclAttrs
3002cdf0e10cSrcweir {
3003cdf0e10cSrcweir XML_TOK_DDEFIELD_NAME,
3004cdf0e10cSrcweir XML_TOK_DDEFIELD_APPLICATION,
3005cdf0e10cSrcweir XML_TOK_DDEFIELD_TOPIC,
3006cdf0e10cSrcweir XML_TOK_DDEFIELD_ITEM,
3007cdf0e10cSrcweir XML_TOK_DDEFIELD_UPDATE
3008cdf0e10cSrcweir };
3009cdf0e10cSrcweir
3010cdf0e10cSrcweir static __FAR_DATA SvXMLTokenMapEntry aDdeDeclAttrTokenMap[] =
3011cdf0e10cSrcweir {
3012cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_NAME, XML_TOK_DDEFIELD_NAME },
3013cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_DDE_APPLICATION, XML_TOK_DDEFIELD_APPLICATION },
3014cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_DDE_TOPIC, XML_TOK_DDEFIELD_TOPIC },
3015cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_DDE_ITEM, XML_TOK_DDEFIELD_ITEM },
3016cdf0e10cSrcweir { XML_NAMESPACE_OFFICE, XML_AUTOMATIC_UPDATE, XML_TOK_DDEFIELD_UPDATE },
3017cdf0e10cSrcweir XML_TOKEN_MAP_END
3018cdf0e10cSrcweir };
3019cdf0e10cSrcweir
3020cdf0e10cSrcweir TYPEINIT1( XMLDdeFieldDeclsImportContext, SvXMLImportContext );
3021cdf0e10cSrcweir
XMLDdeFieldDeclsImportContext(SvXMLImport & rImport,sal_uInt16 nPrfx,const OUString & sLocalName)3022cdf0e10cSrcweir XMLDdeFieldDeclsImportContext::XMLDdeFieldDeclsImportContext(
3023cdf0e10cSrcweir SvXMLImport& rImport, sal_uInt16 nPrfx, const OUString& sLocalName) :
3024cdf0e10cSrcweir SvXMLImportContext(rImport, nPrfx, sLocalName),
3025cdf0e10cSrcweir aTokenMap(aDdeDeclAttrTokenMap)
3026cdf0e10cSrcweir {
3027cdf0e10cSrcweir }
3028cdf0e10cSrcweir
CreateChildContext(sal_uInt16 nPrefix,const OUString & rLocalName,const Reference<XAttributeList> & xAttrList)3029cdf0e10cSrcweir SvXMLImportContext * XMLDdeFieldDeclsImportContext::CreateChildContext(
3030cdf0e10cSrcweir sal_uInt16 nPrefix,
3031cdf0e10cSrcweir const OUString& rLocalName,
3032cdf0e10cSrcweir const Reference<XAttributeList> & xAttrList )
3033cdf0e10cSrcweir {
3034cdf0e10cSrcweir if ( (XML_NAMESPACE_TEXT == nPrefix) &&
3035cdf0e10cSrcweir (IsXMLToken(rLocalName, XML_DDE_CONNECTION_DECL)) )
3036cdf0e10cSrcweir {
3037cdf0e10cSrcweir return new XMLDdeFieldDeclImportContext(GetImport(), nPrefix,
3038cdf0e10cSrcweir rLocalName, aTokenMap);
3039cdf0e10cSrcweir }
3040cdf0e10cSrcweir else
3041cdf0e10cSrcweir {
3042cdf0e10cSrcweir return SvXMLImportContext::CreateChildContext(nPrefix,
3043cdf0e10cSrcweir rLocalName,
3044cdf0e10cSrcweir xAttrList);
3045cdf0e10cSrcweir }
3046cdf0e10cSrcweir }
3047cdf0e10cSrcweir
3048cdf0e10cSrcweir
3049cdf0e10cSrcweir
3050cdf0e10cSrcweir //
3051cdf0e10cSrcweir // import dde field declaration
3052cdf0e10cSrcweir //
3053cdf0e10cSrcweir
3054cdf0e10cSrcweir TYPEINIT1( XMLDdeFieldDeclImportContext, SvXMLImportContext );
3055cdf0e10cSrcweir
XMLDdeFieldDeclImportContext(SvXMLImport & rImport,sal_uInt16 nPrfx,const OUString & sLocalName,const SvXMLTokenMap & rMap)3056cdf0e10cSrcweir XMLDdeFieldDeclImportContext::XMLDdeFieldDeclImportContext(
3057cdf0e10cSrcweir SvXMLImport& rImport, sal_uInt16 nPrfx,
3058cdf0e10cSrcweir const OUString& sLocalName, const SvXMLTokenMap& rMap)
3059cdf0e10cSrcweir : SvXMLImportContext(rImport, nPrfx, sLocalName)
3060cdf0e10cSrcweir , sPropertyIsAutomaticUpdate(RTL_CONSTASCII_USTRINGPARAM(sAPI_is_automatic_update))
3061cdf0e10cSrcweir , sPropertyName(RTL_CONSTASCII_USTRINGPARAM(sAPI_name))
3062cdf0e10cSrcweir , sPropertyDDECommandType(RTL_CONSTASCII_USTRINGPARAM(sAPI_dde_command_type))
3063cdf0e10cSrcweir , sPropertyDDECommandFile(RTL_CONSTASCII_USTRINGPARAM(sAPI_dde_command_file))
3064cdf0e10cSrcweir , sPropertyDDECommandElement(RTL_CONSTASCII_USTRINGPARAM(sAPI_dde_command_element))
3065cdf0e10cSrcweir , rTokenMap(rMap)
3066cdf0e10cSrcweir {
3067cdf0e10cSrcweir DBG_ASSERT(XML_NAMESPACE_TEXT == nPrfx, "wrong prefix");
3068cdf0e10cSrcweir DBG_ASSERT(IsXMLToken(sLocalName, XML_DDE_CONNECTION_DECL), "wrong name");
3069cdf0e10cSrcweir }
3070cdf0e10cSrcweir
StartElement(const Reference<XAttributeList> & xAttrList)3071cdf0e10cSrcweir void XMLDdeFieldDeclImportContext::StartElement(
3072cdf0e10cSrcweir const Reference<XAttributeList> & xAttrList)
3073cdf0e10cSrcweir {
3074cdf0e10cSrcweir OUString sName;
3075cdf0e10cSrcweir OUString sCommandApplication;
3076cdf0e10cSrcweir OUString sCommandTopic;
3077cdf0e10cSrcweir OUString sCommandItem;
3078cdf0e10cSrcweir
3079cdf0e10cSrcweir sal_Bool bUpdate = sal_False;
3080cdf0e10cSrcweir sal_Bool bNameOK = sal_False;
3081cdf0e10cSrcweir sal_Bool bCommandApplicationOK = sal_False;
3082cdf0e10cSrcweir sal_Bool bCommandTopicOK = sal_False;
3083cdf0e10cSrcweir sal_Bool bCommandItemOK = sal_False;
3084cdf0e10cSrcweir
3085cdf0e10cSrcweir // process attributes
3086cdf0e10cSrcweir sal_Int16 nLength = xAttrList->getLength();
3087cdf0e10cSrcweir for(sal_Int16 i=0; i<nLength; i++)
3088cdf0e10cSrcweir {
3089cdf0e10cSrcweir
3090cdf0e10cSrcweir OUString sLocalName;
3091cdf0e10cSrcweir sal_uInt16 nPrefix = GetImport().GetNamespaceMap().
3092cdf0e10cSrcweir GetKeyByAttrName( xAttrList->getNameByIndex(i), &sLocalName );
3093cdf0e10cSrcweir
3094cdf0e10cSrcweir switch (rTokenMap.Get(nPrefix, sLocalName))
3095cdf0e10cSrcweir {
3096cdf0e10cSrcweir case XML_TOK_DDEFIELD_NAME:
3097cdf0e10cSrcweir sName = xAttrList->getValueByIndex(i);
3098cdf0e10cSrcweir bNameOK = sal_True;
3099cdf0e10cSrcweir break;
3100cdf0e10cSrcweir case XML_TOK_DDEFIELD_APPLICATION:
3101cdf0e10cSrcweir sCommandApplication = xAttrList->getValueByIndex(i);
3102cdf0e10cSrcweir bCommandApplicationOK = sal_True;
3103cdf0e10cSrcweir break;
3104cdf0e10cSrcweir case XML_TOK_DDEFIELD_TOPIC:
3105cdf0e10cSrcweir sCommandTopic = xAttrList->getValueByIndex(i);
3106cdf0e10cSrcweir bCommandTopicOK = sal_True;
3107cdf0e10cSrcweir break;
3108cdf0e10cSrcweir case XML_TOK_DDEFIELD_ITEM:
3109cdf0e10cSrcweir sCommandItem = xAttrList->getValueByIndex(i);
3110cdf0e10cSrcweir bCommandItemOK = sal_True;
3111cdf0e10cSrcweir break;
3112cdf0e10cSrcweir case XML_TOK_DDEFIELD_UPDATE:
3113cdf0e10cSrcweir {
3114cdf0e10cSrcweir sal_Bool bTmp;
3115cdf0e10cSrcweir if ( SvXMLUnitConverter::convertBool(
3116cdf0e10cSrcweir bTmp, xAttrList->getValueByIndex(i)) )
3117cdf0e10cSrcweir {
3118cdf0e10cSrcweir bUpdate = bTmp;
3119cdf0e10cSrcweir }
3120cdf0e10cSrcweir break;
3121cdf0e10cSrcweir }
3122cdf0e10cSrcweir }
3123cdf0e10cSrcweir }
3124cdf0e10cSrcweir
3125cdf0e10cSrcweir // valid data?
3126cdf0e10cSrcweir if (bNameOK && bCommandApplicationOK && bCommandTopicOK && bCommandItemOK)
3127cdf0e10cSrcweir {
3128cdf0e10cSrcweir // make service name
3129cdf0e10cSrcweir OUStringBuffer sBuf;
3130cdf0e10cSrcweir sBuf.appendAscii(sAPI_fieldmaster_prefix);
3131cdf0e10cSrcweir sBuf.appendAscii(sAPI_dde);
3132cdf0e10cSrcweir
3133cdf0e10cSrcweir // create DDE TextFieldMaster
3134cdf0e10cSrcweir Reference<XMultiServiceFactory> xFactory(GetImport().GetModel(),
3135cdf0e10cSrcweir UNO_QUERY);
3136cdf0e10cSrcweir if( xFactory.is() )
3137cdf0e10cSrcweir {
3138cdf0e10cSrcweir /* #i6432# There might be multiple occurances of one DDE
3139cdf0e10cSrcweir declaration if it is used in more than one of
3140cdf0e10cSrcweir header/footer/body. createInstance will throw an exception if we
3141cdf0e10cSrcweir try to create the second, third, etc. instance of such a
3142cdf0e10cSrcweir declaration. Thus we ignore the exception. Otherwise this will
3143cdf0e10cSrcweir lead to an unloadable document. */
3144cdf0e10cSrcweir try
3145cdf0e10cSrcweir {
3146cdf0e10cSrcweir Reference<XInterface> xIfc =
3147cdf0e10cSrcweir xFactory->createInstance(sBuf.makeStringAndClear());
3148cdf0e10cSrcweir if( xIfc.is() )
3149cdf0e10cSrcweir {
3150cdf0e10cSrcweir Reference<XPropertySet> xPropSet( xIfc, UNO_QUERY );
3151cdf0e10cSrcweir if (xPropSet.is() &&
3152cdf0e10cSrcweir xPropSet->getPropertySetInfo()->hasPropertyByName(
3153cdf0e10cSrcweir sPropertyDDECommandType))
3154cdf0e10cSrcweir {
3155cdf0e10cSrcweir Any aAny;
3156cdf0e10cSrcweir
3157cdf0e10cSrcweir aAny <<= sName;
3158cdf0e10cSrcweir xPropSet->setPropertyValue(sPropertyName, aAny);
3159cdf0e10cSrcweir
3160cdf0e10cSrcweir aAny <<= sCommandApplication;
3161cdf0e10cSrcweir xPropSet->setPropertyValue(sPropertyDDECommandType, aAny);
3162cdf0e10cSrcweir
3163cdf0e10cSrcweir aAny <<= sCommandTopic;
3164cdf0e10cSrcweir xPropSet->setPropertyValue(sPropertyDDECommandFile, aAny);
3165cdf0e10cSrcweir
3166cdf0e10cSrcweir aAny <<= sCommandItem;
3167cdf0e10cSrcweir xPropSet->setPropertyValue(sPropertyDDECommandElement,
3168cdf0e10cSrcweir aAny);
3169cdf0e10cSrcweir
3170cdf0e10cSrcweir aAny.setValue(&bUpdate, ::getBooleanCppuType());
3171cdf0e10cSrcweir xPropSet->setPropertyValue(sPropertyIsAutomaticUpdate,
3172cdf0e10cSrcweir aAny);
3173cdf0e10cSrcweir }
3174cdf0e10cSrcweir // else: ignore (can't get XPropertySet, or DDE
3175cdf0e10cSrcweir // properties are not supported)
3176cdf0e10cSrcweir }
3177cdf0e10cSrcweir // else: ignore
3178cdf0e10cSrcweir }
3179cdf0e10cSrcweir catch ( const Exception& )
3180cdf0e10cSrcweir {
3181cdf0e10cSrcweir //ignore
3182cdf0e10cSrcweir }
3183cdf0e10cSrcweir }
3184cdf0e10cSrcweir // else: ignore
3185cdf0e10cSrcweir }
3186cdf0e10cSrcweir // else: ignore
3187cdf0e10cSrcweir }
3188cdf0e10cSrcweir
3189cdf0e10cSrcweir
3190cdf0e10cSrcweir
3191cdf0e10cSrcweir //
3192cdf0e10cSrcweir // DDE field import
3193cdf0e10cSrcweir //
3194cdf0e10cSrcweir
3195cdf0e10cSrcweir TYPEINIT1( XMLDdeFieldImportContext, XMLTextFieldImportContext );
3196cdf0e10cSrcweir
XMLDdeFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)3197cdf0e10cSrcweir XMLDdeFieldImportContext::XMLDdeFieldImportContext(
3198cdf0e10cSrcweir SvXMLImport& rImport, XMLTextImportHelper& rHlp,
3199cdf0e10cSrcweir sal_uInt16 nPrfx, const OUString& sLocalName) :
3200cdf0e10cSrcweir XMLTextFieldImportContext(rImport, rHlp, sAPI_dde,
3201cdf0e10cSrcweir nPrfx, sLocalName),
3202cdf0e10cSrcweir sName()
3203cdf0e10cSrcweir ,sPropertyContent(RTL_CONSTASCII_USTRINGPARAM(sAPI_content))
3204cdf0e10cSrcweir {
3205cdf0e10cSrcweir }
3206cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const::rtl::OUString & sAttrValue)3207cdf0e10cSrcweir void XMLDdeFieldImportContext::ProcessAttribute(
3208cdf0e10cSrcweir sal_uInt16 nAttrToken,
3209cdf0e10cSrcweir const ::rtl::OUString& sAttrValue )
3210cdf0e10cSrcweir {
3211cdf0e10cSrcweir if (XML_TOK_TEXTFIELD_CONNECTION_NAME == nAttrToken)
3212cdf0e10cSrcweir {
3213cdf0e10cSrcweir sName = sAttrValue;
3214cdf0e10cSrcweir bValid = sal_True;
3215cdf0e10cSrcweir }
3216cdf0e10cSrcweir }
3217cdf0e10cSrcweir
EndElement()3218cdf0e10cSrcweir void XMLDdeFieldImportContext::EndElement()
3219cdf0e10cSrcweir {
3220cdf0e10cSrcweir if (bValid)
3221cdf0e10cSrcweir {
3222cdf0e10cSrcweir // find master
3223cdf0e10cSrcweir OUStringBuffer sBuf;
3224cdf0e10cSrcweir sBuf.appendAscii(sAPI_fieldmaster_prefix);
3225cdf0e10cSrcweir sBuf.appendAscii(sAPI_dde);
3226cdf0e10cSrcweir sBuf.append(sal_Unicode('.'));
3227cdf0e10cSrcweir sBuf.append(sName);
3228cdf0e10cSrcweir OUString sMasterName = sBuf.makeStringAndClear();
3229cdf0e10cSrcweir
3230cdf0e10cSrcweir Reference<XTextFieldsSupplier> xTextFieldsSupp(GetImport().GetModel(),
3231cdf0e10cSrcweir UNO_QUERY);
3232cdf0e10cSrcweir Reference<container::XNameAccess> xFieldMasterNameAccess(
3233cdf0e10cSrcweir xTextFieldsSupp->getTextFieldMasters(), UNO_QUERY);
3234cdf0e10cSrcweir
3235cdf0e10cSrcweir if (xFieldMasterNameAccess->hasByName(sMasterName))
3236cdf0e10cSrcweir {
3237cdf0e10cSrcweir Reference<XPropertySet> xMaster;
3238cdf0e10cSrcweir Any aAny = xFieldMasterNameAccess->getByName(sMasterName);
3239cdf0e10cSrcweir aAny >>= xMaster;
3240cdf0e10cSrcweir //apply the content to the master
3241cdf0e10cSrcweir xMaster->setPropertyValue( sPropertyContent, uno::makeAny( GetContent()));
3242cdf0e10cSrcweir // master exists: create text field and attach
3243cdf0e10cSrcweir Reference<XPropertySet> xField;
3244cdf0e10cSrcweir sBuf.appendAscii(sAPI_textfield_prefix);
3245cdf0e10cSrcweir sBuf.appendAscii(sAPI_dde);
3246cdf0e10cSrcweir if (CreateField(xField, sBuf.makeStringAndClear()))
3247cdf0e10cSrcweir {
3248cdf0e10cSrcweir Reference<XDependentTextField> xDepTextField(xField,UNO_QUERY);
3249cdf0e10cSrcweir xDepTextField->attachTextFieldMaster(xMaster);
3250cdf0e10cSrcweir
3251cdf0e10cSrcweir // attach field to document
3252cdf0e10cSrcweir Reference<XTextContent> xTextContent(xField, UNO_QUERY);
3253cdf0e10cSrcweir if (xTextContent.is())
3254cdf0e10cSrcweir {
3255cdf0e10cSrcweir GetImportHelper().InsertTextContent(xTextContent);
3256cdf0e10cSrcweir
3257cdf0e10cSrcweir // we're lucky. nothing else to prepare.
3258cdf0e10cSrcweir }
3259cdf0e10cSrcweir // else: fail, because text content could not be created
3260cdf0e10cSrcweir }
3261cdf0e10cSrcweir // else: fail, because field could not be created
3262cdf0e10cSrcweir }
3263cdf0e10cSrcweir // else: fail, because no master was found (faulty document?!)
3264cdf0e10cSrcweir }
3265cdf0e10cSrcweir // not valid: ignore
3266cdf0e10cSrcweir }
3267cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> &)3268cdf0e10cSrcweir void XMLDdeFieldImportContext::PrepareField(
3269cdf0e10cSrcweir const Reference<XPropertySet> &)
3270cdf0e10cSrcweir {
3271cdf0e10cSrcweir // empty, since not needed.
3272cdf0e10cSrcweir }
3273cdf0e10cSrcweir
3274cdf0e10cSrcweir
3275cdf0e10cSrcweir //
3276cdf0e10cSrcweir // sheet name fields
3277cdf0e10cSrcweir //
3278cdf0e10cSrcweir
3279cdf0e10cSrcweir TYPEINIT1(XMLSheetNameImportContext, XMLTextFieldImportContext);
3280cdf0e10cSrcweir
XMLSheetNameImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)3281cdf0e10cSrcweir XMLSheetNameImportContext::XMLSheetNameImportContext(
3282cdf0e10cSrcweir SvXMLImport& rImport,
3283cdf0e10cSrcweir XMLTextImportHelper& rHlp,
3284cdf0e10cSrcweir sal_uInt16 nPrfx,
3285cdf0e10cSrcweir const OUString& sLocalName) :
3286cdf0e10cSrcweir XMLTextFieldImportContext(rImport, rHlp, sAPI_sheet_name,
3287cdf0e10cSrcweir nPrfx, sLocalName)
3288cdf0e10cSrcweir {
3289cdf0e10cSrcweir bValid = sal_True; // always valid!
3290cdf0e10cSrcweir }
3291cdf0e10cSrcweir
ProcessAttribute(sal_uInt16,const::rtl::OUString &)3292cdf0e10cSrcweir void XMLSheetNameImportContext::ProcessAttribute(
3293cdf0e10cSrcweir sal_uInt16,
3294cdf0e10cSrcweir const ::rtl::OUString& )
3295cdf0e10cSrcweir {
3296cdf0e10cSrcweir // no attributes -> nothing to be done
3297cdf0e10cSrcweir }
3298cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> &)3299cdf0e10cSrcweir void XMLSheetNameImportContext::PrepareField(
3300cdf0e10cSrcweir const Reference<XPropertySet> &)
3301cdf0e10cSrcweir {
3302cdf0e10cSrcweir // no attributes -> nothing to be done
3303cdf0e10cSrcweir }
3304cdf0e10cSrcweir
3305cdf0e10cSrcweir
3306cdf0e10cSrcweir //
3307cdf0e10cSrcweir // URL fields (Calc, Impress, Draw)
3308cdf0e10cSrcweir //
3309cdf0e10cSrcweir
3310cdf0e10cSrcweir TYPEINIT1(XMLUrlFieldImportContext, XMLTextFieldImportContext);
3311cdf0e10cSrcweir
XMLUrlFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)3312cdf0e10cSrcweir XMLUrlFieldImportContext::XMLUrlFieldImportContext(
3313cdf0e10cSrcweir SvXMLImport& rImport,
3314cdf0e10cSrcweir XMLTextImportHelper& rHlp,
3315cdf0e10cSrcweir sal_uInt16 nPrfx,
3316cdf0e10cSrcweir const OUString& sLocalName) :
3317cdf0e10cSrcweir XMLTextFieldImportContext(rImport, rHlp, sAPI_url,
3318cdf0e10cSrcweir nPrfx, sLocalName),
3319cdf0e10cSrcweir sPropertyURL(RTL_CONSTASCII_USTRINGPARAM(sAPI_url)),
3320cdf0e10cSrcweir sPropertyTargetFrame(RTL_CONSTASCII_USTRINGPARAM(sAPI_target_frame)),
3321cdf0e10cSrcweir sPropertyRepresentation(RTL_CONSTASCII_USTRINGPARAM(
3322cdf0e10cSrcweir sAPI_representation)),
3323cdf0e10cSrcweir bFrameOK(sal_False)
3324cdf0e10cSrcweir {
3325cdf0e10cSrcweir }
3326cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)3327cdf0e10cSrcweir void XMLUrlFieldImportContext::ProcessAttribute(
3328cdf0e10cSrcweir sal_uInt16 nAttrToken,
3329cdf0e10cSrcweir const OUString& sAttrValue )
3330cdf0e10cSrcweir {
3331cdf0e10cSrcweir switch (nAttrToken)
3332cdf0e10cSrcweir {
3333cdf0e10cSrcweir case XML_TOK_TEXTFIELD_HREF:
3334cdf0e10cSrcweir sURL = GetImport().GetAbsoluteReference( sAttrValue );
3335cdf0e10cSrcweir bValid = sal_True;
3336cdf0e10cSrcweir break;
3337cdf0e10cSrcweir case XML_TOK_TEXTFIELD_TARGET_FRAME:
3338cdf0e10cSrcweir sFrame = sAttrValue;
3339cdf0e10cSrcweir bFrameOK = sal_True;
3340cdf0e10cSrcweir break;
3341cdf0e10cSrcweir default:
3342cdf0e10cSrcweir // ignore
3343cdf0e10cSrcweir break;
3344cdf0e10cSrcweir }
3345cdf0e10cSrcweir }
3346cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)3347cdf0e10cSrcweir void XMLUrlFieldImportContext::PrepareField(
3348cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
3349cdf0e10cSrcweir {
3350cdf0e10cSrcweir Any aAny;
3351cdf0e10cSrcweir
3352cdf0e10cSrcweir aAny <<= sURL;
3353cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyURL, aAny);
3354cdf0e10cSrcweir
3355cdf0e10cSrcweir if (bFrameOK)
3356cdf0e10cSrcweir {
3357cdf0e10cSrcweir aAny <<= sFrame;
3358cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyTargetFrame, aAny);
3359cdf0e10cSrcweir }
3360cdf0e10cSrcweir
3361cdf0e10cSrcweir aAny <<= GetContent();
3362cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyRepresentation, aAny);
3363cdf0e10cSrcweir }
3364cdf0e10cSrcweir
3365cdf0e10cSrcweir
3366cdf0e10cSrcweir TYPEINIT1(XMLBibliographyFieldImportContext, XMLTextFieldImportContext);
3367cdf0e10cSrcweir
3368cdf0e10cSrcweir
XMLBibliographyFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)3369cdf0e10cSrcweir XMLBibliographyFieldImportContext::XMLBibliographyFieldImportContext(
3370cdf0e10cSrcweir SvXMLImport& rImport,
3371cdf0e10cSrcweir XMLTextImportHelper& rHlp,
3372cdf0e10cSrcweir sal_uInt16 nPrfx,
3373cdf0e10cSrcweir const OUString& sLocalName) :
3374cdf0e10cSrcweir XMLTextFieldImportContext(rImport, rHlp, sAPI_bibliography,
3375cdf0e10cSrcweir nPrfx, sLocalName),
3376cdf0e10cSrcweir sPropertyFields(RTL_CONSTASCII_USTRINGPARAM("Fields")),
3377cdf0e10cSrcweir aValues()
3378cdf0e10cSrcweir {
3379cdf0e10cSrcweir bValid = sal_True;
3380cdf0e10cSrcweir }
3381cdf0e10cSrcweir
3382cdf0e10cSrcweir // TODO: this is the same map as is used in the text field export
3383cdf0e10cSrcweir SvXMLEnumMapEntry __READONLY_DATA aBibliographyDataTypeMap[] =
3384cdf0e10cSrcweir {
3385cdf0e10cSrcweir { XML_ARTICLE, BibliographyDataType::ARTICLE },
3386cdf0e10cSrcweir { XML_BOOK, BibliographyDataType::BOOK },
3387cdf0e10cSrcweir { XML_BOOKLET, BibliographyDataType::BOOKLET },
3388cdf0e10cSrcweir { XML_CONFERENCE, BibliographyDataType::CONFERENCE },
3389cdf0e10cSrcweir { XML_CUSTOM1, BibliographyDataType::CUSTOM1 },
3390cdf0e10cSrcweir { XML_CUSTOM2, BibliographyDataType::CUSTOM2 },
3391cdf0e10cSrcweir { XML_CUSTOM3, BibliographyDataType::CUSTOM3 },
3392cdf0e10cSrcweir { XML_CUSTOM4, BibliographyDataType::CUSTOM4 },
3393cdf0e10cSrcweir { XML_CUSTOM5, BibliographyDataType::CUSTOM5 },
3394cdf0e10cSrcweir { XML_EMAIL, BibliographyDataType::EMAIL },
3395cdf0e10cSrcweir { XML_INBOOK, BibliographyDataType::INBOOK },
3396cdf0e10cSrcweir { XML_INCOLLECTION, BibliographyDataType::INCOLLECTION },
3397cdf0e10cSrcweir { XML_INPROCEEDINGS, BibliographyDataType::INPROCEEDINGS },
3398cdf0e10cSrcweir { XML_JOURNAL, BibliographyDataType::JOURNAL },
3399cdf0e10cSrcweir { XML_MANUAL, BibliographyDataType::MANUAL },
3400cdf0e10cSrcweir { XML_MASTERSTHESIS, BibliographyDataType::MASTERSTHESIS },
3401cdf0e10cSrcweir { XML_MISC, BibliographyDataType::MISC },
3402cdf0e10cSrcweir { XML_PHDTHESIS, BibliographyDataType::PHDTHESIS },
3403cdf0e10cSrcweir { XML_PROCEEDINGS, BibliographyDataType::PROCEEDINGS },
3404cdf0e10cSrcweir { XML_TECHREPORT, BibliographyDataType::TECHREPORT },
3405cdf0e10cSrcweir { XML_UNPUBLISHED, BibliographyDataType::UNPUBLISHED },
3406cdf0e10cSrcweir { XML_WWW, BibliographyDataType::WWW },
3407cdf0e10cSrcweir { XML_TOKEN_INVALID, 0 }
3408cdf0e10cSrcweir };
3409cdf0e10cSrcweir
3410cdf0e10cSrcweir
3411cdf0e10cSrcweir // we'll process attributes on our own and forfit the standard
3412cdf0e10cSrcweir // tecfield mechanism, because our attributes have zero overlp with
3413cdf0e10cSrcweir // all the oher textfields.
StartElement(const Reference<XAttributeList> & xAttrList)3414cdf0e10cSrcweir void XMLBibliographyFieldImportContext::StartElement(
3415cdf0e10cSrcweir const Reference<XAttributeList> & xAttrList)
3416cdf0e10cSrcweir {
3417cdf0e10cSrcweir // iterate over attributes
3418cdf0e10cSrcweir sal_Int16 nLength = xAttrList->getLength();
3419cdf0e10cSrcweir for(sal_Int16 i=0; i<nLength; i++) {
3420cdf0e10cSrcweir
3421cdf0e10cSrcweir OUString sLocalName;
3422cdf0e10cSrcweir sal_uInt16 nPrefix = GetImport().GetNamespaceMap().
3423cdf0e10cSrcweir GetKeyByAttrName( xAttrList->getNameByIndex(i), &sLocalName );
3424cdf0e10cSrcweir
3425cdf0e10cSrcweir if (nPrefix == XML_NAMESPACE_TEXT)
3426cdf0e10cSrcweir {
3427cdf0e10cSrcweir PropertyValue aValue;
3428cdf0e10cSrcweir aValue.Name = OUString::createFromAscii(
3429cdf0e10cSrcweir MapBibliographyFieldName(sLocalName));
3430cdf0e10cSrcweir Any aAny;
3431cdf0e10cSrcweir
3432cdf0e10cSrcweir // special treatment for bibliography type
3433cdf0e10cSrcweir // biblio vs bibilio: #96658#; also read old documents
3434cdf0e10cSrcweir if (IsXMLToken(sLocalName, XML_BIBILIOGRAPHIC_TYPE) ||
3435cdf0e10cSrcweir IsXMLToken(sLocalName, XML_BIBLIOGRAPHY_TYPE) )
3436cdf0e10cSrcweir {
3437cdf0e10cSrcweir sal_uInt16 nTmp;
3438cdf0e10cSrcweir if (SvXMLUnitConverter::convertEnum(
3439cdf0e10cSrcweir nTmp, xAttrList->getValueByIndex(i),
3440cdf0e10cSrcweir aBibliographyDataTypeMap))
3441cdf0e10cSrcweir {
3442cdf0e10cSrcweir aAny <<= (sal_Int16)nTmp;
3443cdf0e10cSrcweir aValue.Value = aAny;
3444cdf0e10cSrcweir
3445cdf0e10cSrcweir aValues.push_back(aValue);
3446cdf0e10cSrcweir }
3447cdf0e10cSrcweir }
3448cdf0e10cSrcweir else
3449cdf0e10cSrcweir {
3450cdf0e10cSrcweir aAny <<= xAttrList->getValueByIndex(i);
3451cdf0e10cSrcweir aValue.Value = aAny;
3452cdf0e10cSrcweir
3453cdf0e10cSrcweir aValues.push_back(aValue);
3454cdf0e10cSrcweir }
3455cdf0e10cSrcweir }
3456cdf0e10cSrcweir // else: unknown namespace -> ignore
3457cdf0e10cSrcweir }
3458cdf0e10cSrcweir }
3459cdf0e10cSrcweir
ProcessAttribute(sal_uInt16,const OUString &)3460cdf0e10cSrcweir void XMLBibliographyFieldImportContext::ProcessAttribute(
3461cdf0e10cSrcweir sal_uInt16,
3462cdf0e10cSrcweir const OUString& )
3463cdf0e10cSrcweir {
3464cdf0e10cSrcweir // attributes are handled in StartElement
3465cdf0e10cSrcweir DBG_ERROR("This should not have happened.");
3466cdf0e10cSrcweir }
3467cdf0e10cSrcweir
3468cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)3469cdf0e10cSrcweir void XMLBibliographyFieldImportContext::PrepareField(
3470cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
3471cdf0e10cSrcweir {
3472cdf0e10cSrcweir // convert vector into sequence
3473cdf0e10cSrcweir sal_Int32 nCount = aValues.size();
3474cdf0e10cSrcweir Sequence<PropertyValue> aValueSequence(nCount);
3475cdf0e10cSrcweir for(sal_Int32 i = 0; i < nCount; i++)
3476cdf0e10cSrcweir {
3477cdf0e10cSrcweir aValueSequence[i] = aValues[i];
3478cdf0e10cSrcweir }
3479cdf0e10cSrcweir
3480cdf0e10cSrcweir // set sequence
3481cdf0e10cSrcweir Any aAny;
3482cdf0e10cSrcweir aAny <<= aValueSequence;
3483cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyFields, aAny);
3484cdf0e10cSrcweir }
3485cdf0e10cSrcweir
MapBibliographyFieldName(OUString sName)3486cdf0e10cSrcweir const sal_Char* XMLBibliographyFieldImportContext::MapBibliographyFieldName(
3487cdf0e10cSrcweir OUString sName)
3488cdf0e10cSrcweir {
3489cdf0e10cSrcweir const sal_Char* pName = NULL;
3490cdf0e10cSrcweir
3491cdf0e10cSrcweir if (IsXMLToken(sName, XML_IDENTIFIER))
3492cdf0e10cSrcweir {
3493cdf0e10cSrcweir pName = "Identifier";
3494cdf0e10cSrcweir }
3495cdf0e10cSrcweir else if (IsXMLToken(sName, XML_BIBILIOGRAPHIC_TYPE) ||
3496cdf0e10cSrcweir IsXMLToken(sName, XML_BIBLIOGRAPHY_TYPE) )
3497cdf0e10cSrcweir {
3498cdf0e10cSrcweir // biblio... vs bibilio...: #96658#: also read old documents
3499cdf0e10cSrcweir pName = "BibiliographicType";
3500cdf0e10cSrcweir }
3501cdf0e10cSrcweir else if (IsXMLToken(sName, XML_ADDRESS))
3502cdf0e10cSrcweir {
3503cdf0e10cSrcweir pName = "Address";
3504cdf0e10cSrcweir }
3505cdf0e10cSrcweir else if (IsXMLToken(sName, XML_ANNOTE))
3506cdf0e10cSrcweir {
3507cdf0e10cSrcweir pName = "Annote";
3508cdf0e10cSrcweir }
3509cdf0e10cSrcweir else if (IsXMLToken(sName, XML_AUTHOR))
3510cdf0e10cSrcweir {
3511cdf0e10cSrcweir pName = "Author";
3512cdf0e10cSrcweir }
3513cdf0e10cSrcweir else if (IsXMLToken(sName, XML_BOOKTITLE))
3514cdf0e10cSrcweir {
3515cdf0e10cSrcweir pName = "Booktitle";
3516cdf0e10cSrcweir }
3517cdf0e10cSrcweir else if (IsXMLToken(sName, XML_CHAPTER))
3518cdf0e10cSrcweir {
3519cdf0e10cSrcweir pName = "Chapter";
3520cdf0e10cSrcweir }
3521cdf0e10cSrcweir else if (IsXMLToken(sName, XML_EDITION))
3522cdf0e10cSrcweir {
3523cdf0e10cSrcweir pName = "Edition";
3524cdf0e10cSrcweir }
3525cdf0e10cSrcweir else if (IsXMLToken(sName, XML_EDITOR))
3526cdf0e10cSrcweir {
3527cdf0e10cSrcweir pName = "Editor";
3528cdf0e10cSrcweir }
3529cdf0e10cSrcweir else if (IsXMLToken(sName, XML_HOWPUBLISHED))
3530cdf0e10cSrcweir {
3531cdf0e10cSrcweir pName = "Howpublished";
3532cdf0e10cSrcweir }
3533cdf0e10cSrcweir else if (IsXMLToken(sName, XML_INSTITUTION))
3534cdf0e10cSrcweir {
3535cdf0e10cSrcweir pName = "Institution";
3536cdf0e10cSrcweir }
3537cdf0e10cSrcweir else if (IsXMLToken(sName, XML_JOURNAL))
3538cdf0e10cSrcweir {
3539cdf0e10cSrcweir pName = "Journal";
3540cdf0e10cSrcweir }
3541cdf0e10cSrcweir else if (IsXMLToken(sName, XML_MONTH))
3542cdf0e10cSrcweir {
3543cdf0e10cSrcweir pName = "Month";
3544cdf0e10cSrcweir }
3545cdf0e10cSrcweir else if (IsXMLToken(sName, XML_NOTE))
3546cdf0e10cSrcweir {
3547cdf0e10cSrcweir pName = "Note";
3548cdf0e10cSrcweir }
3549cdf0e10cSrcweir else if (IsXMLToken(sName, XML_NUMBER))
3550cdf0e10cSrcweir {
3551cdf0e10cSrcweir pName = "Number";
3552cdf0e10cSrcweir }
3553cdf0e10cSrcweir else if (IsXMLToken(sName, XML_ORGANIZATIONS))
3554cdf0e10cSrcweir {
3555cdf0e10cSrcweir pName = "Organizations";
3556cdf0e10cSrcweir }
3557cdf0e10cSrcweir else if (IsXMLToken(sName, XML_PAGES))
3558cdf0e10cSrcweir {
3559cdf0e10cSrcweir pName = "Pages";
3560cdf0e10cSrcweir }
3561cdf0e10cSrcweir else if (IsXMLToken(sName, XML_PUBLISHER))
3562cdf0e10cSrcweir {
3563cdf0e10cSrcweir pName = "Publisher";
3564cdf0e10cSrcweir }
3565cdf0e10cSrcweir else if (IsXMLToken(sName, XML_SCHOOL))
3566cdf0e10cSrcweir {
3567cdf0e10cSrcweir pName = "School";
3568cdf0e10cSrcweir }
3569cdf0e10cSrcweir else if (IsXMLToken(sName, XML_SERIES))
3570cdf0e10cSrcweir {
3571cdf0e10cSrcweir pName = "Series";
3572cdf0e10cSrcweir }
3573cdf0e10cSrcweir else if (IsXMLToken(sName, XML_TITLE))
3574cdf0e10cSrcweir {
3575cdf0e10cSrcweir pName = "Title";
3576cdf0e10cSrcweir }
3577cdf0e10cSrcweir else if (IsXMLToken(sName, XML_REPORT_TYPE))
3578cdf0e10cSrcweir {
3579cdf0e10cSrcweir pName = "Report_Type";
3580cdf0e10cSrcweir }
3581cdf0e10cSrcweir else if (IsXMLToken(sName, XML_VOLUME))
3582cdf0e10cSrcweir {
3583cdf0e10cSrcweir pName = "Volume";
3584cdf0e10cSrcweir }
3585cdf0e10cSrcweir else if (IsXMLToken(sName, XML_YEAR))
3586cdf0e10cSrcweir {
3587cdf0e10cSrcweir pName = "Year";
3588cdf0e10cSrcweir }
3589cdf0e10cSrcweir else if (IsXMLToken(sName, XML_URL))
3590cdf0e10cSrcweir {
3591cdf0e10cSrcweir pName = "URL";
3592cdf0e10cSrcweir }
3593cdf0e10cSrcweir else if (IsXMLToken(sName, XML_CUSTOM1))
3594cdf0e10cSrcweir {
3595cdf0e10cSrcweir pName = "Custom1";
3596cdf0e10cSrcweir }
3597cdf0e10cSrcweir else if (IsXMLToken(sName, XML_CUSTOM2))
3598cdf0e10cSrcweir {
3599cdf0e10cSrcweir pName = "Custom2";
3600cdf0e10cSrcweir }
3601cdf0e10cSrcweir else if (IsXMLToken(sName, XML_CUSTOM3))
3602cdf0e10cSrcweir {
3603cdf0e10cSrcweir pName = "Custom3";
3604cdf0e10cSrcweir }
3605cdf0e10cSrcweir else if (IsXMLToken(sName, XML_CUSTOM4))
3606cdf0e10cSrcweir {
3607cdf0e10cSrcweir pName = "Custom4";
3608cdf0e10cSrcweir }
3609cdf0e10cSrcweir else if (IsXMLToken(sName, XML_CUSTOM5))
3610cdf0e10cSrcweir {
3611cdf0e10cSrcweir pName = "Custom5";
3612cdf0e10cSrcweir }
3613cdf0e10cSrcweir else if (IsXMLToken(sName, XML_ISBN))
3614cdf0e10cSrcweir {
3615cdf0e10cSrcweir pName = "ISBN";
3616cdf0e10cSrcweir }
3617cdf0e10cSrcweir else
3618cdf0e10cSrcweir {
3619cdf0e10cSrcweir DBG_ERROR("Unknown bibliography info data");
3620cdf0e10cSrcweir pName = NULL;
3621cdf0e10cSrcweir }
3622cdf0e10cSrcweir
3623cdf0e10cSrcweir return pName;
3624cdf0e10cSrcweir }
3625cdf0e10cSrcweir
3626cdf0e10cSrcweir
3627cdf0e10cSrcweir //
3628cdf0e10cSrcweir // Annotation Field
3629cdf0e10cSrcweir //
3630cdf0e10cSrcweir
3631cdf0e10cSrcweir TYPEINIT1(XMLAnnotationImportContext, XMLTextFieldImportContext);
3632cdf0e10cSrcweir
XMLAnnotationImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nToken,sal_uInt16 nPrfx,const OUString & sLocalName)3633cdf0e10cSrcweir XMLAnnotationImportContext::XMLAnnotationImportContext(
3634cdf0e10cSrcweir SvXMLImport& rImport,
3635cdf0e10cSrcweir XMLTextImportHelper& rHlp,
36363b32dd21SOliver-Rainer Wittmann sal_uInt16 nToken,
3637cdf0e10cSrcweir sal_uInt16 nPrfx,
36383b32dd21SOliver-Rainer Wittmann const OUString& sLocalName)
36393b32dd21SOliver-Rainer Wittmann : XMLTextFieldImportContext(rImport, rHlp, sAPI_annotation, nPrfx, sLocalName)
36403b32dd21SOliver-Rainer Wittmann , sPropertyName(RTL_CONSTASCII_USTRINGPARAM(sAPI_name))
36413b32dd21SOliver-Rainer Wittmann , sPropertyAuthor(RTL_CONSTASCII_USTRINGPARAM(sAPI_author))
36423b32dd21SOliver-Rainer Wittmann , sPropertyInitials(RTL_CONSTASCII_USTRINGPARAM(sAPI_initials))
36433b32dd21SOliver-Rainer Wittmann , sPropertyContent(RTL_CONSTASCII_USTRINGPARAM(sAPI_content))
36443b32dd21SOliver-Rainer Wittmann , sPropertyDate(RTL_CONSTASCII_USTRINGPARAM(sAPI_date_time_value))
36453b32dd21SOliver-Rainer Wittmann , sPropertyTextRange(RTL_CONSTASCII_USTRINGPARAM(sAPI_TextRange))
36463b32dd21SOliver-Rainer Wittmann , m_nToken( nToken )
3647cdf0e10cSrcweir {
3648cdf0e10cSrcweir bValid = sal_True;
3649cdf0e10cSrcweir
3650cdf0e10cSrcweir // remember old list item and block (#91964#) and reset them
3651cdf0e10cSrcweir // for the text frame
3652cdf0e10cSrcweir // do this in the constructor, not in CreateChildContext (#i93392#)
3653cdf0e10cSrcweir GetImport().GetTextImport()->PushListContext();
3654cdf0e10cSrcweir }
3655cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nToken,const OUString & rValue)3656cdf0e10cSrcweir void XMLAnnotationImportContext::ProcessAttribute(
36573b32dd21SOliver-Rainer Wittmann sal_uInt16 nToken,
36583b32dd21SOliver-Rainer Wittmann const OUString& rValue )
3659cdf0e10cSrcweir {
36603b32dd21SOliver-Rainer Wittmann if ( nToken == XML_TOK_TEXT_NAME )
36613b32dd21SOliver-Rainer Wittmann {
36623b32dd21SOliver-Rainer Wittmann aName = rValue;
36633b32dd21SOliver-Rainer Wittmann }
3664cdf0e10cSrcweir }
3665cdf0e10cSrcweir
CreateChildContext(sal_uInt16 nPrefix,const OUString & rLocalName,const Reference<XAttributeList> & xAttrList)3666cdf0e10cSrcweir SvXMLImportContext* XMLAnnotationImportContext::CreateChildContext(
3667cdf0e10cSrcweir sal_uInt16 nPrefix,
3668cdf0e10cSrcweir const OUString& rLocalName,
3669cdf0e10cSrcweir const Reference<XAttributeList >& xAttrList )
3670cdf0e10cSrcweir {
3671cdf0e10cSrcweir SvXMLImportContext *pContext = 0;
3672cdf0e10cSrcweir if( XML_NAMESPACE_DC == nPrefix )
3673cdf0e10cSrcweir {
3674cdf0e10cSrcweir if( IsXMLToken( rLocalName, XML_CREATOR ) )
36753b32dd21SOliver-Rainer Wittmann {
36763b32dd21SOliver-Rainer Wittmann pContext =
36773b32dd21SOliver-Rainer Wittmann new XMLStringBufferImportContext( GetImport(), nPrefix, rLocalName, aAuthorBuffer);
36783b32dd21SOliver-Rainer Wittmann }
3679cdf0e10cSrcweir else if( IsXMLToken( rLocalName, XML_DATE ) )
36803b32dd21SOliver-Rainer Wittmann {
36813b32dd21SOliver-Rainer Wittmann pContext =
36823b32dd21SOliver-Rainer Wittmann new XMLStringBufferImportContext( GetImport(), nPrefix, rLocalName, aDateBuffer);
36833b32dd21SOliver-Rainer Wittmann }
36843b32dd21SOliver-Rainer Wittmann }
36857cba280fSOliver-Rainer Wittmann else if ( XML_NAMESPACE_TEXT == nPrefix
36867cba280fSOliver-Rainer Wittmann || XML_NAMESPACE_TEXT_EXT == nPrefix )
36873b32dd21SOliver-Rainer Wittmann {
36883b32dd21SOliver-Rainer Wittmann if( IsXMLToken( rLocalName, XML_SENDER_INITIALS ) )
36893b32dd21SOliver-Rainer Wittmann {
36903b32dd21SOliver-Rainer Wittmann pContext =
36913b32dd21SOliver-Rainer Wittmann new XMLStringBufferImportContext( GetImport(), nPrefix, rLocalName, aInitialsBuffer);
36923b32dd21SOliver-Rainer Wittmann }
3693cdf0e10cSrcweir }
3694cdf0e10cSrcweir
3695cdf0e10cSrcweir if( !pContext )
3696cdf0e10cSrcweir {
3697cdf0e10cSrcweir try
3698cdf0e10cSrcweir {
3699cdf0e10cSrcweir if ( !mxField.is() )
3700cdf0e10cSrcweir CreateField( mxField, sServicePrefix + GetServiceName() );
3701cdf0e10cSrcweir Any aAny = mxField->getPropertyValue( sPropertyTextRange );
3702cdf0e10cSrcweir Reference< XText > xText;
3703cdf0e10cSrcweir aAny >>= xText;
3704cdf0e10cSrcweir if( xText.is() )
3705cdf0e10cSrcweir {
3706cdf0e10cSrcweir UniReference < XMLTextImportHelper > xTxtImport = GetImport().GetTextImport();
3707cdf0e10cSrcweir if( !mxCursor.is() )
3708cdf0e10cSrcweir {
3709cdf0e10cSrcweir mxOldCursor = xTxtImport->GetCursor();
3710cdf0e10cSrcweir mxCursor = xText->createTextCursor();
3711cdf0e10cSrcweir }
3712cdf0e10cSrcweir
3713cdf0e10cSrcweir if( mxCursor.is() )
3714cdf0e10cSrcweir {
3715cdf0e10cSrcweir xTxtImport->SetCursor( mxCursor );
3716cdf0e10cSrcweir pContext = xTxtImport->CreateTextChildContext( GetImport(), nPrefix, rLocalName, xAttrList );
3717cdf0e10cSrcweir }
3718cdf0e10cSrcweir }
3719cdf0e10cSrcweir }
3720cdf0e10cSrcweir catch ( Exception& )
3721cdf0e10cSrcweir {}
3722cdf0e10cSrcweir
3723cdf0e10cSrcweir if( !pContext )
3724cdf0e10cSrcweir pContext = new XMLStringBufferImportContext(GetImport(), nPrefix, rLocalName, aTextBuffer);
3725cdf0e10cSrcweir }
3726cdf0e10cSrcweir
3727cdf0e10cSrcweir return pContext;
3728cdf0e10cSrcweir }
3729cdf0e10cSrcweir
EndElement()3730cdf0e10cSrcweir void XMLAnnotationImportContext::EndElement()
3731cdf0e10cSrcweir {
3732cdf0e10cSrcweir DBG_ASSERT(GetServiceName().getLength()>0, "no service name for element!");
3733cdf0e10cSrcweir if( mxCursor.is() )
3734cdf0e10cSrcweir {
3735cdf0e10cSrcweir // delete addition newline
3736cdf0e10cSrcweir const OUString aEmpty;
3737cdf0e10cSrcweir mxCursor->gotoEnd( sal_False );
3738cdf0e10cSrcweir mxCursor->goLeft( 1, sal_True );
3739cdf0e10cSrcweir mxCursor->setString( aEmpty );
3740cdf0e10cSrcweir
3741cdf0e10cSrcweir // reset cursor
3742cdf0e10cSrcweir GetImport().GetTextImport()->ResetCursor();
3743cdf0e10cSrcweir }
3744cdf0e10cSrcweir
3745cdf0e10cSrcweir if( mxOldCursor.is() )
3746cdf0e10cSrcweir GetImport().GetTextImport()->SetCursor( mxOldCursor );
3747cdf0e10cSrcweir
3748cdf0e10cSrcweir // reinstall old list item #91964#
3749cdf0e10cSrcweir GetImport().GetTextImport()->PopListContext();
3750cdf0e10cSrcweir
3751cdf0e10cSrcweir if ( bValid )
3752cdf0e10cSrcweir {
3753dec99bbdSOliver-Rainer Wittmann if ( m_nToken == XML_TOK_TEXT_ANNOTATION_END )
3754dec99bbdSOliver-Rainer Wittmann {
3755dec99bbdSOliver-Rainer Wittmann // Search for a previous annotation with the same name.
3756dec99bbdSOliver-Rainer Wittmann uno::Reference< text::XTextContent > xPrevField;
3757dec99bbdSOliver-Rainer Wittmann {
3758dec99bbdSOliver-Rainer Wittmann Reference<XTextFieldsSupplier> xTextFieldsSupplier(GetImport().GetModel(), UNO_QUERY);
3759dec99bbdSOliver-Rainer Wittmann uno::Reference<container::XEnumerationAccess> xFieldsAccess(xTextFieldsSupplier->getTextFields());
3760dec99bbdSOliver-Rainer Wittmann uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration());
3761dec99bbdSOliver-Rainer Wittmann while (xFields->hasMoreElements())
3762dec99bbdSOliver-Rainer Wittmann {
3763dec99bbdSOliver-Rainer Wittmann uno::Reference< beans::XPropertySet > xCurrField(xFields->nextElement(), uno::UNO_QUERY);
3764*9030e3c1SOliver-Rainer Wittmann uno::Reference< beans::XPropertySetInfo > xCurrFieldPropInfo = xCurrField->getPropertySetInfo();
3765*9030e3c1SOliver-Rainer Wittmann if ( xCurrFieldPropInfo->hasPropertyByName( sPropertyName ) )
3766*9030e3c1SOliver-Rainer Wittmann {
3767dec99bbdSOliver-Rainer Wittmann OUString aFieldName;
3768dec99bbdSOliver-Rainer Wittmann xCurrField->getPropertyValue( sPropertyName ) >>= aFieldName;
3769dec99bbdSOliver-Rainer Wittmann if ( aFieldName == aName )
3770dec99bbdSOliver-Rainer Wittmann {
3771dec99bbdSOliver-Rainer Wittmann xPrevField.set( xCurrField, uno::UNO_QUERY );
3772dec99bbdSOliver-Rainer Wittmann break;
3773dec99bbdSOliver-Rainer Wittmann }
3774dec99bbdSOliver-Rainer Wittmann }
3775dec99bbdSOliver-Rainer Wittmann }
3776*9030e3c1SOliver-Rainer Wittmann }
3777dec99bbdSOliver-Rainer Wittmann if ( xPrevField.is() )
3778dec99bbdSOliver-Rainer Wittmann {
3779dec99bbdSOliver-Rainer Wittmann // So we are ending a previous annotation,
3780dec99bbdSOliver-Rainer Wittmann // let's create a text range covering the start and the current position.
3781dec99bbdSOliver-Rainer Wittmann uno::Reference< text::XText > xText = GetImportHelper().GetText();
3782dec99bbdSOliver-Rainer Wittmann uno::Reference< text::XTextCursor > xCursor =
3783332f371aSOliver-Rainer Wittmann xText->createTextCursorByRange( GetImportHelper().GetCursorAsRange() );
3784332f371aSOliver-Rainer Wittmann xCursor->gotoRange( xPrevField->getAnchor(), true );
3785dec99bbdSOliver-Rainer Wittmann uno::Reference< text::XTextRange > xTextRange( xCursor, uno::UNO_QUERY );
3786dec99bbdSOliver-Rainer Wittmann
3787dec99bbdSOliver-Rainer Wittmann xText->insertTextContent( xTextRange, xPrevField, !xCursor->isCollapsed() );
3788dec99bbdSOliver-Rainer Wittmann }
3789dec99bbdSOliver-Rainer Wittmann }
3790dec99bbdSOliver-Rainer Wittmann else
3791dec99bbdSOliver-Rainer Wittmann {
3792cdf0e10cSrcweir if ( mxField.is() || CreateField( mxField, sServicePrefix + GetServiceName() ) )
3793cdf0e10cSrcweir {
3794cdf0e10cSrcweir // set field properties
3795cdf0e10cSrcweir PrepareField( mxField );
3796cdf0e10cSrcweir
3797cdf0e10cSrcweir // attach field to document
3798cdf0e10cSrcweir Reference < XTextContent > xTextContent( mxField, UNO_QUERY );
3799cdf0e10cSrcweir
3800cdf0e10cSrcweir // workaround for #80606#
3801cdf0e10cSrcweir try
3802cdf0e10cSrcweir {
3803cdf0e10cSrcweir GetImportHelper().InsertTextContent( xTextContent );
3804cdf0e10cSrcweir }
3805cdf0e10cSrcweir catch (lang::IllegalArgumentException)
3806cdf0e10cSrcweir {
3807cdf0e10cSrcweir // ignore
3808cdf0e10cSrcweir }
3809cdf0e10cSrcweir }
3810cdf0e10cSrcweir }
3811dec99bbdSOliver-Rainer Wittmann }
3812cdf0e10cSrcweir else
3813cdf0e10cSrcweir GetImportHelper().InsertString(GetContent());
3814cdf0e10cSrcweir }
3815cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)3816cdf0e10cSrcweir void XMLAnnotationImportContext::PrepareField(
3817cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet )
3818cdf0e10cSrcweir {
3819cdf0e10cSrcweir // import (possibly empty) author
3820cdf0e10cSrcweir OUString sAuthor( aAuthorBuffer.makeStringAndClear() );
3821cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyAuthor, makeAny(sAuthor));
3822cdf0e10cSrcweir
38233b32dd21SOliver-Rainer Wittmann // import (possibly empty) initials
38243b32dd21SOliver-Rainer Wittmann OUString sInitials( aInitialsBuffer.makeStringAndClear() );
38253b32dd21SOliver-Rainer Wittmann xPropertySet->setPropertyValue(sPropertyInitials, makeAny(sInitials));
38263b32dd21SOliver-Rainer Wittmann
3827cdf0e10cSrcweir DateTime aDateTime;
3828cdf0e10cSrcweir if (SvXMLUnitConverter::convertDateTime(aDateTime,
3829cdf0e10cSrcweir aDateBuffer.makeStringAndClear()))
3830cdf0e10cSrcweir {
3831cdf0e10cSrcweir /*
3832cdf0e10cSrcweir Date aDate;
3833cdf0e10cSrcweir aDate.Year = aDateTime.Year;
3834cdf0e10cSrcweir aDate.Month = aDateTime.Month;
3835cdf0e10cSrcweir aDate.Day = aDateTime.Day;
3836cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyDate, makeAny(aDate));
3837cdf0e10cSrcweir */
3838cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyDate, makeAny(aDateTime));
3839cdf0e10cSrcweir }
3840cdf0e10cSrcweir
3841cdf0e10cSrcweir OUString sBuffer = aTextBuffer.makeStringAndClear();
38423b32dd21SOliver-Rainer Wittmann if ( sBuffer.getLength() > 0 )
3843cdf0e10cSrcweir {
3844cdf0e10cSrcweir // delete last paragraph mark (if necessary)
3845cdf0e10cSrcweir if (sal_Char(0x0a) == sBuffer.getStr()[sBuffer.getLength()-1])
3846cdf0e10cSrcweir sBuffer = sBuffer.copy(0, sBuffer.getLength()-1);
3847cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyContent, makeAny(sBuffer));
3848cdf0e10cSrcweir }
38493b32dd21SOliver-Rainer Wittmann
38503b32dd21SOliver-Rainer Wittmann if ( aName.getLength() > 0 )
38513b32dd21SOliver-Rainer Wittmann {
38523b32dd21SOliver-Rainer Wittmann xPropertySet->setPropertyValue(sPropertyName, makeAny(aName));
38533b32dd21SOliver-Rainer Wittmann }
3854cdf0e10cSrcweir }
3855cdf0e10cSrcweir
3856cdf0e10cSrcweir
3857cdf0e10cSrcweir
3858cdf0e10cSrcweir //
3859cdf0e10cSrcweir // script field
3860cdf0e10cSrcweir //
3861cdf0e10cSrcweir
3862cdf0e10cSrcweir TYPEINIT1(XMLScriptImportContext, XMLTextFieldImportContext);
3863cdf0e10cSrcweir
XMLScriptImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)3864cdf0e10cSrcweir XMLScriptImportContext::XMLScriptImportContext(
3865cdf0e10cSrcweir SvXMLImport& rImport,
3866cdf0e10cSrcweir XMLTextImportHelper& rHlp,
3867cdf0e10cSrcweir sal_uInt16 nPrfx,
3868cdf0e10cSrcweir const OUString& sLocalName)
3869cdf0e10cSrcweir : XMLTextFieldImportContext(rImport, rHlp, sAPI_script, nPrfx, sLocalName)
3870cdf0e10cSrcweir , sPropertyScriptType(RTL_CONSTASCII_USTRINGPARAM(sAPI_script_type))
3871cdf0e10cSrcweir , sPropertyURLContent(RTL_CONSTASCII_USTRINGPARAM(sAPI_url_content))
3872cdf0e10cSrcweir , sPropertyContent(RTL_CONSTASCII_USTRINGPARAM(sAPI_content))
3873cdf0e10cSrcweir , bContentOK(sal_False)
3874cdf0e10cSrcweir , bScriptTypeOK(sal_False)
3875cdf0e10cSrcweir , bUrlContent(sal_False)
3876cdf0e10cSrcweir {
3877cdf0e10cSrcweir }
3878cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)3879cdf0e10cSrcweir void XMLScriptImportContext::ProcessAttribute(
3880cdf0e10cSrcweir sal_uInt16 nAttrToken,
3881cdf0e10cSrcweir const OUString& sAttrValue )
3882cdf0e10cSrcweir {
3883cdf0e10cSrcweir switch (nAttrToken)
3884cdf0e10cSrcweir {
3885cdf0e10cSrcweir case XML_TOK_TEXTFIELD_HREF:
3886cdf0e10cSrcweir sContent = GetImport().GetAbsoluteReference( sAttrValue );
3887cdf0e10cSrcweir bContentOK = sal_True;
3888cdf0e10cSrcweir break;
3889cdf0e10cSrcweir
3890cdf0e10cSrcweir case XML_TOK_TEXTFIELD_LANGUAGE:
3891cdf0e10cSrcweir sScriptType = sAttrValue;
3892cdf0e10cSrcweir bScriptTypeOK = sal_True;
3893cdf0e10cSrcweir break;
3894cdf0e10cSrcweir
3895cdf0e10cSrcweir default:
3896cdf0e10cSrcweir // ignore
3897cdf0e10cSrcweir break;
3898cdf0e10cSrcweir }
3899cdf0e10cSrcweir
3900cdf0e10cSrcweir // always valid (even without ScriptType; cf- #96531#)
3901cdf0e10cSrcweir bValid = sal_True;
3902cdf0e10cSrcweir }
3903cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)3904cdf0e10cSrcweir void XMLScriptImportContext::PrepareField(
3905cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
3906cdf0e10cSrcweir {
3907cdf0e10cSrcweir Any aAny;
3908cdf0e10cSrcweir
3909cdf0e10cSrcweir // if href attribute was present, we use it. Else we use element content
3910cdf0e10cSrcweir if (! bContentOK)
3911cdf0e10cSrcweir {
3912cdf0e10cSrcweir sContent = GetContent();
3913cdf0e10cSrcweir }
3914cdf0e10cSrcweir aAny <<= sContent;
3915cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyContent, aAny);
3916cdf0e10cSrcweir
3917cdf0e10cSrcweir // URL or script text? We use URL if we have an href-attribute
3918cdf0e10cSrcweir aAny.setValue(&bContentOK, ::getBooleanCppuType());
3919cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyURLContent, aAny);
3920cdf0e10cSrcweir
3921cdf0e10cSrcweir aAny <<= sScriptType;
3922cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyScriptType, aAny);
3923cdf0e10cSrcweir }
3924cdf0e10cSrcweir
3925cdf0e10cSrcweir //
3926cdf0e10cSrcweir // measure field
3927cdf0e10cSrcweir //
3928cdf0e10cSrcweir
3929cdf0e10cSrcweir TYPEINIT1(XMLMeasureFieldImportContext, XMLTextFieldImportContext);
3930cdf0e10cSrcweir
XMLMeasureFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const OUString & sLocalName)3931cdf0e10cSrcweir XMLMeasureFieldImportContext::XMLMeasureFieldImportContext(
3932cdf0e10cSrcweir SvXMLImport& rImport,
3933cdf0e10cSrcweir XMLTextImportHelper& rHlp,
3934cdf0e10cSrcweir sal_uInt16 nPrfx,
3935cdf0e10cSrcweir const OUString& sLocalName) :
3936cdf0e10cSrcweir XMLTextFieldImportContext(rImport, rHlp, sAPI_measure,
3937cdf0e10cSrcweir nPrfx, sLocalName),
3938cdf0e10cSrcweir mnKind( 0 )
3939cdf0e10cSrcweir {
3940cdf0e10cSrcweir }
3941cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const OUString & sAttrValue)3942cdf0e10cSrcweir void XMLMeasureFieldImportContext::ProcessAttribute(
3943cdf0e10cSrcweir sal_uInt16 nAttrToken,
3944cdf0e10cSrcweir const OUString& sAttrValue )
3945cdf0e10cSrcweir {
3946cdf0e10cSrcweir switch (nAttrToken)
3947cdf0e10cSrcweir {
3948cdf0e10cSrcweir case XML_TOK_TEXTFIELD_MEASURE_KIND:
3949cdf0e10cSrcweir if( IsXMLToken( sAttrValue, XML_VALUE ) )
3950cdf0e10cSrcweir {
3951cdf0e10cSrcweir mnKind = 0; bValid = sal_True;
3952cdf0e10cSrcweir }
3953cdf0e10cSrcweir else if( IsXMLToken( sAttrValue, XML_UNIT ) )
3954cdf0e10cSrcweir {
3955cdf0e10cSrcweir mnKind = 1; bValid = sal_True;
3956cdf0e10cSrcweir }
3957cdf0e10cSrcweir else if( IsXMLToken( sAttrValue, XML_GAP ) )
3958cdf0e10cSrcweir {
3959cdf0e10cSrcweir mnKind = 2; bValid = sal_True;
3960cdf0e10cSrcweir }
3961cdf0e10cSrcweir break;
3962cdf0e10cSrcweir }
3963cdf0e10cSrcweir }
3964cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)3965cdf0e10cSrcweir void XMLMeasureFieldImportContext::PrepareField(
3966cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet)
3967cdf0e10cSrcweir {
3968cdf0e10cSrcweir Any aAny;
3969cdf0e10cSrcweir aAny <<= mnKind;
3970cdf0e10cSrcweir xPropertySet->setPropertyValue(OUString::createFromAscii("Kind"), aAny);
3971cdf0e10cSrcweir }
3972cdf0e10cSrcweir
3973cdf0e10cSrcweir
3974cdf0e10cSrcweir
3975cdf0e10cSrcweir //
3976cdf0e10cSrcweir // dropdown field
3977cdf0e10cSrcweir //
3978cdf0e10cSrcweir
3979cdf0e10cSrcweir
3980cdf0e10cSrcweir TYPEINIT1( XMLDropDownFieldImportContext, XMLTextFieldImportContext );
3981cdf0e10cSrcweir
XMLDropDownFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const::rtl::OUString & sLocalName)3982cdf0e10cSrcweir XMLDropDownFieldImportContext::XMLDropDownFieldImportContext(
3983cdf0e10cSrcweir SvXMLImport& rImport,
3984cdf0e10cSrcweir XMLTextImportHelper& rHlp,
3985cdf0e10cSrcweir sal_uInt16 nPrfx,
3986cdf0e10cSrcweir const ::rtl::OUString& sLocalName) :
3987cdf0e10cSrcweir XMLTextFieldImportContext( rImport, rHlp, sAPI_drop_down,
3988cdf0e10cSrcweir nPrfx, sLocalName ),
3989cdf0e10cSrcweir aLabels(),
3990cdf0e10cSrcweir sName(),
3991cdf0e10cSrcweir nSelected( -1 ),
3992cdf0e10cSrcweir bNameOK( false ),
3993cdf0e10cSrcweir bHelpOK(false),
3994cdf0e10cSrcweir bHintOK(false),
3995cdf0e10cSrcweir sPropertyItems( RTL_CONSTASCII_USTRINGPARAM( "Items" ) ),
3996cdf0e10cSrcweir sPropertySelectedItem( RTL_CONSTASCII_USTRINGPARAM( "SelectedItem" ) ),
3997cdf0e10cSrcweir sPropertyName( RTL_CONSTASCII_USTRINGPARAM( "Name" ) ),
3998cdf0e10cSrcweir sPropertyHelp( RTL_CONSTASCII_USTRINGPARAM( "Help" ) ),
3999cdf0e10cSrcweir sPropertyToolTip( RTL_CONSTASCII_USTRINGPARAM( "Tooltip" ) )
4000cdf0e10cSrcweir {
4001cdf0e10cSrcweir bValid = sal_True;
4002cdf0e10cSrcweir }
4003cdf0e10cSrcweir
lcl_ProcessLabel(const SvXMLImport & rImport,const Reference<XAttributeList> & xAttrList,OUString & rLabel,bool & rIsSelected)4004cdf0e10cSrcweir bool lcl_ProcessLabel( const SvXMLImport& rImport,
4005cdf0e10cSrcweir const Reference<XAttributeList>& xAttrList,
4006cdf0e10cSrcweir OUString& rLabel,
4007cdf0e10cSrcweir bool& rIsSelected )
4008cdf0e10cSrcweir {
4009cdf0e10cSrcweir bool bValid = false;
4010cdf0e10cSrcweir sal_Int16 nLength = xAttrList->getLength();
4011cdf0e10cSrcweir for( sal_Int16 n = 0; n < nLength; n++ )
4012cdf0e10cSrcweir {
4013cdf0e10cSrcweir OUString sLocalName;
4014cdf0e10cSrcweir sal_uInt16 nPrefix = rImport.GetNamespaceMap().
4015cdf0e10cSrcweir GetKeyByAttrName( xAttrList->getNameByIndex(n), &sLocalName );
4016cdf0e10cSrcweir OUString sValue = xAttrList->getValueByIndex(n);
4017cdf0e10cSrcweir
4018cdf0e10cSrcweir if( nPrefix == XML_NAMESPACE_TEXT )
4019cdf0e10cSrcweir {
4020cdf0e10cSrcweir if( IsXMLToken( sLocalName, XML_VALUE ) )
4021cdf0e10cSrcweir {
4022cdf0e10cSrcweir rLabel = sValue;
4023cdf0e10cSrcweir bValid = true;
4024cdf0e10cSrcweir }
4025cdf0e10cSrcweir else if( IsXMLToken( sLocalName, XML_CURRENT_SELECTED ) )
4026cdf0e10cSrcweir {
4027cdf0e10cSrcweir sal_Bool bTmp;
4028cdf0e10cSrcweir if( SvXMLUnitConverter::convertBool( bTmp, sValue ) )
4029cdf0e10cSrcweir rIsSelected = bTmp;
4030cdf0e10cSrcweir }
4031cdf0e10cSrcweir }
4032cdf0e10cSrcweir }
4033cdf0e10cSrcweir return bValid;
4034cdf0e10cSrcweir }
4035cdf0e10cSrcweir
CreateChildContext(sal_uInt16 nPrefix,const OUString & rLocalName,const Reference<XAttributeList> & xAttrList)4036cdf0e10cSrcweir SvXMLImportContext* XMLDropDownFieldImportContext::CreateChildContext(
4037cdf0e10cSrcweir sal_uInt16 nPrefix,
4038cdf0e10cSrcweir const OUString& rLocalName,
4039cdf0e10cSrcweir const Reference<XAttributeList>& xAttrList )
4040cdf0e10cSrcweir {
4041cdf0e10cSrcweir if( nPrefix == XML_NAMESPACE_TEXT &&
4042cdf0e10cSrcweir IsXMLToken( rLocalName, XML_LABEL ) )
4043cdf0e10cSrcweir {
4044cdf0e10cSrcweir OUString sLabel;
4045cdf0e10cSrcweir bool bIsSelected = sal_False;
4046cdf0e10cSrcweir if( lcl_ProcessLabel( GetImport(), xAttrList, sLabel, bIsSelected ) )
4047cdf0e10cSrcweir {
4048cdf0e10cSrcweir if( bIsSelected )
4049cdf0e10cSrcweir nSelected = static_cast<sal_Int32>( aLabels.size() );
4050cdf0e10cSrcweir aLabels.push_back( sLabel );
4051cdf0e10cSrcweir }
4052cdf0e10cSrcweir }
4053cdf0e10cSrcweir return new SvXMLImportContext( GetImport(), nPrefix, rLocalName );
4054cdf0e10cSrcweir }
4055cdf0e10cSrcweir
ProcessAttribute(sal_uInt16 nAttrToken,const::rtl::OUString & sAttrValue)4056cdf0e10cSrcweir void XMLDropDownFieldImportContext::ProcessAttribute(
4057cdf0e10cSrcweir sal_uInt16 nAttrToken,
4058cdf0e10cSrcweir const ::rtl::OUString& sAttrValue )
4059cdf0e10cSrcweir {
4060cdf0e10cSrcweir if( nAttrToken == XML_TOK_TEXTFIELD_NAME )
4061cdf0e10cSrcweir {
4062cdf0e10cSrcweir sName = sAttrValue;
4063cdf0e10cSrcweir bNameOK = true;
4064cdf0e10cSrcweir }
4065cdf0e10cSrcweir else if (nAttrToken == XML_TOK_TEXTFIELD_HELP)
4066cdf0e10cSrcweir {
4067cdf0e10cSrcweir sHelp = sAttrValue;
4068cdf0e10cSrcweir bHelpOK = true;
4069cdf0e10cSrcweir }
4070cdf0e10cSrcweir else if (nAttrToken == XML_TOK_TEXTFIELD_HINT)
4071cdf0e10cSrcweir {
4072cdf0e10cSrcweir sHint = sAttrValue;
4073cdf0e10cSrcweir bHintOK = true;
4074cdf0e10cSrcweir }
4075cdf0e10cSrcweir }
4076cdf0e10cSrcweir
PrepareField(const Reference<XPropertySet> & xPropertySet)4077cdf0e10cSrcweir void XMLDropDownFieldImportContext::PrepareField(
4078cdf0e10cSrcweir const Reference<XPropertySet>& xPropertySet)
4079cdf0e10cSrcweir {
4080cdf0e10cSrcweir // create sequence
4081cdf0e10cSrcweir sal_Int32 nLength = static_cast<sal_Int32>( aLabels.size() );
4082cdf0e10cSrcweir Sequence<OUString> aSequence( nLength );
4083cdf0e10cSrcweir OUString* pSequence = aSequence.getArray();
4084cdf0e10cSrcweir for( sal_Int32 n = 0; n < nLength; n++ )
4085cdf0e10cSrcweir pSequence[n] = aLabels[n];
4086cdf0e10cSrcweir
4087cdf0e10cSrcweir // now set values:
4088cdf0e10cSrcweir Any aAny;
4089cdf0e10cSrcweir
4090cdf0e10cSrcweir aAny <<= aSequence;
4091cdf0e10cSrcweir xPropertySet->setPropertyValue( sPropertyItems, aAny );
4092cdf0e10cSrcweir
4093cdf0e10cSrcweir if( nSelected >= 0 && nSelected < nLength )
4094cdf0e10cSrcweir {
4095cdf0e10cSrcweir aAny <<= pSequence[nSelected];
4096cdf0e10cSrcweir xPropertySet->setPropertyValue( sPropertySelectedItem, aAny );
4097cdf0e10cSrcweir }
4098cdf0e10cSrcweir
4099cdf0e10cSrcweir // set name
4100cdf0e10cSrcweir if( bNameOK )
4101cdf0e10cSrcweir {
4102cdf0e10cSrcweir aAny <<= sName;
4103cdf0e10cSrcweir xPropertySet->setPropertyValue( sPropertyName, aAny );
4104cdf0e10cSrcweir }
4105cdf0e10cSrcweir // set help
4106cdf0e10cSrcweir if( bHelpOK )
4107cdf0e10cSrcweir {
4108cdf0e10cSrcweir aAny <<= sHelp;
4109cdf0e10cSrcweir xPropertySet->setPropertyValue( sPropertyHelp, aAny );
4110cdf0e10cSrcweir }
4111cdf0e10cSrcweir // set hint
4112cdf0e10cSrcweir if( bHintOK )
4113cdf0e10cSrcweir {
4114cdf0e10cSrcweir aAny <<= sHint;
4115cdf0e10cSrcweir xPropertySet->setPropertyValue( sPropertyToolTip, aAny );
4116cdf0e10cSrcweir }
4117cdf0e10cSrcweir
4118cdf0e10cSrcweir }
4119cdf0e10cSrcweir
4120cdf0e10cSrcweir /** import header fields (<draw:header>) */
4121cdf0e10cSrcweir TYPEINIT1( XMLHeaderFieldImportContext, XMLTextFieldImportContext );
4122cdf0e10cSrcweir
XMLHeaderFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const::rtl::OUString & sLocalName)4123cdf0e10cSrcweir XMLHeaderFieldImportContext::XMLHeaderFieldImportContext(
4124cdf0e10cSrcweir SvXMLImport& rImport, /// XML Import
4125cdf0e10cSrcweir XMLTextImportHelper& rHlp, /// Text import helper
4126cdf0e10cSrcweir sal_uInt16 nPrfx, /// namespace prefix
4127cdf0e10cSrcweir const ::rtl::OUString& sLocalName) /// element name w/o prefix
4128cdf0e10cSrcweir : XMLTextFieldImportContext(rImport, rHlp, sAPI_header, nPrfx, sLocalName )
4129cdf0e10cSrcweir {
4130cdf0e10cSrcweir sServicePrefix = OUString::createFromAscii( sAPI_presentation_prefix );
4131cdf0e10cSrcweir bValid = sal_True;
4132cdf0e10cSrcweir }
4133cdf0e10cSrcweir
4134cdf0e10cSrcweir /// process attribute values
ProcessAttribute(sal_uInt16,const::rtl::OUString &)4135cdf0e10cSrcweir void XMLHeaderFieldImportContext::ProcessAttribute( sal_uInt16, const ::rtl::OUString& )
4136cdf0e10cSrcweir {
4137cdf0e10cSrcweir }
4138cdf0e10cSrcweir
4139cdf0e10cSrcweir /// prepare XTextField for insertion into document
PrepareField(const Reference<XPropertySet> &)4140cdf0e10cSrcweir void XMLHeaderFieldImportContext::PrepareField(const Reference<XPropertySet> &)
4141cdf0e10cSrcweir {
4142cdf0e10cSrcweir }
4143cdf0e10cSrcweir
4144cdf0e10cSrcweir /** import footer fields (<draw:footer>) */
4145cdf0e10cSrcweir TYPEINIT1( XMLFooterFieldImportContext, XMLTextFieldImportContext );
4146cdf0e10cSrcweir
XMLFooterFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const::rtl::OUString & sLocalName)4147cdf0e10cSrcweir XMLFooterFieldImportContext::XMLFooterFieldImportContext(
4148cdf0e10cSrcweir SvXMLImport& rImport, /// XML Import
4149cdf0e10cSrcweir XMLTextImportHelper& rHlp, /// Text import helper
4150cdf0e10cSrcweir sal_uInt16 nPrfx, /// namespace prefix
4151cdf0e10cSrcweir const ::rtl::OUString& sLocalName) /// element name w/o prefix
4152cdf0e10cSrcweir : XMLTextFieldImportContext(rImport, rHlp, sAPI_footer, nPrfx, sLocalName )
4153cdf0e10cSrcweir {
4154cdf0e10cSrcweir sServicePrefix = OUString::createFromAscii( sAPI_presentation_prefix );
4155cdf0e10cSrcweir bValid = sal_True;
4156cdf0e10cSrcweir }
4157cdf0e10cSrcweir
4158cdf0e10cSrcweir /// process attribute values
ProcessAttribute(sal_uInt16,const::rtl::OUString &)4159cdf0e10cSrcweir void XMLFooterFieldImportContext::ProcessAttribute( sal_uInt16, const ::rtl::OUString& )
4160cdf0e10cSrcweir {
4161cdf0e10cSrcweir }
4162cdf0e10cSrcweir
4163cdf0e10cSrcweir /// prepare XTextField for insertion into document
PrepareField(const Reference<XPropertySet> &)4164cdf0e10cSrcweir void XMLFooterFieldImportContext::PrepareField(const Reference<XPropertySet> &)
4165cdf0e10cSrcweir {
4166cdf0e10cSrcweir }
4167cdf0e10cSrcweir
4168cdf0e10cSrcweir
4169cdf0e10cSrcweir /** import footer fields (<draw:date-and-time>) */
4170cdf0e10cSrcweir TYPEINIT1( XMLDateTimeFieldImportContext, XMLTextFieldImportContext );
4171cdf0e10cSrcweir
XMLDateTimeFieldImportContext(SvXMLImport & rImport,XMLTextImportHelper & rHlp,sal_uInt16 nPrfx,const::rtl::OUString & sLocalName)4172cdf0e10cSrcweir XMLDateTimeFieldImportContext::XMLDateTimeFieldImportContext(
4173cdf0e10cSrcweir SvXMLImport& rImport, /// XML Import
4174cdf0e10cSrcweir XMLTextImportHelper& rHlp, /// Text import helper
4175cdf0e10cSrcweir sal_uInt16 nPrfx, /// namespace prefix
4176cdf0e10cSrcweir const ::rtl::OUString& sLocalName) /// element name w/o prefix
4177cdf0e10cSrcweir : XMLTextFieldImportContext(rImport, rHlp, sAPI_datetime, nPrfx, sLocalName )
4178cdf0e10cSrcweir {
4179cdf0e10cSrcweir sServicePrefix = OUString::createFromAscii( sAPI_presentation_prefix );
4180cdf0e10cSrcweir bValid = sal_True;
4181cdf0e10cSrcweir }
4182cdf0e10cSrcweir
4183cdf0e10cSrcweir /// process attribute values
ProcessAttribute(sal_uInt16,const::rtl::OUString &)4184cdf0e10cSrcweir void XMLDateTimeFieldImportContext::ProcessAttribute( sal_uInt16,
4185cdf0e10cSrcweir const ::rtl::OUString& )
4186cdf0e10cSrcweir {
4187cdf0e10cSrcweir }
4188cdf0e10cSrcweir
4189cdf0e10cSrcweir /// prepare XTextField for insertion into document
PrepareField(const::com::sun::star::uno::Reference<::com::sun::star::beans::XPropertySet> &)4190cdf0e10cSrcweir void XMLDateTimeFieldImportContext::PrepareField(
4191cdf0e10cSrcweir const ::com::sun::star::uno::Reference<
4192cdf0e10cSrcweir ::com::sun::star::beans::XPropertySet> &)
4193cdf0e10cSrcweir {
4194cdf0e10cSrcweir }
4195