writerfilter: pass the whole MediaDescriptor to dmapper
This gives dmapper access to the document URL.
Change-Id: I4844c2fe97815f788de87b53170d4a1d1faebde8
diff --git a/writerfilter/inc/dmapper/DomainMapperFactory.hxx b/writerfilter/inc/dmapper/DomainMapperFactory.hxx
index 28563ac..9fcd542 100644
--- a/writerfilter/inc/dmapper/DomainMapperFactory.hxx
+++ b/writerfilter/inc/dmapper/DomainMapperFactory.hxx
@@ -15,6 +15,11 @@
#include <com/sun/star/text/XTextRange.hpp>
#include <com/sun/star/uno/XComponentContext.hpp>
namespace utl
{
class MediaDescriptor;
}
namespace writerfilter
{
namespace dmapper
@@ -38,7 +43,7 @@ public:
bool bRepairStorage,
SourceDocumentType eDocumentType,
css::uno::Reference<css::text::XTextRange> const& xInsertTextRange,
bool bIsNewDoc = true);
utl::MediaDescriptor& rMediaDesc);
};
} // namespace dmapper
} // namespace writerfilter
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 2f0e43d..14c8c5f 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -63,6 +63,7 @@
#include <comphelper/types.hxx>
#include <comphelper/storagehelper.hxx>
#include <filter/msfilter/util.hxx>
#include <unotools/mediadescriptor.hxx>
#include <TextEffectsHandler.hxx>
#include <CellColorHandler.hxx>
@@ -96,11 +97,11 @@ DomainMapper::DomainMapper( const uno::Reference< uno::XComponentContext >& xCon
bool bRepairStorage,
SourceDocumentType eDocumentType,
uno::Reference<text::XTextRange> const& xInsertTextRange,
bool bIsNewDoc ) :
utl::MediaDescriptor& rMediaDesc) :
LoggedProperties(dmapper_logger, "DomainMapper"),
LoggedTable(dmapper_logger, "DomainMapper"),
LoggedStream(dmapper_logger, "DomainMapper"),
m_pImpl( new DomainMapper_Impl( *this, xContext, xModel, eDocumentType, xInsertTextRange, bIsNewDoc )),
m_pImpl( new DomainMapper_Impl( *this, xContext, xModel, eDocumentType, xInsertTextRange, !rMediaDesc.getUnpackedValueOrDefault("InsertMode", false))),
mnBackgroundColor(0), mbIsHighlightSet(false), mbIsSplitPara(false)
{
// #i24363# tab stops relative to indent
diff --git a/writerfilter/source/dmapper/DomainMapper.hxx b/writerfilter/source/dmapper/DomainMapper.hxx
index b1b0ba7..67c16f3 100644
--- a/writerfilter/source/dmapper/DomainMapper.hxx
+++ b/writerfilter/source/dmapper/DomainMapper.hxx
@@ -46,6 +46,11 @@ namespace com{ namespace sun {namespace star{
}
}}}
namespace utl
{
class MediaDescriptor;
}
typedef std::vector< com::sun::star::beans::PropertyValue > PropertyValueVector_t;
namespace writerfilter {
@@ -76,7 +81,7 @@ public:
bool bRepairStorage,
SourceDocumentType eDocumentType,
::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > const& xInsertTextRange,
bool bIsNewDoc = true);
utl::MediaDescriptor& rMediaDesc);
virtual ~DomainMapper();
// Stream
diff --git a/writerfilter/source/dmapper/domainmapperfactory.cxx b/writerfilter/source/dmapper/domainmapperfactory.cxx
index bf9810f..bc59c4e 100644
--- a/writerfilter/source/dmapper/domainmapperfactory.cxx
+++ b/writerfilter/source/dmapper/domainmapperfactory.cxx
@@ -8,6 +8,7 @@
*/
#include <DomainMapper.hxx>
#include <unotools/mediadescriptor.hxx>
namespace writerfilter
{
@@ -20,9 +21,9 @@ Stream::Pointer_t DomainMapperFactory::createMapper(css::uno::Reference<css::uno
bool bRepairStorage,
SourceDocumentType eDocumentType,
css::uno::Reference<css::text::XTextRange> const& xInsertTextRange,
bool bIsNewDoc)
utl::MediaDescriptor& rMediaDesc)
{
return Stream::Pointer_t(new DomainMapper(xContext, xInputStream, xModel, bRepairStorage, eDocumentType, xInsertTextRange, bIsNewDoc));
return Stream::Pointer_t(new DomainMapper(xContext, xInputStream, xModel, bRepairStorage, eDocumentType, xInsertTextRange, rMediaDesc));
}
} // namespace dmapper
diff --git a/writerfilter/source/filter/ImportFilter.cxx b/writerfilter/source/filter/ImportFilter.cxx
index 87a81da..474b79e 100644
--- a/writerfilter/source/filter/ImportFilter.cxx
+++ b/writerfilter/source/filter/ImportFilter.cxx
@@ -90,7 +90,7 @@ sal_Bool WriterFilter::filter( const uno::Sequence< beans::PropertyValue >& aDes
writerfilter::dmapper::SourceDocumentType eType = writerfilter::dmapper::DOCUMENT_OOXML;
writerfilter::Stream::Pointer_t pStream(
writerfilter::dmapper::DomainMapperFactory::createMapper(m_xContext, xInputStream, m_xDstDoc, bRepairStorage, eType, uno::Reference<text::XTextRange>()));
writerfilter::dmapper::DomainMapperFactory::createMapper(m_xContext, xInputStream, m_xDstDoc, bRepairStorage, eType, uno::Reference<text::XTextRange>(), aMediaDesc));
//create the tokenizer and domain mapper
writerfilter::ooxml::OOXMLStream::Pointer_t pDocStream = writerfilter::ooxml::OOXMLDocumentFactory::createStream(m_xContext, xInputStream, bRepairStorage);
uno::Reference<task::XStatusIndicator> xStatusIndicator = aMediaDesc.getUnpackedValueOrDefault(utl::MediaDescriptor::PROP_STATUSINDICATOR(), uno::Reference<task::XStatusIndicator>());
diff --git a/writerfilter/source/filter/RtfFilter.cxx b/writerfilter/source/filter/RtfFilter.cxx
index 1eba5b6..56ab873 100644
--- a/writerfilter/source/filter/RtfFilter.cxx
+++ b/writerfilter/source/filter/RtfFilter.cxx
@@ -113,7 +113,7 @@ sal_Bool RtfFilter::filter(const uno::Sequence< beans::PropertyValue >& aDescrip
uno::Reference<task::XStatusIndicator>());
writerfilter::Stream::Pointer_t pStream(
writerfilter::dmapper::DomainMapperFactory::createMapper(m_xContext, xInputStream, m_xDstDoc, bRepairStorage, writerfilter::dmapper::DOCUMENT_RTF, xInsertTextRange, bIsNewDoc));
writerfilter::dmapper::DomainMapperFactory::createMapper(m_xContext, xInputStream, m_xDstDoc, bRepairStorage, writerfilter::dmapper::DOCUMENT_RTF, xInsertTextRange, aMediaDesc));
writerfilter::rtftok::RTFDocument::Pointer_t const pDocument(
writerfilter::rtftok::RTFDocumentFactory::createDocument(m_xContext, xInputStream, m_xDstDoc, xFrame, xStatusIndicator));
pDocument->resolve(*pStream);