Kaydet (Commit) a0abb2f6 authored tarafından Miklos Vajna's avatar Miklos Vajna

EPUB export: invoke the underlying ODT exporter

The document handler is still missing, though.

Change-Id: I26aa9c2211fafb311e297f48d4301c0c26ec8edf
Reviewed-on: https://gerrit.libreoffice.org/40636Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
üst 7f369c73
......@@ -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
......
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment