Rebased ref, commits from common ancestor: commit 6d33827940ea2959fdd67d7ced1d152b2c6605c8 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Sat Oct 3 15:57:31 2015 +0200
fastparser impl. for ... ... XMLTextFieldImportContext::CreateTextFieldImportContext Change-Id: I8a71dc2c712b8c12fc02b0211cd98319877bc61b diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 171cd33..bd0d713 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -166,6 +166,11 @@ public: sal_uInt16 nPrefix, const OUString& rName, sal_uInt16 nToken); + static XMLTextFieldImportContext* CreateTextFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element, + sal_uInt16 nToken); protected: /// get helper diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 88cdc5e..f08490f 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -670,6 +670,252 @@ XMLTextFieldImportContext::CreateTextFieldImportContext( return pContext; } +/// create the appropriate field context from +XMLTextFieldImportContext* +XMLTextFieldImportContext::CreateTextFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element, + sal_uInt16 nToken) +{ + XMLTextFieldImportContext* pContext = NULL; + + switch (nToken) + { + case XML_TOK_TEXT_SENDER_FIRSTNAME: + case XML_TOK_TEXT_SENDER_LASTNAME: + case XML_TOK_TEXT_SENDER_INITIALS: + case XML_TOK_TEXT_SENDER_TITLE: + case XML_TOK_TEXT_SENDER_POSITION: + case XML_TOK_TEXT_SENDER_EMAIL: + case XML_TOK_TEXT_SENDER_PHONE_PRIVATE: + case XML_TOK_TEXT_SENDER_FAX: + case XML_TOK_TEXT_SENDER_COMPANY: + case XML_TOK_TEXT_SENDER_PHONE_WORK: + case XML_TOK_TEXT_SENDER_STREET: + case XML_TOK_TEXT_SENDER_CITY: + case XML_TOK_TEXT_SENDER_POSTAL_CODE: + case XML_TOK_TEXT_SENDER_COUNTRY: + case XML_TOK_TEXT_SENDER_STATE_OR_PROVINCE: + pContext = + new XMLSenderFieldImportContext( rImport, rHlp, Element, nToken ); + break; + + case XML_TOK_TEXT_AUTHOR_NAME: + case XML_TOK_TEXT_AUTHOR_INITIALS: + pContext = + new XMLAuthorFieldImportContext( rImport, rHlp, Element, nToken ); + break; + + case XML_TOK_TEXT_PLACEHOLDER: + pContext = + new XMLPlaceholderFieldImportContext( rImport, rHlp, Element); + break; + case XML_TOK_TEXT_SEQUENCE: + pContext = + new XMLSequenceFieldImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_TEXT_INPUT: + pContext = + new XMLTextInputFieldImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_EXPRESSION: + pContext = + new XMLExpressionFieldImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_VARIABLE_SET: + pContext = + new XMLVariableSetFieldImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_VARIABLE_INPUT: + pContext = + new XMLVariableInputFieldImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_VARIABLE_GET: + pContext = + new XMLVariableGetFieldImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_USER_FIELD_GET: + pContext = new XMLUserFieldImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_USER_FIELD_INPUT: + pContext = new XMLUserFieldInputImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_TIME: + pContext = new XMLTimeFieldImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_PAGE_CONTINUATION_STRING: + case XML_TOK_TEXT_PAGE_CONTINUATION: + pContext = new XMLPageContinuationImportContext( rImport, rHlp, Element ); + break; + + case XML_TOK_TEXT_PAGE_NUMBER: + pContext = new XMLPageNumberImportContext( rImport, rHlp, Element ); + break; + + case XML_TOK_TEXT_DATE: + pContext = new XMLDateFieldImportContext( rImport, rHlp, Element ); + break; + + case XML_TOK_TEXT_DATABASE_NAME: + pContext = new XMLDatabaseNameImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_DATABASE_NEXT: + pContext = new XMLDatabaseNextImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_DATABASE_SELECT: + pContext = new XMLDatabaseSelectImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_DATABASE_ROW_NUMBER: + pContext = new XMLDatabaseNumberImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_DATABASE_DISPLAY: + pContext = new XMLDatabaseDisplayImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_CONDITIONAL_TEXT: + pContext = new XMLConditionalTextImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_HIDDEN_TEXT: + pContext = new XMLHiddenTextImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_HIDDEN_PARAGRAPH: + pContext = new XMLHiddenParagraphImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_DOCUMENT_DESCRIPTION: + case XML_TOK_TEXT_DOCUMENT_TITLE: + case XML_TOK_TEXT_DOCUMENT_SUBJECT: + case XML_TOK_TEXT_DOCUMENT_KEYWORDS: + pContext = new XMLSimpleDocInfoImportContext( rImport, rHlp, + Element, nToken, + true, false ); + break; + case XML_TOK_TEXT_DOCUMENT_CREATION_AUTHOR: + case XML_TOK_TEXT_DOCUMENT_PRINT_AUTHOR: + case XML_TOK_TEXT_DOCUMENT_SAVE_AUTHOR: + pContext = new XMLSimpleDocInfoImportContext( rImport, rHlp, + Element, nToken, + false, true ); + break; + + case XML_TOK_TEXT_DOCUMENT_CREATION_DATE: + case XML_TOK_TEXT_DOCUMENT_CREATION_TIME: + case XML_TOK_TEXT_DOCUMENT_PRINT_DATE: + case XML_TOK_TEXT_DOCUMENT_PRINT_TIME: + case XML_TOK_TEXT_DOCUMENT_SAVE_DATE: + case XML_TOK_TEXT_DOCUMENT_SAVE_TIME: + case XML_TOK_TEXT_DOCUMENT_EDIT_DURATION: + pContext = new XMLDateTimeDocInfoImportContext( rImport, rHlp, + Element, nToken ); + break; + + case XML_TOK_TEXT_DOCUMENT_REVISION: + pContext = new XMLRevisionDocInfoImportContext( rImport, rHlp, + Element, nToken ); + break; + + case XML_TOK_TEXT_DOCUMENT_USER_DEFINED: + pContext = new XMLUserDocInfoImportContext( rImport, rHlp, + Element, nToken ); + break; + + case XML_TOK_TEXT_FILENAME: + pContext = new XMLFileNameImportContext( rImport, rHlp, Element ); + break; + + case XML_TOK_TEXT_CHAPTER: + pContext = new XMLChapterImportContext( rImport, rHlp, Element ); + break; + + case XML_TOK_TEXT_TEMPLATENAME: + pContext = new XMLTemplateNameImportContext( rImport, rHlp, Element ); + break; + + case XML_TOK_TEXT_WORD_COUNT: + case XML_TOK_TEXT_PARAGRAPH_COUNT: + case XML_TOK_TEXT_TABLE_COUNT: + case XML_TOK_TEXT_CHARACTER_COUNT: + case XML_TOK_TEXT_IMAGE_COUNT: + case XML_TOK_TEXT_OBJECT_COUNT: + case XML_TOK_TEXT_PAGE_COUNT: + pContext = new XMLCountFieldImportContext( rImport, rHlp, + Element, nToken); + break; + + case XML_TOK_TEXT_GET_PAGE_VAR: + pContext = new XMLPageVarGetFieldImportContext( rImport, rHlp, Element ); + break; + + case XML_TOK_TEXT_SET_PAGE_VAR: + pContext = new XMLPageVarSetFieldImportContext( rImport, rHlp, Element ); + break; + + case XML_TOK_TEXT_MACRO: + pContext = new XMLMacroFieldImportContext( rImport, rHlp, Element ); + break; + + case XML_TOK_TEXT_DDE: + pContext = new XMLDdeFieldImportContext( rImport, rHlp, Element ); + break; + + case XML_TOK_TEXT_REFERENCE_REF: + case XML_TOK_TEXT_BOOKMARK_REF: + case XML_TOK_TEXT_NOTE_REF: + case XML_TOK_TEXT_SEQUENCE_REF: + pContext = new XMLReferenceFieldImportContext( rImport, rHlp, + nToken, Element ); + break; + + case XML_TOK_TEXT_SHEET_NAME: + pContext = new XMLSheetNameImportContext( rImport, rHlp, Element ); + break; + + case XML_TOK_TEXT_PAGE_NAME: + pContext = new XMLPageNameFieldImportContext( rImport, rHlp, Element ); + break; + + case XML_TOK_TEXT_BIBLIOGRAPHY_MARK: + pContext = new XMLBibliographyFieldImportContext( rImport, rHlp, Element ); + break; + + case XML_TOK_TEXT_ANNOTATION: + case XML_TOK_TEXT_ANNOTATION_END: + pContext = new XMLAnnotationImportContext( rImport, rHlp, + nToken, Element ); + break; + + case XML_TOK_TEXT_SCRIPT: + pContext = new XMLScriptImportContext( rImport, rHlp, Element ); + break; + + case XML_TOK_TEXT_MEASURE: + pContext = new XMLMeasureFieldImportContext( rImport, rHlp, Element ); + break; + + case XML_TOK_TEXT_TABLE_FORMULA: + pContext = new XMLTableFormulaImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_TEXT_DROP_DOWN: + pContext = new XMLDropDownFieldImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_DRAW_HEADER: + pContext = new XMLHeaderFieldImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_DRAW_FOOTER: + pContext = new XMLFooterFieldImportContext( rImport, rHlp, Element ); + break; + case XML_TOK_DRAW_DATE_TIME: + pContext = new XMLDateTimeFieldImportContext( rImport, rHlp, Element ); + break; + + default: + // ignore! May not even be a textfield. + // (Reminder: This method is called inside default:-branch) + pContext = NULL; + break; + } + + return pContext; +} void XMLTextFieldImportContext::ForceUpdate( const Reference<XPropertySet> & rPropertySet) commit 657cbc1993ed39d6fd96009dd89c95286385cbc9 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Sat Oct 3 11:24:06 2015 +0200 fastparser impl. for XMLPageNameFieldImportContext Change-Id: I33c1f51728a2bfec47c32233ec7a0c1d1f01b2db diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 08705b8..171cd33 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -1298,6 +1298,10 @@ public: XMLTextImportHelper& rHlp, /// Text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& sLocalName); /// element name w/o prefix + XMLPageNameFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element); /// process attribute values virtual void ProcessAttribute( sal_uInt16 nAttrToken, diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 6d16d70..88cdc5e 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -4118,6 +4118,14 @@ XMLPageNameFieldImportContext::XMLPageNameFieldImportContext( bValid = true; } +XMLPageNameFieldImportContext::XMLPageNameFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element) +: XMLTextFieldImportContext(rImport, rHlp, sAPI_pagename, Element) +{ + bValid = true; +} + /// process attribute values void XMLPageNameFieldImportContext::ProcessAttribute( sal_uInt16, const OUString& ) commit 871922d46b3e695a0c8a5098633367a35cb7ee5a Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Sat Oct 3 11:05:44 2015 +0200 fastparser impl. for XMLCustomPropertyFieldImportContext but there is only a declaration no implementation. Change-Id: I2aa38bed7ce3ce2c3aa3028c7275558dc937fbd8 diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 62be88b..08705b8 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -1641,6 +1641,9 @@ public: XMLTextImportHelper& rHlp, sal_uInt16 nPrfx, const OUString& sLocalName); + XMLCustomPropertyFieldImportContext(SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element); protected: /// process attribute values commit 93cc62eb3c094f0458aeb7531cdd74c8ad6e563a Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Sat Oct 3 10:59:18 2015 +0200 fastparser impl. for XMLSenderFieldImportContext and subclass Change-Id: Ibaaa91147a63b22c60e260e18ee9d48f17460111 diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index fd83b88..62be88b 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -220,12 +220,20 @@ public: sal_uInt16 nPrfx, /// namespace prefix const OUString& sLocalName, /// element name w/o prefix sal_uInt16 nToken); /// element token + XMLSenderFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element, + sal_uInt16 nToken); protected: /// start element virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList> & xAttrList) SAL_OVERRIDE; + virtual void startFastElement( sal_Int32 Element, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) + throw(css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE; /// process attribute values virtual void ProcessAttribute( sal_uInt16 nAttrToken, @@ -255,12 +263,20 @@ public: sal_uInt16 nPrfx, /// namespace prefix const OUString& sLocalName, /// element name w/o prefix sal_uInt16 nToken); /// element token + XMLAuthorFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element, + sal_uInt16 nToken); protected: /// start element virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList> & xAttrList) SAL_OVERRIDE; + virtual void startFastElement( sal_Int32 Element, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) + throw(css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE; /// prepare XTextField for insertion into document virtual void PrepareField( diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 3e27e3a..6d16d70 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -708,6 +708,19 @@ XMLSenderFieldImportContext::XMLSenderFieldImportContext( { } +XMLSenderFieldImportContext::XMLSenderFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element, sal_uInt16 nToken) +: XMLTextFieldImportContext(rImport, rHlp, sAPI_extended_user, Element), + nSubType(0), + sPropertyFixed(sAPI_is_fixed), + sPropertyFieldSubType(sAPI_user_data_type), + sPropertyContent(sAPI_content), + bFixed(true), + nElementToken(nToken) +{ +} + void XMLSenderFieldImportContext::StartElement( const Reference<XAttributeList> & xAttrList) { @@ -767,6 +780,66 @@ void XMLSenderFieldImportContext::StartElement( XMLTextFieldImportContext::StartElement(xAttrList); } +void XMLSenderFieldImportContext::startFastElement( sal_Int32 Element, + const Reference< XFastAttributeList >& xAttrList ) + throw(RuntimeException, SAXException, std::exception) +{ + bValid = true; + switch( nElementToken ) { + case XML_TOK_TEXT_SENDER_FIRSTNAME: + nSubType = UserDataPart::FIRSTNAME; + break; + case XML_TOK_TEXT_SENDER_LASTNAME: + nSubType = UserDataPart::NAME; + break; + case XML_TOK_TEXT_SENDER_INITIALS: + nSubType = UserDataPart::SHORTCUT; + break; + case XML_TOK_TEXT_SENDER_TITLE: + nSubType = UserDataPart::TITLE; + break; + case XML_TOK_TEXT_SENDER_POSITION: + nSubType = UserDataPart::POSITION; + break; + case XML_TOK_TEXT_SENDER_EMAIL: + nSubType = UserDataPart::EMAIL; + break; + case XML_TOK_TEXT_SENDER_PHONE_PRIVATE: + nSubType = UserDataPart::PHONE_PRIVATE; + break; + case XML_TOK_TEXT_SENDER_FAX: + nSubType = UserDataPart::FAX; + break; + case XML_TOK_TEXT_SENDER_COMPANY: + nSubType = UserDataPart::COMPANY; + break; + case XML_TOK_TEXT_SENDER_PHONE_WORK: + nSubType = UserDataPart::PHONE_COMPANY; + break; + case XML_TOK_TEXT_SENDER_STREET: + nSubType = UserDataPart::STREET; + break; + case XML_TOK_TEXT_SENDER_CITY: + nSubType = UserDataPart::CITY; + break; + case XML_TOK_TEXT_SENDER_POSTAL_CODE: + nSubType = UserDataPart::ZIP; + break; + case XML_TOK_TEXT_SENDER_COUNTRY: + nSubType = UserDataPart::COUNTRY; + break; + case XML_TOK_TEXT_SENDER_STATE_OR_PROVINCE: + nSubType = UserDataPart::STATE; + break; + default: + bValid = false; + break; + } + + // process Attributes + XMLTextFieldImportContext::startFastElement(Element, xAttrList); +} + void XMLSenderFieldImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue) @@ -836,6 +909,20 @@ XMLAuthorFieldImportContext::XMLAuthorFieldImportContext( SetServiceName(sServiceAuthor); } +XMLAuthorFieldImportContext::XMLAuthorFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element, sal_uInt16 nToken) +: XMLSenderFieldImportContext(rImport, rHlp, Element, nToken), + bAuthorFullName(true), + sServiceAuthor(sAPI_author), + sPropertyAuthorFullName(sAPI_full_name), + sPropertyFixed(sAPI_is_fixed), + sPropertyContent(sAPI_content) +{ + // overwrite service name from XMLSenderFieldImportContext + SetServiceName(sServiceAuthor); +} + void XMLAuthorFieldImportContext::StartElement( const Reference<XAttributeList> & xAttrList) { @@ -846,6 +933,17 @@ void XMLAuthorFieldImportContext::StartElement( XMLTextFieldImportContext::StartElement(xAttrList); } +void XMLAuthorFieldImportContext::startFastElement( sal_Int32 Element, + const Reference< XFastAttributeList >& xAttrList) + throw(RuntimeException, SAXException, std::exception) +{ + bAuthorFullName = (XML_TOK_TEXT_AUTHOR_INITIALS != nElementToken); + bValid = true; + + // process Attributes + XMLTextFieldImportContext::startFastElement(Element, xAttrList); +} + void XMLAuthorFieldImportContext::PrepareField( const Reference<XPropertySet> & rPropSet) { commit 5fc2695bf7259221337245289dfc128c95294b2c Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Sat Oct 3 10:39:00 2015 +0200 fastparser impl. for XMLTemplateNameImportContext Change-Id: I6f58b7220f8ab737bee93a64480f1b4aee459bc0 diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 22695cf..fd83b88 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -918,6 +918,9 @@ public: XMLTextImportHelper& rHlp, sal_uInt16 nPrfx, const OUString& sLocalName); + XMLTemplateNameImportContext(SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element); protected: /// process attribute values diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index a5d61a2..3e27e3a 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -2728,6 +2728,16 @@ XMLTemplateNameImportContext::XMLTemplateNameImportContext( bValid = true; } +XMLTemplateNameImportContext::XMLTemplateNameImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element) +: XMLTextFieldImportContext(rImport, rHlp, sAPI_template_name, Element), + sPropertyFileFormat(sAPI_file_format), + nFormat(TemplateDisplayFormat::FULL) +{ + bValid = true; +} + void XMLTemplateNameImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) commit 45cc7a9bb79bac6635e1fe3f4150bca1ffaf9659 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Fri Oct 2 13:10:55 2015 +0200 fastparser impl. for XMLBibliographyFieldImportContext // TODO set aValue.Name in startFastElement Change-Id: Iac6238e13622a436b6ec0e2bff3bcce888d13cff diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 51c4f70..22695cf 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -1337,12 +1337,18 @@ public: XMLTextImportHelper& rHlp, sal_uInt16 nPrfx, const OUString& sLocalName); + XMLBibliographyFieldImportContext(SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element); protected: /// process attributes (fill aValues) virtual void StartElement( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList> & xAttrList) SAL_OVERRIDE; + virtual void startFastElement( sal_Int32 Element, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) + throw(css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE; /// empty method; all attributes are handled in StartElement virtual void ProcessAttribute( sal_uInt16 nAttrToken, diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 6311bd8..a5d61a2 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -4111,6 +4111,16 @@ XMLBibliographyFieldImportContext::XMLBibliographyFieldImportContext( bValid = true; } +XMLBibliographyFieldImportContext::XMLBibliographyFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element) +: XMLTextFieldImportContext(rImport, rHlp, sAPI_bibliography, Element), + sPropertyFields("Fields"), + aValues() +{ + bValid = true; +} + // TODO: this is the same map as is used in the text field export static SvXMLEnumMapEntry const aBibliographyDataTypeMap[] = { @@ -4189,6 +4199,51 @@ void XMLBibliographyFieldImportContext::StartElement( } } +void XMLBibliographyFieldImportContext::startFastElement( sal_Int32 /*Element*/, + const Reference< XFastAttributeList >& xAttrList ) + throw( RuntimeException, SAXException, std::exception ) +{ + // iterate over attributes + Sequence< xml::FastAttribute > attributesSeq = xAttrList->getFastAttributes(); + sal_Int16 nLength = attributesSeq.getLength(); + xml::FastAttribute* attributes = attributesSeq.getArray(); + for( sal_Int16 i=0; i < nLength; i++ ) + { + xml::FastAttribute attr = attributes[i]; + + if( (attr.Token & (NAMESPACE | XML_NAMESPACE_TEXT)) == (NAMESPACE | XML_NAMESPACE_TEXT) ) + { + PropertyValue aValue; + // TODO set aValue.Name + Any aAny; + + // special treatment for bibliography type + // biblio vx bibilio: #96658#; also read old documents + if( attr.Token == (NAMESPACE | XML_NAMESPACE_TEXT | XML_bibiliographic_type) || + attr.Token == (NAMESPACE | XML_NAMESPACE_TEXT | XML_bibliography_type) ) + { + sal_uInt16 nTmp; + if( SvXMLUnitConverter::convertEnum( + nTmp, attr.Value, aBibliographyDataTypeMap) ) + { + aAny <<= (sal_Int16)nTmp; + aValue.Value = aAny; + + aValues.push_back(aValue); + } + } + else + { + aAny <<= attr.Value; + aValue.Value = aAny; + + aValues.push_back(aValue); + } + } + // else: unknown namespace -> ignore + } +} + void XMLBibliographyFieldImportContext::ProcessAttribute( sal_uInt16, const OUString& ) commit f18cdf04c8c0803cdfba7df380ce96ef21e3f86d Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Fri Oct 2 12:36:12 2015 +0200 fastparser impl. for XMLHiddenParagraphImportContext Change-Id: I5b6b1dc751e32224512bf4d5ddd579892f7fa90d diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 1d4df6c..51c4f70 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -781,6 +781,9 @@ public: XMLTextImportHelper& rHlp, sal_uInt16 nPrfx, const OUString& sLocalName); + XMLHiddenParagraphImportContext(SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element); protected: /// process attribute values diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 93b1226..6311bd8 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -2354,6 +2354,17 @@ XMLHiddenParagraphImportContext::XMLHiddenParagraphImportContext( { } +XMLHiddenParagraphImportContext::XMLHiddenParagraphImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element) +: XMLTextFieldImportContext(rImport, rHlp, sAPI_hidden_paragraph, Element), + sPropertyCondition(sAPI_condition), + sPropertyIsHidden(sAPI_is_hidden), + sCondition(), + bIsHidden(false) +{ +} + void XMLHiddenParagraphImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) commit b63348263542d4b7d2ae75e71e30e0ce785fa1b4 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Fri Oct 2 12:32:14 2015 +0200 fastparser impl. for XMLTimeFieldImportContext and subclass Change-Id: Iefaeb2fd6487440ceb47d58c5830717920dff88e diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index ac7228c..1d4df6c 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -330,6 +330,10 @@ public: XMLTextImportHelper& rHlp, /// Text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& sLocalName); /// element name w/o prefix + XMLTimeFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element); /// process attribute values virtual void ProcessAttribute( sal_uInt16 nAttrToken, @@ -353,6 +357,10 @@ public: XMLTextImportHelper& rHlp, /// Text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& sLocalName); /// element name w/o prefix + XMLDateFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Elemtn); /// process attribute values virtual void ProcessAttribute( sal_uInt16 nAttrToken, diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index e73451d..93b1226 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -1209,6 +1209,28 @@ XMLTimeFieldImportContext::XMLTimeFieldImportContext( bValid = true; // always valid! } +XMLTimeFieldImportContext::XMLTimeFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element) +: XMLTextFieldImportContext(rImport, rHlp, sAPI_date_time, Element), + sPropertyNumberFormat(sAPI_number_format), + sPropertyFixed(sAPI_is_fixed), + sPropertyDateTimeValue(sAPI_date_time_value), + sPropertyDateTime(sAPI_date_time), + sPropertyAdjust(sAPI_adjust), + sPropertyIsDate(sAPI_is_date), + sPropertyIsFixedLanguage(sAPI_is_fixed_language), + nAdjust(0), + nFormatKey(0), + bTimeOK(false), + bFormatOK(false), + bFixed(false), + bIsDate(false), + bIsDefaultLanguage( true ) +{ + bValid = true; // always valid! +} + void XMLTimeFieldImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) { @@ -1340,6 +1362,14 @@ XMLDateFieldImportContext::XMLDateFieldImportContext( bIsDate = true; // always a date! } +XMLDateFieldImportContext::XMLDateFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element) +: XMLTimeFieldImportContext(rImport, rHlp, Element) +{ + bIsDate = true; // always a date! +} + void XMLDateFieldImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) commit 23d1b32338af4c05df12a2e59ee5719ecad7b228 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Fri Oct 2 12:16:52 2015 +0200 fastparser impl. for XMLVarFieldImportContext and subclasses and subsubclasses Change-Id: I0dda419511c742c7b6cd7eda0d03b5bff41eaa8a diff --git a/xmloff/inc/txtvfldi.hxx b/xmloff/inc/txtvfldi.hxx index 41bede4..3a7b487 100644 --- a/xmloff/inc/txtvfldi.hxx +++ b/xmloff/inc/txtvfldi.hxx @@ -190,6 +190,24 @@ public: bool bStyle, /// set data style (NumberFormat-Prop.) bool bValue, /// set value with Content/Value-Prop. bool bPresentation); /// set presentation from elem. content + XMLVarFieldImportContext( + // for XMLTextFieldImportContext: + SvXMLImport& rImport, /// XML Import + XMLTextImportHelper& rHlp, /// text import helper + const sal_Char* pServiceName, /// name of SO API service + sal_Int32 Element, /// element token (namespace and name) + // config variables for PrepareField behavior: + bool bFormula, /// set Formula property + bool bFormulaDefault, /// use content as default for formula + bool bDescription, /// set sDescription with Hint-property + bool bHelp, + bool bHint, + bool bVisible, /// set IsVisible (display attr) + bool bDisplayFormula, /// set ??? (display attr.) + bool bType, /// set value type with ???-property + bool bStyle, /// set data style (NumberFormat-Prop.) + bool bValue, /// set value with Content/Value-Prop. + bool bPresentation); /// set presentation from elem. content protected: /// process attribute values @@ -224,7 +242,10 @@ public: XMLTextImportHelper& rHlp, /// Text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& rLocalName); /// element name w/o prefix - + XMLVariableGetFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element); protected: /// prepare XTextField for insertion into document @@ -249,6 +270,10 @@ public: XMLTextImportHelper& rHlp, /// Text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& sLocalName); /// element name w/o prefix + XMLExpressionFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element); protected: virtual void PrepareField( @@ -270,6 +295,10 @@ public: XMLTextImportHelper& rHlp, /// Text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& sLocalName); /// element name w/o prefix + XMLTextInputFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element); protected: virtual void PrepareField( @@ -315,12 +344,34 @@ public: bool bStyle, /// see XMLTextFieldImportContext bool bValue, /// see XMLTextFieldImportContext bool bPresentation); /// see XMLTextFieldImportContext + XMLSetVarFieldImportContext( + // for XMLTextFieldImportContext: + SvXMLImport& rImport, /// see XMLTextFieldImportContext + XMLTextImportHelper& rHlp, /// see XMLTextFieldImportContext + const sal_Char* pServiceName, /// see XMLTextFieldImportContext + sal_Int32 Element, /// element token (namespace and name) + // for finding appropriate field master (see EndElement()) + VarType eVarType, /// variable type + // config variables: + bool bFormula, /// see XMLTextFieldImportContext + bool bFormulaDefault, /// see XMLTextFieldImportContext + bool bDescription, /// see XMLTextFieldImportContext + bool bHelp, /// see XMLTextFieldImportContext + bool bHint, /// see XMLTextFieldImportContext + bool bVisible, /// see XMLTextFieldImportContext + bool bDisplayFormula, /// see XMLTextFieldImportContext + bool bType, /// see XMLTextFieldImportContext + bool bStyle, /// see XMLTextFieldImportContext + bool bValue, /// see XMLTextFieldImportContext + bool bPresentation); /// see XMLTextFieldImportContext protected: /// create XTextField, attach master and insert into document; /// also calls PrepareTextField virtual void EndElement() SAL_OVERRIDE; + virtual void endFastElement( sal_Int32 Element ) + throw(css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE; /// find appropriate field master bool FindFieldMaster( @@ -344,6 +395,10 @@ public: XMLTextImportHelper& rHlp, /// Text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& rLocalName); /// element name w/o prefix + XMLVariableSetFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element); protected: /// prepare XTextField for insertion into document @@ -369,6 +424,10 @@ public: XMLTextImportHelper& rHlp, /// Text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& rLocalName); /// element name w/o prefix + XMLVariableInputFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element); protected: @@ -393,6 +452,10 @@ public: XMLTextImportHelper& rHlp, /// Text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& rLocalName); /// element name w/o prefix + XMLUserFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element); }; /** user input fields (<text:user-field-input>) */ @@ -408,6 +471,10 @@ public: XMLTextImportHelper& rHlp, /// Text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& rLocalName); /// element name w/o prefix + XMLUserFieldInputImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element); virtual void PrepareField( const ::com::sun::star::uno::Reference< @@ -436,6 +503,10 @@ public: XMLTextImportHelper& rHlp, /// Text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& rLocalName); /// element name w/o prefix + XMLSequenceFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element); protected: diff --git a/xmloff/source/text/txtvfldi.cxx b/xmloff/source/text/txtvfldi.cxx index 3a7006b..f98eb29 100644 --- a/xmloff/source/text/txtvfldi.cxx +++ b/xmloff/source/text/txtvfldi.cxx @@ -140,6 +140,43 @@ XMLVarFieldImportContext::XMLVarFieldImportContext( { } +XMLVarFieldImportContext::XMLVarFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + const sal_Char* pServiceName, + sal_Int32 Element, + bool bFormula, bool bFormulaDefault, + bool bDescription, bool bHelp, bool bHint, bool bVisible, + bool bIsDisplayFormula, + bool bType, bool bStyle, bool bValue, + bool bPresentation) : + XMLTextFieldImportContext(rImport, rHlp, pServiceName, Element), + sPropertyContent(sAPI_content), + sPropertyHint(sAPI_hint), + sPropertyHelp(sAPI_help), + sPropertyTooltip(sAPI_tooltip), + sPropertyIsVisible(sAPI_is_visible), + sPropertyIsDisplayFormula(sAPI_is_show_formula), + sPropertyCurrentPresentation(sAPI_current_presentation), + aValueHelper(rImport, rHlp, bType, bStyle, bValue, false), + bDisplayFormula(false), + bDisplayNone(false), + bNameOK(false), + bFormulaOK(false), + bDescriptionOK(false), + bHelpOK(false), + bHintOK(false), + bDisplayOK(false), + bSetFormula(bFormula), + bSetFormulaDefault(bFormulaDefault), + bSetDescription(bDescription), + bSetHelp(bHelp), + bSetHint(bHint), + bSetVisible(bVisible), + bSetDisplayFormula(bIsDisplayFormula), + bSetPresentation(bPresentation) +{ +} + void XMLVarFieldImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) @@ -313,6 +350,22 @@ XMLSetVarFieldImportContext::XMLSetVarFieldImportContext( { } +XMLSetVarFieldImportContext::XMLSetVarFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + const sal_Char* pServiceName, sal_Int32 Element, + VarType eVarType, + bool bFormula, bool bFormulaDefault, + bool bDescription, bool bHelp, bool bHint, bool bVisible, bool bIsDisplayFormula, + bool bType, bool bStyle, bool bValue, bool bPresentation) : + XMLVarFieldImportContext(rImport, rHlp, pServiceName, + Element, + bFormula, bFormulaDefault, + bDescription, bHelp, bHint, bVisible, bIsDisplayFormula, + bType, bStyle, bValue, bPresentation), + eFieldType(eVarType) +{ +} + void XMLSetVarFieldImportContext::EndElement() { // should we call PrepareField on the field, or rather on it's master? @@ -365,6 +418,59 @@ void XMLSetVarFieldImportContext::EndElement() GetImportHelper().InsertString(GetContent()); } +void XMLSetVarFieldImportContext::endFastElement( sal_Int32 /*Element*/ ) + throw(RuntimeException, xml::sax::SAXException, std::exception) +{ + // should we call PrepareField on the field, or rather on it's master? + // currently: call on field (just like superclass) + // possible alternatives: call on master + // call field or master depending on variable + // PrepareMaster() in addition to PrepareField() + + DBG_ASSERT(!GetServiceName().isEmpty(), "no service name for element!"); + + if( bValid ) + { + DBG_ASSERT(!GetName().isEmpty(), "variable name needed!"); + + // find field master + Reference<XPropertySet> xMaster; + if( FindFieldMaster(xMaster) ) + { + // create field/Service + Reference<XPropertySet> xPropSet; + if( CreateField(xPropSet, sAPI_textfield_prefix + GetServiceName()) ) + { + Reference<XDependentTextField> xDepTextField(xPropSet, UNO_QUERY); + if( xDepTextField.is() ) + { + // attach field to field master + xDepTextField->attachTextFieldMaster(xMaster); + + // attach field to document + Reference<XTextContent> xTextContent(xPropSet, UNO_QUERY); + if( xTextContent.is() ) + { + try { + // insert, set field properties and exit! + GetImportHelper().InsertTextContent(xTextContent); + PrepareField(xPropSet); + } catch (lang::IllegalArgumentException& /*e*/) + { + // ignore e: #i54023# + }; + return; + } + } + } + } + } + + // above: exit on success; so for all error cases we end up here! + // write element content + GetImportHelper().InsertString(GetContent()); +} + bool XMLSetVarFieldImportContext::FindFieldMaster( Reference<XPropertySet> & xMaster) { @@ -404,6 +510,24 @@ XMLSequenceFieldImportContext::XMLSequenceFieldImportContext( { } +XMLSequenceFieldImportContext::XMLSequenceFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLSetVarFieldImportContext(rImport, rHlp, sAPI_set_expression, + Element, VarTypeSequence, + // formula + true, true, + false, false, false, false, + false, + false, false, false, false), + sPropertyNumberFormat(sAPI_number_format), + sPropertySequenceValue(sAPI_sequence_value), + sNumFormat(OUString('1')), + sNumFormatSync(GetXMLToken(XML_FALSE)), + bRefNameOK(false) +{ +} + void XMLSequenceFieldImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) { @@ -474,6 +598,22 @@ XMLVariableSetFieldImportContext::XMLVariableSetFieldImportContext( { } +XMLVariableSetFieldImportContext::XMLVariableSetFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLSetVarFieldImportContext(rImport, rHlp, sAPI_set_expression, + Element, VarTypeSimple, + // formula, Value&type, style, + // display name + true, true, + false, false, false, + true, false, + true, true, true, + true), + sPropertySubType(sAPI_sub_type) +{ +} + void XMLVariableSetFieldImportContext::PrepareField( const Reference<XPropertySet> & xPropertySet) { @@ -511,6 +651,23 @@ XMLVariableInputFieldImportContext::XMLVariableInputFieldImportContext( { } +XMLVariableInputFieldImportContext::XMLVariableInputFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLSetVarFieldImportContext(rImport, rHlp, sAPI_set_expression, + Element, VarTypeSimple, + // description, display none/formula, + // value&type, style, formula + true, true, + true, true, true, + true, false, + true, true, true, + true), + sPropertySubType(sAPI_sub_type), + sPropertyIsInput(sAPI_is_input) +{ +} + void XMLVariableInputFieldImportContext::PrepareField( const Reference<XPropertySet> & xPropertySet) { @@ -550,7 +707,19 @@ XMLUserFieldImportContext::XMLUserFieldImportContext( { } - +XMLUserFieldImportContext::XMLUserFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLSetVarFieldImportContext(rImport, rHlp, sAPI_user, + Element, VarTypeUserField, + // display none/formula, style + false, false, + false, false, false, true, + true, + false, true, false, + false) +{ +} // user input field @@ -573,6 +742,20 @@ XMLUserFieldInputImportContext::XMLUserFieldInputImportContext( { } +XMLUserFieldInputImportContext::XMLUserFieldInputImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLVarFieldImportContext(rImport, rHlp, sAPI_input_user, + Element, + // description, style + false, false, + true, false, false, + false, false, + false /*???*/, true, false, + false) +{ +} + void XMLUserFieldInputImportContext::PrepareField( const Reference<XPropertySet> & xPropertySet) { @@ -605,6 +788,20 @@ XMLVariableGetFieldImportContext::XMLVariableGetFieldImportContext( { } +XMLVariableGetFieldImportContext::XMLVariableGetFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element) +: XMLVarFieldImportContext(rImport, rHlp, sAPI_get_expression, + Element, + // style, display formula + false, false, + false, false, false, + false, true, + true, true, false, + true) +{ +} + void XMLVariableGetFieldImportContext::PrepareField( const Reference<XPropertySet> & xPropertySet) { @@ -641,6 +838,21 @@ XMLExpressionFieldImportContext::XMLExpressionFieldImportContext( bValid = true; // always valid } +XMLExpressionFieldImportContext::XMLExpressionFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element) +: XMLVarFieldImportContext(rImport, rHlp, sAPI_get_expression, + Element, + // formula, type, style, display formula + true, true, + false, false, false, + false, true, + true, true, false, + true), + sPropertySubType(sAPI_sub_type) +{ + bValid = true; // always valid +} void XMLExpressionFieldImportContext::PrepareField( const Reference<XPropertySet> & xPropertySet) @@ -678,6 +890,22 @@ XMLTextInputFieldImportContext::XMLTextInputFieldImportContext( bValid = true; // always valid } +XMLTextInputFieldImportContext::XMLTextInputFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element) +: XMLVarFieldImportContext(rImport, rHlp, sAPI_input, + Element, + // description + false, false, + true, true, true, + false, false, + false, false, false, + false), + sPropertyContent(sAPI_content) +{ + bValid = true; // always valid +} + void XMLTextInputFieldImportContext::PrepareField( const Reference<XPropertySet> & xPropertySet) { commit f89bf7b0443da7f014739005a08ab5e4c08ca42d Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Fri Oct 2 11:20:37 2015 +0200 fastparser impl. for XMLDropDownFieldImportContext Change-Id: I0fa9be201dac567f9a68fca4bb76b5de6eae9fda diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 40d7117..ac7228c 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -1490,11 +1490,18 @@ public: XMLTextImportHelper& rHlp, sal_uInt16 nPrfx, const OUString& sLocalName); + XMLDropDownFieldImportContext(SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element); virtual SvXMLImportContext* CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName, const ::com::sun::star::uno::Reference<com::sun::star::xml::sax::XAttributeList >& xAttrList ) SAL_OVERRIDE; + virtual css::uno::Reference< css::xml::sax::XFastContextHandler > createFastChildContext( + sal_Int32 Element, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) + throw(css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE; protected: /// process attribute values diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 4d3b8ac..e73451d 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -4875,6 +4875,25 @@ XMLDropDownFieldImportContext::XMLDropDownFieldImportContext( bValid = true; } +XMLDropDownFieldImportContext::XMLDropDownFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLTextFieldImportContext( rImport, rHlp, sAPI_drop_down, Element ), + aLabels(), + sName(), + nSelected( -1 ), + bNameOK( false ), + bHelpOK(false), + bHintOK(false), + sPropertyItems( "Items" ), + sPropertySelectedItem( "SelectedItem" ), + sPropertyName( "Name" ), + sPropertyHelp( "Help" ), + sPropertyToolTip( "Tooltip" ) +{ + bValid = true; +} + static bool lcl_ProcessLabel( const SvXMLImport& rImport, const Reference<XAttributeList>& xAttrList, OUString& rLabel, @@ -4907,6 +4926,29 @@ static bool lcl_ProcessLabel( const SvXMLImport& rImport, return bValid; } +static bool lcl_ProcessLabel( + const Reference< XFastAttributeList >& xAttrList, + OUString& rLabel, + bool& rIsSelected ) +{ + bool bValid = false; + if( !xAttrList.is() ) + return bValid; + if( xAttrList->hasAttribute( NAMESPACE | XML_NAMESPACE_TEXT | XML_value ) ) + { + rLabel = xAttrList->getValue( NAMESPACE | XML_NAMESPACE_TEXT | XML_value ); + bValid = true; + } + if( xAttrList->hasAttribute( NAMESPACE | XML_NAMESPACE_TEXT | XML_current_selected ) ) + { + bool bTmp(false); + if( ::sax::Converter::convertBool( bTmp, + xAttrList->getValue( NAMESPACE | XML_NAMESPACE_TEXT | XML_current_selected ) ) ) + rIsSelected = bTmp; + } + return bValid; +} + SvXMLImportContext* XMLDropDownFieldImportContext::CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName, @@ -4927,6 +4969,24 @@ SvXMLImportContext* XMLDropDownFieldImportContext::CreateChildContext( return new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); } +Reference< XFastContextHandler > XMLDropDownFieldImportContext::createFastChildContext( + sal_Int32 Element, const Reference< XFastAttributeList >& xAttrList ) + throw(RuntimeException, SAXException, std::exception) +{ + if( Element == (NAMESPACE | XML_NAMESPACE_TEXT | XML_label) ) + { + OUString sLabel; + bool bIsSelected = false; + if( lcl_ProcessLabel( xAttrList, sLabel, bIsSelected ) ) + { + if( bIsSelected ) + nSelected = static_cast<sal_Int32>( aLabels.size() ); + aLabels.push_back( sLabel ); + } + } + return new SvXMLImportContext( GetImport() ); +} + void XMLDropDownFieldImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) commit fadeef1d0e8697f52ba282c6e201f84aea418f28 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Fri Oct 2 11:01:56 2015 +0200 fastparser impl. for XMLFooterFieldImportContext Change-Id: I55a4c955dd5a7d8b956f8ba593af516fed007584 diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index fed0d8e..40d7117 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -1544,6 +1544,9 @@ public: XMLTextImportHelper& rHlp, /// Text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& sLocalName); /// element name w/o prefix + XMLFooterFieldImportContext(SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element); /// process attribute values virtual void ProcessAttribute( sal_uInt16 nAttrToken, diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 163fdd9..4d3b8ac 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -5039,6 +5039,15 @@ XMLFooterFieldImportContext::XMLFooterFieldImportContext( bValid = true; } +XMLFooterFieldImportContext::XMLFooterFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLTextFieldImportContext(rImport, rHlp, sAPI_footer, Element ) +{ + sServicePrefix = sAPI_presentation_prefix; + bValid = true; +} + /// process attribute values void XMLFooterFieldImportContext::ProcessAttribute( sal_uInt16, const OUString& ) { commit e6e98dc30a43589a1e62c3ceceacdbfe7c0f8a5d Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Fri Oct 2 10:58:37 2015 +0200 fastparser impl. for XMLConditionalTextImportContext Change-Id: Ifef0cbafbc318d835944fee5d95b14755bfd2dff diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index a8c1919..fed0d8e 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -810,6 +810,9 @@ public: XMLTextImportHelper& rHlp, sal_uInt16 nPrfx, const OUString& sLocalName); + XMLConditionalTextImportContext(SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ); protected: /// process attribute values diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 2085f914..163fdd9 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -2387,6 +2387,22 @@ XMLConditionalTextImportContext::XMLConditionalTextImportContext( { } +XMLConditionalTextImportContext::XMLConditionalTextImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLTextFieldImportContext(rImport, rHlp, sAPI_conditional_text, Element), + sPropertyCondition(sAPI_condition), + sPropertyTrueContent(sAPI_true_content), + sPropertyFalseContent(sAPI_false_content), + sPropertyIsConditionTrue(sAPI_is_condition_true), + sPropertyCurrentPresentation(sAPI_current_presentation), + bConditionOK(false), + bTrueOK(false), + bFalseOK(false), + bCurrentValue(false) +{ +} + void XMLConditionalTextImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) commit f5c279566323bb0e96d9bef1b43649b9fbcd125e Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Fri Oct 2 10:51:36 2015 +0200 fastparser impl. for XMLSimpleDocInfoImportContext and subclasses Change-Id: I2e22d63b38bfc9db19fbb5f02c269f8aa580672b diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 9172695..a8c1919 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -642,6 +642,12 @@ public: sal_uInt16 nToken, bool bContent, bool bAuthor); + XMLSimpleDocInfoImportContext( SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element, + sal_uInt16 nToken, + bool bContent, + bool bAuthor ); protected: /// process attribute values @@ -677,6 +683,10 @@ public: sal_uInt16 nPrfx, const OUString& sLocalName, sal_uInt16 nToken); + XMLDateTimeDocInfoImportContext(SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element, + sal_uInt16 nToken); protected: /// process attribute values @@ -702,6 +712,10 @@ public: sal_uInt16 nPrfx, const OUString& sLocalName, sal_uInt16 nToken); + XMLRevisionDocInfoImportContext(SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element, + sal_uInt16 nToken); protected: /// prepare XTextField for insertion into document @@ -729,6 +743,10 @@ public: sal_uInt16 nPrfx, const OUString& sLocalName, sal_uInt16 nToken); + XMLUserDocInfoImportContext(SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element, + sal_uInt16 nToken); protected: /// process attribute values diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 3c8339d..2085f914 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -1859,6 +1859,22 @@ XMLSimpleDocInfoImportContext::XMLSimpleDocInfoImportContext( bValid = true; } +XMLSimpleDocInfoImportContext::XMLSimpleDocInfoImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element, sal_uInt16 nToken, + bool bContent, bool bAuthor ) +: XMLTextFieldImportContext(rImport, rHlp, MapTokenToServiceName(nToken), Element), + sPropertyFixed(sAPI_is_fixed), + sPropertyContent(sAPI_content), + sPropertyAuthor(sAPI_author), + sPropertyCurrentPresentation(sAPI_current_presentation), + bFixed(false), + bHasAuthor(bAuthor), + bHasContent(bContent) +{ + bValid = true; +} + void XMLSimpleDocInfoImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) @@ -1997,6 +2013,15 @@ XMLRevisionDocInfoImportContext::XMLRevisionDocInfoImportContext( bValid = true; } +XMLRevisionDocInfoImportContext::XMLRevisionDocInfoImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element, sal_uInt16 nToken ) +: XMLSimpleDocInfoImportContext(rImport, rHlp, Element, nToken, false, false), + sPropertyRevision(sAPI_revision) +{ + bValid = true; +} + void XMLRevisionDocInfoImportContext::PrepareField( const Reference<XPropertySet> & rPropertySet) { @@ -2076,6 +2101,50 @@ XMLDateTimeDocInfoImportContext::XMLDateTimeDocInfoImportContext( } } +XMLDateTimeDocInfoImportContext::XMLDateTimeDocInfoImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element, sal_uInt16 nToken ) +: XMLSimpleDocInfoImportContext(rImport, rHlp, Element, nToken, false, false), + sPropertyNumberFormat(sAPI_number_format), + sPropertyIsDate(sAPI_is_date), + sPropertyIsFixedLanguage(sAPI_is_fixed_language), + nFormat(0), + bFormatOK(false), + bIsDate(false), + bHasDateTime(false), + bIsDefaultLanguage(true) +{ + // we allow processing of EDIT_DURATION here, because import of actual + // is not supported anyway. If it was, we'd need an extra import class + // because times and time durations are presented differently! + + bValid = true; + switch (nToken) + { + case XML_TOK_TEXT_DOCUMENT_CREATION_DATE: + case XML_TOK_TEXT_DOCUMENT_PRINT_DATE: + case XML_TOK_TEXT_DOCUMENT_SAVE_DATE: + bIsDate = true; + bHasDateTime = true; + break; + case XML_TOK_TEXT_DOCUMENT_CREATION_TIME: + case XML_TOK_TEXT_DOCUMENT_PRINT_TIME: + case XML_TOK_TEXT_DOCUMENT_SAVE_TIME: + bIsDate = false; + bHasDateTime = true; + break; + case XML_TOK_TEXT_DOCUMENT_EDIT_DURATION: + bIsDate = false; + bHasDateTime = false; + break; + default: + OSL_FAIL( + "XMLDateTimeDocInfoImportContext needs date/time doc. fields"); + bValid = false; + break; + } +} + void XMLDateTimeDocInfoImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) @@ -2157,6 +2226,20 @@ XMLUserDocInfoImportContext::XMLUserDocInfoImportContext( bValid = false; } +XMLUserDocInfoImportContext::XMLUserDocInfoImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element, sal_uInt16 nToken ) +: XMLSimpleDocInfoImportContext(rImport, rHlp, Element, nToken, false, false), + sPropertyName(sAPI_name), + sPropertyNumberFormat(sAPI_number_format), + sPropertyIsFixedLanguage(sAPI_is_fixed_language), + nFormat(0), + bFormatOK(false), + bIsDefaultLanguage( true ) +{ + bValid = false; +} + void XMLUserDocInfoImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) commit 9e1937ddf56c9725c65851760d4260009cfff9ef Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Thu Sep 10 17:30:23 2015 +0200 fastparser impl. for XMLPlaceholderFieldImportContext Change-Id: Ic58f090582027f208c77270cc7e11bff3eb3fb75 diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 4fd9843..9172695 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -286,6 +286,9 @@ public: XMLTextImportHelper& rHlp, /// Text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& sLocalName); /// element name w/o prefix + XMLPlaceholderFieldImportContext( SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ); protected: /// process attribute values diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 9c7db96..3c8339d 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -1100,6 +1100,17 @@ XMLPlaceholderFieldImportContext::XMLPlaceholderFieldImportContext( { } +XMLPlaceholderFieldImportContext::XMLPlaceholderFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLTextFieldImportContext( rImport, rHlp, sAPI_jump_edit, Element ), + sPropertyPlaceholderType(sAPI_place_holder_type), + sPropertyPlaceholder(sAPI_place_holder), + sPropertyHint(sAPI_hint), + nPlaceholderType(PlaceholderType::TEXT) +{ +} + /// process attribute values void XMLPlaceholderFieldImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) commit e0ae1447eb985ff665d8cf8617d784ecf98282a3 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Thu Sep 10 17:25:36 2015 +0200 fastparser impl. for XMLTableFormulaImportContext Change-Id: I16cd706da095f585d4c1b742e7775d0b833d33a2 diff --git a/xmloff/inc/txtvfldi.hxx b/xmloff/inc/txtvfldi.hxx index de49969..41bede4 100644 --- a/xmloff/inc/txtvfldi.hxx +++ b/xmloff/inc/txtvfldi.hxx @@ -556,6 +556,9 @@ public: XMLTextImportHelper& rHlp, /// text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& rLocalName); /// element name w/o prefix + XMLTableFormulaImportContext( SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ); virtual ~XMLTableFormulaImportContext(); protected: diff --git a/xmloff/source/text/txtvfldi.cxx b/xmloff/source/text/txtvfldi.cxx index 88710ab..3a7006b 100644 --- a/xmloff/source/text/txtvfldi.cxx +++ b/xmloff/source/text/txtvfldi.cxx @@ -710,6 +710,17 @@ XMLTableFormulaImportContext::XMLTableFormulaImportContext( { } +XMLTableFormulaImportContext::XMLTableFormulaImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLTextFieldImportContext( rImport, rHlp, sAPI_table_formula, Element ), + sPropertyIsShowFormula("IsShowFormula"), + sPropertyCurrentPresentation("CurrentPresentation"), + aValueHelper(rImport, rHlp, false, true, false, true), + bIsShowFormula(false) +{ +} + XMLTableFormulaImportContext::~XMLTableFormulaImportContext() { } commit 9f20498542753233932e284b825b65d2797fd4f3 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Thu Sep 10 17:20:26 2015 +0200 fastparser impl. for XMLSheetNameImportContext Change-Id: If1179cf0c6f2b391d5a118be4ade6a2c7fedc5ce diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index a207143..4fd9843 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -1218,6 +1218,9 @@ public: XMLTextImportHelper& rHlp, sal_uInt16 nPrfx, const OUString& sLocalName); + XMLSheetNameImportContext( SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ); protected: /// no attributes -> empty method diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index e3800a0..9c7db96 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -3825,6 +3825,14 @@ XMLSheetNameImportContext::XMLSheetNameImportContext( bValid = true; // always valid! } +XMLSheetNameImportContext::XMLSheetNameImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLTextFieldImportContext( rImport, rHlp, sAPI_sheet_name, Element ) +{ + bValid = true; // always valid! +} + void XMLSheetNameImportContext::ProcessAttribute( sal_uInt16, const OUString& ) commit ef214ac0b1d87d6143b46dde5225b74b1f827c6c Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Thu Sep 10 17:16:29 2015 +0200 fastparser impl. for XMLFileNameImportContext Change-Id: I35b3554f61886c00804b63291b05dbc0c2653f98 diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index b596049..a207143 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -854,6 +854,9 @@ public: XMLTextImportHelper& rHlp, sal_uInt16 nPrfx, const OUString& sLocalName); + XMLFileNameImportContext( SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ); protected: /// process attribute values diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index e250d3e..e3800a0 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -2476,6 +2476,19 @@ XMLFileNameImportContext::XMLFileNameImportContext( bValid = true; } +XMLFileNameImportContext::XMLFileNameImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLTextFieldImportContext( rImport, rHlp, sAPI_file_name, Element ), + sPropertyFixed(sAPI_is_fixed), + sPropertyFileFormat(sAPI_file_format), + sPropertyCurrentPresentation(sAPI_current_presentation), + nFormat(FilenameDisplayFormat::FULL), + bFixed(false) +{ + bValid = true; +} + void XMLFileNameImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) commit 9c0240837f9ee4ab589c7f1d173bb4c8af50af91 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Thu Sep 10 17:08:43 2015 +0200 fastparser impl. for XMLPageVarSetFieldImportContext Change-Id: I7e9644c111e84a59eb82bd7ccba333a960e07a97 diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 1915c51..b596049 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -1007,6 +1007,9 @@ public: XMLTextImportHelper& rHlp, sal_uInt16 nPrfx, const OUString& sLocalName); + XMLPageVarSetFieldImportContext( SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ); protected: /// process attribute values diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 9cf9dfb..e250d3e 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -2895,6 +2895,17 @@ XMLPageVarSetFieldImportContext::XMLPageVarSetFieldImportContext( bValid = true; } +XMLPageVarSetFieldImportContext::XMLPageVarSetFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, sal_Int32 Element ) +: XMLTextFieldImportContext( rImport, rHlp, sAPI_reference_page_set, Element ), + sPropertyOn(sAPI_on), + sPropertyOffset(sAPI_offset), + nAdjust(0), + bActive(true) +{ + bValid = true; +} + void XMLPageVarSetFieldImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) commit d767569a142705528835082f73b3de6a1d5b46c8 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Thu Sep 10 17:05:26 2015 +0200 fastparser impl. for XMLHiddenTextImportContext Change-Id: I4f65cf13f35bf832988f7b6cd7f28d2afabdf8ef diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index e7b86fa..1915c51 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -822,6 +822,9 @@ public: XMLTextImportHelper& rHlp, sal_uInt16 nPrfx, const OUString& sLocalName); + XMLHiddenTextImportContext( SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ); protected: /// process attribute values diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index da10d1d..9cf9dfb 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -2378,6 +2378,19 @@ XMLHiddenTextImportContext::XMLHiddenTextImportContext( { } +XMLHiddenTextImportContext::XMLHiddenTextImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLTextFieldImportContext( rImport, rHlp, sAPI_hidden_text, Element ), + sPropertyCondition(sAPI_condition), + sPropertyContent(sAPI_content), + sPropertyIsHidden(sAPI_is_hidden), + bConditionOK(false), + bStringOK(false), + bIsHidden(false) +{ +} + void XMLHiddenTextImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) commit ef12b8a27a283e6eacb87f4784e53a92fbfc91b0 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Thu Sep 10 17:02:04 2015 +0200 fastparser impl. for XMLPageVarGetFieldImportContext Change-Id: Ic644f77435f13de87c6b0772b6f4365667f1c858 diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index ff4f82d5..e7b86fa 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -973,6 +973,9 @@ public: XMLTextImportHelper& rHlp, sal_uInt16 nPrfx, const OUString& sLocalName); + XMLPageVarGetFieldImportContext( SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ); protected: /// process attribute values diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 1d7b617..da10d1d 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -2808,6 +2808,18 @@ XMLPageVarGetFieldImportContext::XMLPageVarGetFieldImportContext( bValid = true; } +XMLPageVarGetFieldImportContext::XMLPageVarGetFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLTextFieldImportContext( rImport, rHlp, sAPI_reference_page_get, Element ), + sPropertyNumberingType(sAPI_numbering_type), + sNumberFormat(), + sLetterSync(), + bNumberFormatOK(false) +{ + bValid = true; +} + void XMLPageVarGetFieldImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) commit 1ba46c783ecf57c03ea1f1c27fd03ab926131a94 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Thu Sep 10 16:58:31 2015 +0200 fastparser impl. for XMLCountFieldImportContext Change-Id: Ie8e0c53823b47eedb959d503777a036b58c65dcb diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 5a44107..ff4f82d5 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -938,6 +938,10 @@ public: sal_uInt16 nPrfx, const OUString& sLocalName, sal_uInt16 nToken); + XMLCountFieldImportContext( SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element, + sal_uInt16 nToken ); protected: /// process attribute values diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 1961ab0..1d7b617 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -2695,6 +2695,18 @@ XMLCountFieldImportContext::XMLCountFieldImportContext( bValid = true; } +XMLCountFieldImportContext::XMLCountFieldImportContext( + SvXMLImport& rImport, XMLTextImportHelper& rHlp, + sal_Int32 Element, sal_uInt16 nToken ) +: XMLTextFieldImportContext( rImport, rHlp, MapTokenToServiceName(nToken), Element ), + sPropertyNumberingType(sAPI_numbering_type), + sNumberFormat(), + sLetterSync(), + bNumberFormatOK(false) +{ + bValid = true; +} + void XMLCountFieldImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) commit 32cae728a432d97fa2754ea5b624e8560d8925ec Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Fri Aug 21 18:26:47 2015 +0200 fastparser impl. for XMLChapterImportContext Change-Id: I4662a5c77265fb2f008955fb02ef29b1f4183037 diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index deadae1..5a44107 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -905,6 +905,9 @@ public: XMLTextImportHelper& rHlp, sal_uInt16 nPrfx, const OUString& sLocalName); + XMLChapterImportContext( SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ); protected: /// process attribute values diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 59ed85b..1961ab0 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -2613,6 +2613,19 @@ XMLChapterImportContext::XMLChapterImportContext( bValid = true; } +XMLChapterImportContext::XMLChapterImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLTextFieldImportContext( rImport, rHlp, sAPI_chapter, Element ), + sPropertyChapterFormat(sAPI_chapter_format), + sPropertyLevel(sAPI_level), + nFormat(ChapterFormat::NAME_NUMBER), + nLevel(0) +{ + bValid = true; +} + void XMLChapterImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) commit 3598c06a791fce8d54d8764b5cd5606a7e21b741 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Fri Aug 21 18:19:51 2015 +0200 fastparser impl. for XMLHeaderFieldImportContext Change-Id: I78ffec25058a103b64d7511ff7315ea03e983cab diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 31100a6..deadae1 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -1472,6 +1472,10 @@ public: XMLTextImportHelper& rHlp, /// Text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& sLocalName); /// element name w/o prefix + XMLHeaderFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ); /// process attribute values virtual void ProcessAttribute( sal_uInt16 nAttrToken, diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index af7fb4a..59ed85b 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -4813,6 +4813,16 @@ XMLHeaderFieldImportContext::XMLHeaderFieldImportContext( bValid = true; } +XMLHeaderFieldImportContext::XMLHeaderFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLTextFieldImportContext( rImport, rHlp, sAPI_header, Element ) +{ + sServicePrefix = sAPI_presentation_prefix; + bValid = true; +} + /// process attribute values void XMLHeaderFieldImportContext::ProcessAttribute( sal_uInt16, const OUString& ) { commit 987a9fe145f537bd3f745eccd95de26b74b27234 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Fri Aug 21 18:16:46 2015 +0200 fastparser impl. for XMLAnnotationImportContext Change-Id: Ia804fc835a6d3e93dcd342721086d218b62eb228 diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 75633a1..31100a6 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -1329,6 +1329,10 @@ public: sal_uInt16 nToken, sal_uInt16 nPrfx, const OUString& sLocalName); + XMLAnnotationImportContext( SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_uInt16 nToken, + sal_Int32 Element ); protected: /// process attributes @@ -1344,7 +1348,13 @@ protected: const OUString& rLocalName, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& xAttrList ) SAL_OVERRIDE; + virtual css::uno::Reference< css::xml::sax::XFastContextHandler > + createFastChildContext( sal_Int32 Element, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) + throw(css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE; virtual void EndElement() SAL_OVERRIDE; + virtual void endFastElement( sal_Int32 Element ) + throw(css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE; }; /** Import a script field (<text:script>) */ diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index f0b44fc..af7fb4a 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -4154,6 +4154,29 @@ XMLAnnotationImportContext::XMLAnnotationImportContext( GetImport().GetTextImport()->PushListContext(); } +XMLAnnotationImportContext::XMLAnnotationImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_uInt16 nToken, + sal_Int32 Element ) +: XMLTextFieldImportContext(rImport, rHlp, sAPI_annotation, Element), + sPropertyAuthor(sAPI_author), + sPropertyInitials(sAPI_initials), + sPropertyContent(sAPI_content), + // why is there no UNO_NAME_DATE_TIME, but only UNO_NAME_DATE_TIME_VALUE? + sPropertyDate(sAPI_date_time_value), + sPropertyTextRange(sAPI_TextRange), + sPropertyName(sAPI_name), + m_nToken(nToken) +{ + bValid = true; + + // remember old list item and block (#91964#) and reset them + // for the text frame + // do this in the constructor, not in createFastChildContext (#i93392#) + GetImport().GetTextImport()->PushListContext(); +} + void XMLAnnotationImportContext::ProcessAttribute( sal_uInt16 nToken, const OUString& rValue ) @@ -4224,6 +4247,60 @@ SvXMLImportContext* XMLAnnotationImportContext::CreateChildContext( return pContext; } +Reference< XFastContextHandler > XMLAnnotationImportContext::createFastChildContext( + sal_Int32 Element, + const Reference< XFastAttributeList >& xAttrList ) + throw( RuntimeException, SAXException, std::exception ) +{ + Reference< XFastContextHandler > pContext = 0; + if( Element == (NAMESPACE | XML_NAMESPACE_DC | XML_creator) ) + pContext = new XMLStringBufferImportContext( GetImport(), Element, aAuthorBuffer ); + else if( Element == (NAMESPACE | XML_NAMESPACE_DC | XML_date) ) + pContext = new XMLStringBufferImportContext( GetImport(), Element, aDateBuffer ); + else if( Element == (NAMESPACE | XML_NAMESPACE_TEXT | XML_sender_initials) || + Element == (NAMESPACE | XML_NAMESPACE_LO_EXT | XML_sender_initials) ) + pContext = new XMLStringBufferImportContext( GetImport(), Element, aInitialsBuffer ); + + if( !pContext.is() ) + { + try + { + bool bOK = true; + if( !mxField.is() ) + bOK = CreateField( mxField, sServicePrefix + GetServiceName() ); + if( bOK ) + { + Any aAny = mxField->getPropertyValue( sPropertyTextRange ); + Reference< XText > xText; + aAny >>= xText; + if( xText.is() ) + { + rtl::Reference< XMLTextImportHelper > xTxtImport = GetImport().GetTextImport(); + if( !mxCursor.is() ) + { + mxOldCursor = xTxtImport->GetCursor(); + mxCursor = xText->createTextCursor(); + } + + if( mxCursor.is() ) + { + xTxtImport->SetCursor( mxCursor ); + pContext = xTxtImport->CreateTextChildContext( GetImport(), Element, xAttrList ); + } + } + } + } + catch( const Exception& ) + { + } + + if( !pContext.is() ) + pContext = new XMLStringBufferImportContext( GetImport(), Element, aTextBuffer ); + } + + return pContext; +} + void XMLAnnotationImportContext::EndElement() { DBG_ASSERT(!GetServiceName().isEmpty(), "no service name for element!"); @@ -4311,6 +4388,94 @@ void XMLAnnotationImportContext::EndElement() GetImportHelper().InsertString(GetContent()); } +void XMLAnnotationImportContext::endFastElement( sal_Int32 /*Element*/ ) + throw( RuntimeException, SAXException, std::exception ) +{ + DBG_ASSERT(!GetServiceName().isEmpty(), "no service name for element!"); + if( mxCursor.is() ) + { + // delete addition newline + const OUString aEmpty; + mxCursor->gotoEnd( sal_False ); + mxCursor->goLeft( 1, sal_True ); + mxCursor->setString( aEmpty ); + + // reset cursor + GetImport().GetTextImport()->ResetCursor(); + } + + if( mxOldCursor.is() ) + GetImport().GetTextImport()->SetCursor( mxOldCursor ); + + // reinstall old list item #91964# + GetImport().GetTextImport()->PopListContext(); + + if ( bValid ) + { + if ( m_nToken == XML_TOK_TEXT_ANNOTATION_END ) + { + // Search for a previous annotation with the same name. + uno::Reference< text::XTextContent > xPrevField; + { + Reference<XTextFieldsSupplier> xTextFieldsSupplier(GetImport().GetModel(), UNO_QUERY); + uno::Reference<container::XEnumerationAccess> xFieldsAccess(xTextFieldsSupplier->getTextFields()); + uno::Reference<container::XEnumeration> xFields(xFieldsAccess->createEnumeration()); + while (xFields->hasMoreElements()) + { + uno::Reference<beans::XPropertySet> xCurrField(xFields->nextElement(), uno::UNO_QUERY); + uno::Reference<beans::XPropertySetInfo> const xInfo( + xCurrField->getPropertySetInfo()); + if (xInfo->hasPropertyByName(sPropertyName)) + { + OUString aFieldName; + xCurrField->getPropertyValue(sPropertyName) >>= aFieldName; + if (aFieldName == aName) + { + xPrevField.set( xCurrField, uno::UNO_QUERY ); + break; + } + } + } + } + if ( xPrevField.is() ) + { + // So we are ending a previous annotation, + // let's create a text range covering the old and the current position. + uno::Reference<text::XText> xText = GetImportHelper().GetText(); + uno::Reference<text::XTextCursor> xCursor = + xText->createTextCursorByRange(GetImportHelper().GetCursorAsRange()); + xCursor->gotoRange(xPrevField->getAnchor(), true); + uno::Reference<text::XTextRange> xTextRange(xCursor, uno::UNO_QUERY); + + xText->insertTextContent(xTextRange, xPrevField, !xCursor->isCollapsed()); + } + } + else + { + if ( mxField.is() || CreateField( mxField, sServicePrefix + GetServiceName() ) ) + { + // set field properties + PrepareField( mxField ); + + // attach field to document + Reference < XTextContent > xTextContent( mxField, UNO_QUERY ); + + // workaround for #80606# + try + { + GetImportHelper().InsertTextContent( xTextContent ); + } + catch (const lang::IllegalArgumentException&) + { + // ignore + } + } + } + } + else + GetImportHelper().InsertString(GetContent()); +} + void XMLAnnotationImportContext::PrepareField( const Reference<XPropertySet> & xPropertySet ) { commit 554a8cad7063b434b14c34b7e5c0e3811d1a2a1b Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Fri Aug 21 17:56:51 2015 +0200 fastparser impl. for XMLPageNumberImportContext Change-Id: I79ea2ef8a3f0d5889e9882934b9456a466d516c0 diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index a12058a..75633a1 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -413,7 +413,10 @@ public: XMLTextImportHelper& rHlp, /// Text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& sLocalName); /// element name w/o prefix - + XMLPageNumberImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ); /// process attribute values virtual void ProcessAttribute( sal_uInt16 nAttrToken, diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index cbfbd33..f0b44fc 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -977,6 +977,22 @@ XMLPageNumberImportContext::XMLPageNumberImportContext( bValid = true; } +XMLPageNumberImportContext::XMLPageNumberImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLTextFieldImportContext( rImport, rHlp, sAPI_page_number, Element ), + sPropertySubType(sAPI_sub_type), + sPropertyNumberingType(sAPI_numbering_type), + sPropertyOffset(sAPI_offset), + sNumberSync(GetXMLToken(XML_FALSE)), + nPageAdjust(0), + eSelectPage(PageNumberType_CURRENT), + sNumberFormatOK(false) +{ + bValid = true; +} + void XMLPageNumberImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) commit 065aff2d21a6cc9953afb2b877c747d3805bca15 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Fri Aug 21 17:50:15 2015 +0200 fastparser impl. for XMLPageContinuationImportContext Change-Id: Ib826287157302c4cf42a0632ee4ff510d47bed24 diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index b7aa042..a12058a 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -376,6 +376,10 @@ public: XMLTextImportHelper& rHlp, /// Text import helper sal_uInt16 nPrfx, /// namespace prefix const OUString& sLocalName); /// element name w/o prefix + XMLPageContinuationImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ); /// process attribute values virtual void ProcessAttribute( sal_uInt16 nAttrToken, diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index e603766..cbfbd33 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -902,6 +902,20 @@ XMLPageContinuationImportContext::XMLPageContinuationImportContext( bValid = true; } +XMLPageContinuationImportContext::XMLPageContinuationImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLTextFieldImportContext( rImport, rHlp, sAPI_page_number, Element ), + sPropertySubType(sAPI_sub_type), + sPropertyUserText(sAPI_user_text), + sPropertyNumberingType(sAPI_numbering_type), + eSelectPage(PageNumberType_CURRENT), + sStringOK(false) +{ + bValid = true; +} + void XMLPageContinuationImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) { commit 89e562ff508f594dc19b88eb59a5c553462dd703 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Fri Aug 21 17:45:55 2015 +0200 fastparser impl. for XMLDdeFieldImportContext Change-Id: Icbe7c849db862ec7c80fc5570124ba6b6db4a22a diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 6bdc5ad..b7aa042 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -1161,6 +1161,9 @@ public: XMLTextImportHelper& rHlp, sal_uInt16 nPrfx, const OUString& sLocalName); + XMLDdeFieldImportContext( SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ); protected: /// process attribute values @@ -1169,6 +1172,8 @@ protected: /// create textfield, attach master, and insert into document virtual void EndElement() SAL_OVERRIDE; + virtual void endFastElement( sal_Int32 Element ) + throw(css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE; /// empty method virtual void PrepareField( diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 2f11dfa..e603766 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -3575,6 +3575,16 @@ XMLDdeFieldImportContext::XMLDdeFieldImportContext( { } +XMLDdeFieldImportContext::XMLDdeFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLTextFieldImportContext( rImport, rHlp, sAPI_dde, Element ), + sName(), + sPropertyContent(sAPI_content) +{ +} + void XMLDdeFieldImportContext::ProcessAttribute( sal_uInt16 nAttrToken, const OUString& sAttrValue ) @@ -3636,6 +3646,57 @@ void XMLDdeFieldImportContext::EndElement() // not valid: ignore } +void XMLDdeFieldImportContext::endFastElement( sal_Int32 /*Element*/ ) + throw( RuntimeException, SAXException, std::exception ) +{ + if (bValid) + { + // find master + OUStringBuffer sBuf; + sBuf.appendAscii(sAPI_fieldmaster_prefix); + sBuf.appendAscii(sAPI_dde); + sBuf.append('.'); + sBuf.append(sName); + OUString sMasterName = sBuf.makeStringAndClear(); + + Reference<XTextFieldsSupplier> xTextFieldsSupp(GetImport().GetModel(), + UNO_QUERY); + Reference<container::XNameAccess> xFieldMasterNameAccess( + xTextFieldsSupp->getTextFieldMasters(), UNO_QUERY); + + if (xFieldMasterNameAccess->hasByName(sMasterName)) + { + Reference<XPropertySet> xMaster; + Any aAny = xFieldMasterNameAccess->getByName(sMasterName); + aAny >>= xMaster; + //apply the content to the master + xMaster->setPropertyValue( sPropertyContent, uno::makeAny( GetContent())); + // master exists: create text field and attach + Reference<XPropertySet> xField; + sBuf.appendAscii(sAPI_textfield_prefix); + sBuf.appendAscii(sAPI_dde); + if (CreateField(xField, sBuf.makeStringAndClear())) + { + Reference<XDependentTextField> xDepTextField(xField,UNO_QUERY); + xDepTextField->attachTextFieldMaster(xMaster); + + // attach field to document + Reference<XTextContent> xTextContent(xField, UNO_QUERY); + if (xTextContent.is()) + { + GetImportHelper().InsertTextContent(xTextContent); + + // we're lucky. nothing else to prepare. + } + // else: fail, because text content could not be created + } + // else: fail, because field could not be created + } + // else: fail, because no master was found (faulty document?!) + } + // not valid: ignore +} + void XMLDdeFieldImportContext::PrepareField( const Reference<XPropertySet> &) { commit 421af826aff0ab31cbe6d286a50b25289d17daa0 Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Fri Aug 21 17:39:34 2015 +0200 fastparser impl. for XMLMacroFieldImportContext Change-Id: I59254c61b76d5253a3dc0f45906314bfeb0b0b48 diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 4138b9b..6bdc5ad 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -1020,6 +1020,9 @@ public: XMLTextImportHelper& rHlp, sal_uInt16 nPrfx, const OUString& sLocalName); + XMLMacroFieldImportContext( SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ); protected: /// for <office:events> children @@ -1028,6 +1031,10 @@ protected: const OUString& rLocalName, const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList> & xAttrList ) SAL_OVERRIDE; + virtual css::uno::Reference< css::xml::sax::XFastContextHandler > + createFastChildContext( sal_Int32 Element, + const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttrList ) + throw(css::uno::RuntimeException, css::xml::sax::SAXException, std::exception) SAL_OVERRIDE; /// process attribute values virtual void ProcessAttribute( sal_uInt16 nAttrToken, diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 0b9ffba5..2f11dfa 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -2876,6 +2876,18 @@ XMLMacroFieldImportContext::XMLMacroFieldImportContext( { } +XMLMacroFieldImportContext::XMLMacroFieldImportContext( + SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_Int32 Element ) +: XMLTextFieldImportContext( rImport, rHlp, sAPI_macro, Element ), + sPropertyHint(sAPI_hint), + sPropertyMacroName("MacroName"), + sPropertyScriptURL("ScriptURL"), + bDescriptionOK(false) +{ +} + SvXMLImportContext* XMLMacroFieldImportContext::CreateChildContext( sal_uInt16 nPrefix, const OUString& rLocalName, @@ -2899,6 +2911,25 @@ SvXMLImportContext* XMLMacroFieldImportContext::CreateChildContext( return pContext; } +Reference< XFastContextHandler > XMLMacroFieldImportContext::createFastChildContext( + sal_Int32 Element, + const Reference< XFastAttributeList >& xAttrList ) + throw( RuntimeException, SAXException, std::exception ) +{ + Reference< XFastContextHandler > pContext = NULL; + + if( Element == (NAMESPACE | XML_NAMESPACE_OFFICE | XML_event_listeners) ) + { + // create events context and remember it! + pContext = new XMLEventsImportContext( GetImport(), Element ); + xEventContext = static_cast< SvXMLImportContext *>( pContext.get() ); + bValid = true; + } + else + pContext = SvXMLImportContext::createFastChildContext( Element, xAttrList ); + + return pContext; +} void XMLMacroFieldImportContext::ProcessAttribute( sal_uInt16 nAttrToken, commit 3fdf16115ed1c567c0f49932a4646a865b1e914b Author: Daniel Sikeler <d.sikele...@gmail.com> Date: Fri Aug 21 17:29:19 2015 +0200 fastparser impl. for XMLReferenceFieldImportContext Change-Id: I3f6f65896b1d81c6812dca962dd65a983053f803 diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index afa6d0e..4138b9b 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -1063,12 +1063,19 @@ public: sal_uInt16 nToken, sal_uInt16 nPrfx, const OUString& sLocalName); + XMLReferenceFieldImportContext( SvXMLImport& rImport, + XMLTextImportHelper& rHlp, + sal_uInt16 nToken, + sal_Int32 Element ); ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits