diff options
author | Noel Grandin <noel@peralex.com> | 2020-07-21 13:36:57 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2020-07-21 15:17:19 +0200 |
commit | 389daaa737711136378d784d454eb4bf5bfb0cbc (patch) | |
tree | bf3a0182d3bf11812064e88a56e351daa56cf976 /shell | |
parent | 6592afdd7d6e8a56e1450131a2d0a2b652eb6f82 (diff) |
shell/simplemail: create instances with uno constructors
See tdf#74608 for motivation.
Change-Id: I944cbd7bc38f9dc1811756d3db4522047aaf34e5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99135
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'shell')
-rw-r--r-- | shell/Library_smplmail.mk | 1 | ||||
-rw-r--r-- | shell/source/win32/simplemail/smplmail.component | 5 | ||||
-rw-r--r-- | shell/source/win32/simplemail/smplmailentry.cxx | 73 | ||||
-rw-r--r-- | shell/source/win32/simplemail/smplmailsuppl.cxx | 27 |
4 files changed, 16 insertions, 90 deletions
diff --git a/shell/Library_smplmail.mk b/shell/Library_smplmail.mk index fa8c222943ed..fa96b41d35f3 100644 --- a/shell/Library_smplmail.mk +++ b/shell/Library_smplmail.mk @@ -28,7 +28,6 @@ $(eval $(call gb_Library_set_componentfile,smplmail,shell/source/win32/simplemai $(eval $(call gb_Library_add_exception_objects,smplmail,\ shell/source/win32/simplemail/smplmailclient \ - shell/source/win32/simplemail/smplmailentry \ shell/source/win32/simplemail/smplmailmsg \ shell/source/win32/simplemail/smplmailsuppl \ )) diff --git a/shell/source/win32/simplemail/smplmail.component b/shell/source/win32/simplemail/smplmail.component index 556c4099b842..6b95bd8cdc5c 100644 --- a/shell/source/win32/simplemail/smplmail.component +++ b/shell/source/win32/simplemail/smplmail.component @@ -18,8 +18,9 @@ --> <component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@" - prefix="smplmail" xmlns="http://openoffice.org/2010/uno-components"> - <implementation name="com.sun.star.sys.shell.SimpleSystemMail"> + xmlns="http://openoffice.org/2010/uno-components"> + <implementation name="com.sun.star.sys.shell.SimpleSystemMail" + constructor="shell_CSmplMailSuppl_get_implementation"> <service name="com.sun.star.system.SimpleSystemMail"/> </implementation> </component> diff --git a/shell/source/win32/simplemail/smplmailentry.cxx b/shell/source/win32/simplemail/smplmailentry.cxx deleted file mode 100644 index f4293144b13a..000000000000 --- a/shell/source/win32/simplemail/smplmailentry.cxx +++ /dev/null @@ -1,73 +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 . - */ - -#include <cppuhelper/factory.hxx> -#include <com/sun/star/container/XSet.hpp> -#include <com/sun/star/lang/XSingleComponentFactory.hpp> -#include <com/sun/star/lang/XSingleServiceFactory.hpp> -#include "smplmailsuppl.hxx" - -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::container; -using namespace ::com::sun::star::lang; -using namespace ::com::sun::star::registry; -using namespace ::cppu; -using com::sun::star::system::XSimpleMailClientSupplier; - -#define COMP_SERVICE_NAME "com.sun.star.system.SimpleSystemMail" -#define COMP_IMPL_NAME "com.sun.star.sys.shell.SimpleSystemMail" - -namespace -{ - Reference< XInterface > createInstance( const Reference< XMultiServiceFactory >& ) - { - return Reference< XInterface >( static_cast< XSimpleMailClientSupplier* >( new CSmplMailSuppl( ) ) ); - } -} - -extern "C" -{ - -SAL_DLLPUBLIC_EXPORT void* smplmail_component_getFactory( - const char* pImplName, void* pSrvManager, void* /*pRegistryKey*/ ) -{ - void* pRet = nullptr; - - if ( pSrvManager && ( 0 == rtl_str_compare( pImplName, COMP_IMPL_NAME ) ) ) - { - Sequence< OUString > aSNS { COMP_SERVICE_NAME }; - - Reference< XSingleServiceFactory > xFactory ( createOneInstanceFactory( - static_cast< XMultiServiceFactory* > ( pSrvManager ), - OUString::createFromAscii( pImplName ), - createInstance, - aSNS ) ); - if ( xFactory.is() ) - { - xFactory->acquire(); - pRet = xFactory.get(); - } - } - - return pRet; -} - -} // extern "C" - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/shell/source/win32/simplemail/smplmailsuppl.cxx b/shell/source/win32/simplemail/smplmailsuppl.cxx index 34c623b7c29d..eba930b09107 100644 --- a/shell/source/win32/simplemail/smplmailsuppl.cxx +++ b/shell/source/win32/simplemail/smplmailsuppl.cxx @@ -18,6 +18,8 @@ */ #include <cppuhelper/supportsservice.hxx> +#include <com/sun/star/uno/XComponentContext.hpp> +#include <rtl/ref.hxx> #include "smplmailsuppl.hxx" #include "smplmailclient.hxx" @@ -33,18 +35,6 @@ using com::sun::star::system::XSimpleMailClient; using namespace cppu; -#define COMP_IMPL_NAME "com.sun.star.sys.shell.SimpleSystemMail" - -namespace -{ - Sequence< OUString > Component_getSupportedServiceNames() - { - Sequence< OUString > aRet { "com.sun.star.system.SimpleSystemMail" }; - return aRet; - } - -} - CSmplMailSuppl::CSmplMailSuppl() : WeakComponentImplHelper<XSimpleMailClientSupplier, XServiceInfo>(m_aMutex) { @@ -72,7 +62,7 @@ Reference<XSimpleMailClient> SAL_CALL CSmplMailSuppl::querySimpleMailClient() OUString SAL_CALL CSmplMailSuppl::getImplementationName() { - return COMP_IMPL_NAME; + return "com.sun.star.sys.shell.SimpleSystemMail"; } sal_Bool SAL_CALL CSmplMailSuppl::supportsService(const OUString& ServiceName) @@ -82,7 +72,16 @@ sal_Bool SAL_CALL CSmplMailSuppl::supportsService(const OUString& ServiceName) Sequence<OUString> SAL_CALL CSmplMailSuppl::getSupportedServiceNames() { - return Component_getSupportedServiceNames(); + return { "com.sun.star.system.SimpleSystemMail" }; +} + +extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface* +shell_CSmplMailSuppl_get_implementation( + css::uno::XComponentContext* , css::uno::Sequence<css::uno::Any> const&) +{ + static rtl::Reference<CSmplMailSuppl> g_Instance(new CSmplMailSuppl()); + g_Instance->acquire(); + return static_cast<cppu::OWeakObject*>(g_Instance.get()); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |