summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--svtools/Library_svt.mk1
-rw-r--r--svtools/source/uno/fpicker.cxx52
-rw-r--r--svtools/source/uno/fpicker.hxx47
-rw-r--r--svtools/source/uno/miscservices.cxx77
-rw-r--r--svtools/util/svt.component8
5 files changed, 168 insertions, 17 deletions
diff --git a/svtools/Library_svt.mk b/svtools/Library_svt.mk
index 4690961c25de..47628080b2c3 100644
--- a/svtools/Library_svt.mk
+++ b/svtools/Library_svt.mk
@@ -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 \
diff --git a/svtools/source/uno/fpicker.cxx b/svtools/source/uno/fpicker.cxx
index 1eccb579c2c9..c3961e8fc1bb 100644
--- a/svtools/source/uno/fpicker.cxx
+++ b/svtools/source/uno/fpicker.cxx
@@ -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: */
diff --git a/svtools/source/uno/fpicker.hxx b/svtools/source/uno/fpicker.hxx
new file mode 100644
index 000000000000..5042cffe0431
--- /dev/null
+++ b/svtools/source/uno/fpicker.hxx
@@ -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: */
diff --git a/svtools/source/uno/miscservices.cxx b/svtools/source/uno/miscservices.cxx
new file mode 100644
index 000000000000..3801ce783aff
--- /dev/null
+++ b/svtools/source/uno/miscservices.cxx
@@ -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: */
diff --git a/svtools/util/svt.component b/svtools/util/svt.component
index 5e5438ef7a07..f48425fcad47 100644
--- a/svtools/util/svt.component
+++ b/svtools/util/svt.component
@@ -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"