[Libreoffice-commits] core.git: 4 commits - fpicker/Library_fps.mk fpicker/source
Michael Stahl
mstahl at redhat.com
Mon May 29 13:48:29 UTC 2017
fpicker/Library_fps.mk | 18
fpicker/source/win32/filepicker/FPServiceInfo.hxx | 22
fpicker/source/win32/filepicker/FPentry.cxx | 20
fpicker/source/win32/filepicker/FileOpenDlg.cxx | 562 ------
fpicker/source/win32/filepicker/FileOpenDlg.hxx | 293 ---
fpicker/source/win32/filepicker/FilePicker.cxx | 555 ------
fpicker/source/win32/filepicker/FilePicker.hxx | 179 --
fpicker/source/win32/filepicker/PreviewCtrl.cxx | 525 ------
fpicker/source/win32/filepicker/PreviewCtrl.hxx | 189 --
fpicker/source/win32/filepicker/VistaFilePicker.cxx | 6
fpicker/source/win32/filepicker/VistaFilePickerEventHandler.cxx | 5
fpicker/source/win32/filepicker/VistaFilePickerEventHandler.hxx | 5
fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx | 5
fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx | 5
fpicker/source/win32/filepicker/WinFileOpenImpl.cxx | 830 ----------
fpicker/source/win32/filepicker/WinFileOpenImpl.hxx | 201 --
fpicker/source/win32/filepicker/asynceventnotifier.cxx | 261 ---
fpicker/source/win32/filepicker/asynceventnotifier.hxx | 94 -
fpicker/source/win32/filepicker/controlaccess.cxx | 203 --
fpicker/source/win32/filepicker/controlaccess.hxx | 66
fpicker/source/win32/filepicker/controlcommand.cxx | 219 --
fpicker/source/win32/filepicker/controlcommand.hxx | 118 -
fpicker/source/win32/filepicker/controlcommandrequest.hxx | 73
fpicker/source/win32/filepicker/controlcommandresult.hxx | 92 -
fpicker/source/win32/filepicker/customcontrol.cxx | 46
fpicker/source/win32/filepicker/customcontrol.hxx | 51
fpicker/source/win32/filepicker/customcontrolcontainer.cxx | 74
fpicker/source/win32/filepicker/customcontrolcontainer.hxx | 54
fpicker/source/win32/filepicker/customcontrolfactory.cxx | 71
fpicker/source/win32/filepicker/customcontrolfactory.hxx | 45
fpicker/source/win32/filepicker/dialogcustomcontrols.cxx | 154 -
fpicker/source/win32/filepicker/dialogcustomcontrols.hxx | 99 -
fpicker/source/win32/filepicker/dibpreview.cxx | 387 ----
fpicker/source/win32/filepicker/dibpreview.hxx | 101 -
fpicker/source/win32/filepicker/eventnotification.hxx | 45
fpicker/source/win32/filepicker/filepickereventnotification.cxx | 57
fpicker/source/win32/filepicker/filepickereventnotification.hxx | 67
fpicker/source/win32/filepicker/filepickerstate.cxx | 622 -------
fpicker/source/win32/filepicker/filepickerstate.hxx | 150 -
fpicker/source/win32/filepicker/getfilenamewrapper.cxx | 260 ---
fpicker/source/win32/filepicker/getfilenamewrapper.hxx | 56
fpicker/source/win32/filepicker/helppopupwindow.cxx | 551 ------
fpicker/source/win32/filepicker/helppopupwindow.hxx | 133 -
fpicker/source/win32/filepicker/platform_xp.h | 48
fpicker/source/win32/filepicker/previewadapter.cxx | 455 -----
fpicker/source/win32/filepicker/previewadapter.hxx | 98 -
fpicker/source/win32/filepicker/previewbase.cxx | 106 -
fpicker/source/win32/filepicker/previewbase.hxx | 82
fpicker/source/win32/misc/WinImplHelper.cxx | 230 --
fpicker/source/win32/misc/WinImplHelper.hxx | 40
50 files changed, 4 insertions(+), 8624 deletions(-)
New commits:
commit ffbfe477b116c82e6b27bf3b39535382359bea99
Author: Michael Stahl <mstahl at redhat.com>
Date: Mon May 29 15:10:49 2017 +0200
fpicker: remove ifdef __IFileDialogCustomize_INTERFACE_DEFINED__
No idea what SDK problem this once worked around but surely it's
obsolete now.
Change-Id: I5cfa37710ea8cecee8acc9c8f5a6a08fae4babbd
diff --git a/fpicker/source/win32/filepicker/VistaFilePicker.cxx b/fpicker/source/win32/filepicker/VistaFilePicker.cxx
index ebe19f3b42b8..f0481f5a756b 100644
--- a/fpicker/source/win32/filepicker/VistaFilePicker.cxx
+++ b/fpicker/source/win32/filepicker/VistaFilePicker.cxx
@@ -23,9 +23,6 @@
#include "VistaFilePicker.hxx"
-// Without IFileDialogCustomize we can't do much
-#ifdef __IFileDialogCustomize_INTERFACE_DEFINED__
-
#include "../misc/WinImplHelper.hxx"
#include "shared.hxx"
@@ -531,6 +528,4 @@ css::uno::Sequence< OUString > SAL_CALL VistaFilePicker::getSupportedServiceName
} // namespace win32
} // namespace fpicker
-#endif // __IFileDialogCustomize_INTERFACE_DEFINED__
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/win32/filepicker/VistaFilePickerEventHandler.cxx b/fpicker/source/win32/filepicker/VistaFilePickerEventHandler.cxx
index 6233f0e17693..4817ff129170 100644
--- a/fpicker/source/win32/filepicker/VistaFilePickerEventHandler.cxx
+++ b/fpicker/source/win32/filepicker/VistaFilePickerEventHandler.cxx
@@ -20,9 +20,6 @@
#include "VistaFilePickerEventHandler.hxx"
-// Without IFileDialogCustomize we can't do much
-#ifdef __IFileDialogCustomize_INTERFACE_DEFINED__
-
#include "asyncrequests.hxx"
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
@@ -328,6 +325,4 @@ void VistaFilePickerEventHandler::impl_sendEvent( EEventType eEventType,
} // namespace win32
} // namespace fpicker
-#endif // __IFileDialogCustomize_INTERFACE_DEFINED__
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/win32/filepicker/VistaFilePickerEventHandler.hxx b/fpicker/source/win32/filepicker/VistaFilePickerEventHandler.hxx
index 103e2667299d..6a8a783dce7d 100644
--- a/fpicker/source/win32/filepicker/VistaFilePickerEventHandler.hxx
+++ b/fpicker/source/win32/filepicker/VistaFilePickerEventHandler.hxx
@@ -26,9 +26,6 @@
#include <shobjidl.h>
-// Without IFileDialogCustomize we can't do this
-#ifdef __IFileDialogCustomize_INTERFACE_DEFINED__
-
#include "comptr.hxx"
#include "vistatypes.h"
#include "IVistaFilePickerInternalNotify.hxx"
@@ -198,8 +195,6 @@ class VistaFilePickerEventHandler : public ::cppu::BaseMutex
} // namespace win32
} // namespace fpicker
-#endif // __IFileDialogCustomize_INTERFACE_DEFINED__
-
#endif // INCLUDED_FPICKER_SOURCE_WIN32_FILEPICKER_VISTAFILEPICKEREVENTHANDLER_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx b/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx
index 0c8dc884aabf..e7a6697d4fb8 100644
--- a/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx
+++ b/fpicker/source/win32/filepicker/VistaFilePickerImpl.cxx
@@ -19,9 +19,6 @@
#include "VistaFilePickerImpl.hxx"
-// Without IFileDialogCustomize we can't do much
-#ifdef __IFileDialogCustomize_INTERFACE_DEFINED__
-
#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
#include <com/sun/star/ui/dialogs/ControlActions.hpp>
#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
@@ -1225,6 +1222,4 @@ bool VistaFilePickerImpl::onFileTypeChanged( UINT /*nTypeIndex*/ )
} // namespace win32
} // namespace fpicker
-#endif // __IFileDialogCustomize_INTERFACE_DEFINED__
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx b/fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx
index ee3b7f4d856c..b7ea4de5fc0e 100644
--- a/fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx
+++ b/fpicker/source/win32/filepicker/VistaFilePickerImpl.hxx
@@ -34,9 +34,6 @@
#pragma warning(pop)
#endif
-// Without IFileDialogCustomize we can't do this
-#ifdef __IFileDialogCustomize_INTERFACE_DEFINED__
-
#include "asyncrequests.hxx"
#include "comptr.hxx"
#include "vistatypes.h"
@@ -328,8 +325,6 @@ class VistaFilePickerImpl : private ::cppu::BaseMutex
} // namespace win32
} // namespace fpicker
-#endif // __IFileDialogCustomize_INTERFACE_DEFINED__
-
#endif // INCLUDED_FPICKER_SOURCE_WIN32_FILEPICKER_VISTAFILEPICKERIMPL_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 1493eef1379a457c636959f423286612849e3691
Author: Michael Stahl <mstahl at redhat.com>
Date: Mon May 29 15:05:58 2017 +0200
fpicker: remove some Win32 helper code that is now unused
Change-Id: I5414df94487fc9918ca28b694d6f94eeeac20b70
diff --git a/fpicker/source/win32/misc/WinImplHelper.cxx b/fpicker/source/win32/misc/WinImplHelper.cxx
index 105045e4e467..d31dd622a8df 100644
--- a/fpicker/source/win32/misc/WinImplHelper.cxx
+++ b/fpicker/source/win32/misc/WinImplHelper.cxx
@@ -77,236 +77,6 @@ bool SAL_CALL IsWindowsVistaOrNewer()
#endif
}
-void SAL_CALL ListboxAddString( HWND hwnd, const OUString& aString )
-{
- LRESULT rc = SendMessageW(
- hwnd, CB_ADDSTRING, 0, reinterpret_cast< LPARAM >(aString.getStr( )) );
- (void) rc; // avoid warning
- OSL_ASSERT( (CB_ERR != rc) && (CB_ERRSPACE != rc) );
-}
-
-OUString SAL_CALL ListboxGetString( HWND hwnd, sal_Int32 aPosition )
-{
- OSL_ASSERT( IsWindow( hwnd ) );
-
- OUString aString;
-
- LRESULT lItem =
- SendMessageW( hwnd, CB_GETLBTEXTLEN, aPosition, 0 );
-
- if ( (CB_ERR != lItem) && (lItem > 0) )
- {
- // message returns the len of a combobox item
- // without trailing '\0' that's why += 1
- lItem++;
-
- std::vector<sal_Unicode> vec(lItem);
-
- LRESULT lRet =
- SendMessageW(
- hwnd, CB_GETLBTEXT, aPosition,
- reinterpret_cast<LPARAM>(&vec[0]));
-
- OSL_ASSERT( lRet != CB_ERR );
-
- if ( CB_ERR != lRet )
- aString = OUString(&vec[0], lRet);
- }
-
- return aString;
-}
-
-void SAL_CALL ListboxAddItem( HWND hwnd, const Any& aItem, const Reference< XInterface >& rXInterface, sal_Int16 aArgPos )
-{
- OSL_ASSERT( IsWindow( hwnd ) );
-
- if ( !aItem.hasValue( ) ||
- aItem.getValueType( ) != cppu::UnoType<OUString>::get() )
- throw IllegalArgumentException(
- "invalid value type or any has no value",
- rXInterface,
- aArgPos );
-
- OUString cbItem;
- aItem >>= cbItem;
-
- ListboxAddString( hwnd, cbItem );
-}
-
-void SAL_CALL ListboxAddItems( HWND hwnd, const Any& aItemList, const Reference< XInterface >& rXInterface, sal_Int16 aArgPos )
-{
- OSL_ASSERT( IsWindow( hwnd ) );
-
- if ( !aItemList.hasValue( ) ||
- aItemList.getValueType( ) != cppu::UnoType<Sequence<OUString>>::get() )
- throw IllegalArgumentException(
- "invalid value type or any has no value",
- rXInterface,
- aArgPos );
-
- Sequence< OUString > aStringList;
- aItemList >>= aStringList;
-
- sal_Int32 nItemCount = aStringList.getLength( );
- for( sal_Int32 i = 0; i < nItemCount; i++ )
- {
- ListboxAddString( hwnd, aStringList[i] );
- }
-}
-
-void SAL_CALL ListboxDeleteItem( HWND hwnd, const Any& aPosition, const Reference< XInterface >& rXInterface, sal_Int16 aArgPos )
-{
- OSL_ASSERT( IsWindow( hwnd ) );
-
- if ( !aPosition.hasValue( ) ||
- ( (aPosition.getValueType( ) != cppu::UnoType<sal_Int32>::get()) &&
- (aPosition.getValueType( ) != cppu::UnoType<sal_Int16>::get()) &&
- (aPosition.getValueType( ) != cppu::UnoType<sal_Int8>::get()) ) )
- throw IllegalArgumentException(
- "invalid value type or any has no value",
- rXInterface,
- aArgPos );
-
- sal_Int32 nPos;
- aPosition >>= nPos;
-
- LRESULT lRet = SendMessageW( hwnd, CB_DELETESTRING, nPos, 0 );
-
- // if the return value is CB_ERR the given
- // index was not correct
- if ( CB_ERR == lRet )
- throw IllegalArgumentException(
- "invalid item position",
- rXInterface,
- aArgPos );
-}
-
-void SAL_CALL ListboxDeleteItems( HWND hwnd, const Any&, const Reference< XInterface >&, sal_Int16 )
-{
- OSL_ASSERT( IsWindow( hwnd ) );
-
- LRESULT lRet = 0;
-
- do
- {
- // the return value on success is the number
- // of remaining elements in the listbox
- lRet = SendMessageW( hwnd, CB_DELETESTRING, 0, 0 );
- }
- while ( (lRet != CB_ERR) && (lRet > 0) );
-}
-
-void SAL_CALL ListboxSetSelectedItem( HWND hwnd, const Any& aPosition, const Reference< XInterface >& rXInterface, sal_Int16 aArgPos )
-{
- OSL_ASSERT( IsWindow( hwnd ) );
-
- if ( !aPosition.hasValue( ) ||
- ( (aPosition.getValueType( ) != cppu::UnoType<sal_Int32>::get()) &&
- (aPosition.getValueType( ) != cppu::UnoType<sal_Int16>::get()) &&
- (aPosition.getValueType( ) != cppu::UnoType<sal_Int8>::get()) ) )
- throw IllegalArgumentException(
- "invalid value type or any has no value",
- rXInterface,
- aArgPos );
-
- sal_Int32 nPos;
- aPosition >>= nPos;
-
- if ( nPos < -1 )
- throw IllegalArgumentException(
- "invalid index",
- rXInterface,
- aArgPos );
-
- LRESULT lRet = SendMessageW( hwnd, CB_SETCURSEL, nPos, 0 );
-
- if ( (CB_ERR == lRet) && (-1 != nPos) )
- throw IllegalArgumentException(
- "invalid index",
- rXInterface,
- aArgPos );
-}
-
-Any SAL_CALL ListboxGetItems( HWND hwnd )
-{
- OSL_ASSERT( IsWindow( hwnd ) );
-
- LRESULT nItemCount = SendMessageW( hwnd, CB_GETCOUNT, 0, 0 );
-
- Sequence< OUString > aItemList;
-
- if ( CB_ERR != nItemCount )
- {
- aItemList.realloc( nItemCount );
-
- for ( LRESULT i = 0; i < nItemCount; i++ )
- {
- aItemList[i] = ListboxGetString( hwnd, i );
- }
- }
-
- return Any(aItemList);
-}
-
-Any SAL_CALL ListboxGetSelectedItem( HWND hwnd )
-{
- OSL_ASSERT( IsWindow( hwnd ) );
-
- LRESULT idxItem = SendMessageW( hwnd, CB_GETCURSEL, 0, 0 );
-
- return Any( ListboxGetString( hwnd, idxItem ) );
-}
-
-Any SAL_CALL ListboxGetSelectedItemIndex( HWND hwnd )
-{
- OSL_ASSERT( IsWindow( hwnd ) );
-
- LRESULT idxItem = SendMessageW( hwnd, CB_GETCURSEL, 0, 0 );
-
- return Any( static_cast< sal_Int32 >( idxItem ) );
-}
-
-Any SAL_CALL CheckboxGetState( HWND hwnd )
-{
- OSL_ASSERT( IsWindow( hwnd ) );
-
- LRESULT lChkState = SendMessageW( hwnd, BM_GETCHECK, 0, 0 );
- bool bChkState = (lChkState == BST_CHECKED);
- return Any(bChkState);
-}
-
-void SAL_CALL CheckboxSetState(
- HWND hwnd, const css::uno::Any& aState, const Reference< XInterface >& rXInterface, sal_Int16 aArgPos )
-{
- OSL_ASSERT( IsWindow( hwnd ) );
-
- if ( !aState.hasValue( ) ||
- aState.getValueType( ) != cppu::UnoType<sal_Bool>::get())
- throw IllegalArgumentException(
- "invalid value type or any has no value",
- rXInterface,
- aArgPos );
-
- bool bCheckState = *static_cast< const sal_Bool* >( aState.getValue( ) );
- WPARAM wParam = bCheckState ? BST_CHECKED : BST_UNCHECKED;
- SendMessageW( hwnd, BM_SETCHECK, wParam, 0 );
-}
-
-sal_uInt32 SAL_CALL wcslenex( const sal_Unicode* pStr )
-{
- if ( !pStr )
- return 0;
-
- const sal_Unicode* pTemp = pStr;
- sal_uInt32 strLen = 0;
- while( *pTemp || *(pTemp + 1) )
- {
- pTemp++;
- strLen++;
- }
-
- return strLen;
-}
void Replace( const OUString& aLabel, sal_Unicode OldChar, sal_Unicode NewChar, OUStringBuffer& aBuffer )
{
diff --git a/fpicker/source/win32/misc/WinImplHelper.hxx b/fpicker/source/win32/misc/WinImplHelper.hxx
index 369e127bd48a..2e78cdaed136 100644
--- a/fpicker/source/win32/misc/WinImplHelper.hxx
+++ b/fpicker/source/win32/misc/WinImplHelper.hxx
@@ -36,46 +36,6 @@
bool SAL_CALL IsWindowsVistaOrNewer();
-// set actions
-/// @throws css::lang::IllegalArgumentException
-void SAL_CALL ListboxAddItem(
- HWND hwnd, const css::uno::Any& aItem, const css::uno::Reference< css::uno::XInterface >& rXInterface, sal_Int16 aArgPos );
-
-/// @throws css::lang::IllegalArgumentException
-void SAL_CALL ListboxAddItems(
- HWND hwnd, const css::uno::Any& aItemList, const css::uno::Reference< css::uno::XInterface >& rXInterface, sal_Int16 aArgPos );
-
-/// @throws css::lang::IllegalArgumentException
-void SAL_CALL ListboxDeleteItem(
- HWND hwnd, const css::uno::Any& aPosition, const css::uno::Reference< css::uno::XInterface >& rXInterface, sal_Int16 aArgPos );
-
-/// @throws css::lang::IllegalArgumentException
-void SAL_CALL ListboxDeleteItems(
- HWND hwnd, const css::uno::Any& aUnused, const css::uno::Reference< css::uno::XInterface >& rXInterface, sal_Int16 aArgPos );
-
-/// @throws css::lang::IllegalArgumentException
-void SAL_CALL ListboxSetSelectedItem(
- HWND hwnd, const css::uno::Any& aPosition, const css::uno::Reference< css::uno::XInterface >& rXInterface, sal_Int16 aArgPos );
-
-// get actions
-css::uno::Any SAL_CALL ListboxGetItems( HWND hwnd );
-css::uno::Any SAL_CALL ListboxGetSelectedItem( HWND hwnd );
-css::uno::Any SAL_CALL ListboxGetSelectedItemIndex( HWND hwnd );
-
-// checkbox helper functions
-css::uno::Any SAL_CALL CheckboxGetState( HWND hwnd );
-
-/// @throws css::lang::IllegalArgumentException
-void SAL_CALL CheckboxSetState(
- HWND hwnd, const css::uno::Any& aState, const css::uno::Reference< css::uno::XInterface >& rXInterface, sal_Int16 aArgPos );
-
-// calculates the length of '\0' separated and '\0\0'
-// ending strings used in some Win32 functions
-// e.g. Filter\0*.txt\0\0
-// the returned length excludes the last '\0'
-sal_uInt32 SAL_CALL wcslenex( const sal_Unicode* pStr );
-
-
// converts a soffice label to a windows label
// the following rules for character replacements
// will be done:
commit 99643e0d69ad2cd87a1c1e9602edf3a7fe7bd9cf
Author: Michael Stahl <mstahl at redhat.com>
Date: Mon May 29 14:57:25 2017 +0200
fpicker: remove PreviewCtrl.[ch]xx
These were apparently never used; the Windows 7 file picker can preview
images nicely without this anyway.
Change-Id: I0e4a1bb94506cbeae10675400a471b2211659d6e
diff --git a/fpicker/Library_fps.mk b/fpicker/Library_fps.mk
index c4b2c2e2d7e1..1cec714107db 100644
--- a/fpicker/Library_fps.mk
+++ b/fpicker/Library_fps.mk
@@ -70,6 +70,5 @@ $(eval $(call gb_Library_add_exception_objects,fps,\
fpicker/source/win32/misc/resourceprovider \
fpicker/source/win32/misc/WinImplHelper \
))
-# fpicker/source/win32/filepicker/PreviewCtrl \
# vim: set noet sw=4 ts=4:
diff --git a/fpicker/source/win32/filepicker/PreviewCtrl.cxx b/fpicker/source/win32/filepicker/PreviewCtrl.cxx
deleted file mode 100644
index b979b0c98029..000000000000
--- a/fpicker/source/win32/filepicker/PreviewCtrl.cxx
+++ /dev/null
@@ -1,525 +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 "PreviewCtrl.hxx"
-#include <osl/diagnose.h>
-
-#if defined _MSC_VER
-#pragma warning(push, 1)
-#endif
-#include <windows.h>
-#if defined _MSC_VER
-#pragma warning(pop)
-#endif
-#include <ocidl.h>
-#include <olectl.h>
-
-#define PREVIEWWND_CLASS_NAME L"PreviewWnd###"
-
-#define HIMETRIC_INCH 2540
-
-// means 3 pixel left and 3 pixel right
-#define HORZ_BORDER_SPACE 6
-
-// means 3 pixel top and 3 pixel bottom
-#define VERT_BORDER_SPACE 6
-
-CFilePreview* CFilePreview::s_FilePreviewInst = NULL;
-CFilePreview::FILEPREVIEW_SINGLETON_DESTROYER_T CFilePreview::s_SingletonDestroyer;
-
-namespace
-{
- class CPreviewException
- {
- // used when registering or creation
- // of the preview window failed
- };
-
- inline
- sal_Int32 SubDiv( sal_Int32 nNumber, sal_Int32 nMinuend, sal_Int32 nDenominator )
- {
- return ( static_cast<sal_Int32>( ( nNumber - nMinuend ) / nDenominator ) );
- }
-
- // convert himetric to pixel
-
- inline
- sal_Int32 Himetric2Pixel( HDC hDC, sal_Int32 hmSize, sal_Int32 nIndex )
- {
- return MulDiv( hmSize, GetDeviceCaps( hDC, nIndex), HIMETRIC_INCH );
- }
-
- inline
- sal_uInt32 _getWidthRect( const RECT& aRect )
- {
- return ( aRect.right - aRect.left );
- }
-
- inline
- sal_uInt32 _getHeightRect( const RECT& aRect )
- {
- return ( aRect.bottom - aRect.top );
- }
-
- // calc the upper left corner so that a given window will be
- // displayed centered within the given window
-
- inline
- POINT _calcULCorner( HWND hwnd, const CDimension& aPicSize )
- {
- RECT rect;
- GetClientRect( hwnd, &rect );
-
- sal_Int32 nWidthWnd = _getWidthRect( rect );
- sal_Int32 nHeightWnd = _getHeightRect( rect );
-
- POINT ulCorner;
- ulCorner.x = SubDiv( nWidthWnd, aPicSize.m_cx, 2 );
- ulCorner.y = SubDiv( nHeightWnd, aPicSize.m_cy, 2 );
-
- return ulCorner;
- }
-
- // test if a picture with the given dimensions fits into an
- // arbitrary window
- // we expect the width and height to be in pixel
-
- inline
- sal_Bool _pictureSizeFitsWindowSize( HWND hwnd, const CDimension& aPicSize )
- {
- RECT rect;
- GetClientRect( hwnd, &rect );
-
- sal_Int32 nWidthWnd = _getWidthRect( rect );
- sal_Int32 nHeightWnd = _getHeightRect( rect );
-
- return ( ( ( nWidthWnd - HORZ_BORDER_SPACE ) >= aPicSize.m_cx ) &&
- ( ( nHeightWnd - VERT_BORDER_SPACE ) >= aPicSize.m_cy ) );
- }
-
- // calc the dimensions so that a given picture fits into a
- // given window, if the picture fits into the given window
- // the original CDimension will be returned
-
- inline
- CDimension _scalePictureSize( HWND hwnd, const CDimension& aPicSize )
- {
- CDimension scaledPicSize = aPicSize;
-
- if ( !_pictureSizeFitsWindowSize( hwnd, aPicSize ) )
- {
- RECT rect;
- GetClientRect( hwnd, &rect );
-
- // the dimensions of the preview wnd are not equal
- // that's why we equalize it
- sal_Int32 nHeightWnd = _getHeightRect( rect ) - VERT_BORDER_SPACE;
- sal_Int32 nWidthWnd = nHeightWnd;
-
- if ( aPicSize.m_cx >= aPicSize.m_cy )
- {
- scaledPicSize.m_cx = nWidthWnd;
- scaledPicSize.m_cy =
- static_cast< sal_Int32 >(
- aPicSize.m_cy * nWidthWnd / aPicSize.m_cx );
- }
- else
- {
- scaledPicSize.m_cx =
- static_cast< sal_Int32 >(
- aPicSize.m_cx * nHeightWnd / aPicSize.m_cy );
- scaledPicSize.m_cy = nHeightWnd;
- }
- }
-
- return scaledPicSize;
- }
-} // unnamed namespace
-
-// to ensure only one instance (singleton)
-
-CFilePreview* CFilePreview::createInstance(
- HWND aParent,
- POINT ulCorner,
- const CDimension& aSize,
- HINSTANCE hInstance,
- sal_Bool bShow,
- sal_Bool bEnabled )
-{
- if ( !s_FilePreviewInst )
- {
- try
- {
- s_FilePreviewInst = new CFilePreview(
- aParent, ulCorner, aSize, hInstance, bShow, bEnabled );
- s_SingletonDestroyer.reset( s_FilePreviewInst );
- }
- catch( CPreviewException& )
- {
- OSL_ASSERT( !s_FilePreviewInst );
- OSL_FAIL( "Creation of the preview window failed" );
- }
- catch( CAutoOleInit::COleInitException& )
- {
- OSL_ASSERT( !s_FilePreviewInst );
- OSL_FAIL( "OleInitialize failed" );
- }
- }
-
- return s_FilePreviewInst;
-}
-
-CFilePreview::CFilePreview(
- HWND aParent,
- POINT ulCorner,
- const CDimension& aSize,
- HINSTANCE hInstance,
- sal_Bool bShow,
- sal_Bool bEnabled ) :
- m_hInstance( hInstance ),
- m_bEnabled( bEnabled )
-{
- // register the preview window class
- WNDCLASSEX wndClsEx;
- ZeroMemory(&wndClsEx, sizeof(wndClsEx));
-
- wndClsEx.cbSize = sizeof(wndClsEx);
- wndClsEx.style = CS_HREDRAW | CS_VREDRAW;
- wndClsEx.lpfnWndProc = CFilePreview::WndProc;
- wndClsEx.hInstance = m_hInstance;
- wndClsEx.hbrBackground = (HBRUSH)( COLOR_INACTIVEBORDER + 1 );
- wndClsEx.lpszClassName = PREVIEWWND_CLASS_NAME;
-
- // register the preview window class
- // !!! Win95 - the window class will be unregistered automatically
- // if the dll is unloaded
- // Win2000 - the window class must be unregistered manually
- // if the dll is unloaded
- m_atomPrevWndClass = RegisterClassExW(&wndClsEx);
- if ( !m_atomPrevWndClass )
- throw CPreviewException( );
-
- // create the preview window in invisible state
- sal_uInt32 dwStyle = bShow ? (WS_CHILD | WS_VISIBLE) : WS_CHILD;
- m_hwnd = CreateWindowExW(
- WS_EX_CLIENTEDGE,
- PREVIEWWND_CLASS_NAME,
- L"",
- dwStyle,
- ulCorner.x,
- ulCorner.y,
- aSize.m_cx,
- aSize.m_cy,
- aParent,
- (HMENU)100, // for child windows this will
- // be used as child window identifier
- m_hInstance,
- 0 );
- if (!IsWindow(m_hwnd))
- throw CPreviewException( );
-}
-
-CFilePreview::~CFilePreview( )
-{
- // unregister preview window class
- sal_Bool bRet = UnregisterClassW(
- (PCWSTR)(DWORD_PTR)MAKELONG( m_atomPrevWndClass, 0 ),
- m_hInstance );
- SAL_WARN_IF( !bRet, "fpicker", "Unregister preview window class failed" );
-}
-
-// sets the size of the preview window
-
-sal_Bool SAL_CALL CFilePreview::setSize( const CDimension& aSize )
-{
- OSL_PRECOND( IsWindow( m_hwnd ), "Preview window not initialized" );
-
- // resize the fileopen file listbox
- return SetWindowPos(
- m_hwnd,
- NULL,
- 0,
- 0,
- aSize.m_cx,
- aSize.m_cy,
- SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE );
-}
-
-// returns the dimension of the preview
-
-sal_Bool SAL_CALL CFilePreview::getSize( CDimension& theSize ) const
-{
- OSL_PRECOND( IsWindow( m_hwnd ), "Preview window not initialized" );
-
- RECT rect;
- sal_Bool bRet = GetWindowRect( m_hwnd, &rect );
-
- theSize.m_cx = _getWidthRect( rect );
- theSize.m_cy = _getHeightRect( rect );
-
- return bRet;
-}
-
-// sets the position of the upper left corner
-// of the preview window relative to the
-// upper left corner of the parent window
-
-sal_Bool SAL_CALL CFilePreview::setPos( POINT ulCorner )
-{
- OSL_PRECOND( IsWindow( m_hwnd ), "Preview window not initialized" );
-
- // resize the fileopen file listbox
- return SetWindowPos(
- m_hwnd,
- NULL,
- ulCorner.x,
- ulCorner.y,
- 0,
- 0,
- SWP_NOSIZE | SWP_NOZORDER | SWP_NOACTIVATE );
-}
-
-// returns the current position of the preview
-// relative to the upper left corner of the
-// parent window
-
-sal_Bool SAL_CALL CFilePreview::getPos( POINT& ulCorner ) const
-{
- OSL_PRECOND( IsWindow( m_hwnd ), "Preview window not initialized" );
-
- POINT pt = { 0, 0 };
- RECT rect;
-
- sal_Bool bRet = GetWindowRect( m_hwnd, &rect );
-
- ulCorner.x = rect.left;
- ulCorner.y = rect.top;
-
- ScreenToClient( m_hwnd, &ulCorner );
-
- return bRet;
-}
-
-void SAL_CALL CFilePreview::enable( sal_Bool bEnable )
-{
- m_bEnabled = bEnable;
-
- // force a redraw
- InvalidateRect( m_hwnd, NULL, sal_True );
- UpdateWindow( m_hwnd );
-}
-
-// shows the preview window
-// possible values see SHOW_STATE
-// SS_SHOW - make the window visible
-// SS_HIDE - hide the window
-// SS_ENABLED - enable the window
-// SS_DISABLED - disable the window
-
-sal_Bool SAL_CALL CFilePreview::show( sal_Bool bShow )
-{
- OSL_PRECOND( IsWindow( m_hwnd ), "Preview window not initialized" );
-
- sal_Int32 showState = bShow ? SW_SHOW : SW_HIDE;
- return ShowWindow( m_hwnd, showState );
-}
-
-// if the preview is shown and enabled
-// preview of the given file will be shown
-// returns true on success or false if an error
-// occurred (the file in not there or not accessible etc.)
-sal_Bool SAL_CALL CFilePreview::update( const OUString& aFileName )
-{
- OSL_PRECOND( IsWindow( m_hwnd ), "Preview window not initialized" );
-
- try
- {
- if ( m_bEnabled )
- {
- if ( m_IPicture )
- m_IPicture.Release( );
-
- loadFile( aFileName );
-
- // force a complete window redraw
- InvalidateRect( m_hwnd, NULL, sal_True );
- UpdateWindow( m_hwnd );
- }
- }
- catch( _com_error& )
- {
- }
-
- return sal_True;
-}
-
-void SAL_CALL CFilePreview::onPaint( HWND hWnd, HDC hDC )
-{
- OSL_PRECOND( IsWindow( m_hwnd ), "Preview window not initialized" );
-
- try
- {
- if ( m_bEnabled )
- {
- // get width and height of picture
- long cxPicHIMETRIC;
- long cyPicHIMETRIC;
-
- m_IPicture->get_Width( &cxPicHIMETRIC );
- m_IPicture->get_Height( &cyPicHIMETRIC );
-
- // convert himetric to pixels
- int cxPicPIXEL = Himetric2Pixel( hDC, cxPicHIMETRIC, LOGPIXELSX );
- int cyPicPIXEL = Himetric2Pixel( hDC, cyPicHIMETRIC, LOGPIXELSY );
-
- // scale the picture based on the size of the preview window
- RECT rcPrevWnd;
- GetClientRect(hWnd, &rcPrevWnd);
-
- CDimension scaledPicSize = _scalePictureSize(
- hWnd, CDimension( cxPicPIXEL, cyPicPIXEL ) );
-
- // calc the upper left corner so that the picture
- // is centered within the window
- POINT ulCorner = _calcULCorner( hWnd, scaledPicSize );
-
- // render the picture
- HRESULT hr = m_IPicture->Render(
- hDC,
- ulCorner.x,
- ulCorner.y,
- scaledPicSize.m_cx,
- scaledPicSize.m_cy,
- 0,
- cyPicHIMETRIC,
- cxPicHIMETRIC,
- -cyPicHIMETRIC,
- &rcPrevWnd );
- } // end if ( m_bEnabled )
- }
- catch( _com_error& )
- {
- }
-}
-
-sal_Bool CFilePreview::loadFile( const OUString& aFileName )
-{
- HANDLE hFile = 0;
- HGLOBAL hGlobal = 0;
- LPVOID pData = NULL;
- IStreamPtr pIStream;
- HRESULT hr = E_FAIL;
- sal_Bool bRet;
- sal_uInt32 nBytesRead;
- sal_uInt32 fszExtra;
- sal_uInt32 fsize;
-
- hFile = CreateFileW(
- aFileName.getStr( ),
- GENERIC_READ,
- 0,
- NULL,
- OPEN_EXISTING,
- 0,
- NULL );
- if ( INVALID_HANDLE_VALUE == hFile )
- goto CLEANUP_AND_EXIT;
-
- fszExtra = 0;
- fsize = GetFileSize( hFile, &fszExtra );
-
- // empty file, error or file to big
- if ( -1 == fsize || 0 == fsize || fszExtra )
- goto CLEANUP_AND_EXIT;
-
- hGlobal = GlobalAlloc( GMEM_MOVEABLE, fsize );
- if ( !hGlobal )
- goto CLEANUP_AND_EXIT;
-
- pData = GlobalLock( hGlobal );
- if ( !pData )
- goto CLEANUP_AND_EXIT;
-
- bRet = ReadFile(
- hFile, pData, fsize, &nBytesRead, NULL );
-
- if ( !bRet )
- goto CLEANUP_AND_EXIT;
-
- hr = CreateStreamOnHGlobal(
- hGlobal, sal_False, &pIStream );
-
- if ( SUCCEEDED( hr ) )
- {
- hr = OleLoadPicture(
- pIStream, fsize, sal_False,
- __uuidof( IPicture ), (LPVOID*)&m_IPicture );
- }
-
-CLEANUP_AND_EXIT:
- if ( hFile )
- CloseHandle( hFile );
-
- if ( pData )
- GlobalUnlock( hGlobal );
-
- if ( hGlobal )
- GlobalFree( hGlobal );
-
- return ( SUCCEEDED( hr ) );
-}
-
-LRESULT CALLBACK CFilePreview::WndProc(
- HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
-{
- LRESULT lResult = 0;
-
- switch( uMsg )
- {
- case WM_PAINT:
- {
- OSL_PRECOND( s_FilePreviewInst, "Static member not initialized" );
-
- HDC hDC;
- PAINTSTRUCT ps;
-
- hDC = BeginPaint( hWnd, &ps );
- s_FilePreviewInst->onPaint( hWnd, hDC );
- EndPaint( hWnd, &ps );
- }
- break;
-
- // under windows 95/98 the creation of the
- // hidden target request window fails if
- // we don't handle this message ourself
- // because the DefWindowProc returns 0 as
- // a result of handling WM_NCCREATE what
- // leads to a failure of CreateWindow[Ex]!!!
- case WM_NCCREATE:
- lResult = sal_True;
- break;
-
- default:
- return DefWindowProc( hWnd, uMsg, wParam, lParam );
- }
-
- return lResult;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/win32/filepicker/PreviewCtrl.hxx b/fpicker/source/win32/filepicker/PreviewCtrl.hxx
deleted file mode 100644
index 3ae39f6d8570..000000000000
--- a/fpicker/source/win32/filepicker/PreviewCtrl.hxx
+++ /dev/null
@@ -1,189 +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_PREVIEWCTRL_HXX
-#define INCLUDED_FPICKER_SOURCE_WIN32_FILEPICKER_PREVIEWCTRL_HXX
-
-#include <sal/types.h>
-#include <rtl/ustring.hxx>
-
-#include <comdef.h>
-
-#include <memory>
-
-
-// declaration
-
-
-class CDimension
-{
-public:
- CDimension( ) :
- m_cx( 0 ),
- m_cy( 0 )
- {
- }
-
- CDimension( sal_Int32 cx, sal_Int32 cy ) :
- m_cx( cx ),
- m_cy( cy )
- {
- }
-
- sal_Int32 m_cx;
- sal_Int32 m_cy;
-};
-
-
-// we use OleInitialize here because we are calling
-// some Ole functions to realize the picture preview
-// and we expect to be called from the main thread
-// so that there will be no problem calling
-// OleInitialize (the main thread should be an STA)
-// When OleInitialize should fail at worst the
-// preview doesn't work
-
-
-class CAutoOleInit
-{
-public:
-
- // used to communicate ole
- // initialization failures
- class COleInitException { };
-
- CAutoOleInit( )
- {
- HRESULT hr = OleInitialize( NULL );
- if ( FAILED( hr ) )
- throw COleInitException( );
- }
-
- ~CAutoOleInit( )
- {
- OleUninitialize( );
- }
-};
-
-
-// A simple file preview class to preview some
-// common picture formats like *.gif, *jpg, etc.
-// This class is not thread-safe and is
-// implemented as singleton, because the class
-// has only one static member to reconnect
-// from callback functions
-// we use a singleton-destroyer to get rid off
-// the singleton instance, but this happens
-// only on shutdown (unloading of the dll) -
-// it's a question of taste (other solutions
-// are possible)
-
-
-class CFilePreview
-{
-public:
- // to ensure only one instance (singleton)
- static CFilePreview* createInstance(
- HWND aParent,
- POINT ulCorner,
- const CDimension& aSize,
- HINSTANCE hInstance,
- sal_Bool bShow = sal_True,
- sal_Bool bEnabled = sal_True );
-
- // sets the size of the preview window
- sal_Bool SAL_CALL setSize( const CDimension& aSize );
-
- // returns the CDimension of the preview
- sal_Bool SAL_CALL getSize( CDimension& theSize ) const;
-
- // sets the position of the upper left corner
- // of the preview window relative to the
- // upper left corner of the parent window
- sal_Bool SAL_CALL setPos( POINT ulCorner );
-
- // returns the current position of the preview
- // relative to the upper left corner of the
- // parent window
- sal_Bool SAL_CALL getPos( POINT& ulCorner ) const;
-
- // enables or disables the preview window
- // bEnable - true the window is enabled and updates its
- // view when update is called
- // bEnable - false the window shows itself in disabled
- // mode and does not update its view when update is
- // called
- void SAL_CALL enable( sal_Bool bEnable );
-
- // shows the preview window
- // possible values see SHOW_STATE
- sal_Bool SAL_CALL show( sal_Bool bShow );
-
-
- // if the preview is shown and enabled
- // preview of the given file will be shown
- // returns true on success or false if an error
- // occurred (the file in not there or not accessible etc.)
- virtual sal_Bool SAL_CALL update( const OUString& aFileName );
-
-protected:
- // clients can create instances only through the static create method
- CFilePreview(
- HWND aParent,
- POINT ulCorner,
- const CDimension& aSize,
- HINSTANCE hInstance,
- sal_Bool bShow = sal_True,
- sal_Bool bEnabled = sal_True );
-
- // only the singleton destroyer class is allowed to delete the
- // singleton instance of this class
- virtual ~CFilePreview( );
-
- // we use the stl unique_ptr class as singleton destroyer
- typedef std::unique_ptr< CFilePreview > FILEPREVIEW_SINGLETON_DESTROYER_T;
-
-protected:
- virtual void SAL_CALL onPaint( HWND hWnd, HDC hDC );
-
- sal_Bool loadFile( const OUString& aFileName );
-
-private:
- CAutoOleInit m_autoOleInit;
- POINT m_pt;
- CDimension m_dim;
- HWND m_hwnd;
- sal_Bool m_bEnabled;
- IPicturePtr m_IPicture;
- ATOM m_atomPrevWndClass;
- HINSTANCE m_hInstance;
-
- static LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
-
- static CFilePreview* s_FilePreviewInst;
- static FILEPREVIEW_SINGLETON_DESTROYER_T s_SingletonDestroyer;
-
-private:
- friend FILEPREVIEW_SINGLETON_DESTROYER_T;
-};
-
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 200f02d55c806c3ae7ce054b43e66013c508062c
Author: Michael Stahl <mstahl at redhat.com>
Date: Mon May 29 13:38:44 2017 +0200
fpicker: remove legacy XP FilePicker implementation
Long live VistaFilePicker.
Change-Id: I362a582a1922abad66ecfd1f5c4ce1a5a25fcd11
diff --git a/fpicker/Library_fps.mk b/fpicker/Library_fps.mk
index 30c0a5af380a..c4b2c2e2d7e1 100644
--- a/fpicker/Library_fps.mk
+++ b/fpicker/Library_fps.mk
@@ -58,29 +58,12 @@ $(eval $(call gb_Library_add_libs,fps,\
endif
$(eval $(call gb_Library_add_exception_objects,fps,\
- fpicker/source/win32/filepicker/asynceventnotifier \
fpicker/source/win32/filepicker/asyncrequests \
- fpicker/source/win32/filepicker/controlaccess \
- fpicker/source/win32/filepicker/controlcommand \
- fpicker/source/win32/filepicker/customcontrolcontainer \
- fpicker/source/win32/filepicker/customcontrol \
- fpicker/source/win32/filepicker/customcontrolfactory \
- fpicker/source/win32/filepicker/dialogcustomcontrols \
- fpicker/source/win32/filepicker/dibpreview \
- fpicker/source/win32/filepicker/FileOpenDlg \
- fpicker/source/win32/filepicker/FilePicker \
- fpicker/source/win32/filepicker/filepickereventnotification \
- fpicker/source/win32/filepicker/filepickerstate \
fpicker/source/win32/filepicker/FilterContainer \
fpicker/source/win32/filepicker/FPentry \
- fpicker/source/win32/filepicker/getfilenamewrapper \
- fpicker/source/win32/filepicker/helppopupwindow \
- fpicker/source/win32/filepicker/previewadapter \
- fpicker/source/win32/filepicker/previewbase \
fpicker/source/win32/filepicker/VistaFilePicker \
fpicker/source/win32/filepicker/VistaFilePickerEventHandler \
fpicker/source/win32/filepicker/VistaFilePickerImpl \
- fpicker/source/win32/filepicker/WinFileOpenImpl \
fpicker/source/win32/folderpicker/FolderPicker \
fpicker/source/win32/folderpicker/MtaFop \
fpicker/source/win32/folderpicker/WinFOPImpl \
diff --git a/fpicker/source/win32/filepicker/FPServiceInfo.hxx b/fpicker/source/win32/filepicker/FPServiceInfo.hxx
index 9e03045a6bd3..36aadf4b1c97 100644
--- a/fpicker/source/win32/filepicker/FPServiceInfo.hxx
+++ b/fpicker/source/win32/filepicker/FPServiceInfo.hxx
@@ -17,31 +17,9 @@
* 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 name is a description of a set of
-// interfaces (is the same as component categories in COM)
-
-#define TMPL2000_FILEOPEN_READONLY_VERSION_BOX_ID 1001
-
-#define TMPL2000_FILEOPEN_LINK_PREVIEW_BOX_ID 2001
-
-#define TMPL2000_FILEOPEN_AUTOEXT_TEMPLATE_BOX_ID 3001
-
-#define TMPL2000_FILESAVE_AUTOEXT_PASSWORD_BOX_ID 4001
-
-#define TMPL2000_AUTOEXT_PASSWORD_FILTEROPTION_BOX 5001
-
-#define TMPL2000_PLAY_PUSHBUTTON 6001
-
-#define TMPL2000_AUTOEXT_SELECTION_BOX 7001
-
-#define TMPL2000_FILEOPEN_LINK_PREVIEW_BOX_SIMPLE_ID 8001
-
-#define TMPL2000_FILESAVE_AUTOEXT 9001
-
// the service names
#define FILE_PICKER_SERVICE_NAME "com.sun.star.ui.dialogs.SystemFilePicker"
diff --git a/fpicker/source/win32/filepicker/FPentry.cxx b/fpicker/source/win32/filepicker/FPentry.cxx
index 7c8af8725e71..5eaf4d00c023 100644
--- a/fpicker/source/win32/filepicker/FPentry.cxx
+++ b/fpicker/source/win32/filepicker/FPentry.cxx
@@ -19,7 +19,6 @@
#include <cppuhelper/factory.hxx>
#include <com/sun/star/container/XSet.hpp>
-#include "FilePicker.hxx"
#include "FPServiceInfo.hxx"
#ifdef _MSC_VER
@@ -45,22 +44,11 @@ static Reference< XInterface > SAL_CALL createInstance(
{
Reference< XInterface > xDlg;
-#ifdef __IFileDialogCustomize_INTERFACE_DEFINED__
- bool bVistaOrNewer = IsWindowsVistaOrNewer();
+ if (!IsWindowsVistaOrNewer())
+ std::abort(); // not supported
- if (bVistaOrNewer)
- {
- xDlg.set(
- static_cast< XFilePicker2* >(
- new ::fpicker::win32::vista::VistaFilePicker( rServiceManager ) ) );
- }
- else
-#endif
- {
- xDlg.set(
- static_cast< XFilePicker2* >(
- new CFilePicker( rServiceManager ) ) );
- }
+ xDlg.set(static_cast<XFilePicker2*>(
+ new ::fpicker::win32::vista::VistaFilePicker(rServiceManager)));
return xDlg;
}
diff --git a/fpicker/source/win32/filepicker/FileOpenDlg.cxx b/fpicker/source/win32/filepicker/FileOpenDlg.cxx
deleted file mode 100644
index 8d4537c7dcc8..000000000000
--- a/fpicker/source/win32/filepicker/FileOpenDlg.cxx
+++ /dev/null
@@ -1,562 +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 <osl/diagnose.h>
-#include "../misc/WinImplHelper.hxx"
-#include "FileOpenDlg.hxx"
-
-
-// constants
-
-
-namespace /* private */
-{
- // we choose such large buffers because the size of
- // an single line edit field can be up to 32k; if
- // a user has a multi selection FilePicker and selects
- // a lot of files in a large directory we may reach this
- // limit and don't want to get out of memory;
- // another much more elegant way would be to subclass the
- // FileOpen dialog and override the BM_CLICK event of the
- // OK button so that we determine the size of the text
- // currently in the edit field and resize our buffer
- // appropriately - in the future we will do this
- const sal_Int32 MAX_FILENAME_BUFF_SIZE = 32000;
- const sal_Int32 MAX_FILETITLE_BUFF_SIZE = 32000;
- const sal_Int32 MAX_FILTER_BUFF_SIZE = 4096;
-
- const PCWSTR CURRENT_INSTANCE = L"CurrInst";
-
-
- // find an appropriate parent window
-
-
- inline bool is_current_process_window(HWND hwnd)
- {
- DWORD pid;
- GetWindowThreadProcessId(hwnd, &pid);
- return (pid == GetCurrentProcessId());
- }
-
- HWND choose_parent_window()
- {
- HWND hwnd_parent = GetForegroundWindow();
- if (!is_current_process_window(hwnd_parent))
- hwnd_parent = GetDesktopWindow();
-
- return hwnd_parent;
- }
-};
-
-
-CFileOpenDialog::CFileOpenDialog(
- bool bFileOpenDialog,
- sal_uInt32 dwFlags,
- sal_uInt32 dwTemplateId,
- HINSTANCE hInstance) :
- m_hwndFileOpenDlg(nullptr),
- m_hwndFileOpenDlgChild(nullptr),
- m_bFileOpenDialog(bFileOpenDialog),
- m_filterBuffer(MAX_FILTER_BUFF_SIZE),
- m_fileTitleBuffer(MAX_FILETITLE_BUFF_SIZE),
- m_helperBuffer(MAX_FILENAME_BUFF_SIZE),
- m_fileNameBuffer(MAX_FILENAME_BUFF_SIZE),
- m_pfnBaseDlgProc(nullptr)
-{
- // initialize the OPENFILENAME struct
- ZeroMemory(&m_ofn, sizeof(m_ofn));
- m_ofn.lStructSize = sizeof(m_ofn);
-
- // 0x02000000 for #97681, sfx will make the entry into
- // the recent document list
- m_ofn.Flags |= dwFlags |
- OFN_EXPLORER |
- OFN_ENABLEHOOK |
- OFN_HIDEREADONLY |
- OFN_PATHMUSTEXIST |
- OFN_FILEMUSTEXIST |
- OFN_OVERWRITEPROMPT |
- OFN_ENABLESIZING |
- OFN_DONTADDTORECENT; // 0x02000000 -> OFN_DONTADDTORECENT only available with new platform sdk
-
- // it is a little hack but how else could
- // we get a parent window (using a vcl window?)
- m_ofn.hwndOwner = choose_parent_window();
-
- m_ofn.lpstrFile = reinterpret_cast<PWSTR>(const_cast<sal_Unicode*>(m_fileNameBuffer.getStr()));
- m_ofn.nMaxFile = m_fileNameBuffer.getCapacity();
-
- m_ofn.lpstrFileTitle = reinterpret_cast<PWSTR>(const_cast<sal_Unicode*>(m_fileTitleBuffer.getStr()));
- m_ofn.nMaxFileTitle = m_fileTitleBuffer.getCapacity();
-
- m_ofn.lpfnHook = CFileOpenDialog::ofnHookProc;
-
- // set a custom template
-
- if (dwTemplateId)
- {
- OSL_ASSERT(hInstance);
-
- m_ofn.Flags |= OFN_ENABLETEMPLATE;
- m_ofn.lpTemplateName = MAKEINTRESOURCE(dwTemplateId);
- m_ofn.hInstance = hInstance;
- }
-
- // set a pointer to myself as ofn parameter
- m_ofn.lCustData = reinterpret_cast<sal_IntPtr>(this);
-}
-
-
-CFileOpenDialog::~CFileOpenDialog()
-{
-}
-
-
-void SAL_CALL CFileOpenDialog::setTitle(const OUString& aTitle)
-{
- m_dialogTitle = aTitle;
- m_ofn.lpstrTitle = reinterpret_cast<PCWSTR>(m_dialogTitle.getStr());
-}
-
-
-void CFileOpenDialog::setFilter(const OUString& aFilter)
-{
- // Format is like
- // "*.TXT" or multiple separate by ';' like "*.TXT;*.DOC;*.SXW"
- // Do not include spaces in the pattern string
- m_filterBuffer.ensureCapacity(aFilter.getLength());
- m_filterBuffer.setLength(0);
- m_filterBuffer.append(aFilter);
- m_ofn.lpstrFilter = reinterpret_cast<PCWSTR>(m_filterBuffer.getStr());
-}
-
-
-bool CFileOpenDialog::setFilterIndex(sal_uInt32 aIndex)
-{
- OSL_ASSERT(aIndex > 0);
- m_ofn.nFilterIndex = aIndex;
- return true;
-}
-
-
-sal_uInt32 CFileOpenDialog::getSelectedFilterIndex() const
-{
- return m_ofn.nFilterIndex;
-}
-
-
-void SAL_CALL CFileOpenDialog::setDefaultName(const OUString& aName)
-{
- m_fileNameBuffer.setLength(0);
- m_fileNameBuffer.append(aName);
- m_ofn.lpstrFile = reinterpret_cast<PWSTR>(const_cast<sal_Unicode*>(m_fileNameBuffer.getStr()));
-}
-
-
-void SAL_CALL CFileOpenDialog::setDisplayDirectory(const OUString& aDirectory)
-{
- m_displayDirectory = aDirectory;
- m_ofn.lpstrInitialDir = reinterpret_cast<PCWSTR>(m_displayDirectory.getStr());
-}
-
-
-OUString SAL_CALL CFileOpenDialog::getLastDisplayDirectory() const
-{
- return m_displayDirectory;
-}
-
-
-OUString SAL_CALL CFileOpenDialog::getFullFileName() const
-{
- return OUString(m_fileNameBuffer.getStr(),
- wcslenex(m_fileNameBuffer.getStr()));
-}
-
-
-OUString SAL_CALL CFileOpenDialog::getFileName() const
-{
- return OUString(m_fileTitleBuffer.getStr());
-}
-
-
-OUString CFileOpenDialog::getFileExtension()
-{
- if (m_ofn.nFileExtension)
- return OUString(m_fileNameBuffer.getStr() + m_ofn.nFileExtension,
- rtl_ustr_getLength(m_fileNameBuffer.getStr() + m_ofn.nFileExtension));
-
- return OUString();
-}
-
-
-void CFileOpenDialog::setDefaultFileExtension(const OUString& aExtension)
-{
- m_defaultExtension = aExtension;
- m_ofn.lpstrDefExt = reinterpret_cast<PCWSTR>(m_defaultExtension.getStr());
-}
-
-
-void SAL_CALL CFileOpenDialog::setMultiSelectionMode(bool bMode)
-{
- if (bMode)
- m_ofn.Flags |= OFN_ALLOWMULTISELECT;
- else
- m_ofn.Flags &= ~OFN_ALLOWMULTISELECT;
-}
-
-
-bool SAL_CALL CFileOpenDialog::getMultiSelectionMode() const
-{
- return ((m_ofn.Flags & OFN_ALLOWMULTISELECT) > 0);
-}
-
-
-sal_Int16 SAL_CALL CFileOpenDialog::doModal()
-{
- sal_Int16 nRC = -1;
-
- // pre-processing
- if (preModal())
- {
- bool bRet;
-
- if (m_bFileOpenDialog)
- bRet = m_GetFileNameWrapper.getOpenFileName(
- reinterpret_cast<LPOPENFILENAME>(&m_ofn));
- else
- bRet = m_GetFileNameWrapper.getSaveFileName(
- reinterpret_cast<LPOPENFILENAME>(&m_ofn));
-
- nRC = 1;
-
- if (!bRet)
- nRC = (0 == m_GetFileNameWrapper.commDlgExtendedError()) ? 0 : -1;
-
- // post-processing
- postModal(nRC);
- }
-
- return nRC;
-}
-
-
-sal_uInt32 SAL_CALL CFileOpenDialog::getLastDialogError()
-{
- return CommDlgExtendedError();
-}
-
-
-bool SAL_CALL CFileOpenDialog::preModal()
-{
- return true;
-}
-
-
-void SAL_CALL CFileOpenDialog::postModal(sal_Int16 nDialogResult)
-{
- OSL_ASSERT((-1 <= nDialogResult) && (nDialogResult <= 1));
-
- if (1 == nDialogResult)
- {
- // Attention: assuming that nFileOffset is always greater 0 because under
- // Windows there is always a drive letter or a server in a complete path
- // the OPENFILENAME docu never says that nFileOffset can be 0
- m_displayDirectory = OUString(reinterpret_cast<const sal_Unicode*>(m_ofn.lpstrFile),m_ofn.nFileOffset);
- }
-}
-
-
-OUString SAL_CALL CFileOpenDialog::getCurrentFilePath() const
-{
- OSL_ASSERT(IsWindow(m_hwndFileOpenDlg));
-
- LPARAM nLen = SendMessageW(
- m_hwndFileOpenDlg,
- CDM_GETFILEPATH,
- m_helperBuffer.getCapacity(),
- reinterpret_cast<LPARAM>(m_helperBuffer.getStr()));
-
- if (nLen > 0)
- {
- m_helperBuffer.setLength((nLen * sizeof(sal_Unicode)) - 1);
- return OUString(m_helperBuffer.getStr());
- }
- return OUString();
-}
-
-
-OUString SAL_CALL CFileOpenDialog::getCurrentFolderPath() const
-{
- OSL_ASSERT(IsWindow(m_hwndFileOpenDlg));
-
- LPARAM nLen = SendMessageW(
- m_hwndFileOpenDlg,
- CDM_GETFOLDERPATH,
- m_helperBuffer.getCapacity(),
- reinterpret_cast<LPARAM>(m_helperBuffer.getStr()));
-
- if (nLen > 0)
- {
- m_helperBuffer.setLength((nLen * sizeof(sal_Unicode)) - 1);
- return OUString(m_helperBuffer.getStr());
- }
- return OUString();
-}
-
-
-OUString SAL_CALL CFileOpenDialog::getCurrentFileName() const
-{
- OSL_ASSERT(IsWindow(m_hwndFileOpenDlg));
-
- LPARAM nLen = SendMessageW(
- m_hwndFileOpenDlg,
- CDM_GETSPEC,
- m_helperBuffer.getCapacity(),
- reinterpret_cast<LPARAM>(m_helperBuffer.getStr()));
-
- if (nLen > 0)
- {
- m_helperBuffer.setLength((nLen * sizeof(sal_Unicode)) - 1);
- return OUString(m_helperBuffer.getStr());
- }
- return OUString();
-}
-
-
-sal_uInt32 SAL_CALL CFileOpenDialog::onShareViolation(const OUString&)
-{
- return 0;
-}
-
-
-sal_uInt32 SAL_CALL CFileOpenDialog::onFileOk()
-{
- return 0;
-}
-
-
-void SAL_CALL CFileOpenDialog::onSelChanged(HWND)
-{
-}
-
-
-void SAL_CALL CFileOpenDialog::onHelp()
-{
-}
-
-
-void SAL_CALL CFileOpenDialog::onInitDone()
-{
- centerPositionToParent();
-}
-
-
-void SAL_CALL CFileOpenDialog::onFolderChanged()
-{
-}
-
-
-void SAL_CALL CFileOpenDialog::onTypeChanged(sal_uInt32)
-{
-}
-
-
-sal_uInt32 SAL_CALL CFileOpenDialog::onCtrlCommand(HWND, sal_uInt16, sal_uInt16)
-{
- return 0;
-}
-
-
-sal_uInt32 SAL_CALL CFileOpenDialog::onWMNotify( HWND, LPOFNOTIFY lpOfNotify )
-{
- switch(lpOfNotify->hdr.code)
- {
- case CDN_SHAREVIOLATION:
- return onShareViolation(reinterpret_cast<const sal_Unicode*>(lpOfNotify->pszFile));
-
- case CDN_FILEOK:
- return onFileOk();
-
- case CDN_SELCHANGE:
- onSelChanged(lpOfNotify->hdr.hwndFrom);
- break;
-
- case CDN_HELP:
- onHelp();
- break;
-
- case CDN_INITDONE:
- onInitDone();
- break;
-
- case CDN_FOLDERCHANGE:
- onFolderChanged();
- break;
-
- case CDN_TYPECHANGE:
- m_ofn.nFilterIndex = lpOfNotify->lpOFN->nFilterIndex;
- onTypeChanged(lpOfNotify->lpOFN->nFilterIndex);
- break;
- }
-
- return 0;
-}
-
-
-void SAL_CALL CFileOpenDialog::handleInitDialog(HWND hwndDlg, HWND hwndChild)
-{
- m_hwndFileOpenDlg = hwndDlg;
- m_hwndFileOpenDlgChild = hwndChild;
-
- OSL_ASSERT(GetParent(hwndChild) == hwndDlg);
-
- // calling virtual function which the client can override
- onInitDialog(hwndDlg);
-}
-
-
-UINT_PTR CALLBACK CFileOpenDialog::ofnHookProc(
- HWND hChildDlg, UINT uiMsg, WPARAM wParam, LPARAM lParam)
-{
- HWND hwndDlg = GetParent(hChildDlg);
- CFileOpenDialog* pImpl = nullptr;
-
- switch( uiMsg )
- {
- case WM_INITDIALOG:
- {
- LPOPENFILENAME_ lpofn = reinterpret_cast<LPOPENFILENAME_>(lParam);
- pImpl = reinterpret_cast<CFileOpenDialog*>(lpofn->lCustData);
- OSL_ASSERT(pImpl);
-
- // subclass the base dialog for WM_NCDESTROY processing
- pImpl->m_pfnBaseDlgProc =
- reinterpret_cast<WNDPROC>(
- SetWindowLongPtr(
- hwndDlg,
- GWLP_WNDPROC,
- reinterpret_cast<LONG_PTR>(CFileOpenDialog::BaseDlgProc)));
- // connect the instance handle to the window
- SetPropW(hwndDlg, CURRENT_INSTANCE, pImpl);
- pImpl->handleInitDialog(hwndDlg, hChildDlg);
- }
- return 0;
-
- case WM_NOTIFY:
- {
- pImpl = getCurrentInstance(hwndDlg);
- return pImpl->onWMNotify(
- hChildDlg, reinterpret_cast<LPOFNOTIFY>(lParam));
- }
-
- case WM_COMMAND:
- {
- pImpl = getCurrentInstance(hwndDlg);
- OSL_ASSERT(pImpl);
-
- return pImpl->onCtrlCommand(
- hChildDlg, LOWORD(wParam), HIWORD(lParam));
- }
- }
-
- return 0;
-}
-
-
-LRESULT CALLBACK CFileOpenDialog::BaseDlgProc(
- HWND hWnd, UINT wMessage, WPARAM wParam, LPARAM lParam)
-{
- CFileOpenDialog* pImpl = nullptr;
-
- if (WM_NCDESTROY == wMessage)
- {
- pImpl = static_cast<CFileOpenDialog*>(
- RemovePropW(hWnd,CURRENT_INSTANCE));
-
- SetWindowLongPtr(hWnd, GWLP_WNDPROC,
- reinterpret_cast<LONG_PTR>(pImpl->m_pfnBaseDlgProc));
- }
- else
- {
- pImpl = getCurrentInstance(hWnd);
- }
-
- OSL_ASSERT(pImpl);
-
- return CallWindowProc(
- reinterpret_cast<WNDPROC>(pImpl->m_pfnBaseDlgProc),
- hWnd,wMessage,wParam,lParam);
-}
-
-
-CFileOpenDialog* SAL_CALL CFileOpenDialog::getCurrentInstance(HWND hwnd)
-{
- OSL_ASSERT(IsWindow( hwnd));
- return static_cast<CFileOpenDialog*>(
- GetPropW(hwnd, CURRENT_INSTANCE));
-}
-
-
-void SAL_CALL CFileOpenDialog::centerPositionToParent() const
-{
- OSL_PRECOND(IsWindow(m_hwndFileOpenDlg), "no dialog window, call method only after or in onInitDone");
-
- HWND hwndParent = m_ofn.hwndOwner;
-
- if (!IsWindow(hwndParent))
- hwndParent = GetDesktopWindow();
-
- OSL_ASSERT(IsWindow(hwndParent));
-
- RECT rcPar;
- GetWindowRect(hwndParent, &rcPar);
-
- RECT rcDlg;
- GetWindowRect(m_hwndFileOpenDlg, &rcDlg);
-
- int lDlgW = rcDlg.right - rcDlg.left;
- int lDlgH = rcDlg.bottom - rcDlg.top;
-
- int x = (rcPar.left + rcPar.right - lDlgW) / 2;
- int y = (rcPar.top + rcPar.bottom - lDlgH) / 2;
-
- HDC hdc = GetDC(m_hwndFileOpenDlg);
-
- int hResol = GetDeviceCaps(hdc, HORZRES);
- int vResol = GetDeviceCaps(hdc, VERTRES);
-
- ReleaseDC(m_hwndFileOpenDlg, hdc);
-
- if (x < 0)
- x = 0;
- else if ((x + lDlgW) > hResol)
- x = hResol - lDlgW;
-
- if (y < 0)
- y = 0;
- else if ((y + lDlgH) > vResol)
- y = vResol - lDlgH;
-
- SetWindowPos(
- m_hwndFileOpenDlg,
- nullptr, x, y, 0, 0,
- SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOSIZE );
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/win32/filepicker/FileOpenDlg.hxx b/fpicker/source/win32/filepicker/FileOpenDlg.hxx
deleted file mode 100644
index 28b01da16ce2..000000000000
--- a/fpicker/source/win32/filepicker/FileOpenDlg.hxx
+++ /dev/null
@@ -1,293 +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_FILEOPENDLG_HXX
-#define INCLUDED_FPICKER_SOURCE_WIN32_FILEPICKER_FILEOPENDLG_HXX
-
-#include <sal/types.h>
-
-#include <rtl/ustring.hxx>
-#include <rtl/ustrbuf.hxx>
-
-#include "platform_xp.h"
-#include "getfilenamewrapper.hxx"
-
-// because we don't want to import the new W2k platform sdk
-// into our build environment if have stolen the definition
-// for the new OPENFILENAME structure from the new headers
-
-typedef struct {
- DWORD lStructSize;
- HWND hwndOwner;
- HINSTANCE hInstance;
- LPCSTR lpstrFilter;
- LPSTR lpstrCustomFilter;
- DWORD nMaxCustFilter;
- DWORD nFilterIndex;
- LPSTR lpstrFile;
- DWORD nMaxFile;
- LPSTR lpstrFileTitle;
- DWORD nMaxFileTitle;
- LPCSTR lpstrInitialDir;
- LPCSTR lpstrTitle;
- DWORD Flags;
- WORD nFileOffset;
- WORD nFileExtension;
- LPCSTR lpstrDefExt;
- LPARAM lCustData;
- LPOFNHOOKPROC lpfnHook;
- LPCSTR lpTemplateName;
-#ifdef _MAC
- LPEDITMENU lpEditInfo;
- LPCSTR lpstrPrompt;
-#endif
- void * pvReserved;
- DWORD dwReserved;
- DWORD FlagsEx;
-} OPENFILENAMEA_, *LPOPENFILENAMEA_;
-
-typedef struct {
- DWORD lStructSize;
- HWND hwndOwner;
- HINSTANCE hInstance;
- LPCWSTR lpstrFilter;
- LPWSTR lpstrCustomFilter;
- DWORD nMaxCustFilter;
- DWORD nFilterIndex;
- LPWSTR lpstrFile;
- DWORD nMaxFile;
- LPWSTR lpstrFileTitle;
- DWORD nMaxFileTitle;
- LPCWSTR lpstrInitialDir;
- LPCWSTR lpstrTitle;
- DWORD Flags;
- WORD nFileOffset;
- WORD nFileExtension;
- LPCWSTR lpstrDefExt;
- LPARAM lCustData;
- LPOFNHOOKPROC lpfnHook;
- LPCWSTR lpTemplateName;
- void * pvReserved;
- DWORD dwReserved;
- DWORD FlagsEx;
-} OPENFILENAMEW_, *LPOPENFILENAMEW_;
-
-#ifdef UNICODE
-typedef OPENFILENAMEW_ OPENFILENAME_;
-typedef LPOPENFILENAMEW_ LPOPENFILENAME_;
-#else
-typedef OPENFILENAMEA_ OPENFILENAME_;
-typedef LPOPENFILENAMEA_ LPOPENFILENAME_;
-#endif // UNICODE
-
-// A simple wrapper class around the Win32 GetOpenFileName API.
-// This class is not thread-safe and only one instance at a
-// time is allowed
-
-
-class CFileOpenDialog
-{
-public:
- // ctor
- // bFileOpenDialog indicates if we want a FileOpen or FileSave
- // dialog
- // dwFlags see OPENFILENAME
- // dwTemplateId - an ID for custom templates
- // hInstance - an instance handle for the module
- // which provides the custom template, unused if dwTemplateId
- // is 0
- CFileOpenDialog(
- bool bFileOpenDialog = true,
- sal_uInt32 dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
- sal_uInt32 dwTemplateId = 0,
- HINSTANCE hInstance = nullptr);
-
- virtual ~CFileOpenDialog();
-
- virtual void SAL_CALL setTitle(const OUString& aTitle);
-
- // to set a filter string using the M$ format
- // e.g. FltName\0*.txt;*.rtf\0...\0\0
- void SAL_CALL setFilter(const OUString& aFilter);
-
- // set the index of the current filter when the
- // dialog is about to shown, the index starts with 1
- // the function succeeded if the given filter index
- // is greater than zero and is a valid position
- // within filter string that was previously set
- bool SAL_CALL setFilterIndex(sal_uInt32 aIndex);
-
- // get the index of the currently selected filter
- // the index of the returned filter starts with 1
- sal_uInt32 SAL_CALL getSelectedFilterIndex() const;
-
- // set the name and optional the path of the
- // file that will be initially be shown when
- // the dialog will be displayed
- virtual void SAL_CALL setDefaultName(const OUString& aName);
-
- // set the initial directory
- virtual void SAL_CALL setDisplayDirectory(const OUString& aDirectory);
-
- // returns only the path of the selected file
- virtual OUString SAL_CALL getLastDisplayDirectory() const;
-
- // returns the full file name including drive letter, path
- // file name and file extension
- virtual OUString SAL_CALL getFullFileName() const;
-
- // returns the file name and the file extension without
- // drive letter and path
- OUString SAL_CALL getFileName() const;
-
- // returns the file extension of the selected file
- OUString SAL_CALL getFileExtension();
-
- // set a default extension, only the first three letters of
- // the given extension will be used; the given extension
- // should not contain a '.'
- void SAL_CALL setDefaultFileExtension(const OUString& aExtension);
-
- // enables or disables the multiselection mode for
- // the FileOpen/FileSave dialog
- void SAL_CALL setMultiSelectionMode(bool bMode);
-
- // returns whether multi-selection mode is enabled or not
- bool SAL_CALL getMultiSelectionMode() const;
-
- // shows the dialog, calls preModal before
- // showing the dialog and postModal after
- // showing the dialog
- // the method returns:
- // 0 - when the dialog was canceled by the user
- // 1 - when the dialog was closed with ok
- // -1 - when an error occurred
- sal_Int16 SAL_CALL doModal();
-
- // returns the last dialog error that occurred
- static sal_uInt32 SAL_CALL getLastDialogError();
-
- // retrievs the currently selected file
- // including path and drive information
- // can be called only if the dialog is
- // already displayed
- OUString SAL_CALL getCurrentFilePath() const;
-
- // retrievs the currently selected folder
- OUString SAL_CALL getCurrentFolderPath() const;
-
- // retrievs the currently selected file name
- // without drive and path
- OUString SAL_CALL getCurrentFileName() const;
-
-protected:
- // have to be overwritten when subclasses
- // want to do special pre- and post-modal
- // processing
-
- // if preModal return true processing will
- // continue else doModal exit without showing
- // a dialog and returns -1
- virtual bool SAL_CALL preModal();
-
- // post modal processing
- // the function should accept only values returned from
- // doModal and act appropriately
- virtual void SAL_CALL postModal(sal_Int16 nDialogResult);
-
- // message handler, to be overwritten by subclasses
- virtual sal_uInt32 SAL_CALL onShareViolation(const OUString& aPathName);
- virtual sal_uInt32 SAL_CALL onFileOk();
- virtual void SAL_CALL onSelChanged(HWND hwndListBox);
- virtual void SAL_CALL onHelp();
-
- // only called back if OFN_EXPLORER is set
- virtual void SAL_CALL onInitDone();
- virtual void SAL_CALL onFolderChanged();
- virtual void SAL_CALL onTypeChanged(sal_uInt32 nFilterIndex);
-
- virtual void SAL_CALL onInitDialog(HWND hwndDlg) = 0;
-
- virtual sal_uInt32 SAL_CALL onCtrlCommand(HWND hwndDlg, sal_uInt16 ctrlId, sal_uInt16 notifyCode);
-
- sal_uInt32 SAL_CALL onWMNotify(HWND hwndChild, LPOFNOTIFYW lpOfNotify);
-
- // we use non-virtual functions to do necessary work before
- // calling the virtual functions (see Gamma: Template method)
- void SAL_CALL handleInitDialog(HWND hwndDlg, HWND hwndChild);
-
-protected:
-
- // handle to the window of the
- // FileOpen/FileSave dialog
- // will be set on message
- // WM_INITDIALOG, before this
- // value is undefined
- HWND m_hwndFileOpenDlg;
- HWND m_hwndFileOpenDlgChild;
-
- OPENFILENAME_ m_ofn;
-
- // we connect the instance with the dialog window using
- // SetProp, with this function we can reconnect from
- // callback functions to this instance
- static CFileOpenDialog* SAL_CALL getCurrentInstance(HWND hwnd);
-
- void SAL_CALL centerPositionToParent() const;
-
-private:
- // FileOpen or FileSaveDialog
- bool m_bFileOpenDialog;
- OUString m_dialogTitle;
- OUString m_displayDirectory;
- OUString m_defaultExtension;
-
- mutable OUStringBuffer m_filterBuffer;
- mutable OUStringBuffer m_fileTitleBuffer;
- mutable OUStringBuffer m_helperBuffer;
- mutable OUStringBuffer m_fileNameBuffer;
-
- CGetFileNameWrapper m_GetFileNameWrapper;
-
- WNDPROC m_pfnBaseDlgProc;
-
- // callback function
- static UINT_PTR CALLBACK ofnHookProc(
- HWND hChildDlg, // handle to child dialog box
- UINT uiMsg, // message identifier
- WPARAM wParam, // message parameter
- LPARAM lParam // message parameter
- );
-
- // we have to subclass the dialog in order
- // to clean up the window property we are
- // using to connect the window with a class
- // instance in WM_NCDESTROY
- static LRESULT CALLBACK BaseDlgProc(
- HWND hWnd, UINT wMessage, WPARAM wParam, LPARAM lParam );
-
-private:
- // avoid copy and assignment
- CFileOpenDialog(const CFileOpenDialog&);
- CFileOpenDialog& operator=(const CFileOpenDialog&);
-};
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/win32/filepicker/FilePicker.cxx b/fpicker/source/win32/filepicker/FilePicker.cxx
deleted file mode 100644
index 7b60b0bb1dd6..000000000000
--- a/fpicker/source/win32/filepicker/FilePicker.cxx
+++ /dev/null
@@ -1,555 +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 <memory>
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <cppuhelper/interfacecontainer.h>
-#include <cppuhelper/supportsservice.hxx>
-#include <osl/diagnose.h>
-
-#include "FilePicker.hxx"
-#include "WinFileOpenImpl.hxx"
-
-#include "FPServiceInfo.hxx"
-#include "../misc/WinImplHelper.hxx"
-#include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
-#include "filepickereventnotification.hxx"
-
-#include <comphelper/sequence.hxx>
-
-using namespace com::sun::star;
-using namespace ::com::sun::star::ui::dialogs;
-using namespace ::com::sun::star::ui::dialogs::TemplateDescription;
-
-#define FILE_PICKER_DLL_NAME L"fps.dll"
-
-namespace
-{
- // controlling event notifications
- const bool STARTUP_SUSPENDED = true;
-
- uno::Sequence<OUString> SAL_CALL FilePicker_getSupportedServiceNames()
- {
- uno::Sequence<OUString> aRet(2);
- aRet[0] = "com.sun.star.ui.dialogs.FilePicker";
- aRet[1] = "com.sun.star.ui.dialogs.SystemFilePicker";
- return aRet;
- }
-}
-
-CFilePicker::CFilePicker( const uno::Reference<lang::XMultiServiceFactory>& xServiceMgr) :
- CFilePicker_Base(m_rbHelperMtx),
- m_xServiceMgr(xServiceMgr),
- m_aAsyncEventNotifier(rBHelper)
-{
- HINSTANCE hInstance = GetModuleHandleW(FILE_PICKER_DLL_NAME);
- SAL_WARN_IF( !hInstance, "fpicker", "The name of the service dll must have changed" );
-
- // create a default FileOpen dialog without any additional ui elements
- m_pImpl = std::unique_ptr< CWinFileOpenImpl >(
- new CWinFileOpenImpl(
- this,
- true,
- 0,
- 0,
- hInstance ) );
-}
-
-// XFPEventListenerManager
-
-void SAL_CALL CFilePicker::addFilePickerListener(const uno::Reference<XFilePickerListener>& xListener)
-{
- if ( rBHelper.bDisposed )
- throw lang::DisposedException(
- "object is already disposed",
- static_cast< XFilePicker2* >( this ) );
-
- if ( !rBHelper.bInDispose && !rBHelper.bDisposed )
- rBHelper.aLC.addInterface(cppu::UnoType<decltype(xListener)>::get(), xListener );
-}
-
-void SAL_CALL CFilePicker::removeFilePickerListener(const uno::Reference<XFilePickerListener>& xListener )
-{
- if ( rBHelper.bDisposed )
- throw lang::DisposedException(
- "object is already disposed",
- static_cast< XFilePicker2* >( this ) );
-
- rBHelper.aLC.removeInterface(cppu::UnoType<decltype(xListener)>::get(), xListener );
-}
-
-// XEventListener
-
-void SAL_CALL CFilePicker::disposing(const lang::EventObject& aEvent)
-{
- uno::Reference<XFilePickerListener> xFilePickerListener(aEvent.Source, css::uno::UNO_QUERY);
-
- if (xFilePickerListener.is())
- removeFilePickerListener(xFilePickerListener);
-}
-
-void SAL_CALL CFilePicker::fileSelectionChanged(FilePickerEvent aEvent)
-{
- aEvent.Source.set(static_cast<XFilePickerNotifier*>(this));
- m_aAsyncEventNotifier.notifyEvent(
- new CFilePickerParamEventNotification(&XFilePickerListener::fileSelectionChanged,aEvent));
-}
-
-void SAL_CALL CFilePicker::directoryChanged(FilePickerEvent aEvent)
-{
- aEvent.Source.set(static_cast<XFilePickerNotifier*>(this));
- m_aAsyncEventNotifier.notifyEvent(
- new CFilePickerParamEventNotification(&XFilePickerListener::directoryChanged,aEvent));
-}
-
-void SAL_CALL CFilePicker::controlStateChanged(FilePickerEvent aEvent)
-{
- aEvent.Source.set(static_cast<XFilePickerNotifier*>(this));
- m_aAsyncEventNotifier.notifyEvent(
- new CFilePickerParamEventNotification(&XFilePickerListener::controlStateChanged,aEvent));
-}
-
-void SAL_CALL CFilePicker::dialogSizeChanged()
-{
- m_aAsyncEventNotifier.notifyEvent(
- new CFilePickerEventNotification(&XFilePickerListener::dialogSizeChanged));
-}
-
-// If there are more than one listener the return value of the last one wins
-
-OUString SAL_CALL CFilePicker::helpRequested(FilePickerEvent aEvent) const
-{
- OUString aHelpText;
-
- ::cppu::OInterfaceContainerHelper* pICHelper =
- rBHelper.getContainer( cppu::UnoType<XFilePickerListener>::get());
-
- if (pICHelper)
- {
- ::cppu::OInterfaceIteratorHelper iter(*pICHelper);
-
- while(iter.hasMoreElements())
- {
- try
- {
- /*
- if there are multiple listeners responding
- to this notification the next response
- overwrites the one before if it is not empty
- */
-
- OUString temp;
-
- uno::Reference<XFilePickerListener> xFPListener(iter.next(), uno::UNO_QUERY);
- if (xFPListener.is())
- {
- temp = xFPListener->helpRequested(aEvent);
- if (temp.getLength())
- aHelpText = temp;
- }
-
- }
- catch(uno::RuntimeException&)
- {
- OSL_FAIL( "RuntimeException during event dispatching" );
- }
- }
- }
-
- return aHelpText;
-}
-
-bool CFilePicker::startupEventNotification(bool bStartupSuspended)
-{
- return m_aAsyncEventNotifier.startup(bStartupSuspended);
-}
-
-void CFilePicker::shutdownEventNotification()
-{
- m_aAsyncEventNotifier.shutdown();
-}
-
-void CFilePicker::suspendEventNotification()
-{
- m_aAsyncEventNotifier.suspend();
-}
-
-void CFilePicker::resumeEventNotification()
-{
- m_aAsyncEventNotifier.resume();
-}
-
-// XFilePicker
-
-void SAL_CALL CFilePicker::setMultiSelectionMode(sal_Bool bMode)
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
- osl::MutexGuard aGuard(m_aMutex);
- m_pImpl->setMultiSelectionMode(bMode);
-}
-
-void SAL_CALL CFilePicker::setTitle(const OUString& aTitle)
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
- osl::MutexGuard aGuard(m_aMutex);
- m_pImpl->setTitle(aTitle);
-}
-
-void SAL_CALL CFilePicker::appendFilter(const OUString& aTitle, const OUString& aFilter)
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
- osl::MutexGuard aGuard(m_aMutex);
- m_pImpl->appendFilter(aTitle, aFilter);
-}
-
-void SAL_CALL CFilePicker::setCurrentFilter(const OUString& aTitle)
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
- osl::MutexGuard aGuard(m_aMutex);
- m_pImpl->setCurrentFilter(aTitle);
-}
-
-OUString SAL_CALL CFilePicker::getCurrentFilter()
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
- osl::MutexGuard aGuard(m_aMutex);
- return m_pImpl->getCurrentFilter();
-}
-
-void SAL_CALL CFilePicker::appendFilterGroup(const OUString& sGroupTitle, const uno::Sequence<beans::StringPair>& aFilters)
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
- osl::MutexGuard aGuard(m_aMutex);
- m_pImpl->appendFilterGroup(sGroupTitle, aFilters);
-}
-
-void SAL_CALL CFilePicker::setDefaultName(const OUString& aName)
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
- osl::MutexGuard aGuard(m_aMutex);
- m_pImpl->setDefaultName(aName);
-}
-
-void SAL_CALL CFilePicker::setDisplayDirectory(const OUString& aDirectory)
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
- osl::MutexGuard aGuard(m_aMutex);
- m_pImpl->setDisplayDirectory(aDirectory);
-}
-
-OUString SAL_CALL CFilePicker::getDisplayDirectory()
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
- osl::MutexGuard aGuard(m_aMutex);
- return m_pImpl->getDisplayDirectory();
-}
-
-uno::Sequence<OUString> SAL_CALL CFilePicker::getFiles()
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
- osl::MutexGuard aGuard(m_aMutex);
- return m_pImpl->getFiles();
-}
-
-uno::Sequence< OUString > SAL_CALL CFilePicker::getSelectedFiles()
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
- osl::MutexGuard aGuard(m_aMutex);
-
- const uno::Sequence< OUString > lSource = m_pImpl->getFiles();
- const ::sal_Int32 c = lSource.getLength();
- if (c < 2)
- return lSource;
-
- const OUString sPath = lSource[0];
- ::std::vector< OUString > lTarget;
- ::sal_Int32 i = 1;
- for (i=1; i<c; ++i)
- {
- const OUString sFile = lSource[i];
- if (sFile.indexOf ('/') > 0)
- {
- // a) file contains own path !
- lTarget.push_back(sFile);
- }
- else
- {
- // b) file is relative to given path
- OUStringBuffer sFull(256);
-
- sFull.append (sPath);
- sFull.append("/" );
- sFull.append (sFile);
-
- lTarget.push_back(sFull.makeStringAndClear());
- }
- }
-
- return comphelper::containerToSequence(lTarget);
-}
-
-sal_Int16 SAL_CALL CFilePicker::execute()
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
-
- sal_Int16 ret;
-
- if (startupEventNotification(STARTUP_SUSPENDED))
- {
- // we should not block in this call else
- // in the case of an event the client can't
- // call another function an we run into a
- // deadlock !!!!!
- ret = m_pImpl->execute( );
-
- shutdownEventNotification();
- }
- else
- {
- OSL_FAIL("Could not start event notifier thread!");
-
- throw uno::RuntimeException(
- "Error executing dialog",
- static_cast<XFilePicker2*>(this));
- }
-
- return ret;
-}
-
-void SAL_CALL CFilePicker::setValue(sal_Int16 aControlId, sal_Int16 aControlAction, const uno::Any& aValue)
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
-
- osl::MutexGuard aGuard(m_aMutex);
- m_pImpl->setValue(aControlId, aControlAction, aValue);
-}
-
-uno::Any SAL_CALL CFilePicker::getValue(sal_Int16 aControlId, sal_Int16 aControlAction)
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
-
- osl::MutexGuard aGuard(m_aMutex);
- return m_pImpl->getValue(aControlId, aControlAction);
-}
-
-void SAL_CALL CFilePicker::enableControl(sal_Int16 aControlId, sal_Bool bEnable)
-{
- OSL_ASSERT( nullptr != m_pImpl.get( ) );
-
- osl::MutexGuard aGuard( m_aMutex );
- m_pImpl->enableControl( aControlId, bEnable );
-}
-
-void SAL_CALL CFilePicker::setLabel(sal_Int16 aControlId, const OUString& aLabel)
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
-
- osl::MutexGuard aGuard(m_aMutex);
- m_pImpl->setLabel(aControlId, aLabel);
-}
-
-OUString SAL_CALL CFilePicker::getLabel(sal_Int16 aControlId)
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
-
- osl::MutexGuard aGuard(m_aMutex);
- return m_pImpl->getLabel(aControlId);
-}
-
-uno::Sequence<sal_Int16> SAL_CALL CFilePicker::getSupportedImageFormats()
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
-
- osl::MutexGuard aGuard(m_aMutex);
- return m_pImpl->getSupportedImageFormats();
-}
-
-sal_Int32 SAL_CALL CFilePicker::getTargetColorDepth()
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
-
- osl::MutexGuard aGuard(m_aMutex);
- return m_pImpl->getTargetColorDepth();
-}
-
-sal_Int32 SAL_CALL CFilePicker::getAvailableWidth()
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
-
- osl::MutexGuard aGuard(m_aMutex);
- return m_pImpl->getAvailableWidth();
-}
-
-sal_Int32 SAL_CALL CFilePicker::getAvailableHeight()
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
-
- osl::MutexGuard aGuard(m_aMutex);
- return m_pImpl->getAvailableHeight();
-}
-
-void SAL_CALL CFilePicker::setImage(sal_Int16 aImageFormat, const uno::Any& aImage)
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
-
- osl::MutexGuard aGuard(m_aMutex);
- m_pImpl->setImage(aImageFormat, aImage);
-}
-
-sal_Bool SAL_CALL CFilePicker::setShowState(sal_Bool bShowState)
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
-
- osl::MutexGuard aGuard(m_aMutex);
- return m_pImpl->setShowState(bShowState);
-}
-
-sal_Bool SAL_CALL CFilePicker::getShowState()
-{
- OSL_ASSERT(nullptr != m_pImpl.get());
-
- osl::MutexGuard aGuard(m_aMutex);
- return m_pImpl->getShowState();
-}
-
-void SAL_CALL CFilePicker::initialize(const uno::Sequence<uno::Any>& aArguments)
-{
- // parameter checking
- uno::Any aAny;
- if ( 0 == aArguments.getLength( ) )
- throw lang::IllegalArgumentException(
- "no arguments",
- static_cast<XFilePicker2*>(this), 1);
-
- aAny = aArguments[0];
-
- if ( (aAny.getValueType() != ::cppu::UnoType<sal_Int16>::get()) &&
- (aAny.getValueType() != ::cppu::UnoType<sal_Int8>::get()) )
- throw lang::IllegalArgumentException(
- "invalid argument type",
- static_cast<XFilePicker2*>(this), 1);
-
- sal_Int16 templateId = -1;
- aAny >>= templateId;
-
- bool bFileOpenDialog = true;
- sal_uInt32 winResTemplateId = 0;
-
- switch ( templateId )
- {
- case FILEOPEN_SIMPLE:
- bFileOpenDialog = true;
- break;
-
- case FILESAVE_SIMPLE:
- bFileOpenDialog = false;
- break;
-
- case FILESAVE_AUTOEXTENSION_PASSWORD:
- bFileOpenDialog = false;
- winResTemplateId = TMPL2000_FILESAVE_AUTOEXT_PASSWORD_BOX_ID;
- break;
-
- case FILESAVE_AUTOEXTENSION_PASSWORD_FILTEROPTIONS:
- bFileOpenDialog = false;
- winResTemplateId = TMPL2000_AUTOEXT_PASSWORD_FILTEROPTION_BOX;
- break;
-
- case FILESAVE_AUTOEXTENSION_SELECTION:
- bFileOpenDialog = false;
- winResTemplateId = TMPL2000_AUTOEXT_SELECTION_BOX;
- break;
-
- case FILESAVE_AUTOEXTENSION_TEMPLATE:
- bFileOpenDialog = false;
- winResTemplateId = TMPL2000_FILEOPEN_AUTOEXT_TEMPLATE_BOX_ID;
- break;
-
- case FILEOPEN_LINK_PREVIEW_IMAGE_TEMPLATE:
- winResTemplateId = TMPL2000_FILEOPEN_LINK_PREVIEW_BOX_ID;
- break;
-
- case FILEOPEN_PLAY:
- case FILEOPEN_LINK_PLAY: //FIXME: FILEOPEN_LINK_PLAY needs an own template, no idea how to create one
- winResTemplateId = TMPL2000_PLAY_PUSHBUTTON;
- break;
-
- case FILEOPEN_READONLY_VERSION:
- winResTemplateId = TMPL2000_FILEOPEN_READONLY_VERSION_BOX_ID;
- break;
-
- case FILEOPEN_LINK_PREVIEW:
- case FILEOPEN_PREVIEW: //FIXME: FILEOPEN_PREVIEW needs an own template, no idea how to create one
- winResTemplateId = TMPL2000_FILEOPEN_LINK_PREVIEW_BOX_SIMPLE_ID;
- break;
-
- case FILESAVE_AUTOEXTENSION:
- bFileOpenDialog = false;
- winResTemplateId = TMPL2000_FILESAVE_AUTOEXT;
- break;
-
- default:
- throw lang::IllegalArgumentException(
- "Unknown template",
- static_cast< XFilePicker2* >( this ),
- 1 );
- }
-
- HINSTANCE hInstance = GetModuleHandle( FILE_PICKER_DLL_NAME );
- SAL_WARN_IF( !hInstance, "fpicker", "The name of the service dll must have changed" );
-
- // create a new impl-class here based on the
- // given string, if the given string is empty
- // we do nothing
- m_pImpl = std::unique_ptr< CWinFileOpenImpl >(
- new CWinFileOpenImpl(
- this,
- bFileOpenDialog,
- 0,
- winResTemplateId,
- hInstance ) );
-}
-
-void SAL_CALL CFilePicker::cancel()
-{
- OSL_ASSERT(m_pImpl.get());
-
- osl::MutexGuard aGuard(m_aMutex);
- m_pImpl->cancel();
-}
-
-// XServiceInfo
-
-OUString SAL_CALL CFilePicker::getImplementationName()
-{
- return OUString(FILE_PICKER_IMPL_NAME);
-}
-
-sal_Bool SAL_CALL CFilePicker::supportsService(const OUString& ServiceName)
-{
- return cppu::supportsService(this, ServiceName);
-}
-
-uno::Sequence<OUString> SAL_CALL CFilePicker::getSupportedServiceNames()
-{
- return FilePicker_getSupportedServiceNames();
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/win32/filepicker/FilePicker.hxx b/fpicker/source/win32/filepicker/FilePicker.hxx
deleted file mode 100644
index 23cddeafadd0..000000000000
--- a/fpicker/source/win32/filepicker/FilePicker.hxx
+++ /dev/null
@@ -1,179 +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_FILEPICKER_HXX
-#define INCLUDED_FPICKER_SOURCE_WIN32_FILEPICKER_FILEPICKER_HXX
-
-#include <cppuhelper/compbase.hxx>
-#include <osl/mutex.hxx>
-#include <com/sun/star/lang/XInitialization.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/ui/dialogs/XFilePicker3.hpp>
-#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp>
-#include <com/sun/star/ui/dialogs/XFilePreview.hpp>
-#include "asynceventnotifier.hxx"
-#include "eventnotification.hxx"
-
-#include <memory>
-
-// Implementation class for the XFilePicker Interface
-
-class CWinFileOpenImpl;
-
-class CFilePickerDummy
-{
-protected:
- osl::Mutex m_aMutex;
- osl::Mutex m_rbHelperMtx;
-};
-
-typedef ::cppu::WeakComponentImplHelper <
- css::ui::dialogs::XFilePicker3,
- css::ui::dialogs::XFilePickerControlAccess,
- css::ui::dialogs::XFilePreview,
- css::lang::XInitialization,
- css::lang::XServiceInfo > CFilePicker_Base;
-
-class CFilePicker :
- public CFilePickerDummy,
- public CFilePicker_Base
-{
-public:
-
- // ctor
- explicit CFilePicker( const css::uno::Reference< css::lang::XMultiServiceFactory >& xServiceMgr );
-
- // XFilePickerNotifier
-
- virtual void SAL_CALL addFilePickerListener( const css::uno::Reference< css::ui::dialogs::XFilePickerListener >& xListener ) override;
- virtual void SAL_CALL removeFilePickerListener( const css::uno::Reference< css::ui::dialogs::XFilePickerListener >& xListener ) override;
-
- // XExecutableDialog functions
-
- virtual void SAL_CALL setTitle( const OUString& aTitle ) override;
-
- virtual sal_Int16 SAL_CALL execute( ) override;
-
- // XFilePicker functions
-
- virtual void SAL_CALL setMultiSelectionMode( sal_Bool bMode ) override;
-
- virtual void SAL_CALL setDefaultName( const OUString& aName ) override;
-
- virtual void SAL_CALL setDisplayDirectory( const OUString& aDirectory ) override;
-
- virtual OUString SAL_CALL getDisplayDirectory( ) override;
-
- virtual css::uno::Sequence< OUString > SAL_CALL getFiles( ) override;
-
- // XFilePicker2 functions
-
- virtual css::uno::Sequence< OUString > SAL_CALL getSelectedFiles( ) override;
-
- // XFilterManager functions
-
- virtual void SAL_CALL appendFilter( const OUString& aTitle, const OUString& aFilter ) override;
-
- virtual void SAL_CALL setCurrentFilter( const OUString& aTitle ) override;
-
- virtual OUString SAL_CALL getCurrentFilter( ) override;
-
- // XFilterGroupManager functions
-
- virtual void SAL_CALL appendFilterGroup( const OUString& sGroupTitle, const css::uno::Sequence< css::beans::StringPair >& aFilters ) override;
-
- // XFilePickerControlAccess functions
-
- virtual void SAL_CALL setValue( sal_Int16 aControlId, sal_Int16 aControlAction, const css::uno::Any& aValue ) override;
-
- virtual css::uno::Any SAL_CALL getValue( sal_Int16 aControlId, sal_Int16 aControlAction ) override;
-
- virtual void SAL_CALL enableControl( sal_Int16 aControlId, sal_Bool bEnable ) override;
-
- virtual void SAL_CALL setLabel( sal_Int16 aControlId, const OUString& aLabel ) override;
-
- virtual OUString SAL_CALL getLabel( sal_Int16 aControlId ) override;
-
- // XFilePreview
-
- virtual css::uno::Sequence< sal_Int16 > SAL_CALL getSupportedImageFormats( ) override;
-
- virtual sal_Int32 SAL_CALL getTargetColorDepth( ) override;
-
- virtual sal_Int32 SAL_CALL getAvailableWidth( ) override;
-
- virtual sal_Int32 SAL_CALL getAvailableHeight( ) override;
-
- virtual void SAL_CALL setImage( sal_Int16 aImageFormat, const css::uno::Any& aImage ) override;
-
- virtual sal_Bool SAL_CALL setShowState( sal_Bool bShowState ) override;
-
- virtual sal_Bool SAL_CALL getShowState( ) override;
-
- // XInitialization
-
- virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) override;
-
- // XCancellable
-
- virtual void SAL_CALL cancel( ) override;
-
- // XEventListener
-
- /// @throws css::uno::RuntimeException
- virtual void SAL_CALL disposing( const css::lang::EventObject& aEvent );
-
- // XServiceInfo
-
- virtual OUString SAL_CALL getImplementationName( ) override;
-
- virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
-
- virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
-
- // FilePicker Event functions
-
- void SAL_CALL fileSelectionChanged( css::ui::dialogs::FilePickerEvent aEvent );
- void SAL_CALL directoryChanged( css::ui::dialogs::FilePickerEvent aEvent );
- OUString SAL_CALL helpRequested( css::ui::dialogs::FilePickerEvent aEvent ) const;
- void SAL_CALL controlStateChanged( css::ui::dialogs::FilePickerEvent aEvent );
- void SAL_CALL dialogSizeChanged( );
-
- bool startupEventNotification(bool bStartupSuspended);
- void shutdownEventNotification();
- void suspendEventNotification();
- void resumeEventNotification();
-
-private:
- // prevent copy and assignment
- CFilePicker( const CFilePicker& );
- CFilePicker& operator=( const CFilePicker& );
-
- using WeakComponentImplHelperBase::disposing;
-
-private:
- css::uno::Reference< css::lang::XMultiServiceFactory > m_xServiceMgr; // to instanciate own services
- CAsyncEventNotifier m_aAsyncEventNotifier;
- std::unique_ptr<CWinFileOpenImpl> m_pImpl;
-};
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/fpicker/source/win32/filepicker/VistaFilePicker.cxx b/fpicker/source/win32/filepicker/VistaFilePicker.cxx
index 05ba2266f103..ebe19f3b42b8 100644
--- a/fpicker/source/win32/filepicker/VistaFilePicker.cxx
+++ b/fpicker/source/win32/filepicker/VistaFilePicker.cxx
@@ -26,7 +26,6 @@
// Without IFileDialogCustomize we can't do much
#ifdef __IFileDialogCustomize_INTERFACE_DEFINED__
-#include "WinFileOpenImpl.hxx"
#include "../misc/WinImplHelper.hxx"
#include "shared.hxx"
diff --git a/fpicker/source/win32/filepicker/WinFileOpenImpl.cxx b/fpicker/source/win32/filepicker/WinFileOpenImpl.cxx
deleted file mode 100644
index 30f20acfee94..000000000000
--- a/fpicker/source/win32/filepicker/WinFileOpenImpl.cxx
+++ /dev/null
@@ -1,830 +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 "shared.hxx"
-#include "WinFileOpenImpl.hxx"
-#include <osl/diagnose.h>
-#include <osl/file.hxx>
-#include <com/sun/star/ui/dialogs/ExtendedFilePickerElementIds.hpp>
-#include <com/sun/star/ui/dialogs/FilePickerEvent.hpp>
-#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
-#include <com/sun/star/ui/dialogs/CommonFilePickerElementIds.hpp>
-#include <com/sun/star/ui/dialogs/FilePreviewImageFormats.hpp>
-#include <com/sun/star/ui/dialogs/ListboxControlActions.hpp>
-#include "../misc/WinImplHelper.hxx"
-
-#include "FilePicker.hxx"
-#include "controlaccess.hxx"
-#include "customcontrolfactory.hxx"
-#include <rtl/ustrbuf.hxx>
-#include <rtl/string.hxx>
-#include <osl/thread.hxx>
-#include "filepickerstate.hxx"
-
-using namespace com::sun::star;
-
-using com::sun::star::ui::dialogs::FilePickerEvent;
-using com::sun::star::lang::IllegalArgumentException;
-using com::sun::star::ui::dialogs::XFilePicker2;
-
-using namespace ::com::sun::star::ui::dialogs::ExtendedFilePickerElementIds;
-using namespace ::com::sun::star::ui::dialogs::CommonFilePickerElementIds;
-using namespace ::com::sun::star::ui::dialogs::ListboxControlActions;
-
-// to distinguish what to do in the enum child window callback function
-
-enum ECW_ACTION_T
-{
- INIT_CUSTOM_CONTROLS,
- CACHE_CONTROL_VALUES
-};
-
-struct EnumParam
-{
- ECW_ACTION_T m_action;
- CWinFileOpenImpl* m_instance;
-
- EnumParam( ECW_ACTION_T action, CWinFileOpenImpl* instance ):
- m_action( action ),
- m_instance( instance )
- {}
-};
-
-CWinFileOpenImpl::CWinFileOpenImpl(
- CFilePicker* aFilePicker,
- bool bFileOpenDialog,
- sal_uInt32 dwFlags,
- sal_uInt32 dwTemplateId,
- HINSTANCE hInstance) :
- CFileOpenDialog(bFileOpenDialog, dwFlags, dwTemplateId, hInstance),
- m_filterContainer(new CFilterContainer()),
- m_Preview(new CPreviewAdapter(hInstance)),
- m_CustomControls(CCustomControlFactory::CreateCustomControlContainer()),
- m_FilePicker(aFilePicker),
- m_bInitialSelChanged(true),
- m_HelpPopupWindow(hInstance, m_hwndFileOpenDlg),
- m_ExecuteFilePickerState(new CExecuteFilePickerState()),
- m_NonExecuteFilePickerState(new CNonExecuteFilePickerState())
-{
- m_FilePickerState = m_NonExecuteFilePickerState;
-}
-
-CWinFileOpenImpl::~CWinFileOpenImpl()
-{
- delete m_ExecuteFilePickerState;
- delete m_NonExecuteFilePickerState;
-}
-
-// we expect the directory in URL format
-
-void CWinFileOpenImpl::setDisplayDirectory(const OUString& aDirectory)
-{
- OUString aSysDirectory;
- if( aDirectory.getLength() > 0)
- {
- if ( ::osl::FileBase::E_None !=
- ::osl::FileBase::getSystemPathFromFileURL(aDirectory,aSysDirectory))
- throw IllegalArgumentException(
- "Invalid directory",
- static_cast<XFilePicker2*>(m_FilePicker), 1);
-
- // we ensure that there is a trailing '/' at the end of
- // he given file url, because the windows functions only
- // works correctly when providing "c:\" or an environment
- // variable like "=c:=c:\.." etc. is set, else the
- // FolderPicker would stand in the root of the shell
- // hierarchy which is the desktop folder
- if ( aSysDirectory.lastIndexOf(BACKSLASH) != (aSysDirectory.getLength() - 1))
- aSysDirectory += BACKSLASH;
- }
-
- // call base class method
- CFileOpenDialog::setDisplayDirectory(aSysDirectory);
-}
-
-// we return the directory in URL format
-
-OUString CWinFileOpenImpl::getDisplayDirectory()
-{
- return m_FilePickerState->getDisplayDirectory(this);
-}
-
-void SAL_CALL CWinFileOpenImpl::setDefaultName(const OUString& aName)
-{
- // we don't set the default name directly
- // because this influences how the file open
- // dialog sets the initial path when it is about
- // to open (see MSDN: OPENFILENAME)
- // so we save the default name which should
- // appear in the file-name-box and set
- // this name when processing onInitDone
- m_defaultName = aName;
-}
-
-// return format: URL
-// if multiselection is allowed there are two different cases
-// 1. one file selected: the sequence contains one entry path\filename.ext
-// 2. multiple files selected: the sequence contains multiple entries
-// the first entry is the path url, all other entries are file names
-
-uno::Sequence<OUString> SAL_CALL CWinFileOpenImpl::getFiles()
-{
- return m_FilePickerState->getFiles(this);
-}
-
-// shows the FileOpen/FileSave dialog
-
-sal_Int16 SAL_CALL CWinFileOpenImpl::execute( )
-{
- sal_Int16 rc = CFileOpenDialog::doModal();
-
- if (1 == rc)
- rc = css::ui::dialogs::ExecutableDialogResults::OK;
- else if (0 == rc)
- rc = css::ui::dialogs::ExecutableDialogResults::CANCEL;
- else
- throw uno::RuntimeException(
- "Error executing dialog",
- static_cast<XFilePicker2*>(m_FilePicker));
-
- return rc;
-}
-
-// appends a new filter
-// returns false if the title (aTitle) was already added or the title or the filter are
-// empty
-
-void SAL_CALL CWinFileOpenImpl::appendFilter(const OUString& aTitle, const OUString& aFilter)
-{
- bool bRet = m_filterContainer->addFilter(aTitle, aFilter);
-
- if (!bRet)
- throw IllegalArgumentException(
- "filter already exists",
- static_cast<XFilePicker2*>(m_FilePicker), 1);
-
- // #95345# see MSDN OPENFILENAME
- // If nFilterIndex is zero and lpstrCustomFilter is NULL,
- // the system uses the first filter in the lpstrFilter buffer.
- // to reflect this we must set the filter index so that calls
- // to getSelectedFilterIndex without explicitly calling
- // setFilterIndex before does not return 0 which leads to a
- // false state
- if (0 == getSelectedFilterIndex())
- CFileOpenDialog::setFilterIndex(1);
-}
-
-// sets a current filter
-
-void SAL_CALL CWinFileOpenImpl::setCurrentFilter(const OUString& aTitle)
-{
- sal_Int32 filterPos = m_filterContainer->getFilterPos(aTitle);
-
- if (filterPos < 0)
- throw IllegalArgumentException(
- "filter doesn't exist",
- static_cast<XFilePicker2*>(m_FilePicker), 1);
-
- // filter index of the base class starts with 1
- CFileOpenDialog::setFilterIndex(filterPos + 1);
-}
-
-// returns the currently selected filter
-
-OUString SAL_CALL CWinFileOpenImpl::getCurrentFilter()
-{
- sal_uInt32 nIndex = getSelectedFilterIndex();
-
- OUString currentFilter;
- if (nIndex > 0)
- {
- // filter index of the base class starts with 1
- if (!m_filterContainer->getFilter(nIndex - 1, currentFilter)) {
- OSL_ASSERT(false);
- }
- }
-
- return currentFilter;
-}
-
-inline void SAL_CALL CWinFileOpenImpl::appendFilterGroupSeparator()
-{
- m_filterContainer->addFilter(FILTER_SEPARATOR, ALL_FILES_WILDCARD, ALLOW_DUPLICATES);
-}
-
-// XFilterGroupManager
-
-void SAL_CALL CWinFileOpenImpl::appendFilterGroup(const OUString& sGroupTitle, const uno::Sequence<beans::StringPair>& aFilters)
-{
- (void) sGroupTitle; // avoid warning
- OSL_ENSURE(0 == sGroupTitle.getLength(), "appendFilterGroup: Parameter 'GroupTitle' currently ignored");
-
- sal_Int32 nFilters = aFilters.getLength();
-
- OSL_PRECOND(nFilters > 0, "Empty filter list");
-
- if (nFilters > 0)
- {
- // append a separator before the next group if
- // there is already a group of filters
- if (m_filterContainer->numFilter() > 0)
- appendFilterGroupSeparator();
-
- for (int i = 0; i < nFilters; i++)
- appendFilter(aFilters[i].First, aFilters[i].Second);
- }
-}
-
-// XExtendedFilePicker
-
-// #i90917: Due to a different feature set for the system-dependent file pickers
-// it's possible that generic code (e.g. sfx2) provides control ids
-// (see ExtendedFilePickerElementIds::LISTBOX_FILTER_SELECTOR) which are NOT
-// available on all platforms. This filter function should filter out control ids
-// which are only available on KDE/GTK file pickers.
-static bool filterControlCommand( sal_Int16 nControlId )
-{
- if ( nControlId == LISTBOX_FILTER_SELECTOR )
- return true;
- return false;
-}
-
-void SAL_CALL CWinFileOpenImpl::setValue(sal_Int16 aControlId, sal_Int16 aControlAction, const uno::Any& aValue)
-{
- OSL_ASSERT(m_FilePickerState);
- if ( !filterControlCommand( aControlId ))
- m_FilePickerState->setValue(aControlId, aControlAction, aValue);
-}
-
-// returns the value of an custom template element
-// we assume that there are only checkboxes or comboboxes
-
-uno::Any SAL_CALL CWinFileOpenImpl::getValue(sal_Int16 aControlId, sal_Int16 aControlAction)
-{
- OSL_ASSERT(m_FilePickerState);
- if ( !filterControlCommand( aControlId ))
- return m_FilePickerState->getValue(aControlId, aControlAction);
- else
- return uno::Any();
-}
-
-// enables a custom template element
-
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list