summaryrefslogtreecommitdiff
path: root/sw/source/filter/ww8/docxexportfilter.cxx
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@frugalware.org>2010-09-17 12:22:16 +0200
committerCédric Bosdonnat <cedricbosdo@openoffice.org>2010-09-17 13:16:36 +0200
commit5bbc027d5dae3472223538b13933ff821e027737 (patch)
treed8828edd4c93a8609b3d7a88644b35e2cf8a4261 /sw/source/filter/ww8/docxexportfilter.cxx
parente36bb7e0a2412495c4a36458e3f2bd6af6d923b1 (diff)
cws-vmiklos01.diff: Better RTF export filter
Diffstat (limited to 'sw/source/filter/ww8/docxexportfilter.cxx')
-rw-r--r--sw/source/filter/ww8/docxexportfilter.cxx49
1 files changed, 48 insertions, 1 deletions
diff --git a/sw/source/filter/ww8/docxexportfilter.cxx b/sw/source/filter/ww8/docxexportfilter.cxx
index c2b329db583e..bdf6616a0b97 100644
--- a/sw/source/filter/ww8/docxexportfilter.cxx
+++ b/sw/source/filter/ww8/docxexportfilter.cxx
@@ -26,6 +26,8 @@
************************************************************************/
#include "docxexportfilter.hxx"
+#include "rtfexportfilter.hxx"
+#include "rtfimportfilter.hxx"
#include "docxexport.hxx"
#include <docsh.hxx>
@@ -144,7 +146,35 @@ SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo( void* /* pServiceMan
}
catch( registry::InvalidRegistryException& )
{
- OSL_ENSURE( sal_False, "### InvalidRegistryException!" );
+ OSL_ENSURE( sal_False, "### InvalidRegistryException (docx)!" );
+ }
+
+ try
+ {
+ uno::Reference< registry::XRegistryKey > xNewKey1(
+ static_cast< registry::XRegistryKey* >( pRegistryKey )->createKey(
+ OUString::createFromAscii( IMPL_NAME_RTFEXPORT "/UNO/SERVICES/" ) ) );
+ xNewKey1->createKey( RtfExport_getSupportedServiceNames().getConstArray()[0] );
+
+ bRet = sal_True;
+ }
+ catch( registry::InvalidRegistryException& )
+ {
+ OSL_ENSURE( sal_False, "### InvalidRegistryException (rtfexport)!" );
+ }
+
+ try
+ {
+ uno::Reference< registry::XRegistryKey > xNewKey1(
+ static_cast< registry::XRegistryKey* >( pRegistryKey )->createKey(
+ OUString::createFromAscii( IMPL_NAME_RTFIMPORT "/UNO/SERVICES/" ) ) );
+ xNewKey1->createKey( RtfExport_getSupportedServiceNames().getConstArray()[0] );
+
+ bRet = sal_True;
+ }
+ catch( registry::InvalidRegistryException& )
+ {
+ OSL_ENSURE( sal_False, "### InvalidRegistryException (rtfimport)!" );
}
}
@@ -157,6 +187,7 @@ SAL_DLLPUBLIC_EXPORT sal_Bool SAL_CALL component_writeInfo( void* /* pServiceMan
SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory( const sal_Char* pImplName, void* pServiceManager, void* /* pRegistryKey */ )
{
+ OSL_TRACE("%s, pImplName is '%s'", OSL_THIS_FUNC, pImplName);
uno::Reference< lang::XSingleServiceFactory > xFactory;
void* pRet = 0;
@@ -169,6 +200,22 @@ SAL_DLLPUBLIC_EXPORT void* SAL_CALL component_getFactory( const sal_Char* pImplN
DocxExport_getImplementationName(),
DocxExport_createInstance,
DocxExport_getSupportedServiceNames() ) );
+ } else if ( rtl_str_compare( pImplName, IMPL_NAME_RTFEXPORT ) == 0 ) {
+ const OUString aServiceName( OUString::createFromAscii( IMPL_NAME_RTFEXPORT ) );
+
+ xFactory = uno::Reference< lang::XSingleServiceFactory >( ::cppu::createSingleFactory(
+ reinterpret_cast< lang::XMultiServiceFactory* >( pServiceManager ),
+ RtfExport_getImplementationName(),
+ RtfExport_createInstance,
+ RtfExport_getSupportedServiceNames() ) );
+ } else if ( rtl_str_compare( pImplName, IMPL_NAME_RTFIMPORT ) == 0 ) {
+ const OUString aServiceName( OUString::createFromAscii( IMPL_NAME_RTFIMPORT ) );
+
+ xFactory = uno::Reference< lang::XSingleServiceFactory >( ::cppu::createSingleFactory(
+ reinterpret_cast< lang::XMultiServiceFactory* >( pServiceManager ),
+ RtfImport_getImplementationName(),
+ RtfImport_createInstance,
+ RtfImport_getSupportedServiceNames() ) );
}
if ( xFactory.is() )