| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_sc.hxx" |
| |
| #include "XMLTrackedChangesContext.hxx" |
| #include "xmlimprt.hxx" |
| #include "xmlconti.hxx" |
| #include "XMLConverter.hxx" |
| #include "cell.hxx" |
| #include "textuno.hxx" |
| #include "editutil.hxx" |
| #include <xmloff/xmltoken.hxx> |
| #include <xmloff/xmlnmspe.hxx> |
| #include <xmloff/nmspmap.hxx> |
| #include <xmloff/xmluconv.hxx> |
| #include <svl/zforlist.hxx> |
| #include <com/sun/star/text/XTextCursor.hpp> |
| #include <com/sun/star/text/ControlCharacter.hpp> |
| |
| using rtl::OUString; |
| using namespace com::sun::star; |
| using namespace xmloff::token; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLChangeInfoContext : public SvXMLImportContext |
| { |
| ScMyActionInfo aInfo; |
| ::rtl::OUStringBuffer sAuthorBuffer; |
| ::rtl::OUStringBuffer sDateTimeBuffer; |
| ::rtl::OUStringBuffer sCommentBuffer; |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper; |
| sal_uInt32 nParagraphCount; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLChangeInfoContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper); |
| virtual ~ScXMLChangeInfoContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLBigRangeContext : public SvXMLImportContext |
| { |
| ScBigRange& rBigRange; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLBigRangeContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScBigRange& rBigRange); |
| virtual ~ScXMLBigRangeContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLCellContentDeletionContext : public SvXMLImportContext |
| { |
| rtl::OUString sFormulaAddress; |
| rtl::OUString sFormula; |
| rtl::OUString sFormulaNmsp; |
| rtl::OUString sInputString; |
| ScBigRange aBigRange; |
| double fValue; |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper; |
| ScBaseCell* pCell; |
| sal_uInt32 nID; |
| sal_Int32 nMatrixCols; |
| sal_Int32 nMatrixRows; |
| formula::FormulaGrammar::Grammar eGrammar; |
| sal_uInt16 nType; |
| sal_uInt8 nMatrixFlag; |
| sal_Bool bBigRange; |
| sal_Bool bContainsCell; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLCellContentDeletionContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper); |
| virtual ~ScXMLCellContentDeletionContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLDependenceContext : public SvXMLImportContext |
| { |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLDependenceContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper); |
| virtual ~ScXMLDependenceContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLDependingsContext : public SvXMLImportContext |
| { |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLDependingsContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper); |
| virtual ~ScXMLDependingsContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLChangeDeletionContext : public SvXMLImportContext |
| { |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLChangeDeletionContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper); |
| virtual ~ScXMLChangeDeletionContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLDeletionsContext : public SvXMLImportContext |
| { |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLDeletionsContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper); |
| virtual ~ScXMLDeletionsContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLChangeCellContext; |
| |
| class ScXMLChangeTextPContext : public SvXMLImportContext |
| { |
| ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList> xAttrList; |
| rtl::OUString sLName; |
| rtl::OUStringBuffer sText; |
| ScXMLChangeCellContext* pChangeCellContext; |
| SvXMLImportContext* pTextPContext; |
| sal_uInt16 nPrefix; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| |
| ScXMLChangeTextPContext( ScXMLImport& rImport, sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeCellContext* pChangeCellContext); |
| |
| virtual ~ScXMLChangeTextPContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| |
| virtual void Characters( const ::rtl::OUString& rChars ); |
| |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLChangeCellContext : public SvXMLImportContext |
| { |
| rtl::OUString sText; |
| rtl::OUString& rInputString; |
| ScBaseCell*& rOldCell; |
| ScEditEngineTextObj* pEditTextObj; |
| double& rDateTimeValue; |
| double fValue; |
| sal_uInt16& rType; |
| // sal_Bool bIsMatrix; |
| // sal_Bool bIsCoveredMatrix; |
| sal_Bool bEmpty; |
| sal_Bool bFirstParagraph; |
| sal_Bool bString; |
| sal_Bool bFormula; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLChangeCellContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScBaseCell*& rOldCell, rtl::OUString& sAddress, |
| rtl::OUString& rFormula, rtl::OUString& rFormulaNmsp, |
| formula::FormulaGrammar::Grammar& rGrammar, |
| rtl::OUString& rInputString, double& fValue, sal_uInt16& nType, |
| sal_uInt8& nMatrixFlag, sal_Int32& nMatrixCols, sal_Int32& nMatrixRows); |
| virtual ~ScXMLChangeCellContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| |
| void CreateTextPContext(sal_Bool bIsNewParagraph); |
| sal_Bool IsEditCell() { return pEditTextObj != 0; } |
| void SetText(const rtl::OUString& sTempText) { sText = sTempText; } |
| |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLPreviousContext : public SvXMLImportContext |
| { |
| rtl::OUString sFormulaAddress; |
| rtl::OUString sFormula; |
| rtl::OUString sFormulaNmsp; |
| rtl::OUString sInputString; |
| double fValue; |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper; |
| ScBaseCell* pOldCell; |
| sal_uInt32 nID; |
| sal_Int32 nMatrixCols; |
| sal_Int32 nMatrixRows; |
| formula::FormulaGrammar::Grammar eGrammar; |
| sal_uInt16 nType; |
| sal_uInt8 nMatrixFlag; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLPreviousContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper); |
| virtual ~ScXMLPreviousContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLContentChangeContext : public SvXMLImportContext |
| { |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper; |
| ScBigRange aBigRange; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLContentChangeContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper); |
| virtual ~ScXMLContentChangeContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLInsertionContext : public SvXMLImportContext |
| { |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLInsertionContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper); |
| virtual ~ScXMLInsertionContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLInsertionCutOffContext : public SvXMLImportContext |
| { |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLInsertionCutOffContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper); |
| virtual ~ScXMLInsertionCutOffContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLMovementCutOffContext : public SvXMLImportContext |
| { |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLMovementCutOffContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper); |
| virtual ~ScXMLMovementCutOffContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLCutOffsContext : public SvXMLImportContext |
| { |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLCutOffsContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper); |
| virtual ~ScXMLCutOffsContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLDeletionContext : public SvXMLImportContext |
| { |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLDeletionContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper); |
| virtual ~ScXMLDeletionContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLMovementContext : public SvXMLImportContext |
| { |
| ScBigRange aSourceRange; |
| ScBigRange aTargetRange; |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLMovementContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper); |
| virtual ~ScXMLMovementContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| virtual void EndElement(); |
| }; |
| |
| //----------------------------------------------------------------------------- |
| |
| class ScXMLRejectionContext : public SvXMLImportContext |
| { |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper; |
| |
| const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } |
| ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } |
| |
| public: |
| ScXMLRejectionContext( ScXMLImport& rImport, sal_uInt16 nPrfx, const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pChangeTrackingImportHelper); |
| virtual ~ScXMLRejectionContext(); |
| |
| virtual SvXMLImportContext *CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ); |
| virtual void EndElement(); |
| }; |
| |
| //------------------------------------------------------------------ |
| |
| ScXMLTrackedChangesContext::ScXMLTrackedChangesContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| pChangeTrackingImportHelper(pTempChangeTrackingImportHelper) |
| { |
| rImport.LockSolarMutex(); |
| pChangeTrackingImportHelper->SetChangeTrack(sal_True); |
| |
| sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); |
| for( sal_Int16 i=0; i < nAttrCount; ++i ) |
| { |
| const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); |
| rtl::OUString aLocalName; |
| sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName( |
| sAttrName, &aLocalName )); |
| const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(aLocalName, XML_PROTECTION_KEY)) |
| { |
| if (sValue.getLength()) |
| { |
| uno::Sequence<sal_Int8> aPass; |
| SvXMLUnitConverter::decodeBase64(aPass, sValue); |
| pChangeTrackingImportHelper->SetProtection(aPass); |
| } |
| } |
| } |
| } |
| } |
| |
| ScXMLTrackedChangesContext::~ScXMLTrackedChangesContext() |
| { |
| GetScImport().UnlockSolarMutex(); |
| } |
| |
| SvXMLImportContext *ScXMLTrackedChangesContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ) |
| { |
| SvXMLImportContext *pContext(0); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(rLocalName, XML_CELL_CONTENT_CHANGE)) |
| { |
| pContext = new ScXMLContentChangeContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| else if (IsXMLToken(rLocalName, XML_INSERTION)) |
| { |
| pContext = new ScXMLInsertionContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| else if (IsXMLToken(rLocalName, XML_DELETION)) |
| { |
| pContext = new ScXMLDeletionContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| else if (IsXMLToken(rLocalName, XML_MOVEMENT)) |
| { |
| pContext = new ScXMLMovementContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| else if (IsXMLToken(rLocalName, XML_REJECTION)) |
| { |
| pContext = new ScXMLRejectionContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| } |
| |
| if( !pContext ) |
| pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| |
| return pContext; |
| } |
| |
| void ScXMLTrackedChangesContext::EndElement() |
| { |
| } |
| |
| ScXMLChangeInfoContext::ScXMLChangeInfoContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| aInfo(), |
| pChangeTrackingImportHelper(pTempChangeTrackingImportHelper), |
| nParagraphCount(0) |
| { |
| sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); |
| for( sal_Int16 i=0; i < nAttrCount; ++i ) |
| { |
| const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); |
| rtl::OUString aLocalName; |
| sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName( |
| sAttrName, &aLocalName )); |
| const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); |
| |
| if (nPrefix == XML_NAMESPACE_OFFICE) |
| { |
| if (IsXMLToken(aLocalName, XML_CHG_AUTHOR)) |
| { |
| sAuthorBuffer = sValue; |
| } |
| else if (IsXMLToken(aLocalName, XML_CHG_DATE_TIME)) |
| { |
| sDateTimeBuffer = sValue; |
| } |
| } |
| } |
| } |
| |
| ScXMLChangeInfoContext::~ScXMLChangeInfoContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLChangeInfoContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ) |
| { |
| SvXMLImportContext *pContext(0); |
| |
| if( XML_NAMESPACE_DC == nPrefix ) |
| { |
| if( IsXMLToken( rLocalName, XML_CREATOR ) ) |
| pContext = new ScXMLContentContext(GetScImport(), nPrefix, |
| rLocalName, xAttrList, sAuthorBuffer); |
| else if( IsXMLToken( rLocalName, XML_DATE ) ) |
| pContext = new ScXMLContentContext(GetScImport(), nPrefix, |
| rLocalName, xAttrList, sDateTimeBuffer); |
| } |
| else if ((nPrefix == XML_NAMESPACE_TEXT) && (IsXMLToken(rLocalName, XML_P)) ) |
| { |
| if(nParagraphCount) |
| sCommentBuffer.append(static_cast<sal_Unicode>('\n')); |
| ++nParagraphCount; |
| pContext = new ScXMLContentContext( GetScImport(), nPrefix, rLocalName, xAttrList, sCommentBuffer); |
| } |
| |
| if( !pContext ) |
| pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| |
| return pContext; |
| } |
| |
| void ScXMLChangeInfoContext::EndElement() |
| { |
| aInfo.sUser = sAuthorBuffer.makeStringAndClear(); |
| GetScImport().GetMM100UnitConverter().convertDateTime(aInfo.aDateTime, sDateTimeBuffer.makeStringAndClear()); |
| aInfo.sComment = sCommentBuffer.makeStringAndClear(); |
| pChangeTrackingImportHelper->SetActionInfo(aInfo); |
| } |
| |
| ScXMLBigRangeContext::ScXMLBigRangeContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& xAttrList, |
| ScBigRange& rTempBigRange ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| rBigRange(rTempBigRange) |
| { |
| sal_Bool bColumn(sal_False); |
| sal_Bool bRow(sal_False); |
| sal_Bool bTable(sal_False); |
| sal_Int32 nColumn(0); |
| sal_Int32 nRow(0); |
| sal_Int32 nTable(0); |
| sal_Int32 nStartColumn(0); |
| sal_Int32 nEndColumn(0); |
| sal_Int32 nStartRow(0); |
| sal_Int32 nEndRow(0); |
| sal_Int32 nStartTable(0); |
| sal_Int32 nEndTable(0); |
| sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); |
| for( sal_Int16 i=0; i < nAttrCount; ++i ) |
| { |
| const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); |
| rtl::OUString aLocalName; |
| sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName( |
| sAttrName, &aLocalName )); |
| const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(aLocalName, XML_COLUMN)) |
| { |
| SvXMLUnitConverter::convertNumber(nColumn, sValue); |
| bColumn = sal_True; |
| } |
| else if (IsXMLToken(aLocalName, XML_ROW)) |
| { |
| SvXMLUnitConverter::convertNumber(nRow, sValue); |
| bRow = sal_True; |
| } |
| else if (IsXMLToken(aLocalName, XML_TABLE)) |
| { |
| SvXMLUnitConverter::convertNumber(nTable, sValue); |
| bTable = sal_True; |
| } |
| else if (IsXMLToken(aLocalName, XML_START_COLUMN)) |
| SvXMLUnitConverter::convertNumber(nStartColumn, sValue); |
| else if (IsXMLToken(aLocalName, XML_END_COLUMN)) |
| SvXMLUnitConverter::convertNumber(nEndColumn, sValue); |
| else if (IsXMLToken(aLocalName, XML_START_ROW)) |
| SvXMLUnitConverter::convertNumber(nStartRow, sValue); |
| else if (IsXMLToken(aLocalName, XML_END_ROW)) |
| SvXMLUnitConverter::convertNumber(nEndRow, sValue); |
| else if (IsXMLToken(aLocalName, XML_START_TABLE)) |
| SvXMLUnitConverter::convertNumber(nStartTable, sValue); |
| else if (IsXMLToken(aLocalName, XML_END_TABLE)) |
| SvXMLUnitConverter::convertNumber(nEndTable, sValue); |
| } |
| } |
| if (bColumn) |
| nStartColumn = nEndColumn = nColumn; |
| if (bRow) |
| nStartRow = nEndRow = nRow; |
| if (bTable) |
| nStartTable = nEndTable = nTable; |
| rBigRange.Set(nStartColumn, nStartRow, nStartTable, |
| nEndColumn, nEndRow, nEndTable); |
| } |
| |
| ScXMLBigRangeContext::~ScXMLBigRangeContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLBigRangeContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ ) |
| { |
| return new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| } |
| |
| void ScXMLBigRangeContext::EndElement() |
| { |
| } |
| |
| ScXMLCellContentDeletionContext::ScXMLCellContentDeletionContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| pChangeTrackingImportHelper(pTempChangeTrackingImportHelper), |
| pCell(NULL), |
| nID(0), |
| nMatrixCols(0), |
| nMatrixRows(0), |
| nType(NUMBERFORMAT_ALL), |
| nMatrixFlag(MM_NONE), |
| bBigRange(sal_False), |
| bContainsCell(sal_False) |
| { |
| sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); |
| for( sal_Int16 i=0; i < nAttrCount; ++i ) |
| { |
| const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); |
| rtl::OUString aLocalName; |
| sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName( |
| sAttrName, &aLocalName )); |
| const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(aLocalName, XML_ID)) |
| nID = pChangeTrackingImportHelper->GetIDFromString(sValue); |
| } |
| } |
| } |
| |
| ScXMLCellContentDeletionContext::~ScXMLCellContentDeletionContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLCellContentDeletionContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ) |
| { |
| SvXMLImportContext *pContext(0); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(rLocalName, XML_CHANGE_TRACK_TABLE_CELL)) |
| { |
| bContainsCell = sal_True; |
| pContext = new ScXMLChangeCellContext(GetScImport(), nPrefix, rLocalName, xAttrList, |
| pCell, sFormulaAddress, sFormula, sFormulaNmsp, eGrammar, sInputString, fValue, nType, nMatrixFlag, nMatrixCols, nMatrixRows ); |
| } |
| else if (IsXMLToken(rLocalName, XML_CELL_ADDRESS)) |
| { |
| DBG_ASSERT(!nID, "a action with a ID should not contain a BigRange"); |
| bBigRange = sal_True; |
| pContext = new ScXMLBigRangeContext(GetScImport(), nPrefix, rLocalName, xAttrList, aBigRange); |
| } |
| } |
| |
| if( !pContext ) |
| pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| |
| return pContext; |
| } |
| |
| void ScXMLCellContentDeletionContext::EndElement() |
| { |
| ScMyCellInfo* pCellInfo(new ScMyCellInfo(pCell, sFormulaAddress, sFormula, eGrammar, sInputString, fValue, nType, |
| nMatrixFlag, nMatrixCols, nMatrixRows)); |
| if (nID) |
| pChangeTrackingImportHelper->AddDeleted(nID, pCellInfo); |
| else |
| pChangeTrackingImportHelper->AddGenerated(pCellInfo, aBigRange); |
| } |
| |
| ScXMLDependenceContext::ScXMLDependenceContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| pChangeTrackingImportHelper(pTempChangeTrackingImportHelper) |
| { |
| sal_uInt32 nID(0); |
| sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); |
| for( sal_Int16 i=0; i < nAttrCount; ++i ) |
| { |
| const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); |
| rtl::OUString aLocalName; |
| sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName( |
| sAttrName, &aLocalName )); |
| const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(aLocalName, XML_ID)) |
| nID = pChangeTrackingImportHelper->GetIDFromString(sValue); |
| } |
| } |
| pChangeTrackingImportHelper->AddDependence(nID); |
| } |
| |
| ScXMLDependenceContext::~ScXMLDependenceContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLDependenceContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ ) |
| { |
| return new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| } |
| |
| void ScXMLDependenceContext::EndElement() |
| { |
| } |
| |
| ScXMLDependingsContext::ScXMLDependingsContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& /* xAttrList */, |
| ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| pChangeTrackingImportHelper(pTempChangeTrackingImportHelper) |
| { |
| // here are no attributes |
| } |
| |
| ScXMLDependingsContext::~ScXMLDependingsContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLDependingsContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ) |
| { |
| SvXMLImportContext *pContext(0); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| // #i80033# read both old (dependence) and new (dependency) elements |
| if (IsXMLToken(rLocalName, XML_DEPENDENCE) || IsXMLToken(rLocalName, XML_DEPENDENCY)) |
| pContext = new ScXMLDependenceContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| |
| if( !pContext ) |
| pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| |
| return pContext; |
| } |
| |
| void ScXMLDependingsContext::EndElement() |
| { |
| } |
| |
| ScXMLChangeDeletionContext::ScXMLChangeDeletionContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| pChangeTrackingImportHelper(pTempChangeTrackingImportHelper) |
| { |
| sal_uInt32 nID(0); |
| sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); |
| for( sal_Int16 i=0; i < nAttrCount; ++i ) |
| { |
| const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); |
| rtl::OUString aLocalName; |
| sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName( |
| sAttrName, &aLocalName )); |
| const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(aLocalName, XML_ID)) |
| nID = pChangeTrackingImportHelper->GetIDFromString(sValue); |
| } |
| } |
| pChangeTrackingImportHelper->AddDeleted(nID); |
| } |
| |
| ScXMLChangeDeletionContext::~ScXMLChangeDeletionContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLChangeDeletionContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ ) |
| { |
| return new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| } |
| |
| void ScXMLChangeDeletionContext::EndElement() |
| { |
| } |
| |
| ScXMLDeletionsContext::ScXMLDeletionsContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& /* xAttrList */, |
| ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| pChangeTrackingImportHelper(pTempChangeTrackingImportHelper) |
| { |
| // here are no attributes |
| } |
| |
| ScXMLDeletionsContext::~ScXMLDeletionsContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLDeletionsContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ) |
| { |
| SvXMLImportContext *pContext(0); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(rLocalName, XML_CHANGE_DELETION)) |
| pContext = new ScXMLChangeDeletionContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| else if (IsXMLToken(rLocalName, XML_CELL_CONTENT_DELETION)) |
| pContext = new ScXMLCellContentDeletionContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| |
| if( !pContext ) |
| pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| |
| return pContext; |
| } |
| |
| void ScXMLDeletionsContext::EndElement() |
| { |
| } |
| |
| ScXMLChangeTextPContext::ScXMLChangeTextPContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xTempAttrList, |
| ScXMLChangeCellContext* pTempChangeCellContext) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| xAttrList(xTempAttrList), |
| sLName(rLName), |
| sText(), |
| pChangeCellContext(pTempChangeCellContext), |
| pTextPContext(NULL), |
| nPrefix(nPrfx) |
| { |
| // here are no attributes |
| } |
| |
| ScXMLChangeTextPContext::~ScXMLChangeTextPContext() |
| { |
| if (pTextPContext) |
| delete pTextPContext; |
| } |
| |
| SvXMLImportContext *ScXMLChangeTextPContext::CreateChildContext( sal_uInt16 nTempPrefix, |
| const ::rtl::OUString& rLName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xTempAttrList ) |
| { |
| SvXMLImportContext *pContext(0); |
| |
| if ((nPrefix == XML_NAMESPACE_TEXT) && (IsXMLToken(rLName, XML_S)) && !pTextPContext) |
| { |
| sal_Int32 nRepeat(0); |
| sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); |
| for( sal_Int16 i=0; i < nAttrCount; ++i ) |
| { |
| const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); |
| const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); |
| rtl::OUString aLocalName; |
| sal_uInt16 nPrfx(GetScImport().GetNamespaceMap().GetKeyByAttrName( |
| sAttrName, &aLocalName )); |
| if ((nPrfx == XML_NAMESPACE_TEXT) && (IsXMLToken(aLocalName, XML_C))) |
| nRepeat = sValue.toInt32(); |
| } |
| if (nRepeat) |
| for (sal_Int32 j = 0; j < nRepeat; ++j) |
| sText.append(static_cast<sal_Unicode>(' ')); |
| else |
| sText.append(static_cast<sal_Unicode>(' ')); |
| } |
| else |
| { |
| if (!pChangeCellContext->IsEditCell()) |
| pChangeCellContext->CreateTextPContext(sal_False); |
| sal_Bool bWasContext (sal_True); |
| if (!pTextPContext) |
| { |
| bWasContext = sal_False; |
| pTextPContext = GetScImport().GetTextImport()->CreateTextChildContext( |
| GetScImport(), nPrefix, sLName, xAttrList); |
| } |
| if (pTextPContext) |
| { |
| if (!bWasContext) |
| pTextPContext->Characters(sText.makeStringAndClear()); |
| pContext = pTextPContext->CreateChildContext(nTempPrefix, rLName, xTempAttrList); |
| } |
| } |
| |
| if( !pContext ) |
| pContext = new SvXMLImportContext( GetImport(), nPrefix, rLName ); |
| |
| return pContext; |
| } |
| |
| void ScXMLChangeTextPContext::Characters( const ::rtl::OUString& rChars ) |
| { |
| if (!pTextPContext) |
| sText.append(rChars); |
| else |
| pTextPContext->Characters(rChars); |
| } |
| |
| void ScXMLChangeTextPContext::EndElement() |
| { |
| if (!pTextPContext) |
| pChangeCellContext->SetText(sText.makeStringAndClear()); |
| } |
| |
| ScXMLChangeCellContext::ScXMLChangeCellContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& xAttrList, |
| ScBaseCell*& rTempOldCell, rtl::OUString& rAddress, |
| rtl::OUString& rFormula, rtl::OUString& rFormulaNmsp, |
| formula::FormulaGrammar::Grammar& rGrammar, |
| rtl::OUString& rTempInputString, double& fDateTimeValue, sal_uInt16& nType, |
| sal_uInt8& nMatrixFlag, sal_Int32& nMatrixCols, sal_Int32& nMatrixRows ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| rInputString(rTempInputString), |
| rOldCell(rTempOldCell), |
| pEditTextObj(NULL), |
| rDateTimeValue(fDateTimeValue), |
| rType(nType), |
| bEmpty(sal_True), |
| bFirstParagraph(sal_True), |
| bString(sal_True), |
| bFormula(sal_False) |
| { |
| sal_Bool bIsMatrix(sal_False); |
| sal_Bool bIsCoveredMatrix(sal_False); |
| sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); |
| for( sal_Int16 i=0; i < nAttrCount; ++i ) |
| { |
| const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); |
| rtl::OUString aLocalName; |
| sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName( |
| sAttrName, &aLocalName )); |
| const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(aLocalName, XML_FORMULA)) |
| { |
| bEmpty = sal_False; |
| GetScImport().ExtractFormulaNamespaceGrammar( rFormula, rFormulaNmsp, rGrammar, sValue ); |
| bFormula = sal_True; |
| } |
| else if (IsXMLToken(aLocalName, XML_CELL_ADDRESS)) |
| { |
| rAddress = sValue; |
| } |
| else if (IsXMLToken(aLocalName, XML_MATRIX_COVERED)) |
| { |
| bIsCoveredMatrix = IsXMLToken(sValue, XML_TRUE); |
| } |
| else if (IsXMLToken(aLocalName, XML_NUMBER_MATRIX_COLUMNS_SPANNED)) |
| { |
| bIsMatrix = sal_True; |
| SvXMLUnitConverter::convertNumber(nMatrixCols, sValue); |
| } |
| else if (IsXMLToken(aLocalName, XML_NUMBER_MATRIX_ROWS_SPANNED)) |
| { |
| bIsMatrix = sal_True; |
| SvXMLUnitConverter::convertNumber(nMatrixRows, sValue); |
| } |
| } |
| else if (nPrefix == XML_NAMESPACE_OFFICE) |
| { |
| if (IsXMLToken(aLocalName, XML_VALUE_TYPE)) |
| { |
| if (IsXMLToken(sValue, XML_FLOAT)) |
| bString = sal_False; |
| else if (IsXMLToken(sValue, XML_DATE)) |
| { |
| rType = NUMBERFORMAT_DATE; |
| bString = sal_False; |
| } |
| else if (IsXMLToken(sValue, XML_TIME)) |
| { |
| rType = NUMBERFORMAT_TIME; |
| bString = sal_False; |
| } |
| } |
| else if (IsXMLToken(aLocalName, XML_VALUE)) |
| { |
| SvXMLUnitConverter::convertDouble(fValue, sValue); |
| bEmpty = sal_False; |
| } |
| else if (IsXMLToken(aLocalName, XML_DATE_VALUE)) |
| { |
| bEmpty = sal_False; |
| if (GetScImport().GetMM100UnitConverter().setNullDate(GetScImport().GetModel())) |
| GetScImport().GetMM100UnitConverter().convertDateTime(rDateTimeValue, sValue); |
| fValue = rDateTimeValue; |
| } |
| else if (IsXMLToken(aLocalName, XML_TIME_VALUE)) |
| { |
| bEmpty = sal_False; |
| GetScImport().GetMM100UnitConverter().convertTime(rDateTimeValue, sValue); |
| fValue = rDateTimeValue; |
| } |
| } |
| } |
| if (bIsCoveredMatrix) |
| nMatrixFlag = MM_REFERENCE; |
| else if (bIsMatrix && nMatrixRows && nMatrixCols) |
| nMatrixFlag = MM_FORMULA; |
| } |
| |
| ScXMLChangeCellContext::~ScXMLChangeCellContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLChangeCellContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ) |
| { |
| SvXMLImportContext *pContext(0); |
| |
| if ((nPrefix == XML_NAMESPACE_TEXT) && (IsXMLToken(rLocalName, XML_P))) |
| { |
| bEmpty = sal_False; |
| if (bFirstParagraph) |
| { |
| pContext = new ScXMLChangeTextPContext(GetScImport(), nPrefix, rLocalName, xAttrList, this); |
| bFirstParagraph = sal_False; |
| } |
| else |
| { |
| if (!pEditTextObj) |
| CreateTextPContext(sal_True); |
| pContext = GetScImport().GetTextImport()->CreateTextChildContext( |
| GetScImport(), nPrefix, rLocalName, xAttrList); |
| } |
| } |
| |
| if( !pContext ) |
| pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| |
| return pContext; |
| } |
| |
| void ScXMLChangeCellContext::CreateTextPContext(sal_Bool bIsNewParagraph) |
| { |
| if (GetScImport().GetDocument()) |
| { |
| pEditTextObj = new ScEditEngineTextObj(); |
| pEditTextObj->acquire(); |
| pEditTextObj->GetEditEngine()->SetEditTextObjectPool(GetScImport().GetDocument()->GetEditPool()); |
| uno::Reference <text::XText> xText(pEditTextObj); |
| if (xText.is()) |
| { |
| uno::Reference<text::XTextCursor> xTextCursor(xText->createTextCursor()); |
| if (bIsNewParagraph) |
| { |
| xText->setString(sText); |
| xTextCursor->gotoEnd(sal_False); |
| uno::Reference < text::XTextRange > xTextRange (xTextCursor, uno::UNO_QUERY); |
| if (xTextRange.is()) |
| xText->insertControlCharacter(xTextRange, text::ControlCharacter::PARAGRAPH_BREAK, sal_False); |
| } |
| GetScImport().GetTextImport()->SetCursor(xTextCursor); |
| } |
| } |
| } |
| |
| void ScXMLChangeCellContext::EndElement() |
| { |
| if (!bEmpty) |
| { |
| if (pEditTextObj) |
| { |
| if (GetImport().GetTextImport()->GetCursor().is()) |
| { |
| //GetImport().GetTextImport()->GetCursor()->gotoEnd(sal_False); |
| if( GetImport().GetTextImport()->GetCursor()->goLeft( 1, sal_True ) ) |
| { |
| OUString sEmpty; |
| GetImport().GetTextImport()->GetText()->insertString( |
| GetImport().GetTextImport()->GetCursorAsRange(), sEmpty, |
| sal_True ); |
| } |
| } |
| if (GetScImport().GetDocument()) |
| rOldCell = new ScEditCell(pEditTextObj->CreateTextObject(), GetScImport().GetDocument(), GetScImport().GetDocument()->GetEditPool()); |
| GetScImport().GetTextImport()->ResetCursor(); |
| // delete pEditTextObj; |
| pEditTextObj->release(); |
| } |
| else |
| { |
| if (!bFormula) |
| { |
| if (sText.getLength() && bString) |
| rOldCell = new ScStringCell(sText); |
| else |
| rOldCell = new ScValueCell(fValue); |
| if (rType == NUMBERFORMAT_DATE || rType == NUMBERFORMAT_TIME) |
| rInputString = sText; |
| } |
| else |
| { |
| // do nothing, this has to do later (on another place) |
| /*ScAddress aCellPos; |
| rOldCell = new ScFormulaCell(GetScImport().GetDocument(), aCellPos, sFormula); |
| if (bString) |
| static_cast<ScFormulaCell*>(rOldCell)->SetString(sValue); |
| else |
| static_cast<ScFormulaCell*>(rOldCell)->SetDouble(fValue); |
| static_cast<ScFormulaCell*>(rOldCell)->SetInChangeTrack(sal_True); |
| if (bIsCoveredMatrix) |
| static_cast<ScFormulaCell*>(rOldCell)->SetMatrixFlag(MM_REFERENCE); |
| else if (bIsMatrix && nMatrixRows && nMatrixCols) |
| { |
| static_cast<ScFormulaCell*>(rOldCell)->SetMatrixFlag(MM_FORMULA); |
| static_cast<ScFormulaCell*>(rOldCell)->SetMatColsRows(static_cast<SCCOL>(nMatrixCols), static_cast<SCROW>(nMatrixRows)); |
| }*/ |
| } |
| } |
| } |
| else |
| rOldCell = NULL; |
| } |
| |
| ScXMLPreviousContext::ScXMLPreviousContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| pChangeTrackingImportHelper(pTempChangeTrackingImportHelper), |
| pOldCell(NULL), |
| nID(0), |
| nMatrixCols(0), |
| nMatrixRows(0), |
| eGrammar( formula::FormulaGrammar::GRAM_STORAGE_DEFAULT), |
| nType(NUMBERFORMAT_ALL), |
| nMatrixFlag(MM_NONE) |
| { |
| sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); |
| for( sal_Int16 i=0; i < nAttrCount; ++i ) |
| { |
| const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); |
| rtl::OUString aLocalName; |
| sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName( |
| sAttrName, &aLocalName )); |
| const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(aLocalName, XML_ID)) |
| nID = pChangeTrackingImportHelper->GetIDFromString(sValue); |
| } |
| } |
| } |
| |
| ScXMLPreviousContext::~ScXMLPreviousContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLPreviousContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ) |
| { |
| SvXMLImportContext *pContext(0); |
| |
| if ((nPrefix == XML_NAMESPACE_TABLE) && (IsXMLToken(rLocalName, XML_CHANGE_TRACK_TABLE_CELL))) |
| pContext = new ScXMLChangeCellContext(GetScImport(), nPrefix, rLocalName, xAttrList, |
| pOldCell, sFormulaAddress, sFormula, sFormulaNmsp, eGrammar, sInputString, fValue, nType, nMatrixFlag, nMatrixCols, nMatrixRows); |
| |
| if( !pContext ) |
| pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| |
| return pContext; |
| } |
| |
| void ScXMLPreviousContext::EndElement() |
| { |
| pChangeTrackingImportHelper->SetPreviousChange(nID, new ScMyCellInfo(pOldCell, sFormulaAddress, sFormula, eGrammar, sInputString, |
| fValue, nType, nMatrixFlag, nMatrixCols, nMatrixRows)); |
| } |
| |
| ScXMLContentChangeContext::ScXMLContentChangeContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| pChangeTrackingImportHelper(pTempChangeTrackingImportHelper) |
| { |
| sal_uInt32 nActionNumber(0); |
| sal_uInt32 nRejectingNumber(0); |
| ScChangeActionState nActionState(SC_CAS_VIRGIN); |
| |
| sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); |
| for( sal_Int16 i=0; i < nAttrCount; ++i ) |
| { |
| const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); |
| rtl::OUString aLocalName; |
| sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName( |
| sAttrName, &aLocalName )); |
| const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(aLocalName, XML_ID)) |
| { |
| nActionNumber = pChangeTrackingImportHelper->GetIDFromString(sValue); |
| } |
| else if (IsXMLToken(aLocalName, XML_ACCEPTANCE_STATE)) |
| { |
| if (IsXMLToken(sValue, XML_ACCEPTED)) |
| nActionState = SC_CAS_ACCEPTED; |
| else if (IsXMLToken(sValue, XML_REJECTED)) |
| nActionState = SC_CAS_REJECTED; |
| } |
| else if (IsXMLToken(aLocalName, XML_REJECTING_CHANGE_ID)) |
| { |
| nRejectingNumber = pChangeTrackingImportHelper->GetIDFromString(sValue); |
| } |
| } |
| } |
| |
| pChangeTrackingImportHelper->StartChangeAction(SC_CAT_CONTENT); |
| pChangeTrackingImportHelper->SetActionNumber(nActionNumber); |
| pChangeTrackingImportHelper->SetActionState(nActionState); |
| pChangeTrackingImportHelper->SetRejectingNumber(nRejectingNumber); |
| } |
| |
| ScXMLContentChangeContext::~ScXMLContentChangeContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLContentChangeContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ) |
| { |
| SvXMLImportContext *pContext(0); |
| |
| if ((nPrefix == XML_NAMESPACE_OFFICE) && (IsXMLToken(rLocalName, XML_CHANGE_INFO))) |
| { |
| pContext = new ScXMLChangeInfoContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| else if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(rLocalName, XML_CELL_ADDRESS)) |
| { |
| pContext = new ScXMLBigRangeContext(GetScImport(), nPrefix, rLocalName, xAttrList, aBigRange); |
| } |
| else if (IsXMLToken(rLocalName, XML_DEPENDENCIES)) |
| { |
| pContext = new ScXMLDependingsContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| else if (IsXMLToken(rLocalName, XML_DELETIONS)) |
| pContext = new ScXMLDeletionsContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| else if (IsXMLToken(rLocalName, XML_PREVIOUS)) |
| { |
| pContext = new ScXMLPreviousContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| } |
| |
| if( !pContext ) |
| pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| |
| return pContext; |
| } |
| |
| void ScXMLContentChangeContext::EndElement() |
| { |
| pChangeTrackingImportHelper->SetBigRange(aBigRange); |
| pChangeTrackingImportHelper->EndChangeAction(); |
| } |
| |
| ScXMLInsertionContext::ScXMLInsertionContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| pChangeTrackingImportHelper(pTempChangeTrackingImportHelper) |
| { |
| sal_uInt32 nActionNumber(0); |
| sal_uInt32 nRejectingNumber(0); |
| sal_Int32 nPosition(0); |
| sal_Int32 nCount(1); |
| sal_Int32 nTable(0); |
| ScChangeActionState nActionState(SC_CAS_VIRGIN); |
| ScChangeActionType nActionType(SC_CAT_INSERT_COLS); |
| |
| sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); |
| for( sal_Int16 i=0; i < nAttrCount; ++i ) |
| { |
| const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); |
| rtl::OUString aLocalName; |
| sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName( |
| sAttrName, &aLocalName )); |
| const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(aLocalName, XML_ID)) |
| { |
| nActionNumber = pChangeTrackingImportHelper->GetIDFromString(sValue); |
| } |
| else if (IsXMLToken(aLocalName, XML_ACCEPTANCE_STATE)) |
| { |
| if (IsXMLToken(sValue, XML_ACCEPTED)) |
| nActionState = SC_CAS_ACCEPTED; |
| else if (IsXMLToken(sValue, XML_REJECTED)) |
| nActionState = SC_CAS_REJECTED; |
| } |
| else if (IsXMLToken(aLocalName, XML_REJECTING_CHANGE_ID)) |
| { |
| nRejectingNumber = pChangeTrackingImportHelper->GetIDFromString(sValue); |
| } |
| else if (IsXMLToken(aLocalName, XML_TYPE)) |
| { |
| if (IsXMLToken(sValue, XML_ROW)) |
| nActionType = SC_CAT_INSERT_ROWS; |
| else if (IsXMLToken(sValue, XML_TABLE)) |
| nActionType = SC_CAT_INSERT_TABS; |
| } |
| else if (IsXMLToken(aLocalName, XML_POSITION)) |
| { |
| SvXMLUnitConverter::convertNumber(nPosition, sValue); |
| } |
| else if (IsXMLToken(aLocalName, XML_TABLE)) |
| { |
| SvXMLUnitConverter::convertNumber(nTable, sValue); |
| } |
| else if (IsXMLToken(aLocalName, XML_COUNT)) |
| { |
| SvXMLUnitConverter::convertNumber(nCount, sValue); |
| } |
| } |
| } |
| |
| pChangeTrackingImportHelper->StartChangeAction(nActionType); |
| pChangeTrackingImportHelper->SetActionNumber(nActionNumber); |
| pChangeTrackingImportHelper->SetActionState(nActionState); |
| pChangeTrackingImportHelper->SetRejectingNumber(nRejectingNumber); |
| pChangeTrackingImportHelper->SetPosition(nPosition, nCount, nTable); |
| } |
| |
| ScXMLInsertionContext::~ScXMLInsertionContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLInsertionContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ) |
| { |
| SvXMLImportContext *pContext(0); |
| |
| if ((nPrefix == XML_NAMESPACE_OFFICE) && (IsXMLToken(rLocalName, XML_CHANGE_INFO))) |
| { |
| pContext = new ScXMLChangeInfoContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| else if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(rLocalName, XML_DEPENDENCIES)) |
| pContext = new ScXMLDependingsContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| else if (IsXMLToken(rLocalName, XML_DELETIONS)) |
| pContext = new ScXMLDeletionsContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| |
| if( !pContext ) |
| pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| |
| return pContext; |
| } |
| |
| void ScXMLInsertionContext::EndElement() |
| { |
| pChangeTrackingImportHelper->EndChangeAction(); |
| } |
| |
| ScXMLInsertionCutOffContext::ScXMLInsertionCutOffContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| pChangeTrackingImportHelper(pTempChangeTrackingImportHelper) |
| { |
| sal_uInt32 nID(0); |
| sal_Int32 nPosition(0); |
| sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); |
| for( sal_Int16 i=0; i < nAttrCount; ++i ) |
| { |
| const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); |
| rtl::OUString aLocalName; |
| sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName( |
| sAttrName, &aLocalName )); |
| const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(aLocalName, XML_ID)) |
| { |
| nID = pChangeTrackingImportHelper->GetIDFromString(sValue); |
| } |
| else if (IsXMLToken(aLocalName, XML_POSITION)) |
| { |
| SvXMLUnitConverter::convertNumber(nPosition, sValue); |
| } |
| } |
| } |
| pChangeTrackingImportHelper->SetInsertionCutOff(nID, nPosition); |
| } |
| |
| ScXMLInsertionCutOffContext::~ScXMLInsertionCutOffContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLInsertionCutOffContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ ) |
| { |
| return new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| } |
| |
| void ScXMLInsertionCutOffContext::EndElement() |
| { |
| } |
| |
| ScXMLMovementCutOffContext::ScXMLMovementCutOffContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| pChangeTrackingImportHelper(pTempChangeTrackingImportHelper) |
| { |
| sal_uInt32 nID(0); |
| sal_Int32 nPosition(0); |
| sal_Int32 nStartPosition(0); |
| sal_Int32 nEndPosition(0); |
| sal_Bool bPosition(sal_False); |
| sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); |
| for( sal_Int16 i=0; i < nAttrCount; ++i ) |
| { |
| const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); |
| rtl::OUString aLocalName; |
| sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName( |
| sAttrName, &aLocalName )); |
| const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(aLocalName, XML_ID)) |
| { |
| nID = pChangeTrackingImportHelper->GetIDFromString(sValue); |
| } |
| else if (IsXMLToken(aLocalName, XML_POSITION)) |
| { |
| bPosition = sal_True; |
| SvXMLUnitConverter::convertNumber(nPosition, sValue); |
| } |
| else if (IsXMLToken(aLocalName, XML_START_POSITION)) |
| { |
| SvXMLUnitConverter::convertNumber(nStartPosition, sValue); |
| } |
| else if (IsXMLToken(aLocalName, XML_END_POSITION)) |
| { |
| SvXMLUnitConverter::convertNumber(nEndPosition, sValue); |
| } |
| } |
| } |
| if (bPosition) |
| nStartPosition = nEndPosition = nPosition; |
| pChangeTrackingImportHelper->AddMoveCutOff(nID, nStartPosition, nEndPosition); |
| } |
| |
| ScXMLMovementCutOffContext::~ScXMLMovementCutOffContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLMovementCutOffContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& /* xAttrList */ ) |
| { |
| return new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| } |
| |
| void ScXMLMovementCutOffContext::EndElement() |
| { |
| } |
| |
| ScXMLCutOffsContext::ScXMLCutOffsContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& /* xAttrList */, |
| ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| pChangeTrackingImportHelper(pTempChangeTrackingImportHelper) |
| { |
| // here are no attributes |
| } |
| |
| ScXMLCutOffsContext::~ScXMLCutOffsContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLCutOffsContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ) |
| { |
| SvXMLImportContext *pContext(0); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(rLocalName, XML_INSERTION_CUT_OFF)) |
| pContext = new ScXMLInsertionCutOffContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| else if (IsXMLToken(rLocalName, XML_MOVEMENT_CUT_OFF)) |
| pContext = new ScXMLMovementCutOffContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| |
| if( !pContext ) |
| pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| |
| return pContext; |
| } |
| |
| void ScXMLCutOffsContext::EndElement() |
| { |
| } |
| |
| ScXMLDeletionContext::ScXMLDeletionContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| pChangeTrackingImportHelper(pTempChangeTrackingImportHelper) |
| { |
| sal_uInt32 nActionNumber(0); |
| sal_uInt32 nRejectingNumber(0); |
| sal_Int32 nPosition(0); |
| sal_Int32 nMultiSpanned(0); |
| sal_Int32 nTable(0); |
| ScChangeActionState nActionState(SC_CAS_VIRGIN); |
| ScChangeActionType nActionType(SC_CAT_DELETE_COLS); |
| |
| sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); |
| for( sal_Int16 i=0; i < nAttrCount; i++ ) |
| { |
| const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); |
| rtl::OUString aLocalName; |
| sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName( |
| sAttrName, &aLocalName )); |
| const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(aLocalName, XML_ID)) |
| { |
| nActionNumber = pChangeTrackingImportHelper->GetIDFromString(sValue); |
| } |
| else if (IsXMLToken(aLocalName, XML_ACCEPTANCE_STATE)) |
| { |
| if (IsXMLToken(sValue, XML_ACCEPTED)) |
| nActionState = SC_CAS_ACCEPTED; |
| else if (IsXMLToken(sValue, XML_REJECTED)) |
| nActionState = SC_CAS_REJECTED; |
| } |
| else if (IsXMLToken(aLocalName, XML_REJECTING_CHANGE_ID)) |
| { |
| nRejectingNumber = pChangeTrackingImportHelper->GetIDFromString(sValue); |
| } |
| else if (IsXMLToken(aLocalName, XML_TYPE)) |
| { |
| if (IsXMLToken(sValue, XML_ROW)) |
| { |
| nActionType = SC_CAT_DELETE_ROWS; |
| } |
| else if (IsXMLToken(aLocalName, XML_TABLE)) |
| { |
| nActionType = SC_CAT_DELETE_TABS; |
| } |
| } |
| else if (IsXMLToken(aLocalName, XML_POSITION)) |
| { |
| SvXMLUnitConverter::convertNumber(nPosition, sValue); |
| } |
| else if (IsXMLToken(aLocalName, XML_TABLE)) |
| { |
| SvXMLUnitConverter::convertNumber(nTable, sValue); |
| } |
| else if (IsXMLToken(aLocalName, XML_MULTI_DELETION_SPANNED)) |
| { |
| SvXMLUnitConverter::convertNumber(nMultiSpanned, sValue); |
| } |
| } |
| } |
| |
| pChangeTrackingImportHelper->StartChangeAction(nActionType); |
| pChangeTrackingImportHelper->SetActionNumber(nActionNumber); |
| pChangeTrackingImportHelper->SetActionState(nActionState); |
| pChangeTrackingImportHelper->SetRejectingNumber(nRejectingNumber); |
| pChangeTrackingImportHelper->SetPosition(nPosition, 1, nTable); |
| pChangeTrackingImportHelper->SetMultiSpanned(static_cast<sal_Int16>(nMultiSpanned)); |
| } |
| |
| ScXMLDeletionContext::~ScXMLDeletionContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLDeletionContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ) |
| { |
| SvXMLImportContext *pContext(0); |
| |
| if ((nPrefix == XML_NAMESPACE_OFFICE) && (IsXMLToken(rLocalName, XML_CHANGE_INFO))) |
| { |
| pContext = new ScXMLChangeInfoContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| else if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(rLocalName, XML_DEPENDENCIES)) |
| pContext = new ScXMLDependingsContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| else if (IsXMLToken(rLocalName, XML_DELETIONS)) |
| pContext = new ScXMLDeletionsContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| else if (IsXMLToken(rLocalName, XML_CUT_OFFS) || rLocalName.equalsAsciiL("cut_offs", 8)) |
| pContext = new ScXMLCutOffsContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| else |
| { |
| DBG_ERROR("don't know this"); |
| } |
| } |
| |
| if( !pContext ) |
| pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| |
| return pContext; |
| } |
| |
| void ScXMLDeletionContext::EndElement() |
| { |
| pChangeTrackingImportHelper->EndChangeAction(); |
| } |
| |
| ScXMLMovementContext::ScXMLMovementContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| pChangeTrackingImportHelper(pTempChangeTrackingImportHelper) |
| { |
| sal_uInt32 nActionNumber(0); |
| sal_uInt32 nRejectingNumber(0); |
| ScChangeActionState nActionState(SC_CAS_VIRGIN); |
| |
| sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); |
| for( sal_Int16 i=0; i < nAttrCount; ++i ) |
| { |
| const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); |
| rtl::OUString aLocalName; |
| sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName( |
| sAttrName, &aLocalName )); |
| const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(aLocalName, XML_ID)) |
| { |
| nActionNumber = pChangeTrackingImportHelper->GetIDFromString(sValue); |
| } |
| else if (IsXMLToken(aLocalName, XML_ACCEPTANCE_STATE)) |
| { |
| if (IsXMLToken(sValue, XML_ACCEPTED)) |
| nActionState = SC_CAS_ACCEPTED; |
| else if (IsXMLToken(sValue, XML_REJECTED)) |
| nActionState = SC_CAS_REJECTED; |
| } |
| else if (IsXMLToken(aLocalName, XML_REJECTING_CHANGE_ID)) |
| { |
| nRejectingNumber = pChangeTrackingImportHelper->GetIDFromString(sValue); |
| } |
| } |
| } |
| |
| pChangeTrackingImportHelper->StartChangeAction(SC_CAT_MOVE); |
| pChangeTrackingImportHelper->SetActionNumber(nActionNumber); |
| pChangeTrackingImportHelper->SetActionState(nActionState); |
| pChangeTrackingImportHelper->SetRejectingNumber(nRejectingNumber); |
| } |
| |
| ScXMLMovementContext::~ScXMLMovementContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLMovementContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ) |
| { |
| SvXMLImportContext *pContext(0); |
| |
| if ((nPrefix == XML_NAMESPACE_OFFICE) && (IsXMLToken(rLocalName, XML_CHANGE_INFO))) |
| { |
| pContext = new ScXMLChangeInfoContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| else if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(rLocalName, XML_DEPENDENCIES)) |
| pContext = new ScXMLDependingsContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| else if (IsXMLToken(rLocalName, XML_DELETIONS)) |
| pContext = new ScXMLDeletionsContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| else if (IsXMLToken(rLocalName, XML_SOURCE_RANGE_ADDRESS)) |
| pContext = new ScXMLBigRangeContext(GetScImport(), nPrefix, rLocalName, xAttrList, aSourceRange); |
| else if (IsXMLToken(rLocalName, XML_TARGET_RANGE_ADDRESS)) |
| pContext = new ScXMLBigRangeContext(GetScImport(), nPrefix, rLocalName, xAttrList, aTargetRange); |
| } |
| |
| if( !pContext ) |
| pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| |
| return pContext; |
| } |
| |
| void ScXMLMovementContext::EndElement() |
| { |
| pChangeTrackingImportHelper->SetMoveRanges(aSourceRange, aTargetRange); |
| pChangeTrackingImportHelper->EndChangeAction(); |
| } |
| |
| ScXMLRejectionContext::ScXMLRejectionContext( ScXMLImport& rImport, |
| sal_uInt16 nPrfx, |
| const ::rtl::OUString& rLName, |
| const uno::Reference<xml::sax::XAttributeList>& xAttrList, |
| ScXMLChangeTrackingImportHelper* pTempChangeTrackingImportHelper ) : |
| SvXMLImportContext( rImport, nPrfx, rLName ), |
| pChangeTrackingImportHelper(pTempChangeTrackingImportHelper) |
| { |
| sal_uInt32 nActionNumber(0); |
| sal_uInt32 nRejectingNumber(0); |
| ScChangeActionState nActionState(SC_CAS_VIRGIN); |
| |
| sal_Int16 nAttrCount(xAttrList.is() ? xAttrList->getLength() : 0); |
| for( sal_Int16 i=0; i < nAttrCount; ++i ) |
| { |
| const rtl::OUString& sAttrName(xAttrList->getNameByIndex( i )); |
| rtl::OUString aLocalName; |
| sal_uInt16 nPrefix(GetScImport().GetNamespaceMap().GetKeyByAttrName( |
| sAttrName, &aLocalName )); |
| const rtl::OUString& sValue(xAttrList->getValueByIndex( i )); |
| |
| if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(aLocalName, XML_ID)) |
| { |
| nActionNumber = pChangeTrackingImportHelper->GetIDFromString(sValue); |
| } |
| else if (IsXMLToken(aLocalName, XML_ACCEPTANCE_STATE)) |
| { |
| if (IsXMLToken(sValue, XML_ACCEPTED)) |
| nActionState = SC_CAS_ACCEPTED; |
| else if (IsXMLToken(sValue, XML_REJECTED)) |
| nActionState = SC_CAS_REJECTED; |
| } |
| else if (IsXMLToken(aLocalName, XML_REJECTING_CHANGE_ID)) |
| { |
| nRejectingNumber = pChangeTrackingImportHelper->GetIDFromString(sValue); |
| } |
| } |
| } |
| |
| pChangeTrackingImportHelper->StartChangeAction(SC_CAT_MOVE); |
| pChangeTrackingImportHelper->SetActionNumber(nActionNumber); |
| pChangeTrackingImportHelper->SetActionState(nActionState); |
| pChangeTrackingImportHelper->SetRejectingNumber(nRejectingNumber); |
| } |
| |
| ScXMLRejectionContext::~ScXMLRejectionContext() |
| { |
| } |
| |
| SvXMLImportContext *ScXMLRejectionContext::CreateChildContext( sal_uInt16 nPrefix, |
| const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::xml::sax::XAttributeList>& xAttrList ) |
| { |
| SvXMLImportContext *pContext(0); |
| |
| if ((nPrefix == XML_NAMESPACE_OFFICE) && (IsXMLToken(rLocalName, XML_CHANGE_INFO))) |
| { |
| pContext = new ScXMLChangeInfoContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| else if (nPrefix == XML_NAMESPACE_TABLE) |
| { |
| if (IsXMLToken(rLocalName, XML_DEPENDENCIES)) |
| pContext = new ScXMLDependingsContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| else if (IsXMLToken(rLocalName, XML_DELETIONS)) |
| pContext = new ScXMLDeletionsContext(GetScImport(), nPrefix, rLocalName, xAttrList, pChangeTrackingImportHelper); |
| } |
| |
| if( !pContext ) |
| pContext = new SvXMLImportContext( GetImport(), nPrefix, rLocalName ); |
| |
| return pContext; |
| } |
| |
| void ScXMLRejectionContext::EndElement() |
| { |
| pChangeTrackingImportHelper->EndChangeAction(); |
| } |
| |
| |
| |