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 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 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 245cdf0e10cSrcweir XMLTextFieldImportContext::~XMLTextFieldImportContext() { 246cdf0e10cSrcweir } 247cdf0e10cSrcweir 248cdf0e10cSrcweir OUString XMLTextFieldImportContext::GetContent() 249cdf0e10cSrcweir { 250cdf0e10cSrcweir if (sContent.getLength()==0) 251cdf0e10cSrcweir { 252cdf0e10cSrcweir sContent = sContentBuffer.makeStringAndClear(); 253cdf0e10cSrcweir } 254cdf0e10cSrcweir 255cdf0e10cSrcweir return sContent; 256cdf0e10cSrcweir } 257cdf0e10cSrcweir 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 291cdf0e10cSrcweir void XMLTextFieldImportContext::Characters(const OUString& rContent) 292cdf0e10cSrcweir { 293cdf0e10cSrcweir sContentBuffer.append(rContent); 294cdf0e10cSrcweir } 295cdf0e10cSrcweir 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* 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 3022cdf0e10cSrcweir XMLDdeFieldDeclsImportContext::XMLDdeFieldDeclsImportContext( 3023cdf0e10cSrcweir SvXMLImport& rImport, sal_uInt16 nPrfx, const OUString& sLocalName) : 3024cdf0e10cSrcweir SvXMLImportContext(rImport, nPrfx, sLocalName), 3025cdf0e10cSrcweir aTokenMap(aDdeDeclAttrTokenMap) 3026cdf0e10cSrcweir { 3027cdf0e10cSrcweir } 3028cdf0e10cSrcweir 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 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 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 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 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 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 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 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 3292cdf0e10cSrcweir void XMLSheetNameImportContext::ProcessAttribute( 3293cdf0e10cSrcweir sal_uInt16, 3294cdf0e10cSrcweir const ::rtl::OUString& ) 3295cdf0e10cSrcweir { 3296cdf0e10cSrcweir // no attributes -> nothing to be done 3297cdf0e10cSrcweir } 3298cdf0e10cSrcweir 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 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 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 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 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. 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 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 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 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 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 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 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 } 3685*7cba280fSOliver-Rainer Wittmann else if ( XML_NAMESPACE_TEXT == nPrefix 3686*7cba280fSOliver-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 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 { 3753cdf0e10cSrcweir if ( mxField.is() || CreateField( mxField, sServicePrefix + GetServiceName() ) ) 3754cdf0e10cSrcweir { 3755cdf0e10cSrcweir // set field properties 3756cdf0e10cSrcweir PrepareField( mxField ); 3757cdf0e10cSrcweir 3758cdf0e10cSrcweir // attach field to document 3759cdf0e10cSrcweir Reference < XTextContent > xTextContent( mxField, UNO_QUERY ); 3760cdf0e10cSrcweir 3761cdf0e10cSrcweir // workaround for #80606# 3762cdf0e10cSrcweir try 3763cdf0e10cSrcweir { 37643b32dd21SOliver-Rainer Wittmann if ( m_nToken == XML_TOK_TEXT_ANNOTATION_END 37653b32dd21SOliver-Rainer Wittmann && m_xStart.is() ) 37663b32dd21SOliver-Rainer Wittmann { 37673b32dd21SOliver-Rainer Wittmann // So we are ending a previous annotation, 37683b32dd21SOliver-Rainer Wittmann // let's create a text range covering the start and the current position. 37693b32dd21SOliver-Rainer Wittmann uno::Reference<text::XText> xText = GetImportHelper().GetText(); 37703b32dd21SOliver-Rainer Wittmann uno::Reference<text::XTextCursor> xCursor = xText->createTextCursorByRange(m_xStart->getAnchor()); 37713b32dd21SOliver-Rainer Wittmann xCursor->gotoRange(GetImportHelper().GetCursorAsRange(), true); 37723b32dd21SOliver-Rainer Wittmann uno::Reference<text::XTextRange> xTextRange(xCursor, uno::UNO_QUERY); 37733b32dd21SOliver-Rainer Wittmann xText->insertTextContent( xTextRange, xTextContent, !xCursor->isCollapsed() ); 37743b32dd21SOliver-Rainer Wittmann 37753b32dd21SOliver-Rainer Wittmann // Now we can delete the annotation at the start position. 37763b32dd21SOliver-Rainer Wittmann uno::Reference<lang::XComponent>(m_xStart, uno::UNO_QUERY)->dispose(); 37773b32dd21SOliver-Rainer Wittmann } 37783b32dd21SOliver-Rainer Wittmann else 37793b32dd21SOliver-Rainer Wittmann { 3780cdf0e10cSrcweir GetImportHelper().InsertTextContent( xTextContent ); 3781cdf0e10cSrcweir } 37823b32dd21SOliver-Rainer Wittmann } 3783cdf0e10cSrcweir catch (lang::IllegalArgumentException) 3784cdf0e10cSrcweir { 3785cdf0e10cSrcweir // ignore 3786cdf0e10cSrcweir } 3787cdf0e10cSrcweir } 3788cdf0e10cSrcweir } 3789cdf0e10cSrcweir else 3790cdf0e10cSrcweir GetImportHelper().InsertString(GetContent()); 3791cdf0e10cSrcweir } 3792cdf0e10cSrcweir 3793cdf0e10cSrcweir void XMLAnnotationImportContext::PrepareField( 3794cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet) 3795cdf0e10cSrcweir { 37963b32dd21SOliver-Rainer Wittmann if ( m_nToken == XML_TOK_TEXT_ANNOTATION_END 37973b32dd21SOliver-Rainer Wittmann && aName.getLength() > 0 ) 37983b32dd21SOliver-Rainer Wittmann { 37993b32dd21SOliver-Rainer Wittmann // Search for a previous annotation with the same name. 38003b32dd21SOliver-Rainer Wittmann Reference<XTextFieldsSupplier> xTextFieldsSupplier(GetImport().GetModel(), UNO_QUERY); 38013b32dd21SOliver-Rainer Wittmann uno::Reference<container::XEnumerationAccess> xFieldsAccess(xTextFieldsSupplier->getTextFields()); 38023b32dd21SOliver-Rainer Wittmann uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration()); 38033b32dd21SOliver-Rainer Wittmann uno::Reference<beans::XPropertySet> xPrevField; 38043b32dd21SOliver-Rainer Wittmann while (xFields->hasMoreElements()) 38053b32dd21SOliver-Rainer Wittmann { 38063b32dd21SOliver-Rainer Wittmann uno::Reference<beans::XPropertySet> xCurrField(xFields->nextElement(), uno::UNO_QUERY); 38073b32dd21SOliver-Rainer Wittmann OUString aFieldName; 38083b32dd21SOliver-Rainer Wittmann xCurrField->getPropertyValue(sPropertyName) >>= aFieldName; 38093b32dd21SOliver-Rainer Wittmann if ( aFieldName == aName ) 38103b32dd21SOliver-Rainer Wittmann { 38113b32dd21SOliver-Rainer Wittmann xPrevField = xCurrField; 38123b32dd21SOliver-Rainer Wittmann break; 38133b32dd21SOliver-Rainer Wittmann } 38143b32dd21SOliver-Rainer Wittmann } 38153b32dd21SOliver-Rainer Wittmann if (xPrevField.is()) 38163b32dd21SOliver-Rainer Wittmann { 38173b32dd21SOliver-Rainer Wittmann // copy over the properties. 38183b32dd21SOliver-Rainer Wittmann xPropertySet->setPropertyValue(sPropertyAuthor, xPrevField->getPropertyValue(sPropertyAuthor)); 38193b32dd21SOliver-Rainer Wittmann xPropertySet->setPropertyValue(sPropertyInitials, xPrevField->getPropertyValue(sPropertyInitials)); 38203b32dd21SOliver-Rainer Wittmann xPropertySet->setPropertyValue(sPropertyDate, xPrevField->getPropertyValue(sPropertyDate)); 38213b32dd21SOliver-Rainer Wittmann xPropertySet->setPropertyValue(sPropertyName, xPrevField->getPropertyValue(sPropertyName)); 38223b32dd21SOliver-Rainer Wittmann xPropertySet->setPropertyValue(sPropertyContent, xPrevField->getPropertyValue(sPropertyContent)); 38233b32dd21SOliver-Rainer Wittmann 38243b32dd21SOliver-Rainer Wittmann // And save a reference to it, so we can delete it later. 38253b32dd21SOliver-Rainer Wittmann m_xStart.set(xPrevField, uno::UNO_QUERY); 38263b32dd21SOliver-Rainer Wittmann return; 38273b32dd21SOliver-Rainer Wittmann } 38283b32dd21SOliver-Rainer Wittmann } 38293b32dd21SOliver-Rainer Wittmann 3830cdf0e10cSrcweir // import (possibly empty) author 3831cdf0e10cSrcweir OUString sAuthor( aAuthorBuffer.makeStringAndClear() ); 3832cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyAuthor, makeAny(sAuthor)); 3833cdf0e10cSrcweir 38343b32dd21SOliver-Rainer Wittmann // import (possibly empty) initials 38353b32dd21SOliver-Rainer Wittmann OUString sInitials( aInitialsBuffer.makeStringAndClear() ); 38363b32dd21SOliver-Rainer Wittmann xPropertySet->setPropertyValue(sPropertyInitials, makeAny(sInitials)); 38373b32dd21SOliver-Rainer Wittmann 3838cdf0e10cSrcweir DateTime aDateTime; 3839cdf0e10cSrcweir if (SvXMLUnitConverter::convertDateTime(aDateTime, 3840cdf0e10cSrcweir aDateBuffer.makeStringAndClear())) 3841cdf0e10cSrcweir { 3842cdf0e10cSrcweir /* 3843cdf0e10cSrcweir Date aDate; 3844cdf0e10cSrcweir aDate.Year = aDateTime.Year; 3845cdf0e10cSrcweir aDate.Month = aDateTime.Month; 3846cdf0e10cSrcweir aDate.Day = aDateTime.Day; 3847cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyDate, makeAny(aDate)); 3848cdf0e10cSrcweir */ 3849cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyDate, makeAny(aDateTime)); 3850cdf0e10cSrcweir } 3851cdf0e10cSrcweir 3852cdf0e10cSrcweir OUString sBuffer = aTextBuffer.makeStringAndClear(); 38533b32dd21SOliver-Rainer Wittmann if ( sBuffer.getLength() > 0 ) 3854cdf0e10cSrcweir { 3855cdf0e10cSrcweir // delete last paragraph mark (if necessary) 3856cdf0e10cSrcweir if (sal_Char(0x0a) == sBuffer.getStr()[sBuffer.getLength()-1]) 3857cdf0e10cSrcweir sBuffer = sBuffer.copy(0, sBuffer.getLength()-1); 3858cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyContent, makeAny(sBuffer)); 3859cdf0e10cSrcweir } 38603b32dd21SOliver-Rainer Wittmann 38613b32dd21SOliver-Rainer Wittmann if ( aName.getLength() > 0 ) 38623b32dd21SOliver-Rainer Wittmann { 38633b32dd21SOliver-Rainer Wittmann xPropertySet->setPropertyValue(sPropertyName, makeAny(aName)); 38643b32dd21SOliver-Rainer Wittmann } 3865cdf0e10cSrcweir } 3866cdf0e10cSrcweir 3867cdf0e10cSrcweir 3868cdf0e10cSrcweir 3869cdf0e10cSrcweir // 3870cdf0e10cSrcweir // script field 3871cdf0e10cSrcweir // 3872cdf0e10cSrcweir 3873cdf0e10cSrcweir TYPEINIT1(XMLScriptImportContext, XMLTextFieldImportContext); 3874cdf0e10cSrcweir 3875cdf0e10cSrcweir XMLScriptImportContext::XMLScriptImportContext( 3876cdf0e10cSrcweir SvXMLImport& rImport, 3877cdf0e10cSrcweir XMLTextImportHelper& rHlp, 3878cdf0e10cSrcweir sal_uInt16 nPrfx, 3879cdf0e10cSrcweir const OUString& sLocalName) 3880cdf0e10cSrcweir : XMLTextFieldImportContext(rImport, rHlp, sAPI_script, nPrfx, sLocalName) 3881cdf0e10cSrcweir , sPropertyScriptType(RTL_CONSTASCII_USTRINGPARAM(sAPI_script_type)) 3882cdf0e10cSrcweir , sPropertyURLContent(RTL_CONSTASCII_USTRINGPARAM(sAPI_url_content)) 3883cdf0e10cSrcweir , sPropertyContent(RTL_CONSTASCII_USTRINGPARAM(sAPI_content)) 3884cdf0e10cSrcweir , bContentOK(sal_False) 3885cdf0e10cSrcweir , bScriptTypeOK(sal_False) 3886cdf0e10cSrcweir , bUrlContent(sal_False) 3887cdf0e10cSrcweir { 3888cdf0e10cSrcweir } 3889cdf0e10cSrcweir 3890cdf0e10cSrcweir void XMLScriptImportContext::ProcessAttribute( 3891cdf0e10cSrcweir sal_uInt16 nAttrToken, 3892cdf0e10cSrcweir const OUString& sAttrValue ) 3893cdf0e10cSrcweir { 3894cdf0e10cSrcweir switch (nAttrToken) 3895cdf0e10cSrcweir { 3896cdf0e10cSrcweir case XML_TOK_TEXTFIELD_HREF: 3897cdf0e10cSrcweir sContent = GetImport().GetAbsoluteReference( sAttrValue ); 3898cdf0e10cSrcweir bContentOK = sal_True; 3899cdf0e10cSrcweir break; 3900cdf0e10cSrcweir 3901cdf0e10cSrcweir case XML_TOK_TEXTFIELD_LANGUAGE: 3902cdf0e10cSrcweir sScriptType = sAttrValue; 3903cdf0e10cSrcweir bScriptTypeOK = sal_True; 3904cdf0e10cSrcweir break; 3905cdf0e10cSrcweir 3906cdf0e10cSrcweir default: 3907cdf0e10cSrcweir // ignore 3908cdf0e10cSrcweir break; 3909cdf0e10cSrcweir } 3910cdf0e10cSrcweir 3911cdf0e10cSrcweir // always valid (even without ScriptType; cf- #96531#) 3912cdf0e10cSrcweir bValid = sal_True; 3913cdf0e10cSrcweir } 3914cdf0e10cSrcweir 3915cdf0e10cSrcweir void XMLScriptImportContext::PrepareField( 3916cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet) 3917cdf0e10cSrcweir { 3918cdf0e10cSrcweir Any aAny; 3919cdf0e10cSrcweir 3920cdf0e10cSrcweir // if href attribute was present, we use it. Else we use element content 3921cdf0e10cSrcweir if (! bContentOK) 3922cdf0e10cSrcweir { 3923cdf0e10cSrcweir sContent = GetContent(); 3924cdf0e10cSrcweir } 3925cdf0e10cSrcweir aAny <<= sContent; 3926cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyContent, aAny); 3927cdf0e10cSrcweir 3928cdf0e10cSrcweir // URL or script text? We use URL if we have an href-attribute 3929cdf0e10cSrcweir aAny.setValue(&bContentOK, ::getBooleanCppuType()); 3930cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyURLContent, aAny); 3931cdf0e10cSrcweir 3932cdf0e10cSrcweir aAny <<= sScriptType; 3933cdf0e10cSrcweir xPropertySet->setPropertyValue(sPropertyScriptType, aAny); 3934cdf0e10cSrcweir } 3935cdf0e10cSrcweir 3936cdf0e10cSrcweir // 3937cdf0e10cSrcweir // measure field 3938cdf0e10cSrcweir // 3939cdf0e10cSrcweir 3940cdf0e10cSrcweir TYPEINIT1(XMLMeasureFieldImportContext, XMLTextFieldImportContext); 3941cdf0e10cSrcweir 3942cdf0e10cSrcweir XMLMeasureFieldImportContext::XMLMeasureFieldImportContext( 3943cdf0e10cSrcweir SvXMLImport& rImport, 3944cdf0e10cSrcweir XMLTextImportHelper& rHlp, 3945cdf0e10cSrcweir sal_uInt16 nPrfx, 3946cdf0e10cSrcweir const OUString& sLocalName) : 3947cdf0e10cSrcweir XMLTextFieldImportContext(rImport, rHlp, sAPI_measure, 3948cdf0e10cSrcweir nPrfx, sLocalName), 3949cdf0e10cSrcweir mnKind( 0 ) 3950cdf0e10cSrcweir { 3951cdf0e10cSrcweir } 3952cdf0e10cSrcweir 3953cdf0e10cSrcweir void XMLMeasureFieldImportContext::ProcessAttribute( 3954cdf0e10cSrcweir sal_uInt16 nAttrToken, 3955cdf0e10cSrcweir const OUString& sAttrValue ) 3956cdf0e10cSrcweir { 3957cdf0e10cSrcweir switch (nAttrToken) 3958cdf0e10cSrcweir { 3959cdf0e10cSrcweir case XML_TOK_TEXTFIELD_MEASURE_KIND: 3960cdf0e10cSrcweir if( IsXMLToken( sAttrValue, XML_VALUE ) ) 3961cdf0e10cSrcweir { 3962cdf0e10cSrcweir mnKind = 0; bValid = sal_True; 3963cdf0e10cSrcweir } 3964cdf0e10cSrcweir else if( IsXMLToken( sAttrValue, XML_UNIT ) ) 3965cdf0e10cSrcweir { 3966cdf0e10cSrcweir mnKind = 1; bValid = sal_True; 3967cdf0e10cSrcweir } 3968cdf0e10cSrcweir else if( IsXMLToken( sAttrValue, XML_GAP ) ) 3969cdf0e10cSrcweir { 3970cdf0e10cSrcweir mnKind = 2; bValid = sal_True; 3971cdf0e10cSrcweir } 3972cdf0e10cSrcweir break; 3973cdf0e10cSrcweir } 3974cdf0e10cSrcweir } 3975cdf0e10cSrcweir 3976cdf0e10cSrcweir void XMLMeasureFieldImportContext::PrepareField( 3977cdf0e10cSrcweir const Reference<XPropertySet> & xPropertySet) 3978cdf0e10cSrcweir { 3979cdf0e10cSrcweir Any aAny; 3980cdf0e10cSrcweir aAny <<= mnKind; 3981cdf0e10cSrcweir xPropertySet->setPropertyValue(OUString::createFromAscii("Kind"), aAny); 3982cdf0e10cSrcweir } 3983cdf0e10cSrcweir 3984cdf0e10cSrcweir 3985cdf0e10cSrcweir 3986cdf0e10cSrcweir // 3987cdf0e10cSrcweir // dropdown field 3988cdf0e10cSrcweir // 3989cdf0e10cSrcweir 3990cdf0e10cSrcweir 3991cdf0e10cSrcweir TYPEINIT1( XMLDropDownFieldImportContext, XMLTextFieldImportContext ); 3992cdf0e10cSrcweir 3993cdf0e10cSrcweir XMLDropDownFieldImportContext::XMLDropDownFieldImportContext( 3994cdf0e10cSrcweir SvXMLImport& rImport, 3995cdf0e10cSrcweir XMLTextImportHelper& rHlp, 3996cdf0e10cSrcweir sal_uInt16 nPrfx, 3997cdf0e10cSrcweir const ::rtl::OUString& sLocalName) : 3998cdf0e10cSrcweir XMLTextFieldImportContext( rImport, rHlp, sAPI_drop_down, 3999cdf0e10cSrcweir nPrfx, sLocalName ), 4000cdf0e10cSrcweir aLabels(), 4001cdf0e10cSrcweir sName(), 4002cdf0e10cSrcweir nSelected( -1 ), 4003cdf0e10cSrcweir bNameOK( false ), 4004cdf0e10cSrcweir bHelpOK(false), 4005cdf0e10cSrcweir bHintOK(false), 4006cdf0e10cSrcweir sPropertyItems( RTL_CONSTASCII_USTRINGPARAM( "Items" ) ), 4007cdf0e10cSrcweir sPropertySelectedItem( RTL_CONSTASCII_USTRINGPARAM( "SelectedItem" ) ), 4008cdf0e10cSrcweir sPropertyName( RTL_CONSTASCII_USTRINGPARAM( "Name" ) ), 4009cdf0e10cSrcweir sPropertyHelp( RTL_CONSTASCII_USTRINGPARAM( "Help" ) ), 4010cdf0e10cSrcweir sPropertyToolTip( RTL_CONSTASCII_USTRINGPARAM( "Tooltip" ) ) 4011cdf0e10cSrcweir { 4012cdf0e10cSrcweir bValid = sal_True; 4013cdf0e10cSrcweir } 4014cdf0e10cSrcweir 4015cdf0e10cSrcweir bool lcl_ProcessLabel( const SvXMLImport& rImport, 4016cdf0e10cSrcweir const Reference<XAttributeList>& xAttrList, 4017cdf0e10cSrcweir OUString& rLabel, 4018cdf0e10cSrcweir bool& rIsSelected ) 4019cdf0e10cSrcweir { 4020cdf0e10cSrcweir bool bValid = false; 4021cdf0e10cSrcweir sal_Int16 nLength = xAttrList->getLength(); 4022cdf0e10cSrcweir for( sal_Int16 n = 0; n < nLength; n++ ) 4023cdf0e10cSrcweir { 4024cdf0e10cSrcweir OUString sLocalName; 4025cdf0e10cSrcweir sal_uInt16 nPrefix = rImport.GetNamespaceMap(). 4026cdf0e10cSrcweir GetKeyByAttrName( xAttrList->getNameByIndex(n), &sLocalName ); 4027cdf0e10cSrcweir OUString sValue = xAttrList->getValueByIndex(n); 4028cdf0e10cSrcweir 4029cdf0e10cSrcweir if( nPrefix == XML_NAMESPACE_TEXT ) 4030cdf0e10cSrcweir { 4031cdf0e10cSrcweir if( IsXMLToken( sLocalName, XML_VALUE ) ) 4032cdf0e10cSrcweir { 4033cdf0e10cSrcweir rLabel = sValue; 4034cdf0e10cSrcweir bValid = true; 4035cdf0e10cSrcweir } 4036cdf0e10cSrcweir else if( IsXMLToken( sLocalName, XML_CURRENT_SELECTED ) ) 4037cdf0e10cSrcweir { 4038cdf0e10cSrcweir sal_Bool bTmp; 4039cdf0e10cSrcweir if( SvXMLUnitConverter::convertBool( bTmp, sValue ) ) 4040cdf0e10cSrcweir rIsSelected = bTmp; 4041cdf0e10cSrcweir } 4042cdf0e10cSrcweir } 4043cdf0e10cSrcweir } 4044cdf0e10cSrcweir return bValid; 4045cdf0e10cSrcweir } 4046cdf0e10cSrcweir 4047cdf0e10cSrcweir SvXMLImportContext* XMLDropDownFieldImportContext::CreateChildContext( 4048cdf0e10cSrcweir sal_uInt16 nPrefix, 4049cdf0e10cSrcweir const OUString& rLocalName, 4050cdf0e10cSrcweir const Reference<XAttributeList>& xAttrList ) 4051cdf0e10cSrcweir { 4052cdf0e10cSrcweir if( nPrefix == XML_NAMESPACE_TEXT && 4053cdf0e10cSrcweir IsXMLToken( rLocalName, XML_LABEL ) ) 4054cdf0e10cSrcweir { 4055cdf0e10cSrcweir OUString sLabel; 4056cdf0e10cSrcweir bool bIsSelected = sal_False; 4057cdf0e10cSrcweir if( lcl_ProcessLabel( GetImport(), xAttrList, sLabel, bIsSelected ) ) 4058cdf0e10cSrcweir { 4059cdf0e10cSrcweir if( bIsSelected ) 4060cdf0e10cSrcweir nSelected = static_cast<sal_Int32>( aLabels.size() ); 4061cdf0e10cSrcweir aLabels.push_back( sLabel ); 4062cdf0e10cSrcweir } 4063cdf0e10cSrcweir } 4064cdf0e10cSrcweir return new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); 4065cdf0e10cSrcweir } 4066cdf0e10cSrcweir 4067cdf0e10cSrcweir void XMLDropDownFieldImportContext::ProcessAttribute( 4068cdf0e10cSrcweir sal_uInt16 nAttrToken, 4069cdf0e10cSrcweir const ::rtl::OUString& sAttrValue ) 4070cdf0e10cSrcweir { 4071cdf0e10cSrcweir if( nAttrToken == XML_TOK_TEXTFIELD_NAME ) 4072cdf0e10cSrcweir { 4073cdf0e10cSrcweir sName = sAttrValue; 4074cdf0e10cSrcweir bNameOK = true; 4075cdf0e10cSrcweir } 4076cdf0e10cSrcweir else if (nAttrToken == XML_TOK_TEXTFIELD_HELP) 4077cdf0e10cSrcweir { 4078cdf0e10cSrcweir sHelp = sAttrValue; 4079cdf0e10cSrcweir bHelpOK = true; 4080cdf0e10cSrcweir } 4081cdf0e10cSrcweir else if (nAttrToken == XML_TOK_TEXTFIELD_HINT) 4082cdf0e10cSrcweir { 4083cdf0e10cSrcweir sHint = sAttrValue; 4084cdf0e10cSrcweir bHintOK = true; 4085cdf0e10cSrcweir } 4086cdf0e10cSrcweir } 4087cdf0e10cSrcweir 4088cdf0e10cSrcweir void XMLDropDownFieldImportContext::PrepareField( 4089cdf0e10cSrcweir const Reference<XPropertySet>& xPropertySet) 4090cdf0e10cSrcweir { 4091cdf0e10cSrcweir // create sequence 4092cdf0e10cSrcweir sal_Int32 nLength = static_cast<sal_Int32>( aLabels.size() ); 4093cdf0e10cSrcweir Sequence<OUString> aSequence( nLength ); 4094cdf0e10cSrcweir OUString* pSequence = aSequence.getArray(); 4095cdf0e10cSrcweir for( sal_Int32 n = 0; n < nLength; n++ ) 4096cdf0e10cSrcweir pSequence[n] = aLabels[n]; 4097cdf0e10cSrcweir 4098cdf0e10cSrcweir // now set values: 4099cdf0e10cSrcweir Any aAny; 4100cdf0e10cSrcweir 4101cdf0e10cSrcweir aAny <<= aSequence; 4102cdf0e10cSrcweir xPropertySet->setPropertyValue( sPropertyItems, aAny ); 4103cdf0e10cSrcweir 4104cdf0e10cSrcweir if( nSelected >= 0 && nSelected < nLength ) 4105cdf0e10cSrcweir { 4106cdf0e10cSrcweir aAny <<= pSequence[nSelected]; 4107cdf0e10cSrcweir xPropertySet->setPropertyValue( sPropertySelectedItem, aAny ); 4108cdf0e10cSrcweir } 4109cdf0e10cSrcweir 4110cdf0e10cSrcweir // set name 4111cdf0e10cSrcweir if( bNameOK ) 4112cdf0e10cSrcweir { 4113cdf0e10cSrcweir aAny <<= sName; 4114cdf0e10cSrcweir xPropertySet->setPropertyValue( sPropertyName, aAny ); 4115cdf0e10cSrcweir } 4116cdf0e10cSrcweir // set help 4117cdf0e10cSrcweir if( bHelpOK ) 4118cdf0e10cSrcweir { 4119cdf0e10cSrcweir aAny <<= sHelp; 4120cdf0e10cSrcweir xPropertySet->setPropertyValue( sPropertyHelp, aAny ); 4121cdf0e10cSrcweir } 4122cdf0e10cSrcweir // set hint 4123cdf0e10cSrcweir if( bHintOK ) 4124cdf0e10cSrcweir { 4125cdf0e10cSrcweir aAny <<= sHint; 4126cdf0e10cSrcweir xPropertySet->setPropertyValue( sPropertyToolTip, aAny ); 4127cdf0e10cSrcweir } 4128cdf0e10cSrcweir 4129cdf0e10cSrcweir } 4130cdf0e10cSrcweir 4131cdf0e10cSrcweir /** import header fields (<draw:header>) */ 4132cdf0e10cSrcweir TYPEINIT1( XMLHeaderFieldImportContext, XMLTextFieldImportContext ); 4133cdf0e10cSrcweir 4134cdf0e10cSrcweir XMLHeaderFieldImportContext::XMLHeaderFieldImportContext( 4135cdf0e10cSrcweir SvXMLImport& rImport, /// XML Import 4136cdf0e10cSrcweir XMLTextImportHelper& rHlp, /// Text import helper 4137cdf0e10cSrcweir sal_uInt16 nPrfx, /// namespace prefix 4138cdf0e10cSrcweir const ::rtl::OUString& sLocalName) /// element name w/o prefix 4139cdf0e10cSrcweir : XMLTextFieldImportContext(rImport, rHlp, sAPI_header, nPrfx, sLocalName ) 4140cdf0e10cSrcweir { 4141cdf0e10cSrcweir sServicePrefix = OUString::createFromAscii( sAPI_presentation_prefix ); 4142cdf0e10cSrcweir bValid = sal_True; 4143cdf0e10cSrcweir } 4144cdf0e10cSrcweir 4145cdf0e10cSrcweir /// process attribute values 4146cdf0e10cSrcweir void XMLHeaderFieldImportContext::ProcessAttribute( sal_uInt16, const ::rtl::OUString& ) 4147cdf0e10cSrcweir { 4148cdf0e10cSrcweir } 4149cdf0e10cSrcweir 4150cdf0e10cSrcweir /// prepare XTextField for insertion into document 4151cdf0e10cSrcweir void XMLHeaderFieldImportContext::PrepareField(const Reference<XPropertySet> &) 4152cdf0e10cSrcweir { 4153cdf0e10cSrcweir } 4154cdf0e10cSrcweir 4155cdf0e10cSrcweir /** import footer fields (<draw:footer>) */ 4156cdf0e10cSrcweir TYPEINIT1( XMLFooterFieldImportContext, XMLTextFieldImportContext ); 4157cdf0e10cSrcweir 4158cdf0e10cSrcweir XMLFooterFieldImportContext::XMLFooterFieldImportContext( 4159cdf0e10cSrcweir SvXMLImport& rImport, /// XML Import 4160cdf0e10cSrcweir XMLTextImportHelper& rHlp, /// Text import helper 4161cdf0e10cSrcweir sal_uInt16 nPrfx, /// namespace prefix 4162cdf0e10cSrcweir const ::rtl::OUString& sLocalName) /// element name w/o prefix 4163cdf0e10cSrcweir : XMLTextFieldImportContext(rImport, rHlp, sAPI_footer, nPrfx, sLocalName ) 4164cdf0e10cSrcweir { 4165cdf0e10cSrcweir sServicePrefix = OUString::createFromAscii( sAPI_presentation_prefix ); 4166cdf0e10cSrcweir bValid = sal_True; 4167cdf0e10cSrcweir } 4168cdf0e10cSrcweir 4169cdf0e10cSrcweir /// process attribute values 4170cdf0e10cSrcweir void XMLFooterFieldImportContext::ProcessAttribute( sal_uInt16, const ::rtl::OUString& ) 4171cdf0e10cSrcweir { 4172cdf0e10cSrcweir } 4173cdf0e10cSrcweir 4174cdf0e10cSrcweir /// prepare XTextField for insertion into document 4175cdf0e10cSrcweir void XMLFooterFieldImportContext::PrepareField(const Reference<XPropertySet> &) 4176cdf0e10cSrcweir { 4177cdf0e10cSrcweir } 4178cdf0e10cSrcweir 4179cdf0e10cSrcweir 4180cdf0e10cSrcweir /** import footer fields (<draw:date-and-time>) */ 4181cdf0e10cSrcweir TYPEINIT1( XMLDateTimeFieldImportContext, XMLTextFieldImportContext ); 4182cdf0e10cSrcweir 4183cdf0e10cSrcweir XMLDateTimeFieldImportContext::XMLDateTimeFieldImportContext( 4184cdf0e10cSrcweir SvXMLImport& rImport, /// XML Import 4185cdf0e10cSrcweir XMLTextImportHelper& rHlp, /// Text import helper 4186cdf0e10cSrcweir sal_uInt16 nPrfx, /// namespace prefix 4187cdf0e10cSrcweir const ::rtl::OUString& sLocalName) /// element name w/o prefix 4188cdf0e10cSrcweir : XMLTextFieldImportContext(rImport, rHlp, sAPI_datetime, nPrfx, sLocalName ) 4189cdf0e10cSrcweir { 4190cdf0e10cSrcweir sServicePrefix = OUString::createFromAscii( sAPI_presentation_prefix ); 4191cdf0e10cSrcweir bValid = sal_True; 4192cdf0e10cSrcweir } 4193cdf0e10cSrcweir 4194cdf0e10cSrcweir /// process attribute values 4195cdf0e10cSrcweir void XMLDateTimeFieldImportContext::ProcessAttribute( sal_uInt16, 4196cdf0e10cSrcweir const ::rtl::OUString& ) 4197cdf0e10cSrcweir { 4198cdf0e10cSrcweir } 4199cdf0e10cSrcweir 4200cdf0e10cSrcweir /// prepare XTextField for insertion into document 4201cdf0e10cSrcweir void XMLDateTimeFieldImportContext::PrepareField( 4202cdf0e10cSrcweir const ::com::sun::star::uno::Reference< 4203cdf0e10cSrcweir ::com::sun::star::beans::XPropertySet> &) 4204cdf0e10cSrcweir { 4205cdf0e10cSrcweir } 4206