diff options
author | Tino Rachui <tra@openoffice.org> | 2002-02-21 13:46:49 +0000 |
---|---|---|
committer | Tino Rachui <tra@openoffice.org> | 2002-02-21 13:46:49 +0000 |
commit | b678043dabef6e6971b07c8cd40df9fbbf344130 (patch) | |
tree | f52250b8cbbda90e68d6debaa7f0a63a1281816b /fpicker | |
parent | 0888066f1cdca49b3199bb1a5962d07caa6d10f2 (diff) |
#96112#using new asynceventnotifier, execute method now calls start and stop eventnotifier
Diffstat (limited to 'fpicker')
-rw-r--r-- | fpicker/source/win32/filepicker/FilePicker.cxx | 106 | ||||
-rw-r--r-- | fpicker/source/win32/filepicker/FilePicker.hxx | 8 |
2 files changed, 60 insertions, 54 deletions
diff --git a/fpicker/source/win32/filepicker/FilePicker.cxx b/fpicker/source/win32/filepicker/FilePicker.cxx index cfd37dc69263..75b7f4982100 100644 --- a/fpicker/source/win32/filepicker/FilePicker.cxx +++ b/fpicker/source/win32/filepicker/FilePicker.cxx @@ -2,9 +2,9 @@ * * $RCSfile: FilePicker.cxx,v $ * - * $Revision: 1.11 $ + * $Revision: 1.12 $ * - * last change: $Author: tra $ $Date: 2001-11-15 16:13:08 $ + * last change: $Author: tra $ $Date: 2002-02-21 14:46:49 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -151,7 +151,7 @@ CFilePicker::CFilePicker( const Reference< XMultiServiceFactory >& xServiceMgr ) XCancellable, XEventListener, XServiceInfo >( m_rbHelperMtx ), - m_aAsyncEventNotifier( rBHelper ) + m_aAsyncEventNotifier(rBHelper) { HINSTANCE hInstance = GetModuleHandleA( FILE_PICKER_DLL_NAME ); OSL_POSTCOND( hInstance, "The name of the service dll must have changed" ); @@ -215,10 +215,8 @@ void SAL_CALL CFilePicker::disposing( const EventObject& aEvent ) throw(RuntimeE void SAL_CALL CFilePicker::fileSelectionChanged( FilePickerEvent aEvent ) { - CAsyncFilePickerEventNotifier::FilePickerEventListenerMethod_t pfncFPListener = &XFilePickerListener::fileSelectionChanged; - aEvent.Source = Reference< XInterface > ( - static_cast< XFilePickerNotifier* >( - const_cast< CFilePicker* >( this ) ) ); + CAsyncEventNotifier::EventListenerMethod_t pfncFPListener = &XFilePickerListener::fileSelectionChanged; + aEvent.Source = Reference<XInterface>(static_cast<XFilePickerNotifier*>(this)); notifyAllListener( pfncFPListener, aEvent ); } @@ -228,14 +226,42 @@ void SAL_CALL CFilePicker::fileSelectionChanged( FilePickerEvent aEvent ) void SAL_CALL CFilePicker::directoryChanged( FilePickerEvent aEvent ) { - CAsyncFilePickerEventNotifier::FilePickerEventListenerMethod_t pfncFPListener = &XFilePickerListener::directoryChanged; - aEvent.Source = Reference< XInterface > ( - static_cast< XFilePickerNotifier* >( - const_cast< CFilePicker* >( this ) ) ); + CAsyncEventNotifier::EventListenerMethod_t pfncFPListener = &XFilePickerListener::directoryChanged; + aEvent.Source = Reference<XInterface>(static_cast<XFilePickerNotifier*>(this)); notifyAllListener( pfncFPListener, aEvent ); } //----------------------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------------------- + +void SAL_CALL CFilePicker::controlStateChanged( FilePickerEvent aEvent ) +{ + CAsyncEventNotifier::EventListenerMethod_t pfncFPListener = &XFilePickerListener::controlStateChanged; + aEvent.Source = Reference<XInterface>(static_cast<XFilePickerNotifier*>(this)); + notifyAllListener( pfncFPListener, aEvent ); +} + +//----------------------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------------------- + +void SAL_CALL CFilePicker::dialogSizeChanged( ) +{ + // not yet implemented +} + +//----------------------------------------------------------------------------------------- +// +//----------------------------------------------------------------------------------------- + +void SAL_CALL CFilePicker::notifyAllListener( CAsyncEventNotifier::EventListenerMethod_t pfncFPListener, FilePickerEvent aEvent ) +{ + OSL_ASSERT(pfncFPListener); + m_aAsyncEventNotifier.notifyEvent(pfncFPListener, aEvent); +} + +//----------------------------------------------------------------------------------------- // If there are more then one listener the return value of the last one wins //----------------------------------------------------------------------------------------- @@ -291,39 +317,6 @@ OUString SAL_CALL CFilePicker::helpRequested( FilePickerEvent aEvent ) const return aHelpText; } -//----------------------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------------------- - -void SAL_CALL CFilePicker::controlStateChanged( FilePickerEvent aEvent ) -{ - CAsyncFilePickerEventNotifier::FilePickerEventListenerMethod_t pfncFPListener = &XFilePickerListener::controlStateChanged; - aEvent.Source = Reference< XInterface > ( - static_cast< XFilePickerNotifier* >( - const_cast< CFilePicker* >( this ) ) ); - notifyAllListener( pfncFPListener, aEvent ); -} - -//----------------------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------------------- - -void SAL_CALL CFilePicker::dialogSizeChanged( ) -{ - // not yet implemented -} - -//----------------------------------------------------------------------------------------- -// -//----------------------------------------------------------------------------------------- - -void SAL_CALL CFilePicker::notifyAllListener( CAsyncFilePickerEventNotifier::FilePickerEventListenerMethod_t pfncFPListener, FilePickerEvent aEvent ) -{ - OSL_ASSERT( pfncFPListener ); - - m_aAsyncEventNotifier.notifyEvent( pfncFPListener, aEvent ); -} - //------------------------------------------------------------------------------------ // XFilePicker functions //------------------------------------------------------------------------------------ @@ -445,13 +438,26 @@ Sequence< OUString > SAL_CALL CFilePicker::getFiles( ) throw(RuntimeException) sal_Int16 SAL_CALL CFilePicker::execute( ) throw(RuntimeException) { - OSL_ASSERT( 0 != m_pImpl.get( ) ); + OSL_ASSERT(0 != m_pImpl.get()); + + sal_Int16 ret = 0; + + if (m_aAsyncEventNotifier.start()) + { + // 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( ); + + m_aAsyncEventNotifier.stop(); + } + else + { + OSL_ENSURE(sal_False, "Could not start event notifier thread!"); + } - // 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 !!!!! - return m_pImpl->execute( ); + return ret; } //------------------------------------------------------------------------------------ diff --git a/fpicker/source/win32/filepicker/FilePicker.hxx b/fpicker/source/win32/filepicker/FilePicker.hxx index 5653e01ae89d..3594d67ef22f 100644 --- a/fpicker/source/win32/filepicker/FilePicker.hxx +++ b/fpicker/source/win32/filepicker/FilePicker.hxx @@ -2,9 +2,9 @@ * * $RCSfile: FilePicker.hxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: tra $ $Date: 2001-11-15 16:02:10 $ + * last change: $Author: tra $ $Date: 2002-02-21 14:46:49 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -296,7 +296,7 @@ public: void SAL_CALL dialogSizeChanged( ); private: - void SAL_CALL notifyAllListener( CAsyncFilePickerEventNotifier::FilePickerEventListenerMethod_t pfncFPListener, ::com::sun::star::ui::dialogs::FilePickerEvent aEvent ); + void SAL_CALL notifyAllListener( CAsyncEventNotifier::EventListenerMethod_t pfncFPListener, ::com::sun::star::ui::dialogs::FilePickerEvent aEvent ); private: // prevent copy and assignment @@ -306,7 +306,7 @@ private: private: ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_xServiceMgr; // to instanciate own services std::auto_ptr< CWinFileOpenImpl > m_pImpl; - CAsyncFilePickerEventNotifier m_aAsyncEventNotifier; + CAsyncEventNotifier m_aAsyncEventNotifier; }; #endif |