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 @@ ...@@ -9,7 +9,9 @@
#include "EPUBExportFilter.hxx" #include "EPUBExportFilter.hxx"
#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/uno/XComponentContext.hpp> #include <com/sun/star/uno/XComponentContext.hpp>
#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
#include <cppuhelper/supportsservice.hxx> #include <cppuhelper/supportsservice.hxx>
...@@ -18,14 +20,25 @@ using namespace com::sun::star; ...@@ -18,14 +20,25 @@ using namespace com::sun::star;
namespace writerperfect 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"); // Create ODT exporter, this will feed our document handler.
return true; 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() void EPUBExportFilter::cancel()
...@@ -56,9 +69,9 @@ uno::Sequence<OUString> EPUBExportFilter::getSupportedServiceNames() ...@@ -56,9 +69,9 @@ uno::Sequence<OUString> EPUBExportFilter::getSupportedServiceNames()
return aRet; 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 } // namespace writerperfect
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <com/sun/star/document/XFilter.hpp> #include <com/sun/star/document/XFilter.hpp>
#include <com/sun/star/document/XExporter.hpp> #include <com/sun/star/document/XExporter.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp> #include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
namespace writerperfect namespace writerperfect
{ {
...@@ -27,10 +28,11 @@ class EPUBExportFilter : public cppu::WeakImplHelper ...@@ -27,10 +28,11 @@ class EPUBExportFilter : public cppu::WeakImplHelper
css::lang::XServiceInfo css::lang::XServiceInfo
> >
{ {
css::uno::Reference<css::uno::XComponentContext> mxContext;
css::uno::Reference<css::lang::XComponent> mxSourceDocument; css::uno::Reference<css::lang::XComponent> mxSourceDocument;
public: public:
EPUBExportFilter(); EPUBExportFilter(const css::uno::Reference<css::uno::XComponentContext> &xContext);
// XFilter // XFilter
sal_Bool SAL_CALL filter(const css::uno::Sequence<css::beans::PropertyValue> &rDescriptor) override; 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