fpicker/Library_fps.mk                      |    1 
 fpicker/source/win32/FPServiceInfo.hxx      |   37 ----------
 fpicker/source/win32/FPentry.cxx            |   97 ----------------------------
 fpicker/source/win32/VistaFilePicker.cxx    |   39 ++++++-----
 fpicker/source/win32/VistaFilePicker.hxx    |    9 --
 fpicker/source/win32/fps.component          |    8 +-
 fpicker/source/win32/workbench/Test_fps.cxx |    2 
 7 files changed, 29 insertions(+), 164 deletions(-)

New commits:
commit 946e742aa63a2559721c761cea5c80286fbffa6b
Author:     Noel Grandin <n...@peralex.com>
AuthorDate: Sun Jul 26 20:54:22 2020 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Sun Jul 26 22:15:12 2020 +0200

    fpicker/win32: create instances with uno constructors
    
    See tdf#74608 for motivation.
    
    Change-Id: Ic7d6c94e8709184fc8f195bd019402e361e9b810
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/99461
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/fpicker/Library_fps.mk b/fpicker/Library_fps.mk
index 31dd47e88b30..e41a8a40a081 100644
--- a/fpicker/Library_fps.mk
+++ b/fpicker/Library_fps.mk
@@ -56,7 +56,6 @@ endif
 $(eval $(call gb_Library_add_exception_objects,fps,\
        fpicker/source/win32/asyncrequests \
        fpicker/source/win32/FilterContainer \
-       fpicker/source/win32/FPentry \
        fpicker/source/win32/VistaFilePicker \
        fpicker/source/win32/VistaFilePickerEventHandler \
        fpicker/source/win32/VistaFilePickerImpl \
diff --git a/fpicker/source/win32/FPServiceInfo.hxx 
b/fpicker/source/win32/FPServiceInfo.hxx
deleted file mode 100644
index edc350c1a9cc..000000000000
--- a/fpicker/source/win32/FPServiceInfo.hxx
+++ /dev/null
@@ -1,37 +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_FPICKER_SOURCE_WIN32_FILEPICKER_FPSERVICEINFO_HXX
-#define INCLUDED_FPICKER_SOURCE_WIN32_FILEPICKER_FPSERVICEINFO_HXX
-
-// the service names
-#define FILE_PICKER_SERVICE_NAME  "com.sun.star.ui.dialogs.SystemFilePicker"
-
-// the implementation names
-#define FILE_PICKER_IMPL_NAME  "com.sun.star.ui.dialogs.Win32FilePicker"
-
-// the service names
-#define FOLDER_PICKER_SERVICE_NAME  
"com.sun.star.ui.dialogs.SystemFolderPicker"
-
-// the implementation names
-#define FOLDER_PICKER_IMPL_NAME  "com.sun.star.ui.dialogs.Win32FolderPicker"
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/win32/FPentry.cxx b/fpicker/source/win32/FPentry.cxx
deleted file mode 100644
index a4e48f8865e5..000000000000
--- a/fpicker/source/win32/FPentry.cxx
+++ /dev/null
@@ -1,97 +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/XSingleServiceFactory.hpp>
-#include "FPServiceInfo.hxx"
-
-#include "VistaFilePicker.hxx"
-#include "WinImplHelper.hxx"
-#include <stdio.h>
-
-using namespace ::com::sun::star;
-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::ui::dialogs::XFilePicker2;
-using ::com::sun::star::ui::dialogs::XFolderPicker2;
-
-static Reference< XInterface > createInstance(
-    const Reference< XMultiServiceFactory >& rServiceManager )
-{
-    return Reference<ui::dialogs::XFilePicker2>(
-            new ::fpicker::win32::vista::VistaFilePicker(rServiceManager, 
false));
-}
-
-static Reference< XInterface >
-createInstance_fop( const Reference< XMultiServiceFactory >& rServiceManager )
-{
-    return Reference<ui::dialogs::XFolderPicker2>(
-            new ::fpicker::win32::vista::VistaFilePicker(rServiceManager, 
true));
-}
-
-extern "C"
-{
-
-SAL_DLLPUBLIC_EXPORT void* fps_win32_component_getFactory(
-    const char* pImplName, void* pSrvManager, void* )
-{
-    void* pRet = nullptr;
-
-    if ( pSrvManager && ( 0 == rtl_str_compare( pImplName, 
FILE_PICKER_IMPL_NAME ) ) )
-    {
-        Sequence<OUString> aSNS { FILE_PICKER_SERVICE_NAME };
-
-        Reference< XSingleServiceFactory > xFactory ( createSingleFactory(
-            static_cast< XMultiServiceFactory* > ( pSrvManager ),
-            OUString::createFromAscii( pImplName ),
-            createInstance,
-            aSNS ) );
-        if ( xFactory.is() )
-        {
-            xFactory->acquire();
-            pRet = xFactory.get();
-        }
-    }
-
-    if ( pSrvManager && ( 0 == rtl_str_compare( pImplName, 
FOLDER_PICKER_IMPL_NAME ) ) )
-    {
-        Sequence<OUString> aSNS { FOLDER_PICKER_SERVICE_NAME };
-
-        Reference< XSingleServiceFactory > xFactory ( createSingleFactory(
-            static_cast< XMultiServiceFactory* > ( pSrvManager ),
-            OUString::createFromAscii( pImplName ),
-            createInstance_fop,
-            aSNS ) );
-        if ( xFactory.is() )
-        {
-            xFactory->acquire();
-            pRet = xFactory.get();
-        }
-    }
-
-    return pRet;
-}
-
-} // extern "C"
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/win32/VistaFilePicker.cxx 
b/fpicker/source/win32/VistaFilePicker.cxx
index 67c49f4d1420..e391bcf53c58 100644
--- a/fpicker/source/win32/VistaFilePicker.cxx
+++ b/fpicker/source/win32/VistaFilePicker.cxx
@@ -24,7 +24,6 @@
 #include "VistaFilePicker.hxx"
 
 #include "WinImplHelper.hxx"
-#include "FPServiceInfo.hxx"
 #include "shared.hxx"
 
 #include <com/sun/star/awt/XWindow.hpp>
@@ -47,20 +46,8 @@ namespace fpicker{
 namespace win32{
 namespace vista{
 
-namespace
-{
-    css::uno::Sequence< OUString > VistaFilePicker_getSupportedServiceNames()
-    {
-        return {
-            "com.sun.star.ui.dialogs.FilePicker",
-            "com.sun.star.ui.dialogs.SystemFilePicker",
-            "com.sun.star.ui.dialogs.SystemFolderPicker" };
-    }
-}
-
-VistaFilePicker::VistaFilePicker(const css::uno::Reference< 
css::lang::XMultiServiceFactory >& xSMGR, bool bFolderPicker)
+VistaFilePicker::VistaFilePicker(bool bFolderPicker)
     : TVistaFilePickerBase  (m_aMutex                 )
-    , m_xSMGR               (xSMGR                    )
     , m_rDialog             (std::make_shared<VistaFilePickerImpl>())
     , m_aAsyncExecute       (m_rDialog                )
     , m_nFilePickerThreadId (0                        )
@@ -533,9 +520,9 @@ void SAL_CALL VistaFilePicker::setDescription( const 
OUString& aDescription )
 OUString SAL_CALL VistaFilePicker::getImplementationName()
 {
     if (m_bFolderPicker)
-        return FOLDER_PICKER_IMPL_NAME;
+        return "com.sun.star.ui.dialogs.Win32FolderPicker";
     else
-        return FILE_PICKER_IMPL_NAME;
+        return "com.sun.star.ui.dialogs.Win32FilePicker";
 }
 
 sal_Bool SAL_CALL VistaFilePicker::supportsService(const OUString& 
sServiceName)
@@ -545,11 +532,29 @@ sal_Bool SAL_CALL VistaFilePicker::supportsService(const 
OUString& sServiceName)
 
 css::uno::Sequence< OUString > SAL_CALL 
VistaFilePicker::getSupportedServiceNames()
 {
-    return VistaFilePicker_getSupportedServiceNames();
+        return {
+            "com.sun.star.ui.dialogs.FilePicker",
+            "com.sun.star.ui.dialogs.SystemFilePicker",
+            "com.sun.star.ui.dialogs.SystemFolderPicker" };
 }
 
 } // namespace vista
 } // namespace win32
 } // namespace fpicker
 
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
+fpicker_win32_FilePicker_get_implementation(
+    css::uno::XComponentContext* , css::uno::Sequence<css::uno::Any> const&)
+{
+    return cppu::acquire(new ::fpicker::win32::vista::VistaFilePicker(false));
+}
+
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
+fpicker_win32_FolderPicker_get_implementation(
+    css::uno::XComponentContext* , css::uno::Sequence<css::uno::Any> const&)
+{
+    return cppu::acquire(new ::fpicker::win32::vista::VistaFilePicker(true));
+}
+
+
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/win32/VistaFilePicker.hxx 
b/fpicker/source/win32/VistaFilePicker.hxx
index 71ccfd992ba9..53879c0c8742 100644
--- a/fpicker/source/win32/VistaFilePicker.hxx
+++ b/fpicker/source/win32/VistaFilePicker.hxx
@@ -69,7 +69,7 @@ public:
     // ctor/dtor
 
 
-    explicit VistaFilePicker( const css::uno::Reference< 
css::lang::XMultiServiceFactory >& xSMGR, bool bFolderPicker );
+    explicit VistaFilePicker( bool bFolderPicker );
     virtual ~VistaFilePicker() override;
 
 
@@ -210,21 +210,14 @@ public:
 
     private:
 
-
-        /// service manager to create own used uno services
-        css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR;
-
-
         css::uno::Sequence< OUString > m_lLastFiles;
 
-
         /** execute the COM dialog within a STA thread
          *  Must be used on the heap ... because it's implemented as OSL 
thread .-)
          */
         RequestHandlerRef m_rDialog;
         AsyncRequests m_aAsyncExecute;
 
-
         oslThreadIdentifier m_nFilePickerThreadId;
 
         bool m_bInitialized;
diff --git a/fpicker/source/win32/fps.component 
b/fpicker/source/win32/fps.component
index 80dac1a9b5fa..3cc9c8029814 100644
--- a/fpicker/source/win32/fps.component
+++ b/fpicker/source/win32/fps.component
@@ -17,11 +17,13 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
 -->
 <component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@"
-    prefix="fps_win32" xmlns="http://openoffice.org/2010/uno-components";>
-  <implementation name="com.sun.star.ui.dialogs.Win32FilePicker">
+    xmlns="http://openoffice.org/2010/uno-components";>
+  <implementation name="com.sun.star.ui.dialogs.Win32FilePicker"
+    constructor="fpicker_win32_FilePicker_get_implementation">
     <service name="com.sun.star.ui.dialogs.SystemFilePicker"/>
   </implementation>
-  <implementation name="com.sun.star.ui.dialogs.Win32FolderPicker">
+  <implementation name="com.sun.star.ui.dialogs.Win32FolderPicker"
+    constructor="fpicker_win32_FolderPicker_get_implementation">
     <service name="com.sun.star.ui.dialogs.SystemFolderPicker"/>
   </implementation>
 </component>
diff --git a/fpicker/source/win32/workbench/Test_fps.cxx 
b/fpicker/source/win32/workbench/Test_fps.cxx
index b801fcef3c50..62bc00550cca 100644
--- a/fpicker/source/win32/workbench/Test_fps.cxx
+++ b/fpicker/source/win32/workbench/Test_fps.cxx
@@ -263,7 +263,7 @@ int SAL_CALL main(int nArgc, char* Argv[], char* Env[]  )
 
     Reference< XFilePicker > xFilePicker(
         g_xFactory->createInstanceWithArguments(
-            FILE_PICKER_SERVICE_NAME, arguments ), UNO_QUERY );
+            "com.sun.star.ui.dialogs.SystemFilePicker", arguments ), UNO_QUERY 
);
 
         // install a FilePicker notifier
         Reference< XFilePickerListener > xFPListener(
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to