diff options
author | Rüdiger Timm <rt@openoffice.org> | 2008-03-12 06:32:25 +0000 |
---|---|---|
committer | Rüdiger Timm <rt@openoffice.org> | 2008-03-12 06:32:25 +0000 |
commit | 38a5f6c5ed4180efca9df242e26c34f8ffd92823 (patch) | |
tree | 9f961b14183e4b383d18bbccc5d1c7953b6cccae /fpicker/source/win32/filepicker/VistaFilePicker.hxx | |
parent | 46e1adb545ff94031dfa7e5028449d26c7fb2223 (diff) |
INTEGRATION: CWS hro34 (1.1.4); FILE ADDED
2008/03/07 10:38:14 hro 1.1.4.2: #i78851# #i72556# Implemented Vista style File Dialog
2007/08/30 14:09:30 hro 1.1.4.1: file VistaFilePicker.hxx was added on branch cws_dev300_hro34 on 2008-03-07 10:38:14 +0000
Diffstat (limited to 'fpicker/source/win32/filepicker/VistaFilePicker.hxx')
-rw-r--r-- | fpicker/source/win32/filepicker/VistaFilePicker.hxx | 321 |
1 files changed, 321 insertions, 0 deletions
diff --git a/fpicker/source/win32/filepicker/VistaFilePicker.hxx b/fpicker/source/win32/filepicker/VistaFilePicker.hxx new file mode 100644 index 000000000000..9abc64d95be0 --- /dev/null +++ b/fpicker/source/win32/filepicker/VistaFilePicker.hxx @@ -0,0 +1,321 @@ +/************************************************************************* + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: VistaFilePicker.hxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: rt $ $Date: 2008-03-12 07:32:25 $ + * + * The Contents of this file are made available subject to + * the terms of GNU Lesser General Public License Version 2.1. + * + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2005 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + ************************************************************************/ + +#ifndef FPICKER_WIN32_VISTA_FILEPICKER_HXX +#define FPICKER_WIN32_VISTA_FILEPICKER_HXX + +//----------------------------------------------------------------------------- +// includes +//----------------------------------------------------------------------------- + +#include "asyncrequests.hxx" +#include "VistaFilePickerImpl.hxx" +#include "VistaFilePickerEventHandler.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/XFilePicker.hpp> +#include <com/sun/star/ui/dialogs/XFilePicker2.hpp> +#include <com/sun/star/ui/dialogs/XFilePickerNotifier.hpp> +#include <com/sun/star/ui/dialogs/XFilterManager.hpp> +#include <com/sun/star/ui/dialogs/XFilterGroupManager.hpp> +#include <com/sun/star/ui/dialogs/XFilePickerControlAccess.hpp> +#include <com/sun/star/ui/dialogs/XFilePreview.hpp> +#include <com/sun/star/util/XCancellable.hpp> + +#include <cppuhelper/compbase10.hxx> +#include <cppuhelper/basemutex.hxx> +#include <rtl/ustring.hxx> + +//----------------------------------------------------------------------------- +// namespace +//----------------------------------------------------------------------------- + +#ifdef css + #error "Clash on using CSS as namespace define." +#else + #define css ::com::sun::star +#endif + +namespace fpicker{ +namespace win32{ +namespace vista{ + +//----------------------------------------------------------------------------- +// types +//----------------------------------------------------------------------------- + +typedef ::cppu::WeakComponentImplHelper10< + css::ui::dialogs::XFilePicker2, + css::ui::dialogs::XFilterManager, + css::ui::dialogs::XFilterGroupManager, + css::ui::dialogs::XFilePickerControlAccess, + css::ui::dialogs::XFilePickerNotifier, + css::ui::dialogs::XFilePreview, + css::lang::XInitialization, + css::util::XCancellable, + css::lang::XEventListener, + css::lang::XServiceInfo > TVistaFilePickerBase; + +//----------------------------------------------------------------------------- +/** Implements the XFilePicker & friends interface(s) + for Windos Vista and upcoming versions. + + Note: This will be an UNO wrapper for the real file picker + implementation oly. The real implementation is done in class + VistaFilePickerImpl. + */ +class VistaFilePicker : public ::cppu::BaseMutex + , public TVistaFilePickerBase +{ +public: + + //------------------------------------------------------------------------------------ + // ctor/dtor + //------------------------------------------------------------------------------------ + + VistaFilePicker( const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR ); + virtual ~VistaFilePicker(); + + //------------------------------------------------------------------------------------ + // XFilePickerNotifier + //------------------------------------------------------------------------------------ + + virtual void SAL_CALL addFilePickerListener( const css::uno::Reference< css::ui::dialogs::XFilePickerListener >& xListener ) + throw( css::uno::RuntimeException ); + + virtual void SAL_CALL removeFilePickerListener( const css::uno::Reference< css::ui::dialogs::XFilePickerListener >& xListener ) + throw( css::uno::RuntimeException ); + + //------------------------------------------------------------------------------------ + // XExecutableDialog functions + //------------------------------------------------------------------------------------ + + virtual void SAL_CALL setTitle( const ::rtl::OUString& sTitle ) + throw( css::uno::RuntimeException ); + + virtual sal_Int16 SAL_CALL execute( ) + throw( css::uno::RuntimeException ); + + //------------------------------------------------------------------------------------ + // XFilePicker functions + //------------------------------------------------------------------------------------ + + virtual void SAL_CALL setMultiSelectionMode( sal_Bool bMode ) + throw( css::uno::RuntimeException ); + + virtual void SAL_CALL setDefaultName( const ::rtl::OUString& sName ) + throw (css::lang::IllegalArgumentException, + css::uno::RuntimeException ); + + virtual void SAL_CALL setDisplayDirectory( const ::rtl::OUString& sDirectory ) + throw (css::lang::IllegalArgumentException, + css::uno::RuntimeException ); + + virtual ::rtl::OUString SAL_CALL getDisplayDirectory( ) + throw( css::uno::RuntimeException ); + + virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL getFiles( ) + throw( css::uno::RuntimeException ); + + //------------------------------------------------------------------------------------ + // XFilePicker2 functions + //------------------------------------------------------------------------------------ + + virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL getSelectedFiles( ) + throw( css::uno::RuntimeException ); + + //------------------------------------------------------------------------------------ + // XFilterManager functions + //------------------------------------------------------------------------------------ + + virtual void SAL_CALL appendFilter( const ::rtl::OUString& sTitle , + const ::rtl::OUString& sFilter ) + throw (css::lang::IllegalArgumentException, + css::uno::RuntimeException ); + + virtual void SAL_CALL setCurrentFilter( const ::rtl::OUString& sTitle ) + throw (css::lang::IllegalArgumentException, + css::uno::RuntimeException ); + + virtual ::rtl::OUString SAL_CALL getCurrentFilter( ) + throw( css::uno::RuntimeException ); + + //------------------------------------------------------------------------------------ + // XFilterGroupManager functions + //------------------------------------------------------------------------------------ + + virtual void SAL_CALL appendFilterGroup( const ::rtl::OUString& sGroupTitle, + const css::uno::Sequence< css::beans::StringPair >& lFilters ) + throw (css::lang::IllegalArgumentException, + css::uno::RuntimeException ); + + //------------------------------------------------------------------------------------ + // XFilePickerControlAccess functions + //------------------------------------------------------------------------------------ + + virtual void SAL_CALL setValue( sal_Int16 nControlId , + sal_Int16 nControlAction, + const css::uno::Any& aValue ) + throw (css::uno::RuntimeException); + + virtual css::uno::Any SAL_CALL getValue( sal_Int16 nControlId , + sal_Int16 nControlAction ) + throw (css::uno::RuntimeException); + + virtual void SAL_CALL enableControl( sal_Int16 nControlId, + sal_Bool bEnable ) + throw(css::uno::RuntimeException ); + + virtual void SAL_CALL setLabel( sal_Int16 nControlId, + const ::rtl::OUString& sLabel ) + throw (css::uno::RuntimeException); + + virtual ::rtl::OUString SAL_CALL getLabel( sal_Int16 nControlId ) + throw (css::uno::RuntimeException); + + //------------------------------------------------ + // XFilePreview + //------------------------------------------------ + + virtual css::uno::Sequence< sal_Int16 > SAL_CALL getSupportedImageFormats( ) + throw (css::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getTargetColorDepth( ) + throw (css::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getAvailableWidth( ) + throw (css::uno::RuntimeException); + + virtual sal_Int32 SAL_CALL getAvailableHeight( ) + throw (css::uno::RuntimeException); + + virtual void SAL_CALL setImage( sal_Int16 nImageFormat, + const css::uno::Any& aImage ) + throw (css::lang::IllegalArgumentException, css::uno::RuntimeException); + + virtual sal_Bool SAL_CALL setShowState( sal_Bool bShowState ) + throw (css::uno::RuntimeException); + + virtual sal_Bool SAL_CALL getShowState( ) + throw (css::uno::RuntimeException); + + //------------------------------------------------ + // XInitialization + //------------------------------------------------ + + virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& lArguments ) + throw(css::uno::Exception , + css::uno::RuntimeException); + + //------------------------------------------------ + // XCancellable + //------------------------------------------------ + + virtual void SAL_CALL cancel( ); + + //------------------------------------------------ + // XEventListener + //------------------------------------------------ + + virtual void SAL_CALL disposing( const css::lang::EventObject& aEvent ) + throw(css::uno::RuntimeException); + + //------------------------------------------------ + // XServiceInfo + //------------------------------------------------ + + virtual ::rtl::OUString SAL_CALL getImplementationName( ) + throw(css::uno::RuntimeException); + + virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) + throw(css::uno::RuntimeException); + + virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) + throw(css::uno::RuntimeException); + + /* + //------------------------------------------------------------------------------------ + // FilePicker Event functions + //------------------------------------------------------------------------------------ + + void SAL_CALL fileSelectionChanged(const css::ui::dialogs::FilePickerEvent& aEvent ); + void SAL_CALL directoryChanged(const css::ui::dialogs::FilePickerEvent& aEvent ); + ::rtl::OUString SAL_CALL helpRequested(const css::ui::dialogs::FilePickerEvent& aEvent ) const; + void SAL_CALL controlStateChanged(const css::ui::dialogs::FilePickerEvent& aEvent ); + void SAL_CALL dialogSizeChanged( ); + + bool startupEventNotification(bool bStartupSuspended); + void shutdownEventNotification(); + void suspendEventNotification(); + void resumeEventNotification(); + */ + + private: + + // prevent copy and assignment + VistaFilePicker( const VistaFilePicker& ); + VistaFilePicker& operator=( const VistaFilePicker& ); + + using WeakComponentImplHelperBase::disposing; + + private: + + //--------------------------------------------------------------------- + /// service manager to create own used uno services + css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR; + + //--------------------------------------------------------------------- + css::uno::Sequence< ::rtl::OUString > m_lLastFiles; + + //--------------------------------------------------------------------- + /** execute the COM dialog within a STA thread + * Must be used on the heap ... because it's implemented as OSL thread .-) + */ + RequestHandlerRef m_rDialog; + AsyncRequests m_aAsyncExecute; + + //--------------------------------------------------------------------- + oslThreadIdentifier m_nFilePickerThreadId; +}; + +} // namespace vista +} // namespace win32 +} // namespace fpicker + +#undef css + +#endif // FPICKER_WIN32_VISTA_FILEPICKER_HXX |