summaryrefslogtreecommitdiff
path: root/fpicker
diff options
context:
space:
mode:
authorTino Rachui <tra@openoffice.org>2002-02-21 13:46:49 +0000
committerTino Rachui <tra@openoffice.org>2002-02-21 13:46:49 +0000
commitb678043dabef6e6971b07c8cd40df9fbbf344130 (patch)
treef52250b8cbbda90e68d6debaa7f0a63a1281816b /fpicker
parent0888066f1cdca49b3199bb1a5962d07caa6d10f2 (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.cxx106
-rw-r--r--fpicker/source/win32/filepicker/FilePicker.hxx8
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