Revert "svt: Use constructor feature for FilePicker and FolderPicker..."
It does not make a real sense to use constructor for implementations that act as a trampoline; instead, we should do a constructor for the real implementations that hide behind it. This reverts commit2fbb471567
. This reverts (part of) commit58ea27124a
. This reverts (part of) commit194bdbde25
. This reverts (part of) commitdf002e39f7
. This reverts (part of) commiteb89c6f7dc
. This reverts (part of) commitbdeb57c239
. This reverts (part of) commit4337a0664f
. Change-Id: Ibd9b1066f3b6ea215d8da9f491d5f026cd75b029
This commit is contained in:
parent
306efefe22
commit
9bc2ab30e3
5 changed files with 168 additions and 17 deletions
|
@ -230,6 +230,7 @@ $(eval $(call gb_Library_add_exception_objects,svt,\
|
|||
svtools/source/uno/framestatuslistener \
|
||||
svtools/source/uno/generictoolboxcontroller \
|
||||
svtools/source/uno/genericunodialog \
|
||||
svtools/source/uno/miscservices \
|
||||
svtools/source/uno/popupmenucontrollerbase \
|
||||
svtools/source/uno/popupwindowcontroller \
|
||||
svtools/source/uno/statusbarcontroller \
|
||||
|
|
|
@ -53,12 +53,14 @@ static OUString FilePicker_getSystemPickerServiceName()
|
|||
#endif
|
||||
}
|
||||
|
||||
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
|
||||
com_sun_star_comp_svt_FilePicker_get_implementation(
|
||||
css::uno::XComponentContext *context,
|
||||
css::uno::Sequence<css::uno::Any> const &)
|
||||
Reference< css::uno::XInterface > FilePicker_CreateInstance (
|
||||
Reference< css::uno::XComponentContext > const & context)
|
||||
{
|
||||
Reference< css::uno::XInterface > xResult;
|
||||
|
||||
if (!context.is())
|
||||
return xResult;
|
||||
|
||||
Reference< css::lang::XMultiComponentFactory > xFactory (context->getServiceManager());
|
||||
if (xFactory.is() && SvtMiscOptions().UseSystemFileDialog())
|
||||
{
|
||||
|
@ -92,8 +94,20 @@ com_sun_star_comp_svt_FilePicker_get_implementation(
|
|||
// Add to FilePicker history.
|
||||
svt::addFilePicker (xResult);
|
||||
}
|
||||
xResult->acquire();
|
||||
return xResult.get();
|
||||
return xResult;
|
||||
}
|
||||
|
||||
OUString SAL_CALL FilePicker_getImplementationName()
|
||||
{
|
||||
return OUString("com.sun.star.comp.svt.FilePicker");
|
||||
}
|
||||
|
||||
Sequence< OUString > FilePicker_getSupportedServiceNames()
|
||||
{
|
||||
Sequence< OUString > aServiceNames(1);
|
||||
aServiceNames.getArray()[0] =
|
||||
OUString( "com.sun.star.ui.dialogs.FilePicker");
|
||||
return aServiceNames;
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -113,12 +127,14 @@ static OUString FolderPicker_getSystemPickerServiceName()
|
|||
return OUString("com.sun.star.ui.dialogs.SystemFolderPicker");
|
||||
}
|
||||
|
||||
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
|
||||
com_sun_star_comp_svt_FolderPicker_get_implementation(
|
||||
css::uno::XComponentContext *context,
|
||||
css::uno::Sequence<css::uno::Any> const &)
|
||||
Reference< css::uno::XInterface > FolderPicker_CreateInstance (
|
||||
Reference< css::uno::XComponentContext > const & context)
|
||||
{
|
||||
Reference< css::uno::XInterface > xResult;
|
||||
|
||||
if (!context.is())
|
||||
return xResult;
|
||||
|
||||
Reference< css::lang::XMultiComponentFactory > xFactory (context->getServiceManager());
|
||||
if (xFactory.is() && SvtMiscOptions().UseSystemFileDialog())
|
||||
{
|
||||
|
@ -149,8 +165,20 @@ com_sun_star_comp_svt_FolderPicker_get_implementation(
|
|||
// Add to FolderPicker history.
|
||||
svt::addFolderPicker (xResult);
|
||||
}
|
||||
xResult->acquire();
|
||||
return xResult.get();
|
||||
return xResult;
|
||||
}
|
||||
|
||||
OUString SAL_CALL FolderPicker_getImplementationName()
|
||||
{
|
||||
return OUString("com.sun.star.comp.svt.FolderPicker");
|
||||
}
|
||||
|
||||
Sequence< OUString > FolderPicker_getSupportedServiceNames()
|
||||
{
|
||||
Sequence< OUString > aServiceNames(1);
|
||||
aServiceNames.getArray()[0] =
|
||||
OUString( "com.sun.star.ui.dialogs.FolderPicker");
|
||||
return aServiceNames;
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
|
|
47
svtools/source/uno/fpicker.hxx
Normal file
47
svtools/source/uno/fpicker.hxx
Normal file
|
@ -0,0 +1,47 @@
|
|||
/* -*- 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_SVTOOLS_SOURCE_UNO_FPICKER_HXX
|
||||
#define INCLUDED_SVTOOLS_SOURCE_UNO_FPICKER_HXX
|
||||
|
||||
#include <sal/config.h>
|
||||
#include <sal/types.h>
|
||||
#include <rtl/ustring.hxx>
|
||||
|
||||
#include <com/sun/star/uno/Reference.hxx>
|
||||
#include <com/sun/star/uno/Sequence.hxx>
|
||||
|
||||
namespace com { namespace sun { namespace star {
|
||||
namespace lang { class XMultiServiceFactory; }
|
||||
namespace uno { class XInterface; }
|
||||
} } }
|
||||
|
||||
css::uno::Reference<css::uno::XInterface> SAL_CALL FilePicker_CreateInstance(
|
||||
css::uno::Reference< css::uno::XComponentContext > const & context);
|
||||
css::uno::Sequence<OUString> FilePicker_getSupportedServiceNames();
|
||||
OUString FilePicker_getImplementationName();
|
||||
|
||||
css::uno::Reference<css::uno::XInterface> SAL_CALL FolderPicker_CreateInstance(
|
||||
css::uno::Reference< css::uno::XComponentContext > const & context);
|
||||
css::uno::Sequence<OUString> FolderPicker_getSupportedServiceNames();
|
||||
OUString FolderPicker_getImplementationName();
|
||||
|
||||
#endif
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
77
svtools/source/uno/miscservices.cxx
Normal file
77
svtools/source/uno/miscservices.cxx
Normal file
|
@ -0,0 +1,77 @@
|
|||
/* -*- 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 <sal/types.h>
|
||||
|
||||
#include <cppuhelper/factory.hxx>
|
||||
#include <cppuhelper/implementationentry.hxx>
|
||||
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
|
||||
|
||||
#include "fpicker.hxx"
|
||||
|
||||
using namespace ::com::sun::star;
|
||||
using namespace ::com::sun::star::uno;
|
||||
using namespace ::com::sun::star::lang;
|
||||
|
||||
namespace
|
||||
{
|
||||
static const struct ::cppu::ImplementationEntry s_aServiceEntries[] =
|
||||
{
|
||||
{
|
||||
// FilePicker should not use a constructor, it is only a
|
||||
// trampoline to a real impl.
|
||||
FilePicker_CreateInstance,
|
||||
FilePicker_getImplementationName,
|
||||
FilePicker_getSupportedServiceNames,
|
||||
::cppu::createSingleComponentFactory, 0, 0
|
||||
},
|
||||
{
|
||||
// FolderPicker should not use a constructor, it is only a
|
||||
// trampoline to a real impl.
|
||||
FolderPicker_CreateInstance,
|
||||
FolderPicker_getImplementationName,
|
||||
FolderPicker_getSupportedServiceNames,
|
||||
::cppu::createSingleComponentFactory, 0, 0
|
||||
},
|
||||
{ 0, 0, 0, 0, 0, 0 }
|
||||
};
|
||||
}
|
||||
|
||||
extern "C"
|
||||
{
|
||||
|
||||
SAL_DLLPUBLIC_EXPORT void * SAL_CALL svt_component_getFactory(
|
||||
const sal_Char * pImplementationName, void * _pServiceManager, void * pRegistryKey)
|
||||
{
|
||||
void * pResult = 0;
|
||||
if (_pServiceManager)
|
||||
{
|
||||
Reference< XMultiServiceFactory > xSMgr(reinterpret_cast< XMultiServiceFactory * >(_pServiceManager));
|
||||
|
||||
pResult = cppu::component_getFactoryHelper(pImplementationName,
|
||||
_pServiceManager,
|
||||
pRegistryKey,
|
||||
s_aServiceEntries);
|
||||
}
|
||||
return pResult;
|
||||
}
|
||||
|
||||
} // extern "C"
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
|
@ -18,7 +18,7 @@
|
|||
-->
|
||||
|
||||
<component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@"
|
||||
xmlns="http://openoffice.org/2010/uno-components">
|
||||
prefix="svt" xmlns="http://openoffice.org/2010/uno-components">
|
||||
<implementation name="com.sun.star.comp.graphic.GraphicProvider"
|
||||
constructor="com_sun_star_comp_graphic_GraphicProvider_get_implementation">
|
||||
<service name="com.sun.star.graphic.GraphicProvider"/>
|
||||
|
@ -43,12 +43,10 @@
|
|||
constructor="com_sun_star_svtools_SvFilterOptionsDialog_get_implementation">
|
||||
<service name="com.sun.star.ui.dialogs.FilterOptionsDialog"/>
|
||||
</implementation>
|
||||
<implementation name="com.sun.star.comp.svt.FilePicker"
|
||||
constructor="com_sun_star_comp_svt_FilePicker_get_implementation">
|
||||
<implementation name="com.sun.star.comp.svt.FilePicker">
|
||||
<service name="com.sun.star.ui.dialogs.FilePicker"/>
|
||||
</implementation>
|
||||
<implementation name="com.sun.star.comp.svt.FolderPicker"
|
||||
constructor="com_sun_star_comp_svt_FolderPicker_get_implementation">
|
||||
<implementation name="com.sun.star.comp.svt.FolderPicker">
|
||||
<service name="com.sun.star.ui.dialogs.FolderPicker"/>
|
||||
</implementation>
|
||||
<implementation name="com.sun.star.comp.embed.DocumentCloser"
|
||||
|
|
Loading…
Reference in a new issue