writerperfect/source/writer/EPUBExportFilter.cxx | 25 +++++++++++++++++------ writerperfect/source/writer/EPUBExportFilter.hxx | 4 ++- 2 files changed, 22 insertions(+), 7 deletions(-)
New commits: commit a0abb2f6a4e2392ce44634a58f3a5d1af1868499 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Tue Aug 1 15:09:03 2017 +0200 EPUB export: invoke the underlying ODT exporter The document handler is still missing, though. Change-Id: I26aa9c2211fafb311e297f48d4301c0c26ec8edf Reviewed-on: https://gerrit.libreoffice.org/40636 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk> diff --git a/writerperfect/source/writer/EPUBExportFilter.cxx b/writerperfect/source/writer/EPUBExportFilter.cxx index d7fb0cac0e0d..36cff7ab9dd6 100644 --- a/writerperfect/source/writer/EPUBExportFilter.cxx +++ b/writerperfect/source/writer/EPUBExportFilter.cxx @@ -9,7 +9,9 @@ #include "EPUBExportFilter.hxx" +#include <com/sun/star/lang/XInitialization.hpp> #include <com/sun/star/uno/XComponentContext.hpp> +#include <com/sun/star/xml/sax/XDocumentHandler.hpp> #include <cppuhelper/supportsservice.hxx> @@ -18,14 +20,25 @@ using namespace com::sun::star; namespace writerperfect { -EPUBExportFilter::EPUBExportFilter() +EPUBExportFilter::EPUBExportFilter(const uno::Reference<uno::XComponentContext> &xContext) + : mxContext(xContext) { } -sal_Bool EPUBExportFilter::filter(const uno::Sequence<beans::PropertyValue> &/*rDescriptor*/) +sal_Bool EPUBExportFilter::filter(const uno::Sequence<beans::PropertyValue> &rDescriptor) { - SAL_WARN("writerperfect", "EPUBExportFilter::filter: implement me"); - return true; + // Create ODT exporter, this will feed our document handler. + uno::Reference<lang::XInitialization> xInitialization(mxContext->getServiceManager()->createInstanceWithContext("com.sun.star.comp.Writer.XMLOasisExporter", mxContext), uno::UNO_QUERY); + + // The document handler will make the calls on the text interface provided by the EPUB export. + uno::Reference<xml::sax::XDocumentHandler> xExportHandler; + + // Let the ODT exporter read the doc model and invoke the doc handler. + xInitialization->initialize({uno::makeAny(xExportHandler)}); + uno::Reference<document::XExporter> xExporter(xInitialization, uno::UNO_QUERY); + xExporter->setSourceDocument(mxSourceDocument); + uno::Reference<document::XFilter> xFilter(xInitialization, uno::UNO_QUERY); + return xFilter->filter(rDescriptor); } void EPUBExportFilter::cancel() @@ -56,9 +69,9 @@ uno::Sequence<OUString> EPUBExportFilter::getSupportedServiceNames() return aRet; } -extern "C" SAL_DLLPUBLIC_EXPORT uno::XInterface *SAL_CALL com_sun_star_comp_Writer_EPUBExportFilter_get_implementation(uno::XComponentContext *, uno::Sequence<uno::Any> const &) +extern "C" SAL_DLLPUBLIC_EXPORT uno::XInterface *SAL_CALL com_sun_star_comp_Writer_EPUBExportFilter_get_implementation(uno::XComponentContext *pContext, uno::Sequence<uno::Any> const &) { - return cppu::acquire(new EPUBExportFilter); + return cppu::acquire(new EPUBExportFilter(pContext)); } } // namespace writerperfect diff --git a/writerperfect/source/writer/EPUBExportFilter.hxx b/writerperfect/source/writer/EPUBExportFilter.hxx index 101a4f85bf42..10f39dcfbef4 100644 --- a/writerperfect/source/writer/EPUBExportFilter.hxx +++ b/writerperfect/source/writer/EPUBExportFilter.hxx @@ -15,6 +15,7 @@ #include <com/sun/star/document/XFilter.hpp> #include <com/sun/star/document/XExporter.hpp> #include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/uno/XComponentContext.hpp> namespace writerperfect { @@ -27,10 +28,11 @@ class EPUBExportFilter : public cppu::WeakImplHelper css::lang::XServiceInfo > { + css::uno::Reference<css::uno::XComponentContext> mxContext; css::uno::Reference<css::lang::XComponent> mxSourceDocument; public: - EPUBExportFilter(); + EPUBExportFilter(const css::uno::Reference<css::uno::XComponentContext> &xContext); // XFilter sal_Bool SAL_CALL filter(const css::uno::Sequence<css::beans::PropertyValue> &rDescriptor) override; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits