offapi/UnoApi_offapi.mk | 1 offapi/com/sun/star/oox/ExcelFilterExport.idl | 37 ------------------ oox/source/export/shapes.cxx | 18 ++++----- sc/source/filter/excel/xestream.cxx | 23 ----------- sc/source/filter/inc/excelfilter.hxx | 25 +++--------- sc/source/filter/inc/xestream.hxx | 7 --- sc/source/filter/oox/excelfilter.cxx | 52 +++++++++++--------------- sc/source/filter/oox/workbookhelper.cxx | 8 ++-- sc/source/filter/services.cxx | 4 -- sc/util/scfilt.component | 3 - 10 files changed, 42 insertions(+), 136 deletions(-)
New commits: commit 5658600001a41c536cc1497eb7419512cb1353d8 Author: Stephan Bergmann <sberg...@redhat.com> Date: Fri May 31 18:01:43 2013 +0200 No need for two Excel filter services The reason to have both export-only XclExpXmlStream ("com.sun.star.comp.oox.ExcelFilterExport") and im-/export oox::xls::ExcelFilter ("com.sun.star.comp.oox.xls.ExcelFilter"), where the latter uses the former to implement export, appears to be historic. Get rid of the former service, but keep it as an independent C++ class for now (still also deriving from XmlFilterBase)---this can likely be cleaned up by somebdoy versed in those XmlFilterBase details. With the last use (in oox::xls::ExcelFilter, to instantiate XclExpXmlStream) of the recently introduced com.sun.star.oox.ExcelFilterExport new-style service gone now, remove that service again. Change-Id: Id3adacd293cbe4390242827615f074d4bbe9d85a diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk index 5b03b76..fc4ba30 100644 --- a/offapi/UnoApi_offapi.mk +++ b/offapi/UnoApi_offapi.mk @@ -258,7 +258,6 @@ $(eval $(call gb_UnoApi_add_idlfiles_nohdl,offapi,offapi/com/sun/star/mozilla,\ MozillaBootstrap \ )) $(eval $(call gb_UnoApi_add_idlfiles_nohdl,offapi,offapi/com/sun/star/oox,\ - ExcelFilterExport \ PowerPointExport \ )) $(eval $(call gb_UnoApi_add_idlfiles_nohdl,offapi,offapi/com/sun/star/packages/manifest,\ diff --git a/offapi/com/sun/star/oox/ExcelFilterExport.idl b/offapi/com/sun/star/oox/ExcelFilterExport.idl deleted file mode 100644 index cb74aa8..0000000 --- a/offapi/com/sun/star/oox/ExcelFilterExport.idl +++ /dev/null @@ -1,37 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * 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 . - */ - -#ifndef __com_sun_star_oox_ExcelFilterExport_idl__ -#define __com_sun_star_oox_ExcelFilterExport_idl__ - -#include <com/sun/star/document/XExporter.idl> - - -module com { module sun { module star { module oox { - -/** - @since LibreOffice 4.2 -*/ -service ExcelFilterExport : com::sun::star::document::XExporter; - -}; }; }; }; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/excel/xestream.cxx b/sc/source/filter/excel/xestream.cxx index 178da4e..550753a 100644 --- a/sc/source/filter/excel/xestream.cxx +++ b/sc/source/filter/excel/xestream.cxx @@ -1141,15 +1141,6 @@ bool XclExpXmlStream::exportDocument() throw() return true; } -////////////////////////////////////////////////////////////////////////// -// UNO stuff so that the filter is registered -////////////////////////////////////////////////////////////////////////// - -OUString XlsxExport_getImplementationName() -{ - return OUString( "com.sun.star.comp.oox.ExcelFilterExport" ); -} - ::oox::ole::VbaProject* XclExpXmlStream::implCreateVbaProject() const { return new ::oox::xls::ExcelVbaProject( getComponentContext(), Reference< XSpreadsheetDocument >( getModel(), UNO_QUERY ) ); @@ -1160,18 +1151,4 @@ OUString XclExpXmlStream::implGetImplementationName() const return OUString( "TODO" ); } - -Sequence< OUString > XlsxExport_getSupportedServiceNames() -{ - Sequence< OUString > aSeq( 2 ); - aSeq[0] = "com.sun.star.document.ExportFilter"; - aSeq[1] = "com.sun.star.oox.ExcelFilterExport"; - return aSeq; -} - -Reference< XInterface > SAL_CALL XlsxExport_create(const Reference< XComponentContext > & rCC ) -{ - return (cppu::OWeakObject*) new XclExpXmlStream( rCC ); -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/inc/xestream.hxx b/sc/source/filter/inc/xestream.hxx index aed9dde..0ac31d4 100644 --- a/sc/source/filter/inc/xestream.hxx +++ b/sc/source/filter/inc/xestream.hxx @@ -381,13 +381,6 @@ private: XclExpXmlPathToStateMap maOpenedStreamMap; }; -css::uno::Reference< css::uno::XInterface > SAL_CALL XlsxExport_create( - css::uno::Reference< css::uno::XComponentContext > const & context); - -OUString SAL_CALL XlsxExport_getImplementationName(); - -css::uno::Sequence< OUString > SAL_CALL XlsxExport_getSupportedServiceNames(); - #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/filter/oox/excelfilter.cxx b/sc/source/filter/oox/excelfilter.cxx index 81ec414..9980b2b 100644 --- a/sc/source/filter/oox/excelfilter.cxx +++ b/sc/source/filter/oox/excelfilter.cxx @@ -29,6 +29,7 @@ #include "stylesbuffer.hxx" #include "themebuffer.hxx" #include "workbookfragment.hxx" +#include "xestream.hxx" namespace oox { namespace xls { @@ -167,7 +168,8 @@ sal_Bool SAL_CALL ExcelFilter::filter( const ::com::sun::star::uno::Sequence< :: if ( isExportFilter() ) { - Reference< XExporter > xExporter = css::oox::ExcelFilterExport::create( getComponentContext() ); + Reference< XExporter > xExporter( + new XclExpXmlStream( getComponentContext() ) ); Reference< XComponent > xDocument( getModel(), UNO_QUERY ); Reference< XFilter > xFilter( xExporter, UNO_QUERY ); diff --git a/sc/source/filter/services.cxx b/sc/source/filter/services.cxx index 33a0184..2b35042 100644 --- a/sc/source/filter/services.cxx +++ b/sc/source/filter/services.cxx @@ -24,15 +24,11 @@ #include "sal/types.h" #include "excelfilter.hxx" -#include "xestream.hxx" extern "C" SAL_DLLPUBLIC_EXPORT void * SAL_CALL scfilt_component_getFactory( char const * pImplName, void * pServiceManager, void * pRegistryKey) { static cppu::ImplementationEntry const services[] = { - { XlsxExport_create, XlsxExport_getImplementationName, - XlsxExport_getSupportedServiceNames, - cppu::createSingleComponentFactory, 0, 0 }, { oox::xls::ExcelFilter_create, oox::xls::ExcelFilter_getImplementationName, oox::xls::ExcelFilter_getSupportedServiceNames, diff --git a/sc/util/scfilt.component b/sc/util/scfilt.component index 6834ce1..c4b3728 100644 --- a/sc/util/scfilt.component +++ b/sc/util/scfilt.component @@ -19,9 +19,6 @@ <component loader="com.sun.star.loader.SharedLibrary" prefix="scfilt" xmlns="http://openoffice.org/2010/uno-components"> - <implementation name="com.sun.star.comp.oox.ExcelFilterExport"> - <service name="com.sun.star.oox.ExcelFilterExport"/> - </implementation> <implementation name="com.sun.star.comp.oox.xls.ExcelFilter"> <service name="com.sun.star.document.ImportFilter"/> <service name="com.sun.star.document.ExportFilter"/> commit 779831307fe3da5f2226925972452c9aedeb67a8 Author: Stephan Bergmann <sberg...@redhat.com> Date: Fri May 31 16:33:40 2013 +0200 Trivially merge ExcelFilterBase into ExcelFilter Change-Id: I4c5080dd05ea7e00c56a820c8ce226c78d0a46b7 diff --git a/sc/source/filter/inc/excelfilter.hxx b/sc/source/filter/inc/excelfilter.hxx index 6423996..5aa3310 100644 --- a/sc/source/filter/inc/excelfilter.hxx +++ b/sc/source/filter/inc/excelfilter.hxx @@ -29,24 +29,7 @@ class WorkbookGlobals; // ============================================================================ -class ExcelFilterBase -{ -public: - void registerWorkbookGlobals( WorkbookGlobals& rBookGlob ); - WorkbookGlobals& getWorkbookGlobals() const; - void unregisterWorkbookGlobals(); - -protected: - explicit ExcelFilterBase(); - virtual ~ExcelFilterBase(); - -private: - WorkbookGlobals* mpBookGlob; -}; - -// ============================================================================ - -class ExcelFilter : public ::oox::core::XmlFilterBase, public ExcelFilterBase +class ExcelFilter : public ::oox::core::XmlFilterBase { public: explicit ExcelFilter( @@ -54,6 +37,10 @@ public: throw( ::com::sun::star::uno::RuntimeException ); virtual ~ExcelFilter(); + void registerWorkbookGlobals( WorkbookGlobals& rBookGlob ); + WorkbookGlobals& getWorkbookGlobals() const; + void unregisterWorkbookGlobals(); + virtual bool importDocument() throw(); virtual bool exportDocument() throw(); @@ -68,6 +55,8 @@ private: virtual GraphicHelper* implCreateGraphicHelper() const; virtual ::oox::ole::VbaProject* implCreateVbaProject() const; virtual OUString implGetImplementationName() const; + + WorkbookGlobals* mpBookGlob; }; css::uno::Reference< css::uno::XInterface > SAL_CALL ExcelFilter_create( diff --git a/sc/source/filter/oox/excelfilter.cxx b/sc/source/filter/oox/excelfilter.cxx index 630e9d2..81ec414 100644 --- a/sc/source/filter/oox/excelfilter.cxx +++ b/sc/source/filter/oox/excelfilter.cxx @@ -45,34 +45,6 @@ using ::oox::drawingml::table::TableStyleListPtr; // ============================================================================ -ExcelFilterBase::ExcelFilterBase() : - mpBookGlob( 0 ) -{ -} - -ExcelFilterBase::~ExcelFilterBase() -{ - OSL_ENSURE( !mpBookGlob, "ExcelFilterBase::~ExcelFilterBase - workbook data not cleared" ); -} - -void ExcelFilterBase::registerWorkbookGlobals( WorkbookGlobals& rBookGlob ) -{ - mpBookGlob = &rBookGlob; -} - -WorkbookGlobals& ExcelFilterBase::getWorkbookGlobals() const -{ - OSL_ENSURE( mpBookGlob, "ExcelFilterBase::getWorkbookGlobals - missing workbook data" ); - return *mpBookGlob; -} - -void ExcelFilterBase::unregisterWorkbookGlobals() -{ - mpBookGlob = 0; -} - -// ============================================================================ - OUString ExcelFilter_getImplementationName() { return OUString( "com.sun.star.comp.oox.xls.ExcelFilter" ); @@ -95,12 +67,30 @@ Reference< XInterface > ExcelFilter_create( // ---------------------------------------------------------------------------- ExcelFilter::ExcelFilter( const Reference< XComponentContext >& rxContext ) throw( RuntimeException ) : - XmlFilterBase( rxContext ) + XmlFilterBase( rxContext ), + mpBookGlob( 0 ) { } ExcelFilter::~ExcelFilter() { + OSL_ENSURE( !mpBookGlob, "ExcelFilter::~ExcelFilter - workbook data not cleared" ); +} + +void ExcelFilter::registerWorkbookGlobals( WorkbookGlobals& rBookGlob ) +{ + mpBookGlob = &rBookGlob; +} + +WorkbookGlobals& ExcelFilter::getWorkbookGlobals() const +{ + OSL_ENSURE( mpBookGlob, "ExcelFilter::getWorkbookGlobals - missing workbook data" ); + return *mpBookGlob; +} + +void ExcelFilter::unregisterWorkbookGlobals() +{ + mpBookGlob = 0; } bool ExcelFilter::importDocument() throw() diff --git a/sc/source/filter/oox/workbookhelper.cxx b/sc/source/filter/oox/workbookhelper.cxx index 6ab4eca..51fd426 100644 --- a/sc/source/filter/oox/workbookhelper.cxx +++ b/sc/source/filter/oox/workbookhelper.cxx @@ -272,7 +272,7 @@ private: OUString maPageStyleServ; /// Service name for a page style. Reference< XSpreadsheetDocument > mxDoc; /// Document model. FilterBase& mrBaseFilter; /// Base filter object. - ExcelFilterBase& mrExcelBase; /// Base object for registration of this structure. + ExcelFilter& mrExcelFilter; /// Base object for registration of this structure. FilterType meFilterType; /// File type of the filter. ProgressBarPtr mxProgressBar; /// The progress bar. StorageRef mxVbaPrjStrg; /// Storage containing the VBA project. @@ -319,21 +319,21 @@ private: WorkbookGlobals::WorkbookGlobals( ExcelFilter& rFilter ) : mrBaseFilter( rFilter ), - mrExcelBase( rFilter ), + mrExcelFilter( rFilter ), meFilterType( FILTER_OOXML ), mpOoxFilter( &rFilter ), meBiff( BIFF_UNKNOWN ), mpDoc( NULL ) { // register at the filter, needed for virtual callbacks (even during construction) - mrExcelBase.registerWorkbookGlobals( *this ); + mrExcelFilter.registerWorkbookGlobals( *this ); initialize( true ); } WorkbookGlobals::~WorkbookGlobals() { finalize(); - mrExcelBase.unregisterWorkbookGlobals(); + mrExcelFilter.unregisterWorkbookGlobals(); } // document model ------------------------------------------------------------- commit 4e5e40e4c627775caf039870bcc28269a0d05937 Author: Stephan Bergmann <sberg...@redhat.com> Date: Fri May 31 16:00:42 2013 +0200 In ShapeExport, use general com.sun.star.comp.oox.xls.ExcelFilter ...instead of its export-only part com.sun.star.comp.oox.ExcelFilterExport (for which even a new-style service com.sun.star.oox.ExcelFilterExport has been introduced recently, but all of this should probably go away again; that this filter is used explicitly is probably a rare enough scenario to not warrant a dedicated new-style service). The modified code in ShapeExport::WriteOLE2Shape is triggered e.g. with a Presetation, insert a Spreadsheet as an OLE Object, and save as "Office Open XML Presentation (.pptx)." Change-Id: Id2645972caaec5265eed645c9c6e2c308a4d079d diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx index d4b65ff..74fa5b9 100644 --- a/oox/source/export/shapes.cxx +++ b/oox/source/export/shapes.cxx @@ -46,7 +46,6 @@ #include <com/sun/star/graphic/XGraphic.hpp> #include <com/sun/star/i18n/ScriptType.hpp> #include <com/sun/star/io/XOutputStream.hpp> -#include <com/sun/star/oox/ExcelFilterExport.hpp> #include <com/sun/star/sheet/XSpreadsheetDocument.hpp> #include <com/sun/star/style/ParagraphAdjust.hpp> #include <com/sun/star/text/XSimpleText.hpp> @@ -1311,7 +1310,6 @@ ShapeExport& ShapeExport::WriteOLE2Shape( Reference< XShape > xShape ) if( xSheetDoc.is() && mpFB) { Reference< XComponent > xDocument( mAny, UNO_QUERY ); - Reference< XExporter > xExporter = css::oox::ExcelFilterExport::create( mpFB->getComponentContext() ); if( xDocument.is() ) { Reference< XOutputStream > xOutStream = mpFB->openFragmentStream( OUStringBuffer() @@ -1327,13 +1325,15 @@ ShapeExport& ShapeExport::WriteOLE2Shape( Reference< XShape > xShape ) rMedia[0].Name = MediaDescriptor::PROP_STREAMFOROUTPUT(); rMedia[0].Value <<= xOutStream; - Reference< XFilter > xFilter( xExporter, UNO_QUERY ); - - if( xFilter.is() ) - { - xExporter->setSourceDocument( xDocument ); - xFilter->filter( rMedia ); - } + Reference< XExporter > xExporter( + mpFB->getComponentContext()->getServiceManager()-> + createInstanceWithContext( + "com.sun.star.comp.oox.xls.ExcelFilter", + mpFB->getComponentContext() ), + UNO_QUERY_THROW ); + xExporter->setSourceDocument( xDocument ); + Reference< XFilter >( xExporter, UNO_QUERY_THROW )-> + filter( rMedia ); xOutStream->closeOutput(); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits