summaryrefslogtreecommitdiff
path: root/sc/source/filter/xml/XMLDDELinksContext.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/filter/xml/XMLDDELinksContext.cxx')
-rw-r--r--sc/source/filter/xml/XMLDDELinksContext.cxx494
1 files changed, 0 insertions, 494 deletions
diff --git a/sc/source/filter/xml/XMLDDELinksContext.cxx b/sc/source/filter/xml/XMLDDELinksContext.cxx
deleted file mode 100644
index 0cb42034e..000000000
--- a/sc/source/filter/xml/XMLDDELinksContext.cxx
+++ /dev/null
@@ -1,494 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * 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_sc.hxx"
-
-
-
-// INCLUDE ---------------------------------------------------------------
-#include "XMLDDELinksContext.hxx"
-#include "xmlimprt.hxx"
-#include "document.hxx"
-#include "scmatrix.hxx"
-#include <xmloff/xmltoken.hxx>
-#include <xmloff/xmlnmspe.hxx>
-#include <xmloff/nmspmap.hxx>
-#include <xmloff/xmluconv.hxx>
-
-using namespace com::sun::star;
-using namespace xmloff::token;
-using ::rtl::OUString;
-
-using rtl::OUString;
-
-//------------------------------------------------------------------
-
-ScXMLDDELinksContext::ScXMLDDELinksContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const ::rtl::OUString& rLName,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ ) :
- SvXMLImportContext( rImport, nPrfx, rLName )
-{
- // here are no attributes
- rImport.LockSolarMutex();
-}
-
-ScXMLDDELinksContext::~ScXMLDDELinksContext()
-{
- GetScImport().UnlockSolarMutex();
-}
-
-SvXMLImportContext *ScXMLDDELinksContext::CreateChildContext( sal_uInt16 nPrefix,
- const ::rtl::OUString& rLName,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
-{
- SvXMLImportContext *pContext = 0;
-
- if ((nPrefix == XML_NAMESPACE_TABLE) && IsXMLToken(rLName, XML_DDE_LINK))
- pContext = new ScXMLDDELinkContext(GetScImport(), nPrefix, rLName, xAttrList);
-
- if( !pContext )
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
-
- return pContext;
-}
-
-void ScXMLDDELinksContext::EndElement()
-{
-}
-
-ScXMLDDELinkContext::ScXMLDDELinkContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const ::rtl::OUString& rLName,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ ) :
- SvXMLImportContext( rImport, nPrfx, rLName ),
- aDDELinkTable(),
- aDDELinkRow(),
- sApplication(),
- sTopic(),
- sItem(),
- nPosition(-1),
- nColumns(0),
- nRows(0),
- nMode(SC_DDE_DEFAULT)
-{
- // here are no attributes
-}
-
-ScXMLDDELinkContext::~ScXMLDDELinkContext()
-{
-}
-
-SvXMLImportContext *ScXMLDDELinkContext::CreateChildContext( sal_uInt16 nPrefix,
- const ::rtl::OUString& rLName,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
-{
- SvXMLImportContext *pContext = 0;
-
- if ((nPrefix == XML_NAMESPACE_OFFICE) && IsXMLToken(rLName, XML_DDE_SOURCE))
- pContext = new ScXMLDDESourceContext(GetScImport(), nPrefix, rLName, xAttrList, this);
- else if ((nPrefix == XML_NAMESPACE_TABLE) && IsXMLToken(rLName, XML_TABLE))
- pContext = new ScXMLDDETableContext(GetScImport(), nPrefix, rLName, xAttrList, this);
-
- if( !pContext )
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
-
- return pContext;
-}
-
-void ScXMLDDELinkContext::CreateDDELink()
-{
- if (GetScImport().GetDocument() &&
- sApplication.getLength() &&
- sTopic.getLength() &&
- sItem.getLength())
- {
- String sAppl(sApplication);
- String sTop(sTopic);
- String sIt(sItem);
- GetScImport().GetDocument()->CreateDdeLink(sAppl, sTop, sIt, nMode, ScMatrixRef());
- sal_uInt16 nPos;
- if(GetScImport().GetDocument()->FindDdeLink(sAppl, sTop, sIt, nMode, nPos))
- nPosition = nPos;
- else
- nPosition = -1;
- OSL_ENSURE(nPosition > -1, "DDE Link not inserted");
- }
-}
-
-void ScXMLDDELinkContext::AddCellToRow(const ScDDELinkCell& aCell)
-{
- aDDELinkRow.push_back(aCell);
-}
-
-void ScXMLDDELinkContext::AddRowsToTable(const sal_Int32 nRowsP)
-{
- for (sal_Int32 i = 0; i < nRowsP; ++i)
- aDDELinkTable.insert(aDDELinkTable.end(), aDDELinkRow.begin(), aDDELinkRow.end());
- aDDELinkRow.clear();
-}
-
-void ScXMLDDELinkContext::EndElement()
-{
- if (nPosition > -1 && nColumns && nRows && GetScImport().GetDocument())
- {
- bool bSizeMatch = (static_cast<size_t>(nColumns * nRows) == aDDELinkTable.size());
- OSL_ENSURE( bSizeMatch, "ScXMLDDELinkContext::EndElement: matrix dimension doesn't match cells count");
- // Excel writes bad ODF in that it does not write the
- // table:number-columns-repeated attribute of the
- // <table:table-column> element, but apparently uses the number of
- // <table:table-cell> elements within a <table:table-row> element to
- // determine the column count instead. Be lenient ...
- if (!bSizeMatch && nColumns == 1)
- {
- nColumns = aDDELinkTable.size() / nRows;
- OSL_ENSURE( static_cast<size_t>(nColumns * nRows) == aDDELinkTable.size(),
- "ScXMLDDELinkContext::EndElement: adapted matrix dimension doesn't match either");
- }
- ScMatrixRef pMatrix = new ScMatrix( static_cast<SCSIZE>(nColumns), static_cast<SCSIZE>(nRows) );
- sal_Int32 nCol(0);
- sal_Int32 nRow(-1);
- sal_Int32 nIndex(0);
- ScDDELinkCells::iterator aItr(aDDELinkTable.begin());
- ScDDELinkCells::iterator aEndItr(aDDELinkTable.end());
- while (aItr != aEndItr)
- {
- if (nIndex % nColumns == 0)
- {
- ++nRow;
- nCol = 0;
- }
- else
- ++nCol;
-
- SCSIZE nScCol( static_cast< SCSIZE >( nCol ) );
- SCSIZE nScRow( static_cast< SCSIZE >( nRow ) );
- if( aItr->bEmpty )
- pMatrix->PutEmpty( nScCol, nScRow );
- else if( aItr->bString )
- pMatrix->PutString( aItr->sValue, nScCol, nScRow );
- else
- pMatrix->PutDouble( aItr->fValue, nScCol, nScRow );
-
- ++nIndex;
- ++aItr;
- }
-
- GetScImport().GetDocument()->SetDdeLinkResultMatrix( static_cast< sal_uInt16 >( nPosition ), pMatrix );
- }
-}
-
-ScXMLDDESourceContext::ScXMLDDESourceContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const ::rtl::OUString& rLName,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
- ScXMLDDELinkContext* pTempDDELink) :
- SvXMLImportContext( rImport, nPrfx, rLName ),
- pDDELink(pTempDDELink)
-{
- if( !xAttrList.is() ) return;
-
- sal_Int16 nAttrCount = xAttrList->getLength();
-
- for( sal_Int16 nIndex = 0; nIndex < nAttrCount; ++nIndex )
- {
- const rtl::OUString& sAttrName (xAttrList->getNameByIndex( nIndex ));
- const rtl::OUString& sValue (xAttrList->getValueByIndex( nIndex ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
-
- if (nPrefix == XML_NAMESPACE_OFFICE)
- {
- if (IsXMLToken(aLocalName, XML_DDE_APPLICATION))
- pDDELink->SetApplication(sValue);
- else if (IsXMLToken(aLocalName, XML_DDE_TOPIC))
- pDDELink->SetTopic(sValue);
- else if (IsXMLToken(aLocalName, XML_DDE_ITEM))
- pDDELink->SetItem(sValue);
- }
- else if ((nPrefix == XML_NAMESPACE_TABLE) && IsXMLToken(aLocalName, XML_CONVERSION_MODE))
- {
- if (IsXMLToken(sValue, XML_INTO_ENGLISH_NUMBER))
- pDDELink->SetMode(SC_DDE_ENGLISH);
- else if (IsXMLToken(sValue, XML_KEEP_TEXT))
- pDDELink->SetMode(SC_DDE_TEXT);
- else
- pDDELink->SetMode(SC_DDE_DEFAULT);
- }
- }
-}
-
-ScXMLDDESourceContext::~ScXMLDDESourceContext()
-{
-}
-
-SvXMLImportContext *ScXMLDDESourceContext::CreateChildContext( sal_uInt16 nPrefix,
- const ::rtl::OUString& rLName,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ )
-{
- SvXMLImportContext *pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
-
- return pContext;
-}
-
-void ScXMLDDESourceContext::EndElement()
-{
- pDDELink->CreateDDELink();
-}
-
-ScXMLDDETableContext::ScXMLDDETableContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const ::rtl::OUString& rLName,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */,
- ScXMLDDELinkContext* pTempDDELink) :
- SvXMLImportContext( rImport, nPrfx, rLName ),
- pDDELink(pTempDDELink)
-{
- // here are no attributes
-}
-
-ScXMLDDETableContext::~ScXMLDDETableContext()
-{
-}
-
-SvXMLImportContext *ScXMLDDETableContext::CreateChildContext( sal_uInt16 nPrefix,
- const ::rtl::OUString& rLName,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
-{
- SvXMLImportContext *pContext = NULL;
-
- if (nPrefix == XML_NAMESPACE_TABLE)
- {
- if (IsXMLToken(rLName, XML_TABLE_COLUMN))
- pContext = new ScXMLDDEColumnContext(GetScImport(), nPrefix, rLName, xAttrList, pDDELink);
- else if (IsXMLToken(rLName, XML_TABLE_ROW))
- pContext = new ScXMLDDERowContext(GetScImport(), nPrefix, rLName, xAttrList, pDDELink);
- }
-
- if (!pContext)
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
-
- return pContext;
-}
-
-void ScXMLDDETableContext::EndElement()
-{
-}
-
-ScXMLDDEColumnContext::ScXMLDDEColumnContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const ::rtl::OUString& rLName,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
- ScXMLDDELinkContext* pTempDDELink) :
- SvXMLImportContext( rImport, nPrfx, rLName ),
- pDDELink(pTempDDELink)
-{
- if( !xAttrList.is() ) return;
- sal_Int32 nCols(1);
-
- sal_Int16 nAttrCount = xAttrList->getLength();
-
- for( sal_Int16 nIndex = 0; nIndex < nAttrCount; ++nIndex )
- {
- const rtl::OUString& sAttrName (xAttrList->getNameByIndex( nIndex ));
- const rtl::OUString& sValue (xAttrList->getValueByIndex( nIndex ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
-
- if (nPrefix == XML_NAMESPACE_TABLE)
- if (IsXMLToken(aLocalName, XML_NUMBER_COLUMNS_REPEATED))
- GetScImport().GetMM100UnitConverter().convertNumber(nCols, sValue);
- }
- pDDELink->AddColumns(nCols);
-}
-
-ScXMLDDEColumnContext::~ScXMLDDEColumnContext()
-{
-}
-
-SvXMLImportContext *ScXMLDDEColumnContext::CreateChildContext( sal_uInt16 nPrefix,
- const ::rtl::OUString& rLName,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ )
-{
- SvXMLImportContext *pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
-
- return pContext;
-}
-
-void ScXMLDDEColumnContext::EndElement()
-{
-}
-
-ScXMLDDERowContext::ScXMLDDERowContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const ::rtl::OUString& rLName,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
- ScXMLDDELinkContext* pTempDDELink) :
- SvXMLImportContext( rImport, nPrfx, rLName ),
- pDDELink(pTempDDELink),
- nRows(1)
-{
- if( !xAttrList.is() ) return;
-
- sal_Int16 nAttrCount = xAttrList->getLength();
-
- for( sal_Int16 nIndex = 0; nIndex < nAttrCount; ++nIndex )
- {
- const rtl::OUString& sAttrName (xAttrList->getNameByIndex( nIndex ));
- const rtl::OUString& sValue (xAttrList->getValueByIndex( nIndex ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
-
- if (nPrefix == XML_NAMESPACE_TABLE)
- if (IsXMLToken(aLocalName, XML_NUMBER_ROWS_REPEATED))
- GetScImport().GetMM100UnitConverter().convertNumber(nRows, sValue);
- }
- pDDELink->AddRows(nRows);
-}
-
-ScXMLDDERowContext::~ScXMLDDERowContext()
-{
-}
-
-SvXMLImportContext *ScXMLDDERowContext::CreateChildContext( sal_uInt16 nPrefix,
- const ::rtl::OUString& rLName,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::xml::sax::XAttributeList>& xAttrList )
-{
- SvXMLImportContext *pContext = NULL;
-
- if (nPrefix == XML_NAMESPACE_TABLE)
- if (IsXMLToken(rLName, XML_TABLE_CELL))
- pContext = new ScXMLDDECellContext(GetScImport(), nPrefix, rLName, xAttrList, pDDELink);
-
- if (!pContext)
- pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
-
- return pContext;
-}
-
-void ScXMLDDERowContext::EndElement()
-{
- pDDELink->AddRowsToTable(nRows);
-}
-
-ScXMLDDECellContext::ScXMLDDECellContext( ScXMLImport& rImport,
- sal_uInt16 nPrfx,
- const ::rtl::OUString& rLName,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::xml::sax::XAttributeList>& xAttrList,
- ScXMLDDELinkContext* pTempDDELink) :
- SvXMLImportContext( rImport, nPrfx, rLName ),
- sValue(),
- fValue(),
- nCells(1),
- bString(sal_True),
- bString2(sal_True),
- bEmpty(sal_True),
- pDDELink(pTempDDELink)
-{
- if( !xAttrList.is() ) return;
-
- sal_Int16 nAttrCount = xAttrList->getLength();
-
- for( sal_Int16 nIndex = 0; nIndex < nAttrCount; ++nIndex )
- {
- const rtl::OUString& sAttrName (xAttrList->getNameByIndex( nIndex ));
- const rtl::OUString& sTempValue (xAttrList->getValueByIndex( nIndex ));
- OUString aLocalName;
- sal_uInt16 nPrefix = GetScImport().GetNamespaceMap().GetKeyByAttrName( sAttrName, &aLocalName );
-
- if (nPrefix == XML_NAMESPACE_OFFICE)
- {
- if (IsXMLToken(aLocalName, XML_VALUE_TYPE))
- {
- if (IsXMLToken(sTempValue, XML_STRING))
- bString = sal_True;
- else
- bString = false;
- }
- else if (IsXMLToken(aLocalName, XML_STRING_VALUE))
- {
- sValue = sTempValue;
- bEmpty = false;
- bString2 = sal_True;
- }
- else if (IsXMLToken(aLocalName, XML_VALUE))
- {
- GetScImport().GetMM100UnitConverter().convertDouble(fValue, sTempValue);
- bEmpty = false;
- bString2 = false;
- }
- }
- else if (nPrefix == XML_NAMESPACE_TABLE)
- {
- if (IsXMLToken(aLocalName, XML_NUMBER_COLUMNS_REPEATED))
- GetScImport().GetMM100UnitConverter().convertNumber(nCells, sTempValue);
- }
- }
-}
-
-ScXMLDDECellContext::~ScXMLDDECellContext()
-{
-}
-
-SvXMLImportContext *ScXMLDDECellContext::CreateChildContext( sal_uInt16 nPrefix,
- const ::rtl::OUString& rLName,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ )
-{
- SvXMLImportContext *pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName );
-
- return pContext;
-}
-
-void ScXMLDDECellContext::EndElement()
-{
- OSL_ENSURE(bString == bString2, "something wrong with this type");
- ScDDELinkCell aCell;
- aCell.sValue = sValue;
- aCell.fValue = fValue;
- aCell.bEmpty = bEmpty;
- aCell.bString = bString2;
- for(sal_Int32 i = 0; i < nCells; ++i)
- pDDELink->AddCellToRow(aCell);
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */