/sw/source/core/swg/SwXMLBlockListContext.cxx
https://github.com/jonasfj/libreoffice-writer · C++ · 250 lines · 206 code · 17 blank · 27 comment · 32 complexity · dbd97ef62a3b3d136d73e0f3b21cea9a MD5 · raw file
- /*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
- // MARKER(update_precomp.py): autogen include statement, do not remove
- #include "precompiled_sw.hxx"
- #include <SwXMLBlockListContext.hxx>
- #include <SwXMLBlockImport.hxx>
- #include <SwXMLTextBlocks.hxx>
- #include <xmloff/nmspmap.hxx>
- #include <xmloff/xmlnmspe.hxx>
- #include <unotools/charclass.hxx>
- #include <swtypes.hxx>
- using namespace ::com::sun::star::uno;
- using namespace ::com::sun::star;
- using namespace ::xmloff::token;
- using ::rtl::OUString;
- SwXMLBlockListContext::SwXMLBlockListContext(
- SwXMLBlockListImport& rImport,
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference<
- xml::sax::XAttributeList > & xAttrList ) :
- SvXMLImportContext ( rImport, nPrefix, rLocalName ),
- rLocalRef (rImport)
- {
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for (sal_Int16 i=0; i < nAttrCount; i++)
- {
- const OUString& rAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefx = rImport.GetNamespaceMap().GetKeyByAttrName( rAttrName, &aLocalName);
- const OUString& rAttrValue = xAttrList->getValueByIndex( i );
- if ( XML_NAMESPACE_BLOCKLIST == nPrefx )
- {
- if ( IsXMLToken ( aLocalName, XML_LIST_NAME ) )
- {
- rImport.getBlockList().SetName(rAttrValue);
- break;
- }
- }
- }
- }
- SwXMLBlockListContext::~SwXMLBlockListContext ( void )
- {
- }
- SvXMLImportContext *SwXMLBlockListContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList > & xAttrList )
- {
- SvXMLImportContext *pContext = 0;
- if (nPrefix == XML_NAMESPACE_BLOCKLIST &&
- IsXMLToken ( rLocalName, XML_BLOCK ) )
- pContext = new SwXMLBlockContext (rLocalRef, nPrefix, rLocalName, xAttrList);
- else
- pContext = new SvXMLImportContext( rLocalRef, nPrefix, rLocalName);
- return pContext;
- }
- SwXMLBlockContext::SwXMLBlockContext(
- SwXMLBlockListImport& rImport,
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference<
- xml::sax::XAttributeList > & xAttrList ) :
- SvXMLImportContext ( rImport, nPrefix, rLocalName ),
- rLocalRef(rImport)
- {
- static const CharClass & rCC = GetAppCharClass();
- String aShort, aLong, aPackageName;
- BOOL bTextOnly = FALSE;
- sal_Int16 nAttrCount = xAttrList.is() ? xAttrList->getLength() : 0;
- for (sal_Int16 i=0; i < nAttrCount; i++)
- {
- const OUString& rAttrName = xAttrList->getNameByIndex( i );
- OUString aLocalName;
- sal_uInt16 nPrefx = rImport.GetNamespaceMap().GetKeyByAttrName( rAttrName, &aLocalName);
- const OUString& rAttrValue = xAttrList->getValueByIndex( i );
- if (XML_NAMESPACE_BLOCKLIST == nPrefx)
- {
- if ( IsXMLToken ( aLocalName, XML_ABBREVIATED_NAME ) )
- {
- aShort = rCC.upper(rAttrValue);
- }
- else if ( IsXMLToken ( aLocalName, XML_NAME ) )
- {
- aLong = rAttrValue;
- }
- else if ( IsXMLToken ( aLocalName, XML_PACKAGE_NAME ) )
- {
- aPackageName = rAttrValue;
- }
- else if ( IsXMLToken ( aLocalName, XML_UNFORMATTED_TEXT ) )
- {
- if ( IsXMLToken ( rAttrValue, XML_TRUE ) )
- bTextOnly = TRUE;
- }
- }
- }
- if (!aShort.Len() || !aLong.Len() || !aPackageName.Len())
- return;
- rImport.getBlockList().AddName( aShort, aLong, aPackageName, bTextOnly);
- }
- SwXMLBlockContext::~SwXMLBlockContext ( void )
- {
- }
- SwXMLTextBlockDocumentContext::SwXMLTextBlockDocumentContext(
- SwXMLTextBlockImport& rImport,
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference<
- xml::sax::XAttributeList > & ) :
- SvXMLImportContext ( rImport, nPrefix, rLocalName ),
- rLocalRef(rImport)
- {
- }
- SvXMLImportContext *SwXMLTextBlockDocumentContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList > & xAttrList )
- {
- SvXMLImportContext *pContext = 0;
- if (nPrefix == XML_NAMESPACE_OFFICE &&
- IsXMLToken ( rLocalName, XML_BODY ) )
- pContext = new SwXMLTextBlockBodyContext (rLocalRef, nPrefix, rLocalName, xAttrList);
- else
- pContext = new SvXMLImportContext( rLocalRef, nPrefix, rLocalName);
- return pContext;
- }
- SwXMLTextBlockDocumentContext::~SwXMLTextBlockDocumentContext ( void )
- {
- }
- SwXMLTextBlockTextContext::SwXMLTextBlockTextContext(
- SwXMLTextBlockImport& rImport,
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference<
- xml::sax::XAttributeList > & ) :
- SvXMLImportContext ( rImport, nPrefix, rLocalName ),
- rLocalRef(rImport)
- {
- }
- SvXMLImportContext *SwXMLTextBlockTextContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList > & xAttrList )
- {
- SvXMLImportContext *pContext = 0;
- if (nPrefix == XML_NAMESPACE_TEXT &&
- IsXMLToken ( rLocalName, XML_P ) )
- pContext = new SwXMLTextBlockParContext (rLocalRef, nPrefix, rLocalName, xAttrList);
- else
- pContext = new SvXMLImportContext( rLocalRef, nPrefix, rLocalName);
- return pContext;
- }
- SwXMLTextBlockTextContext::~SwXMLTextBlockTextContext ( void )
- {
- }
- SwXMLTextBlockBodyContext::SwXMLTextBlockBodyContext(
- SwXMLTextBlockImport& rImport,
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference<
- xml::sax::XAttributeList > & ) :
- SvXMLImportContext ( rImport, nPrefix, rLocalName ),
- rLocalRef(rImport)
- {
- }
- SvXMLImportContext *SwXMLTextBlockBodyContext::CreateChildContext(
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference< xml::sax::XAttributeList > & xAttrList )
- {
- SvXMLImportContext *pContext = 0;
- if (nPrefix == XML_NAMESPACE_OFFICE &&
- IsXMLToken ( rLocalName, XML_TEXT ) )
- pContext = new SwXMLTextBlockTextContext (rLocalRef, nPrefix, rLocalName, xAttrList);
- else if (nPrefix == XML_NAMESPACE_TEXT &&
- IsXMLToken ( rLocalName, XML_P ) )
- pContext = new SwXMLTextBlockParContext (rLocalRef, nPrefix, rLocalName, xAttrList);
- else
- pContext = new SvXMLImportContext( rLocalRef, nPrefix, rLocalName);
- return pContext;
- }
- SwXMLTextBlockBodyContext::~SwXMLTextBlockBodyContext ( void )
- {
- }
- SwXMLTextBlockParContext::SwXMLTextBlockParContext(
- SwXMLTextBlockImport& rImport,
- sal_uInt16 nPrefix,
- const OUString& rLocalName,
- const uno::Reference<
- xml::sax::XAttributeList > & ) :
- SvXMLImportContext ( rImport, nPrefix, rLocalName ),
- rLocalRef(rImport)
- {
- }
- void SwXMLTextBlockParContext::Characters( const ::rtl::OUString& rChars )
- {
- rLocalRef.m_rText.Append ( rChars.getStr());
- }
- SwXMLTextBlockParContext::~SwXMLTextBlockParContext ( void )
- {
- if (rLocalRef.bTextOnly)
- rLocalRef.m_rText.AppendAscii( "\015" );
- else
- {
- if (rLocalRef.m_rText.GetChar ( rLocalRef.m_rText.Len()) != ' ' )
- rLocalRef.m_rText.AppendAscii( " " );
- }
- }