From 387a7dcfe7c2a5c32b9fa7678f722845775041ba Mon Sep 17 00:00:00 2001 From: Noel Grandin Date: Sun, 6 Dec 2020 14:04:11 +0200 Subject: fastparser in XMLImpSpanContext_Impl Change-Id: Iba1b61c607f5f748f5acf4ce16d2c0cce8dee72e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107281 Tested-by: Jenkins Reviewed-by: Noel Grandin --- .../source/text/XMLTextFrameHyperlinkContext.cxx | 53 +++++++++++++++++++++- 1 file changed, 51 insertions(+), 2 deletions(-) (limited to 'xmloff/source/text/XMLTextFrameHyperlinkContext.cxx') diff --git a/xmloff/source/text/XMLTextFrameHyperlinkContext.cxx b/xmloff/source/text/XMLTextFrameHyperlinkContext.cxx index 8514ef2f2aa0..126c55aa8eef 100644 --- a/xmloff/source/text/XMLTextFrameHyperlinkContext.cxx +++ b/xmloff/source/text/XMLTextFrameHyperlinkContext.cxx @@ -93,6 +93,56 @@ XMLTextFrameHyperlinkContext::XMLTextFrameHyperlinkContext( } } +XMLTextFrameHyperlinkContext::XMLTextFrameHyperlinkContext( + SvXMLImport& rImport, + sal_Int32 /*nElement*/, + const Reference< XFastAttributeList > & xAttrList, + TextContentAnchorType eATyp ) : + SvXMLImportContext( rImport ), + eDefaultAnchorType( eATyp ), + bMap( false ) +{ + OUString sShow; + for( auto& aIter : sax_fastparser::castToFastAttributeList(xAttrList) ) + { + OUString sValue = aIter.toString(); + switch( aIter.getToken() ) + { + case XML_ELEMENT(XLINK, XML_HREF): + sHRef = GetImport().GetAbsoluteReference( sValue ); + break; + case XML_ELEMENT(OFFICE, XML_NAME): + sName = sValue; + break; + case XML_ELEMENT(OFFICE, XML_TARGET_FRAME_NAME): + sTargetFrameName = sValue; + break; + case XML_ELEMENT(XLINK, XML_SHOW): + sShow = sValue; + break; + case XML_ELEMENT(OFFICE, XML_SERVER_MAP): + { + bool bTmp(false); + if (::sax::Converter::convertBool( bTmp, sValue )) + { + bMap = bTmp; + } + } + break; + default: + XMLOFF_WARN_UNKNOWN("xmloff", aIter); + } + } + + if( !sShow.isEmpty() && sTargetFrameName.isEmpty() ) + { + if( IsXMLToken( sShow, XML_NEW ) ) + sTargetFrameName = "_blank"; + else if( IsXMLToken( sShow, XML_REPLACE ) ) + sTargetFrameName = "_self"; + } +} + XMLTextFrameHyperlinkContext::~XMLTextFrameHyperlinkContext() { } @@ -108,8 +158,7 @@ SvXMLImportContextRef XMLTextFrameHyperlinkContext::CreateChildContext( if( XML_NAMESPACE_DRAW == nPrefix ) { if( IsXMLToken( rLocalName, XML_FRAME ) ) - pTextFrameContext = new XMLTextFrameContext( GetImport(), nPrefix, - rLocalName, xAttrList, + pTextFrameContext = new XMLTextFrameContext( GetImport(), xAttrList, eDefaultAnchorType ); } -- cgit