summaryrefslogtreecommitdiffstats
path: root/sfx2
diff options
context:
space:
mode:
authorMatúš Kukan <matus.kukan@collabora.com>2014-01-15 12:45:23 +0100
committerMatúš Kukan <matus.kukan@collabora.com>2014-01-15 15:11:54 +0100
commitea301c7c1d65064bbc9588534fc21f12b8e0d752 (patch)
treeeb3772697c688bc475c1f57710b0b7b3c8fabd44 /sfx2
parentsfx: Use constructor feature for SfxGlobalEvents_Impl. (diff)
downloadcore-ea301c7c1d65064bbc9588534fc21f12b8e0d752.tar.gz
core-ea301c7c1d65064bbc9588534fc21f12b8e0d752.zip
sfx: Use constructor feature for SfxDocTplService.
Change-Id: Ib1eb1ccf9c5fbbec84eb8f49395651e9219b7b97
Diffstat (limited to 'sfx2')
-rw-r--r--sfx2/source/appl/appuno.cxx2
-rw-r--r--sfx2/source/doc/doctemplates.cxx129
-rw-r--r--sfx2/source/inc/doctemplates.hxx79
-rw-r--r--sfx2/util/sfx.component3
4 files changed, 97 insertions, 116 deletions
diff --git a/sfx2/source/appl/appuno.cxx b/sfx2/source/appl/appuno.cxx
index 77b21754fda1..bc725fe0bc8e 100644
--- a/sfx2/source/appl/appuno.cxx
+++ b/sfx2/source/appl/appuno.cxx
@@ -24,7 +24,6 @@
#include "backingcomp.hxx"
#include "SfxDocumentMetaData.hxx"
#include "appbaslib.hxx"
-#include "doctemplates.hxx"
#include "fltoptint.hxx"
#include "frmload.hxx"
#include "objshimp.hxx"
@@ -1799,7 +1798,6 @@ SFX2_DLLPUBLIC void* SAL_CALL sfx_component_getFactory(
//=============================================================================
IF_NAME_CREATECOMPONENTFACTORY( BackingComp )
IF_NAME_CREATECOMPONENTFACTORY( SfxFrameLoader_Impl )
- IF_NAME_CREATECOMPONENTFACTORY( SfxDocTplService )
IF_NAME_CREATECOMPONENTFACTORY( ShutdownIcon )
IF_NAME_CREATECOMPONENTFACTORY( SfxApplicationScriptLibraryContainer )
IF_NAME_CREATECOMPONENTFACTORY( SfxApplicationDialogLibraryContainer )
diff --git a/sfx2/source/doc/doctemplates.cxx b/sfx2/source/doc/doctemplates.cxx
index ff07ef3ec705..11461cdeb643 100644
--- a/sfx2/source/doc/doctemplates.cxx
+++ b/sfx2/source/doc/doctemplates.cxx
@@ -17,8 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-
-#include "doctemplates.hxx"
#include <osl/mutex.hxx>
#include <tools/debug.hxx>
#include <tools/diagnose_ex.h>
@@ -33,6 +31,8 @@
#include <comphelper/sequenceashashmap.hxx>
#include <comphelper/storagehelper.hxx>
#include <comphelper/string.hxx>
+#include <cppuhelper/implbase3.hxx>
+#include <cppuhelper/supportsservice.hxx>
#include <com/sun/star/beans/PropertyAttribute.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/beans/XPropertySetInfo.hpp>
@@ -54,7 +54,21 @@
#include <com/sun/star/ucb/XContentAccess.hpp>
#include <com/sun/star/frame/ModuleManager.hpp>
#include <com/sun/star/uno/Exception.hpp>
-
+#include <com/sun/star/task/InteractionHandler.hpp>
+#include <com/sun/star/ucb/XProgressHandler.hpp>
+#include <com/sun/star/container/XNameAccess.hpp>
+#include <com/sun/star/frame/XDocumentTemplates.hpp>
+#include <com/sun/star/frame/XStorable.hpp>
+#include <com/sun/star/lang/Locale.hpp>
+#include <com/sun/star/lang/XLocalizable.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
+#include <com/sun/star/ucb/XContent.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <com/sun/star/uno/RuntimeException.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+
+#include <rtl/ref.hxx>
#include <svtools/templatefoldercache.hxx>
#include <unotools/configmgr.hxx>
#include <unotools/ucbhelper.hxx>
@@ -68,13 +82,9 @@
#include <vector>
-//-----------------------------------------------------------------------------
//=============================================================================
-#define TEMPLATE_SERVICE_NAME "com.sun.star.frame.DocumentTemplates"
-#define TEMPLATE_IMPLEMENTATION_NAME "com.sun.star.comp.sfx2.DocumentTemplates"
-
#define SERVICENAME_TYPEDETECTION "com.sun.star.document.TypeDetection"
#define TEMPLATE_ROOT_URL "vnd.sun.star.hier:/templates"
@@ -118,7 +128,7 @@ using namespace ::comphelper;
using ::std::vector;
-//=============================================================================
+namespace {
class WaitWindow_Impl : public WorkWindow
{
@@ -150,9 +160,6 @@ class GroupData_Impl;
typedef vector< NamePair_Impl* > NameList_Impl;
typedef vector< GroupData_Impl* > GroupList_Impl;
-//=============================================================================
-#include <com/sun/star/task/InteractionHandler.hpp>
-#include <com/sun/star/ucb/XProgressHandler.hpp>
class TplTaskEnvironment : public ::cppu::WeakImplHelper1< ucb::XCommandEnvironment >
{
@@ -1073,22 +1080,6 @@ sal_Bool SfxDocTplService_Impl::getProperty( Content& rContent,
return bGotProperty;
}
-// -----------------------------------------------------------------------
-// static
-bool SfxURLRelocator_Impl::propertyCanContainOfficeDir(
- const OUString & rPropName )
-{
- // Note: TargetURL is handled by UCB itself (because it is a property
- // with a predefined semantic). Additional Core properties introduced
- // be a client app must be handled by the client app itself, because
- // the UCB does not know the semantics of those properties.
- return ( rPropName == TARGET_DIR_URL || rPropName == PROPERTY_DIRLIST );
-}
-
-//-----------------------------------------------------------------------------
-// public SfxDocTplService_Impl
-//-----------------------------------------------------------------------------
-
SfxDocTplService_Impl::SfxDocTplService_Impl( const uno::Reference< XComponentContext > & xContext )
: maRelocator( xContext )
{
@@ -1776,7 +1767,6 @@ sal_Bool SfxDocTplService_Impl::storeTemplate( const OUString& rGroupName,
try
{
- uno::Reference< lang::XMultiServiceFactory > xFactory = ::comphelper::getProcessServiceFactory();
uno::Reference< uno::XComponentContext > xContext = ::comphelper::getProcessComponentContext();
// get document service name
@@ -1815,7 +1805,7 @@ sal_Bool SfxDocTplService_Impl::storeTemplate( const OUString& rGroupName,
// find the related type name
OUString aTypeName;
uno::Reference< container::XNameAccess > xFilterFactory(
- xFactory->createInstance("com.sun.star.document.FilterFactory"),
+ mxContext->getServiceManager()->createInstanceWithContext("com.sun.star.document.FilterFactory", mxContext),
uno::UNO_QUERY_THROW );
uno::Sequence< beans::PropertyValue > aFilterData;
@@ -1834,7 +1824,7 @@ sal_Bool SfxDocTplService_Impl::storeTemplate( const OUString& rGroupName,
mxType.is() ?
uno::Reference< container::XNameAccess >( mxType, uno::UNO_QUERY_THROW ) :
uno::Reference< container::XNameAccess >(
- xFactory->createInstance("com.sun.star.document.TypeDetection"),
+ mxContext->getServiceManager()->createInstanceWithContext("com.sun.star.document.TypeDetection", mxContext),
uno::UNO_QUERY_THROW );
SequenceAsHashMap aTypeProps( xTypeDetection->getByName( aTypeName ) );
@@ -2173,14 +2163,63 @@ sal_Bool SfxDocTplService_Impl::renameTemplate( const OUString& rGroupName,
}
//-----------------------------------------------------------------------------
+class SfxDocTplService: public ::cppu::WeakImplHelper3< css::lang::XLocalizable, css::frame::XDocumentTemplates, css::lang::XServiceInfo >
+{
+ SfxDocTplService_Impl *pImp;
+
+public:
+ SfxDocTplService( const css::uno::Reference < uno::XComponentContext >& xContext );
+ ~SfxDocTplService();
+
+ virtual OUString SAL_CALL getImplementationName()
+ throw (css::uno::RuntimeException)
+ {
+ return OUString("com.sun.star.comp.sfx2.DocumentTemplates");
+ }
+
+ virtual sal_Bool SAL_CALL supportsService(OUString const & ServiceName)
+ throw (css::uno::RuntimeException)
+ {
+ return cppu::supportsService(this, ServiceName);
+ }
+
+ virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames()
+ throw (css::uno::RuntimeException)
+ {
+ css::uno::Sequence< OUString > aSeq(1);
+ aSeq[0] = OUString("com.sun.star.frame.DocumentTemplates");
+ return aSeq;
+ }
-SFX_IMPL_XSERVICEINFO( SfxDocTplService, TEMPLATE_SERVICE_NAME, TEMPLATE_IMPLEMENTATION_NAME )
-SFX_IMPL_SINGLEFACTORY( SfxDocTplService )
+
+ // --- XLocalizable ---
+ void SAL_CALL setLocale( const css::lang::Locale & eLocale ) throw( css::uno::RuntimeException );
+ css::lang::Locale SAL_CALL getLocale() throw( css::uno::RuntimeException );
+
+ // --- XDocumentTemplates ---
+ css::uno::Reference< css::ucb::XContent > SAL_CALL getContent() throw( css::uno::RuntimeException );
+ sal_Bool SAL_CALL storeTemplate( const OUString& GroupName,
+ const OUString& TemplateName,
+ const css::uno::Reference< css::frame::XStorable >& Storable ) throw( css::uno::RuntimeException );
+ sal_Bool SAL_CALL addTemplate( const OUString& GroupName,
+ const OUString& TemplateName,
+ const OUString& SourceURL ) throw( css::uno::RuntimeException );
+ sal_Bool SAL_CALL removeTemplate( const OUString& GroupName,
+ const OUString& TemplateName ) throw( css::uno::RuntimeException );
+ sal_Bool SAL_CALL renameTemplate( const OUString& GroupName,
+ const OUString& OldTemplateName,
+ const OUString& NewTemplateName ) throw( css::uno::RuntimeException );
+ sal_Bool SAL_CALL addGroup( const OUString& GroupName ) throw( css::uno::RuntimeException );
+ sal_Bool SAL_CALL removeGroup( const OUString& GroupName ) throw( css::uno::RuntimeException );
+ sal_Bool SAL_CALL renameGroup( const OUString& OldGroupName,
+ const OUString& NewGroupName ) throw( css::uno::RuntimeException );
+ void SAL_CALL update() throw( css::uno::RuntimeException );
+};
//-----------------------------------------------------------------------------
-SfxDocTplService::SfxDocTplService( const uno::Reference< XMultiServiceFactory >& xFactory )
+SfxDocTplService::SfxDocTplService( const uno::Reference< XComponentContext >& xContext )
{
- pImp = new SfxDocTplService_Impl( comphelper::getComponentContext(xFactory) );
+ pImp = new SfxDocTplService_Impl(xContext);
}
//-----------------------------------------------------------------------------
@@ -2773,6 +2812,19 @@ DocTemplates_EntryData_Impl::DocTemplates_EntryData_Impl( const OUString& rTitle
mbUpdateLink = sal_False;
}
+}
+
+// static
+bool SfxURLRelocator_Impl::propertyCanContainOfficeDir(
+ const OUString & rPropName )
+{
+ // Note: TargetURL is handled by UCB itself (because it is a property
+ // with a predefined semantic). Additional Core properties introduced
+ // be a client app must be handled by the client app itself, because
+ // the UCB does not know the semantics of those properties.
+ return ( rPropName == TARGET_DIR_URL || rPropName == PROPERTY_DIRLIST );
+}
+
// -----------------------------------------------------------------------
SfxURLRelocator_Impl::SfxURLRelocator_Impl( const uno::Reference< XComponentContext > & xContext )
: mxContext( xContext )
@@ -2843,5 +2895,14 @@ void SfxURLRelocator_Impl::makeAbsoluteURL( OUString & rURL )
}
}
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
+com_sun_star_comp_sfx2_DocumentTemplates_get_implementation(
+ css::uno::XComponentContext *context,
+ css::uno::Sequence<css::uno::Any> const &)
+{
+ rtl::Reference<SfxDocTplService> x(new SfxDocTplService(context));
+ x->acquire();
+ return static_cast<cppu::OWeakObject *>(x.get());
+}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/source/inc/doctemplates.hxx b/sfx2/source/inc/doctemplates.hxx
deleted file mode 100644
index 7294a4bc5031..000000000000
--- a/sfx2/source/inc/doctemplates.hxx
+++ /dev/null
@@ -1,79 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_SFX2_SOURCE_INC_DOCTEMPLATES_HXX
-#define INCLUDED_SFX2_SOURCE_INC_DOCTEMPLATES_HXX
-
-#include <cppuhelper/weak.hxx>
-#include <cppuhelper/implbase3.hxx>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/frame/XDocumentTemplates.hpp>
-#include <com/sun/star/frame/XStorable.hpp>
-#include <com/sun/star/frame/XModel.hpp>
-#include <com/sun/star/lang/Locale.hpp>
-#include <com/sun/star/lang/XLocalizable.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/ucb/XContent.hpp>
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/uno/RuntimeException.hpp>
-#include <com/sun/star/uno/XInterface.hpp>
-#include <ucbhelper/content.hxx>
-#include <sfx2/sfxuno.hxx>
-
-
-class SfxDocTplService_Impl;
-
-class SfxDocTplService: public ::cppu::WeakImplHelper3< css::lang::XLocalizable, css::frame::XDocumentTemplates, css::lang::XServiceInfo >
-{
- SfxDocTplService_Impl *pImp;
-
-public:
- SFX_DECL_XSERVICEINFO
-
- SfxDocTplService( const css::uno::Reference < css::lang::XMultiServiceFactory >& xFactory );
- ~SfxDocTplService();
-
- // --- XLocalizable ---
- void SAL_CALL setLocale( const css::lang::Locale & eLocale ) throw( css::uno::RuntimeException );
- css::lang::Locale SAL_CALL getLocale() throw( css::uno::RuntimeException );
-
- // --- XDocumentTemplates ---
- css::uno::Reference< css::ucb::XContent > SAL_CALL getContent() throw( css::uno::RuntimeException );
- sal_Bool SAL_CALL storeTemplate( const OUString& GroupName,
- const OUString& TemplateName,
- const css::uno::Reference< css::frame::XStorable >& Storable ) throw( css::uno::RuntimeException );
- sal_Bool SAL_CALL addTemplate( const OUString& GroupName,
- const OUString& TemplateName,
- const OUString& SourceURL ) throw( css::uno::RuntimeException );
- sal_Bool SAL_CALL removeTemplate( const OUString& GroupName,
- const OUString& TemplateName ) throw( css::uno::RuntimeException );
- sal_Bool SAL_CALL renameTemplate( const OUString& GroupName,
- const OUString& OldTemplateName,
- const OUString& NewTemplateName ) throw( css::uno::RuntimeException );
- sal_Bool SAL_CALL addGroup( const OUString& GroupName ) throw( css::uno::RuntimeException );
- sal_Bool SAL_CALL removeGroup( const OUString& GroupName ) throw( css::uno::RuntimeException );
- sal_Bool SAL_CALL renameGroup( const OUString& OldGroupName,
- const OUString& NewGroupName ) throw( css::uno::RuntimeException );
- void SAL_CALL update() throw( css::uno::RuntimeException );
-};
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/util/sfx.component b/sfx2/util/sfx.component
index 34de3ebb6557..afb1bd0e40bf 100644
--- a/sfx2/util/sfx.component
+++ b/sfx2/util/sfx.component
@@ -55,7 +55,8 @@
<implementation name="com.sun.star.comp.sfx2.ApplicationScriptLibraryContainer">
<service name="com.sun.star.script.ApplicationScriptLibraryContainer"/>
</implementation>
- <implementation name="com.sun.star.comp.sfx2.DocumentTemplates">
+ <implementation name="com.sun.star.comp.sfx2.DocumentTemplates"
+ constructor="com_sun_star_comp_sfx2_DocumentTemplates_get_implementation">
<service name="com.sun.star.frame.DocumentTemplates"/>
</implementation>
<implementation name="com.sun.star.comp.sfx2.GlobalEventBroadcaster"