| /************************************************************** |
| * |
| * 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. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef _SDXMLIMP_IMPL_HXX |
| #define _SDXMLIMP_IMPL_HXX |
| |
| #include <com/sun/star/drawing/XDrawPage.hpp> |
| #include <com/sun/star/frame/XModel.hpp> |
| #include <com/sun/star/task/XStatusIndicator.hpp> |
| #include <xmloff/xmltkmap.hxx> |
| #include <com/sun/star/container/XNameAccess.hpp> |
| |
| #ifndef __SGI_STL_VECTOR |
| #include <vector> |
| #endif |
| #include <xmloff/xmlimp.hxx> |
| |
| ////////////////////////////////////////////////////////////////////////////// |
| |
| enum SdXMLDocElemTokenMap |
| { |
| XML_TOK_DOC_FONTDECLS, |
| XML_TOK_DOC_STYLES, |
| XML_TOK_DOC_AUTOSTYLES, |
| XML_TOK_DOC_MASTERSTYLES, |
| XML_TOK_DOC_META, |
| XML_TOK_DOC_BODY, |
| XML_TOK_DOC_SCRIPT, |
| XML_TOK_DOC_SETTINGS, |
| XML_TOK_OFFICE_END = XML_TOK_UNKNOWN |
| }; |
| |
| enum SdXMLBodyElemTokenMap |
| { |
| XML_TOK_BODY_PAGE, |
| XML_TOK_BODY_SETTINGS, |
| XML_TOK_BODY_HEADER_DECL, |
| XML_TOK_BODY_FOOTER_DECL, |
| XML_TOK_BODY_DATE_TIME_DECL |
| }; |
| |
| enum SdXMLStylesElemTokenMap |
| { |
| XML_TOK_STYLES_MASTER_PAGE, |
| XML_TOK_STYLES_STYLE, |
| XML_TOK_STYLES_PAGE_MASTER, |
| XML_TOK_STYLES_PRESENTATION_PAGE_LAYOUT |
| }; |
| |
| enum SdXMLAutoStylesElemTokenMap |
| { |
| XML_TOK_AUTOSTYLES_STYLE |
| }; |
| |
| enum SdXMLMasterPageElemTokenMap |
| { |
| XML_TOK_MASTERPAGE_STYLE, |
| XML_TOK_MASTERPAGE_NOTES |
| }; |
| |
| enum SdXMLMasterPageAttrTokenMap |
| { |
| XML_TOK_MASTERPAGE_NAME, |
| XML_TOK_MASTERPAGE_DISPLAY_NAME, |
| XML_TOK_MASTERPAGE_PAGE_MASTER_NAME, |
| XML_TOK_MASTERPAGE_STYLE_NAME, |
| XML_TOK_MASTERPAGE_PAGE_LAYOUT_NAME, |
| XML_TOK_MASTERPAGE_USE_HEADER_NAME, |
| XML_TOK_MASTERPAGE_USE_FOOTER_NAME, |
| XML_TOK_MASTERPAGE_USE_DATE_TIME_NAME |
| }; |
| |
| enum SdXMLPageMasterAttrTokenMap |
| { |
| XML_TOK_PAGEMASTER_NAME |
| }; |
| |
| enum SdXMLPageMasterStyleAttrTokenMap |
| { |
| XML_TOK_PAGEMASTERSTYLE_MARGIN_TOP, |
| XML_TOK_PAGEMASTERSTYLE_MARGIN_BOTTOM, |
| XML_TOK_PAGEMASTERSTYLE_MARGIN_LEFT, |
| XML_TOK_PAGEMASTERSTYLE_MARGIN_RIGHT, |
| XML_TOK_PAGEMASTERSTYLE_PAGE_WIDTH, |
| XML_TOK_PAGEMASTERSTYLE_PAGE_HEIGHT, |
| XML_TOK_PAGEMASTERSTYLE_PAGE_ORIENTATION |
| }; |
| |
| enum SdXMLDocStyleAttrTokenMap |
| { |
| XML_TOK_DOCSTYLE_NAME, |
| XML_TOK_DOCSTYLE_FAMILY, |
| XML_TOK_DOCSTYLE_PARENT_STYLE_NAME, |
| XML_TOK_DOCSTYLE_AUTOMATIC |
| }; |
| |
| enum SdXMLDocStyleElemTokenMap |
| { |
| XML_TOK_DOCSTYLE_PROPERTIES, |
| XML_TOK_DOCSTYLE_PRESENTATION_PLACEHOLDER |
| }; |
| |
| enum SdXMLDrawPageAttrTokenMap |
| { |
| XML_TOK_DRAWPAGE_NAME, |
| XML_TOK_DRAWPAGE_STYLE_NAME, |
| XML_TOK_DRAWPAGE_MASTER_PAGE_NAME, |
| XML_TOK_DRAWPAGE_PAGE_LAYOUT_NAME, |
| XML_TOK_DRAWPAGE_DRAWID, |
| XML_TOK_DRAWPAGE_XMLID, |
| XML_TOK_DRAWPAGE_HREF, |
| XML_TOK_DRAWPAGE_USE_HEADER_NAME, |
| XML_TOK_DRAWPAGE_USE_FOOTER_NAME, |
| XML_TOK_DRAWPAGE_USE_DATE_TIME_NAME |
| }; |
| |
| enum SdXMLDrawPageElemTokenMap |
| { |
| XML_TOK_DRAWPAGE_NOTES, |
| XML_TOK_DRAWPAGE_PAR, |
| XML_TOK_DRAWPAGE_SEQ |
| }; |
| |
| enum SdXMLPresentationPlaceholderAttrTokenMap |
| { |
| XML_TOK_PRESENTATIONPLACEHOLDER_OBJECTNAME, |
| XML_TOK_PRESENTATIONPLACEHOLDER_X, |
| XML_TOK_PRESENTATIONPLACEHOLDER_Y, |
| XML_TOK_PRESENTATIONPLACEHOLDER_WIDTH, |
| XML_TOK_PRESENTATIONPLACEHOLDER_HEIGHT |
| }; |
| |
| ////////////////////////////////////////////////////////////////////////////// |
| |
| struct SdXMLltXDrawPageId |
| { |
| bool operator()(sal_Int32 nId1, sal_Int32 nId2 ) const |
| { |
| return nId1 < nId2; |
| } |
| }; |
| |
| typedef std::map< sal_Int32, com::sun::star::uno::Reference< com::sun::star::drawing::XDrawPage >, SdXMLltXDrawPageId > DrawPageIdMap; |
| |
| ////////////////////////////////////////////////////////////////////////////// |
| |
| class SvXMLUnitConverter; |
| class SvXMLTokenMap; |
| class XMLSdPropHdlFactory; |
| class XMLPropertySetMapper; |
| class XMLPropStyleContext; |
| class SdXMLStylesContext; |
| class SdXMLMasterStylesContext; |
| |
| ////////////////////////////////////////////////////////////////////////////// |
| |
| struct DateTimeDeclContextImpl |
| { |
| rtl::OUString maStrText; |
| sal_Bool mbFixed; |
| rtl::OUString maStrDateTimeFormat; |
| |
| DateTimeDeclContextImpl() : mbFixed(sal_True) {} |
| }; |
| |
| DECLARE_STL_USTRINGACCESS_MAP( ::rtl::OUString, HeaderFooterDeclMap ); |
| DECLARE_STL_USTRINGACCESS_MAP( DateTimeDeclContextImpl, DateTimeDeclMap ); |
| |
| ////////////////////////////////////////////////////////////////////////////// |
| |
| class SdXMLImport: public SvXMLImport |
| { |
| com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > mxDocStyleFamilies; |
| com::sun::star::uno::Reference< com::sun::star::container::XIndexAccess > mxDocMasterPages; |
| com::sun::star::uno::Reference< com::sun::star::container::XIndexAccess > mxDocDrawPages; |
| com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > mxPageLayouts; |
| |
| // contexts for Style and AutoStyle import |
| SdXMLMasterStylesContext* mpMasterStylesContext; |
| |
| // token map lists |
| SvXMLTokenMap* mpDocElemTokenMap; |
| SvXMLTokenMap* mpBodyElemTokenMap; |
| SvXMLTokenMap* mpStylesElemTokenMap; |
| SvXMLTokenMap* mpAutoStylesElemTokenMap; |
| SvXMLTokenMap* mpMasterPageElemTokenMap; |
| SvXMLTokenMap* mpMasterPageAttrTokenMap; |
| SvXMLTokenMap* mpPageMasterAttrTokenMap; |
| SvXMLTokenMap* mpPageMasterStyleAttrTokenMap; |
| SvXMLTokenMap* mpDocStyleAttrTokenMap; |
| SvXMLTokenMap* mpDocStyleElemTokenMap; |
| SvXMLTokenMap* mpDrawPageAttrTokenMap; |
| SvXMLTokenMap* mpDrawPageElemTokenMap; |
| SvXMLTokenMap* mpPresentationPlaceholderAttrTokenMap; |
| |
| sal_uInt16 mnStyleFamilyMask; |
| |
| sal_Int32 mnNewPageCount; |
| sal_Int32 mnNewMasterPageCount; |
| |
| sal_Bool mbIsDraw; |
| sal_Bool mbLoadDoc; |
| sal_Bool mbPreview; |
| |
| DrawPageIdMap maDrawPageIds; |
| |
| ::rtl::OUString msPageLayouts; |
| ::rtl::OUString msPreview; |
| |
| HeaderFooterDeclMap maHeaderDeclsMap; |
| HeaderFooterDeclMap maFooterDeclsMap; |
| DateTimeDeclMap maDateTimeDeclsMap; |
| |
| protected: |
| // This method is called after the namespace map has been updated, but |
| // before a context for the current element has been pushed. |
| virtual SvXMLImportContext *CreateContext(sal_uInt16 nPrefix, |
| const rtl::OUString& rLocalName, |
| const com::sun::star::uno::Reference< |
| com::sun::star::xml::sax::XAttributeList>& xAttrList); |
| |
| public: |
| // #110680# |
| SdXMLImport( |
| const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory, |
| sal_Bool bIsDraw, sal_uInt16 nImportFlags = IMPORT_ALL ); |
| ~SdXMLImport() throw (); |
| |
| // XImporter |
| virtual void SAL_CALL setTargetDocument( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& xDoc ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); |
| |
| // XInitialization |
| virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); |
| |
| void SetProgress(sal_Int32 nProg); |
| |
| virtual void SetViewSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aViewProps); |
| virtual void SetConfigurationSettings(const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue>& aConfigProps); |
| |
| // namespace office |
| // NB: in contrast to other CreateFooContexts, this particular one handles |
| // the root element (i.e. office:document-meta) |
| SvXMLImportContext* CreateMetaContext(const rtl::OUString& rLocalName, |
| const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList >& xAttrList); |
| SvXMLImportContext* CreateScriptContext( const ::rtl::OUString& rLocalName ); |
| SvXMLImportContext* CreateBodyContext(const rtl::OUString& rLocalName, |
| const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList >& xAttrList); |
| SvXMLStylesContext* CreateStylesContext(const rtl::OUString& rLocalName, |
| const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList >& xAttrList); |
| SvXMLStylesContext* CreateAutoStylesContext(const rtl::OUString& rLocalName, |
| const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList >& xAttrList); |
| SvXMLImportContext* CreateMasterStylesContext(const rtl::OUString& rLocalName, |
| const com::sun::star::uno::Reference< com::sun::star::xml::sax::XAttributeList >& xAttrList); |
| SvXMLImportContext *CreateFontDeclsContext(const ::rtl::OUString& rLocalName, |
| const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList > & xAttrList ); |
| |
| // Styles and AutoStyles contexts |
| const SdXMLMasterStylesContext* GetMasterStylesContext() const { return mpMasterStylesContext; } |
| |
| sal_uInt16 GetStyleFamilyMask() const { return mnStyleFamilyMask; } |
| sal_Bool IsStylesOnlyMode() const { return !mbLoadDoc; } |
| |
| const SvXMLTokenMap& GetDocElemTokenMap(); |
| const SvXMLTokenMap& GetBodyElemTokenMap(); |
| const SvXMLTokenMap& GetStylesElemTokenMap(); |
| const SvXMLTokenMap& GetMasterPageElemTokenMap(); |
| const SvXMLTokenMap& GetMasterPageAttrTokenMap(); |
| const SvXMLTokenMap& GetPageMasterAttrTokenMap(); |
| const SvXMLTokenMap& GetPageMasterStyleAttrTokenMap(); |
| const SvXMLTokenMap& GetDrawPageAttrTokenMap(); |
| const SvXMLTokenMap& GetDrawPageElemTokenMap(); |
| const SvXMLTokenMap& GetPresentationPlaceholderAttrTokenMap(); |
| |
| // export local parameters concerning page access and similar |
| const com::sun::star::uno::Reference< |
| com::sun::star::container::XNameAccess >& GetLocalDocStyleFamilies() const { return mxDocStyleFamilies; } |
| const com::sun::star::uno::Reference< |
| com::sun::star::container::XIndexAccess >& GetLocalMasterPages() const { return mxDocMasterPages; } |
| const com::sun::star::uno::Reference< |
| com::sun::star::container::XIndexAccess >& GetLocalDrawPages() const { return mxDocDrawPages; } |
| |
| sal_Int32 GetNewPageCount() const { return mnNewPageCount; } |
| void IncrementNewPageCount() { mnNewPageCount++; } |
| sal_Int32 GetNewMasterPageCount() const { return mnNewMasterPageCount; } |
| void IncrementNewMasterPageCount() { mnNewMasterPageCount++; } |
| |
| com::sun::star::uno::Reference< com::sun::star::container::XNameAccess > getPageLayouts() const { return mxPageLayouts; } |
| |
| sal_Bool IsDraw() const { return mbIsDraw; } |
| sal_Bool IsImpress() const { return !mbIsDraw; } |
| |
| // import pool defaults. Parameter contains pool defaults read |
| // from input data. These data needs to be set at the model. |
| void ImportPoolDefaults(const XMLPropStyleContext* pPool); |
| |
| // #80365# |
| virtual void SetStatistics( |
| const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::NamedValue> & i_rStats); |
| |
| sal_Bool IsPreview() const { return mbPreview; } |
| |
| // XServiceInfo ( : SvXMLExport ) |
| virtual ::rtl::OUString SAL_CALL getImplementationName() throw( ::com::sun::star::uno::RuntimeException ); |
| |
| void AddHeaderDecl( const ::rtl::OUString& rName, const ::rtl::OUString& rText ); |
| void AddFooterDecl( const ::rtl::OUString& rName, const ::rtl::OUString& rText ); |
| void AddDateTimeDecl( const ::rtl::OUString& rName, const ::rtl::OUString& rText, sal_Bool bFixed, const ::rtl::OUString& rDateTimeFormat ); |
| |
| ::rtl::OUString GetHeaderDecl( const ::rtl::OUString& rName ) const; |
| ::rtl::OUString GetFooterDecl( const ::rtl::OUString& rName ) const; |
| ::rtl::OUString GetDateTimeDecl( const ::rtl::OUString& rName, sal_Bool& rbFixed, ::rtl::OUString& rDateTimeFormat ); |
| |
| }; |
| |
| #endif // _SDXMLIMP_HXX |