From f085b5651bbcd902061208b8f9834515f86da5bd Mon Sep 17 00:00:00 2001 From: Jens-Heiner Rechtien Date: Mon, 10 May 2004 16:52:20 +0000 Subject: INTEGRATION: CWS fwkbugfix02 (1.2.10); FILE MERGED 2004/04/14 16:58:33 mav 1.2.10.2: #116355# Save copy as 2004/04/07 16:34:49 mav 1.2.10.1: #116056# adopt to incompatible changes --- embeddedobj/source/general/intercept.cxx | 74 ++++++++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 4 deletions(-) (limited to 'embeddedobj/source/general/intercept.cxx') diff --git a/embeddedobj/source/general/intercept.cxx b/embeddedobj/source/general/intercept.cxx index 880fb548e1cd..75f154347670 100644 --- a/embeddedobj/source/general/intercept.cxx +++ b/embeddedobj/source/general/intercept.cxx @@ -2,9 +2,9 @@ * * $RCSfile: intercept.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: mav $ $Date: 2003-10-29 12:59:21 $ + * last change: $Author: hr $ $Date: 2004-05-10 17:52:20 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -74,7 +74,7 @@ using namespace ::com::sun::star; -#define IUL 5 +#define IUL 6 uno::Sequence< ::rtl::OUString > Interceptor::m_aInterceptedURL(IUL); @@ -181,6 +181,9 @@ Interceptor::Interceptor( DocumentHolder* pDocHolder ) RTL_CONSTASCII_USTRINGPARAM(".uno:CloseWin")); m_aInterceptedURL[4] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(".uno:CloseFrame")); + m_aInterceptedURL[5] = rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM(".uno:SaveAs")); + } @@ -212,12 +215,39 @@ Interceptor::dispatch( URL.Complete == m_aInterceptedURL[4]) { try { - m_pDocHolder->GetEmbedObject()->changeState( embed::EmbedStates::EMBED_RUNNING ); + m_pDocHolder->GetEmbedObject()->changeState( embed::EmbedStates::RUNNING ); } catch( uno::Exception& ) { } } + else if ( URL.Complete == m_aInterceptedURL[5] ) + { + uno::Sequence< beans::PropertyValue > aNewArgs = Arguments; + sal_Int32 nInd = 0; + + while( nInd < aNewArgs.getLength() ) + { + if ( aNewArgs[nInd].Name.equalsAscii( "SaveTo" ) ) + { + aNewArgs[nInd].Value <<= sal_True; + break; + } + nInd++; + } + + if ( nInd == aNewArgs.getLength() ) + { + aNewArgs.realloc( nInd + 1 ); + aNewArgs[nInd].Name = ::rtl::OUString::createFromAscii( "SaveTo" ); + aNewArgs[nInd].Value <<= sal_True; + } + + uno::Reference< frame::XDispatch > xDispatch = m_xSlaveDispatchProvider->queryDispatch( + URL, ::rtl::OUString::createFromAscii( "_self" ), 0 ); + if ( xDispatch.is() ) + xDispatch->dispatch( URL, aNewArgs ); + } } void Interceptor::GenerateFeatureStateEvent() @@ -249,6 +279,14 @@ void Interceptor::GenerateFeatureStateEvent() RTL_CONSTASCII_USTRINGPARAM("($1) ")) + m_pDocHolder->GetTitle() ); } + else if ( i == 5 ) + { + aStateEvent.FeatureURL.Complete = m_aInterceptedURL[5]; + aStateEvent.FeatureDescriptor = rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM("SaveCopyTo")); + aStateEvent.State <<= (rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM("($3)"))); + } else { aStateEvent.FeatureURL.Complete = m_aInterceptedURL[i]; @@ -331,6 +369,29 @@ Interceptor::addStatusListener( m_pStatCL->addInterface(URL.Complete,Control); return; } + + if(URL.Complete == m_aInterceptedURL[5]) + { // SaveAs + frame::FeatureStateEvent aStateEvent; + aStateEvent.FeatureURL.Complete = m_aInterceptedURL[5]; + aStateEvent.FeatureDescriptor = rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM("SaveCopyTo")); + aStateEvent.IsEnabled = sal_True; + aStateEvent.Requery = sal_False; + aStateEvent.State <<= (rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("($3)"))); + Control->statusChanged(aStateEvent); + + { + osl::MutexGuard aGuard(m_aMutex); + if(!m_pStatCL) + m_pStatCL = + new StatusChangeListenerContainer(m_aMutex); + } + + m_pStatCL->addInterface(URL.Complete,Control); + return; + } + } @@ -388,6 +449,8 @@ Interceptor::queryDispatch( return (frame::XDispatch*)this; else if(URL.Complete == m_aInterceptedURL[4]) return (frame::XDispatch*)this; + else if(URL.Complete == m_aInterceptedURL[5]) + return (frame::XDispatch*)this; else { if(m_xSlaveDispatchProvider.is()) return m_xSlaveDispatchProvider->queryDispatch( @@ -422,6 +485,8 @@ Interceptor::queryDispatches( aRet[i] = (frame::XDispatch*) this; else if(m_aInterceptedURL[4] == Requests[i].FeatureURL.Complete) aRet[i] = (frame::XDispatch*) this; + else if(m_aInterceptedURL[5] == Requests[i].FeatureURL.Complete) + aRet[i] = (frame::XDispatch*) this; return aRet; } @@ -473,3 +538,4 @@ Interceptor::setMasterDispatchProvider( osl::MutexGuard aGuard(m_aMutex); m_xMasterDispatchProvider = NewSupplier; } + -- cgit