diff options
Diffstat (limited to 'sc/source/filter/xml/xmlstyli.hxx')
-rw-r--r-- | sc/source/filter/xml/xmlstyli.hxx | 332 |
1 files changed, 332 insertions, 0 deletions
diff --git a/sc/source/filter/xml/xmlstyli.hxx b/sc/source/filter/xml/xmlstyli.hxx new file mode 100644 index 000000000000..c80ea8b5c92d --- /dev/null +++ b/sc/source/filter/xml/xmlstyli.hxx @@ -0,0 +1,332 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: xmlstyli.hxx,v $ + * $Revision: 1.29 $ + * + * 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. + * + ************************************************************************/ + +#ifndef SC_XMLSTYLI_HXX +#define SC_XMLSTYLI_HXX + +#include <rtl/ustring.hxx> +#include <vector> +#include <xmloff/xmlimp.hxx> +#include <xmloff/xmlictxt.hxx> +#include <xmloff/maptype.hxx> +#include <xmloff/prstylei.hxx> +#include <xmloff/xmlimppr.hxx> +#include <xmloff/XMLTextMasterPageContext.hxx> +#include <xmloff/XMLTextMasterStylesContext.hxx> +#include <xmloff/txtstyli.hxx> +#include <com/sun/star/sheet/ConditionOperator.hpp> +#include "xmlimprt.hxx" + +class ScSheetSaveData; + +class ScXMLCellImportPropertyMapper : public SvXMLImportPropertyMapper +{ +protected: + +public: + + ScXMLCellImportPropertyMapper( + const UniReference< XMLPropertySetMapper >& rMapper, + SvXMLImport& rImport); + virtual ~ScXMLCellImportPropertyMapper(); + + /** this method is called for every item that has the MID_FLAG_SPECIAL_ITEM_IMPORT flag set */ +/* virtual sal_Bool handleSpecialItem( + XMLPropertyState& rProperty, + ::std::vector< XMLPropertyState >& rProperties, + const ::rtl::OUString& rValue, + const SvXMLUnitConverter& rUnitConverter, + const SvXMLNamespaceMap& rNamespaceMap ) const;*/ + + /** this method is called for every item that has the MID_FLAG_NO_ITEM_IMPORT flag set */ +/* virtual sal_Bool handleNoItem( + sal_Int32 nIndex, + ::std::vector< XMLPropertyState >& rProperties, + const ::rtl::OUString& rValue, + const SvXMLUnitConverter& rUnitConverter, + const SvXMLNamespaceMap& rNamespaceMap ) const;*/ + + /** This method is called when all attributes have been processed. It may be used to remove items that are incomplete */ + virtual void finished( + ::std::vector< XMLPropertyState >& rProperties, sal_Int32 nStartIndex, sal_Int32 nEndIndex ) const; +}; + +class ScXMLRowImportPropertyMapper : public SvXMLImportPropertyMapper +{ +protected: + +public: + + ScXMLRowImportPropertyMapper( + const UniReference< XMLPropertySetMapper >& rMapper, + SvXMLImport& rImport); + virtual ~ScXMLRowImportPropertyMapper(); + + /** This method is called when all attributes have been processed. It may be used to remove items that are incomplete */ + virtual void finished( + ::std::vector< XMLPropertyState >& rProperties, sal_Int32 nStartIndex, sal_Int32 nEndIndex ) const; +}; +struct ScXMLMapContent; + +class XMLTableStyleContext : public XMLPropStyleContext +{ + ::rtl::OUString sDataStyleName; + rtl::OUString sPageStyle; + const rtl::OUString sNumberFormat; + SvXMLStylesContext* pStyles; + std::vector<ScXMLMapContent> aMaps; + com::sun::star::uno::Any aConditionalFormat; + sal_Int32 nNumberFormat; + sal_Int32 nLastSheet; + sal_Bool bConditionalFormatCreated; + sal_Bool bParentSet; + + const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } + ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } + + void SetOperator( + ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rProps, + ::com::sun::star::sheet::ConditionOperator eOp ) const; + + void SetBaseCellAddress( + ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rProps, + const ::rtl::OUString& rBaseCell ) const; + + void SetStyle( + ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rProps, + const ::rtl::OUString& rApplyStyle ) const; + + void SetFormula( + ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rProps, + sal_Int32 nFormulaIdx, const ::rtl::OUString& rFormula, + const ::rtl::OUString& rFormulaNmsp, ::formula::FormulaGrammar::Grammar eGrammar, bool bHasNmsp ) const; + + void GetConditionalFormat( + ::com::sun::star::uno::Any& aAny, const rtl::OUString& sCondition, + const rtl::OUString& sApplyStyle, const rtl::OUString& sBaseCell) const; +protected: + + virtual void SetAttribute( sal_uInt16 nPrefixKey, + const ::rtl::OUString& rLocalName, + const ::rtl::OUString& rValue ); + +public: + + TYPEINFO(); + + XMLTableStyleContext( ScXMLImport& rImport, sal_uInt16 nPrfx, + const ::rtl::OUString& rLName, + const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttrList, + SvXMLStylesContext& rStyles, sal_uInt16 nFamily, sal_Bool bDefaultStyle = sal_False ); + virtual ~XMLTableStyleContext(); + + 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 FillPropertySet(const ::com::sun::star::uno::Reference< + ::com::sun::star::beans::XPropertySet > & rPropSet ); + + virtual void SetDefaults(); + + void AddProperty(sal_Int16 nContextID, const com::sun::star::uno::Any& aValue); + XMLPropertyState* FindProperty(const sal_Int16 nContextID); + + sal_Int32 GetNumberFormat();// { return nNumberFormat; } + + sal_Int32 GetLastSheet() const { return nLastSheet; } + void SetLastSheet(sal_Int32 nNew) { nLastSheet = nNew; } + +private: + using XMLPropStyleContext::SetStyle; +}; + +class XMLTableStylesContext : public SvXMLStylesContext +{ + ::com::sun::star::uno::Reference < + ::com::sun::star::container::XNameContainer > xCellStyles; + ::com::sun::star::uno::Reference < + ::com::sun::star::container::XNameContainer > xColumnStyles; + ::com::sun::star::uno::Reference < + ::com::sun::star::container::XNameContainer > xRowStyles; + ::com::sun::star::uno::Reference < + ::com::sun::star::container::XNameContainer > xTableStyles; + const ::rtl::OUString sCellStyleServiceName; + const ::rtl::OUString sColumnStyleServiceName; + const ::rtl::OUString sRowStyleServiceName; + const ::rtl::OUString sTableStyleServiceName; + sal_Int32 nNumberFormatIndex; + sal_Int32 nConditionalFormatIndex; + sal_Int32 nCellStyleIndex; + sal_Int32 nMasterPageNameIndex; + sal_Bool bAutoStyles; + + UniReference < SvXMLImportPropertyMapper > xCellImpPropMapper; + UniReference < SvXMLImportPropertyMapper > xColumnImpPropMapper; + UniReference < SvXMLImportPropertyMapper > xRowImpPropMapper; + UniReference < SvXMLImportPropertyMapper > xTableImpPropMapper; + + const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } + ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } + +protected: + + // Create a style context. + virtual SvXMLStyleContext *CreateStyleStyleChildContext( + sal_uInt16 nFamily, + sal_uInt16 nPrefix, + const ::rtl::OUString& rLocalName, + const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttrList ); + + virtual SvXMLStyleContext *CreateDefaultStyleStyleChildContext( + sal_uInt16 nFamily, sal_uInt16 nPrefix, + const ::rtl::OUString& rLocalName, + const ::com::sun::star::uno::Reference< + ::com::sun::star::xml::sax::XAttributeList > & xAttrList ); + +// virtual SvXMLImportPropertyMapper *GetImpPropMapper(); + +public: + + XMLTableStylesContext( SvXMLImport& rImport, sal_uInt16 nPrfx , + const ::rtl::OUString& rLName , + const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttrList, + const sal_Bool bAutoStyles ); + virtual ~XMLTableStylesContext(); + + // Create child element. +/* 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(); + + virtual UniReference < SvXMLImportPropertyMapper > GetImportPropertyMapper( + sal_uInt16 nFamily ) const; + virtual ::com::sun::star::uno::Reference < + ::com::sun::star::container::XNameContainer > + GetStylesContainer( sal_uInt16 nFamily ) const; + virtual ::rtl::OUString GetServiceName( sal_uInt16 nFamily ) const; + + sal_Int32 GetIndex(const sal_Int16 nContextID); +}; + +class ScXMLMasterStylesContext : public SvXMLStylesContext +{ +protected: + virtual SvXMLStyleContext *CreateStyleChildContext( sal_uInt16 nPrefix, + const ::rtl::OUString& rLocalName, + const ::com::sun::star::uno::Reference< + ::com::sun::star::xml::sax::XAttributeList > & xAttrList ); + + virtual SvXMLStyleContext *CreateStyleStyleChildContext( sal_uInt16 nFamily, + sal_uInt16 nPrefix, const ::rtl::OUString& rLocalName, + const ::com::sun::star::uno::Reference< + ::com::sun::star::xml::sax::XAttributeList > & xAttrList ); + + virtual sal_Bool InsertStyleFamily( sal_uInt16 nFamily ) const; + +public: + TYPEINFO(); + + ScXMLMasterStylesContext( SvXMLImport& rImport, sal_uInt16 nPrfx, + const ::rtl::OUString& rLName, + const ::com::sun::star::uno::Reference< + ::com::sun::star::xml::sax::XAttributeList > & xAttrList); + + virtual ~ScXMLMasterStylesContext(); + virtual void EndElement(); +}; + +namespace com { namespace sun { namespace star { + namespace style { class XStyle; } +} } } + +class ScMasterPageContext : public XMLTextMasterPageContext +{ + com::sun::star::uno::Reference<com::sun::star::beans::XPropertySet> xPropSet; + const rtl::OUString sEmpty; + sal_Bool bContainsRightHeader; + sal_Bool bContainsRightFooter; + + void ClearContent(const rtl::OUString& rContent); +public: + + TYPEINFO(); + + ScMasterPageContext( SvXMLImport& rImport, sal_uInt16 nPrfx, + const ::rtl::OUString& rLName, + const ::com::sun::star::uno::Reference< + ::com::sun::star::xml::sax::XAttributeList > & xAttrList, + sal_Bool bOverwrite ); + virtual ~ScMasterPageContext(); + + virtual SvXMLImportContext *CreateChildContext( + sal_uInt16 nPrefix, + const ::rtl::OUString& rLocalName, + const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttrList ); + + virtual SvXMLImportContext *CreateHeaderFooterContext( + sal_uInt16 nPrefix, + const ::rtl::OUString& rLocalName, + const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttrList, + const sal_Bool bFooter, + const sal_Bool bLeft ); + + virtual void Finish( sal_Bool bOverwrite ); +}; + +class ScCellTextStyleContext : public XMLTextStyleContext +{ + sal_Int32 nLastSheet; + + const ScXMLImport& GetScImport() const { return (const ScXMLImport&)GetImport(); } + ScXMLImport& GetScImport() { return (ScXMLImport&)GetImport(); } + +public: + ScCellTextStyleContext( SvXMLImport& rImport, sal_uInt16 nPrfx, + const ::rtl::OUString& rLName, + const ::com::sun::star::uno::Reference< + ::com::sun::star::xml::sax::XAttributeList > & xAttrList, + SvXMLStylesContext& rStyles, sal_uInt16 nFamily, + sal_Bool bDefaultStyle = sal_False ); + virtual ~ScCellTextStyleContext(); + + // overload FillPropertySet to store style information + virtual void FillPropertySet( + const ::com::sun::star::uno::Reference< + ::com::sun::star::beans::XPropertySet > & rPropSet ); +}; + + +#endif + |