diff options
Diffstat (limited to 'sd/source/ui/unoidl')
31 files changed, 0 insertions, 17523 deletions
diff --git a/sd/source/ui/unoidl/DrawController.cxx b/sd/source/ui/unoidl/DrawController.cxx deleted file mode 100644 index 02d0225de..000000000 --- a/sd/source/ui/unoidl/DrawController.cxx +++ /dev/null @@ -1,929 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" - -#include "DrawController.hxx" -#include "DrawDocShell.hxx" - -#include "DrawSubController.hxx" -#include "sdpage.hxx" -#include "ViewShellBase.hxx" -#include "ViewShellManager.hxx" -#include "FormShellManager.hxx" -#include "Window.hxx" - -#include <comphelper/anytostring.hxx> -#include <comphelper/processfactory.hxx> -#include <comphelper/sequence.hxx> -#include <comphelper/stl_types.hxx> -#include <comphelper/servicehelper.hxx> -#include <cppuhelper/exc_hlp.hxx> -#include <cppuhelper/bootstrap.hxx> - -#include <com/sun/star/beans/PropertyAttribute.hpp> -#include <com/sun/star/drawing/framework/ConfigurationController.hpp> -#include <com/sun/star/drawing/framework/ModuleController.hpp> -#include <com/sun/star/lang/XInitialization.hpp> - -#include "slideshow.hxx" - -#include <svx/fmshell.hxx> -#include <osl/mutex.hxx> -#include <vcl/svapp.hxx> -#include <boost/shared_ptr.hpp> - -using namespace ::std; -using ::rtl::OUString; -using namespace ::cppu; -using namespace ::com::sun::star; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::drawing::framework; - -namespace sd { - -DrawController::DrawController (ViewShellBase& rBase) throw() - : DrawControllerInterfaceBase(&rBase), - BroadcastHelperOwner(SfxBaseController::m_aMutex), - OPropertySetHelper( static_cast<OBroadcastHelperVar< - OMultiTypeInterfaceContainerHelper, - OMultiTypeInterfaceContainerHelper::keyType>& >( - BroadcastHelperOwner::maBroadcastHelper)), - m_aSelectionTypeIdentifier( - ::getCppuType( (Reference<view::XSelectionChangeListener > *)0 )), - mpBase(&rBase), - maLastVisArea(), - mpCurrentPage(NULL), - mbMasterPageMode(false), - mbLayerMode(false), - mbDisposing(false), - mpPropertyArrayHelper(NULL), - mxSubController(), - mxConfigurationController(), - mxModuleController() -{ - ProvideFrameworkControllers(); -} - - - - -DrawController::~DrawController (void) throw() -{ -} - - - - -void DrawController::SetSubController ( - const Reference<drawing::XDrawSubController>& rxSubController) -{ - // Update the internal state. - mxSubController = rxSubController; - mpPropertyArrayHelper.reset(); - maLastVisArea = Rectangle(); - - // Inform listeners about the changed state. - FireSelectionChangeListener(); -} - - - - -// XInterface - -IMPLEMENT_FORWARD_XINTERFACE2( - DrawController, - DrawControllerInterfaceBase, - OPropertySetHelper); - - -// XTypeProvider - -Sequence<Type> SAL_CALL DrawController::getTypes (void) - throw (::com::sun::star::uno::RuntimeException) -{ - ThrowIfDisposed(); - // OPropertySetHelper does not provide getTypes, so we have to - // implement this method manually and list its three interfaces. - OTypeCollection aTypeCollection ( - ::getCppuType (( const Reference<beans::XMultiPropertySet>*)NULL), - ::getCppuType (( const Reference<beans::XFastPropertySet>*)NULL), - ::getCppuType (( const Reference<beans::XPropertySet>*)NULL)); - - return ::comphelper::concatSequences( - SfxBaseController::getTypes(), - aTypeCollection.getTypes(), - DrawControllerInterfaceBase::getTypes()); -} - -IMPLEMENT_GET_IMPLEMENTATION_ID(DrawController); - - - -// XComponent - - -void SAL_CALL DrawController::dispose (void) - throw( RuntimeException ) -{ - if( !mbDisposing ) - { - SolarMutexGuard aGuard; - - if( !mbDisposing ) - { - mbDisposing = true; - - boost::shared_ptr<ViewShell> pViewShell; - if (mpBase) - pViewShell = mpBase->GetMainViewShell(); - if ( pViewShell ) - { - pViewShell->DeactivateCurrentFunction(); - DrawDocShell* pDocShell = pViewShell->GetDocSh(); - if ( pDocShell != NULL ) - pDocShell->SetDocShellFunction(0); - } - pViewShell.reset(); - - // When the controller has not been detached from its view - // shell, i.e. mpViewShell is not NULL, then tell PaneManager - // and ViewShellManager to clear the shell stack. - if (mxSubController.is() && mpBase!=NULL) - { - mpBase->DisconnectAllClients(); - mpBase->GetViewShellManager()->Shutdown(); - } - - OPropertySetHelper::disposing(); - - DisposeFrameworkControllers(); - - SfxBaseController::dispose(); - } - } -} - - - - -void SAL_CALL DrawController::addEventListener( - const Reference<lang::XEventListener >& xListener) - throw (RuntimeException) -{ - ThrowIfDisposed(); - SfxBaseController::addEventListener( xListener ); -} - - - - -void SAL_CALL DrawController::removeEventListener ( - const Reference<lang::XEventListener >& aListener) - throw (RuntimeException) -{ - if(!rBHelper.bDisposed && !rBHelper.bInDispose && !mbDisposing) - SfxBaseController::removeEventListener( aListener ); -} - -// XController -::sal_Bool SAL_CALL DrawController::suspend( ::sal_Bool Suspend ) throw (::com::sun::star::uno::RuntimeException) -{ - if( Suspend ) - { - ViewShellBase* pViewShellBase = GetViewShellBase(); - if( pViewShellBase ) - { - // do not allow suspend if a slideshow needs this controller! - rtl::Reference< SlideShow > xSlideShow( SlideShow::GetSlideShow( *pViewShellBase ) ); - if( xSlideShow.is() && xSlideShow->dependsOn(pViewShellBase) ) - return sal_False; - } - } - - return SfxBaseController::suspend( Suspend ); -} - - -// XServiceInfo - -OUString SAL_CALL DrawController::getImplementationName( ) throw(RuntimeException) -{ - // Do not throw an excepetion at the moment. This leads to a crash - // under Solaris on relead. See issue i70929 for details. - // ThrowIfDisposed(); - return OUString( RTL_CONSTASCII_USTRINGPARAM( "DrawController" ) ); -} - - - -static OUString ssServiceName (RTL_CONSTASCII_USTRINGPARAM( - "com.sun.star.drawing.DrawingDocumentDrawView")); - -sal_Bool SAL_CALL DrawController::supportsService ( - const OUString& rsServiceName) - throw(RuntimeException) -{ - // Do not throw an excepetion at the moment. This leads to a crash - // under Solaris on relead. See issue i70929 for details. - // ThrowIfDisposed(); - return rsServiceName.equals(ssServiceName); -} - - - - -Sequence<OUString> SAL_CALL DrawController::getSupportedServiceNames (void) - throw(RuntimeException) -{ - ThrowIfDisposed(); - Sequence<OUString> aSupportedServices (1); - OUString* pServices = aSupportedServices.getArray(); - pServices[0] = ssServiceName; - return aSupportedServices; -} - - - - -//------ XSelectionSupplier -------------------------------------------- - -sal_Bool SAL_CALL DrawController::select (const Any& aSelection) - throw(lang::IllegalArgumentException, RuntimeException) -{ - ThrowIfDisposed(); - SolarMutexGuard aGuard; - - if (mxSubController.is()) - return mxSubController->select(aSelection); - else - return false; -} - - - - -Any SAL_CALL DrawController::getSelection() - throw(RuntimeException) -{ - ThrowIfDisposed(); - SolarMutexGuard aGuard; - - if (mxSubController.is()) - return mxSubController->getSelection(); - else - return Any(); -} - - - - -void SAL_CALL DrawController::addSelectionChangeListener( - const Reference< view::XSelectionChangeListener >& xListener) - throw(RuntimeException) -{ - if( mbDisposing ) - throw lang::DisposedException(); - - BroadcastHelperOwner::maBroadcastHelper.addListener (m_aSelectionTypeIdentifier, xListener); -} - - - - -void SAL_CALL DrawController::removeSelectionChangeListener( - const Reference< view::XSelectionChangeListener >& xListener ) - throw(RuntimeException) -{ - if (rBHelper.bDisposed) - throw lang::DisposedException(); - - BroadcastHelperOwner::maBroadcastHelper.removeListener (m_aSelectionTypeIdentifier, xListener); -} - - - - - -//===== lang::XEventListener ================================================ - -void SAL_CALL - DrawController::disposing (const lang::EventObject& ) - throw (uno::RuntimeException) -{ -} - - - - -//===== view::XSelectionChangeListener ====================================== - -void SAL_CALL - DrawController::selectionChanged (const lang::EventObject& rEvent) - throw (uno::RuntimeException) -{ - ThrowIfDisposed(); - // Have to forward the event to our selection change listeners. - OInterfaceContainerHelper* pListeners = BroadcastHelperOwner::maBroadcastHelper.getContainer( - ::getCppuType((Reference<view::XSelectionChangeListener>*)0)); - if (pListeners) - { - // Re-send the event to all of our listeners. - OInterfaceIteratorHelper aIterator (*pListeners); - while (aIterator.hasMoreElements()) - { - try - { - view::XSelectionChangeListener* pListener = - static_cast<view::XSelectionChangeListener*>( - aIterator.next()); - if (pListener != NULL) - pListener->selectionChanged (rEvent); - } - catch (const RuntimeException&) - { - } - } - } -} - - - - -// XDrawView - -void SAL_CALL DrawController::setCurrentPage( const Reference< drawing::XDrawPage >& xPage ) - throw(RuntimeException) -{ - ThrowIfDisposed(); - SolarMutexGuard aGuard; - - if (mxSubController.is()) - mxSubController->setCurrentPage(xPage); -} - - - - -Reference< drawing::XDrawPage > SAL_CALL DrawController::getCurrentPage (void) - throw(RuntimeException) -{ - ThrowIfDisposed(); - SolarMutexGuard aGuard; - Reference<drawing::XDrawPage> xPage; - - // Get current page from sub controller. - if (mxSubController.is()) - xPage = mxSubController->getCurrentPage(); - - // When there is not yet a sub controller (during initialization) then fall back - // to the current page in mpCurrentPage. - if ( ! xPage.is() && mpCurrentPage.is()) - xPage = Reference<drawing::XDrawPage>(mpCurrentPage->getUnoPage(), UNO_QUERY); - - return xPage; -} - - - - -void DrawController::FireVisAreaChanged (const Rectangle& rVisArea) throw() -{ - if( maLastVisArea != rVisArea ) - { - Any aNewValue; - aNewValue <<= awt::Rectangle( - rVisArea.Left(), - rVisArea.Top(), - rVisArea.GetWidth(), - rVisArea.GetHeight() ); - - Any aOldValue; - aOldValue <<= awt::Rectangle( - maLastVisArea.Left(), - maLastVisArea.Top(), - maLastVisArea.GetWidth(), - maLastVisArea.GetHeight() ); - - FirePropertyChange (PROPERTY_WORKAREA, aNewValue, aOldValue); - - maLastVisArea = rVisArea; - } -} - - - - -void DrawController::FireSelectionChangeListener() throw() -{ - OInterfaceContainerHelper * pLC = BroadcastHelperOwner::maBroadcastHelper.getContainer( - m_aSelectionTypeIdentifier); - if( pLC ) - { - Reference< XInterface > xSource( (XWeak*)this ); - const lang::EventObject aEvent( xSource ); - - // Ueber alle Listener iterieren und Events senden - OInterfaceIteratorHelper aIt( *pLC); - while( aIt.hasMoreElements() ) - { - try - { - view::XSelectionChangeListener * pL = - static_cast<view::XSelectionChangeListener*>(aIt.next()); - if (pL != NULL) - pL->selectionChanged( aEvent ); - } - catch (const RuntimeException&) - { - } - } - } -} - - - - -void DrawController::FireChangeEditMode (bool bMasterPageMode) throw() -{ - if (bMasterPageMode != mbMasterPageMode ) - { - FirePropertyChange( - PROPERTY_MASTERPAGEMODE, - makeAny(bMasterPageMode), - makeAny(mbMasterPageMode)); - - mbMasterPageMode = bMasterPageMode; - } -} - - - - -void DrawController::FireChangeLayerMode (bool bLayerMode) throw() -{ - if (bLayerMode != mbLayerMode) - { - FirePropertyChange( - PROPERTY_LAYERMODE, - makeAny(bLayerMode), - makeAny(mbLayerMode)); - - mbLayerMode = bLayerMode; - } -} - - - - -void DrawController::FireSwitchCurrentPage (SdPage* pNewCurrentPage) throw() -{ - SdrPage* pCurrentPage = mpCurrentPage.get(); - if (pNewCurrentPage != pCurrentPage) - { - try - { - Any aNewValue ( - makeAny(Reference<drawing::XDrawPage>(pNewCurrentPage->getUnoPage(), UNO_QUERY))); - - Any aOldValue; - if (pCurrentPage != NULL) - { - Reference<drawing::XDrawPage> xOldPage (pCurrentPage->getUnoPage(), UNO_QUERY); - aOldValue <<= xOldPage; - } - - FirePropertyChange(PROPERTY_CURRENTPAGE, aNewValue, aOldValue); - - mpCurrentPage.reset(pNewCurrentPage); - } - catch (const uno::Exception&) - { - OSL_FAIL( - (::rtl::OString("sd::SdUnoDrawView::FireSwitchCurrentPage(), " - "exception caught: ") + - ::rtl::OUStringToOString( - comphelper::anyToString( cppu::getCaughtException() ), - RTL_TEXTENCODING_UTF8 )).getStr() ); - } - } -} - - - - -void DrawController::FirePropertyChange ( - sal_Int32 nHandle, - const Any& rNewValue, - const Any& rOldValue) -{ - try - { - fire (&nHandle, &rNewValue, &rOldValue, 1, sal_False); - } - catch (const RuntimeException&) - { - // Ignore this exception. Exceptions should be handled in the - // fire() function so that all listeners are called. This is - // not the case at the moment, so we simply ignore the - // exception. - } - -} - - - - -ViewShellBase* DrawController::GetViewShellBase (void) -{ - return mpBase; -} - - - - -void DrawController::ReleaseViewShellBase (void) -{ - DisposeFrameworkControllers(); - mpBase = NULL; -} - - - - -//===== XControllerManager ============================================================== - -Reference<XConfigurationController> SAL_CALL - DrawController::getConfigurationController (void) - throw (RuntimeException) -{ - ThrowIfDisposed(); - - return mxConfigurationController; -} - - - - -Reference<XModuleController> SAL_CALL - DrawController::getModuleController (void) - throw (RuntimeException) -{ - ThrowIfDisposed(); - - return mxModuleController; -} - - - - -//===== XUnoTunnel ============================================================ - -namespace -{ - class theDrawControllerUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theDrawControllerUnoTunnelId> {}; -} - -const Sequence<sal_Int8>& DrawController::getUnoTunnelId (void) -{ - return theDrawControllerUnoTunnelId::get().getSeq(); -} - - - - -sal_Int64 SAL_CALL DrawController::getSomething (const Sequence<sal_Int8>& rId) - throw (RuntimeException) -{ - sal_Int64 nResult = 0; - - if (rId.getLength() == 16 - && rtl_compareMemory(getUnoTunnelId().getConstArray(), rId.getConstArray(), 16) == 0) - { - nResult = sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(this)); - } - - return nResult; -} - - - - -//===== Properties ============================================================ - -void DrawController::FillPropertyTable ( - ::std::vector<beans::Property>& rProperties) -{ - rProperties.push_back( - beans::Property( - OUString( RTL_CONSTASCII_USTRINGPARAM("VisibleArea") ), - PROPERTY_WORKAREA, - ::getCppuType((const ::com::sun::star::awt::Rectangle*)0), - beans::PropertyAttribute::BOUND | beans::PropertyAttribute::READONLY)); - rProperties.push_back( - beans::Property( - OUString( RTL_CONSTASCII_USTRINGPARAM("SubController") ), - PROPERTY_SUB_CONTROLLER, - ::getCppuType((const Reference<drawing::XDrawSubController>*)0), - beans::PropertyAttribute::BOUND)); - rProperties.push_back( - beans::Property( - OUString( RTL_CONSTASCII_USTRINGPARAM("CurrentPage") ), - PROPERTY_CURRENTPAGE, - ::getCppuType((const Reference< drawing::XDrawPage > *)0), - beans::PropertyAttribute::BOUND )); - rProperties.push_back( - beans::Property( OUString( RTL_CONSTASCII_USTRINGPARAM("IsLayerMode") ), - PROPERTY_LAYERMODE, - ::getCppuBooleanType(), - beans::PropertyAttribute::BOUND )); - rProperties.push_back( - beans::Property( OUString( RTL_CONSTASCII_USTRINGPARAM("IsMasterPageMode") ), - PROPERTY_MASTERPAGEMODE, - ::getCppuBooleanType(), - beans::PropertyAttribute::BOUND )); - rProperties.push_back( - beans::Property( OUString( RTL_CONSTASCII_USTRINGPARAM("ActiveLayer") ), - PROPERTY_ACTIVE_LAYER, - ::getCppuBooleanType(), - beans::PropertyAttribute::BOUND )); - rProperties.push_back( - beans::Property( OUString( RTL_CONSTASCII_USTRINGPARAM("ZoomValue") ), - PROPERTY_ZOOMVALUE, - ::getCppuType((const sal_Int16*)0), - beans::PropertyAttribute::BOUND )); - rProperties.push_back( - beans::Property( OUString( RTL_CONSTASCII_USTRINGPARAM("ZoomType") ), - PROPERTY_ZOOMTYPE, - ::getCppuType((const sal_Int16*)0), - beans::PropertyAttribute::BOUND )); - rProperties.push_back( - beans::Property( OUString( RTL_CONSTASCII_USTRINGPARAM("ViewOffset") ), - PROPERTY_VIEWOFFSET, - ::getCppuType((const ::com::sun::star::awt::Point*)0), - beans::PropertyAttribute::BOUND )); - rProperties.push_back( - beans::Property( OUString( RTL_CONSTASCII_USTRINGPARAM("DrawViewMode") ), - PROPERTY_DRAWVIEWMODE, - ::getCppuType((const ::com::sun::star::awt::Point*)0), - beans::PropertyAttribute::BOUND|beans::PropertyAttribute::READONLY|beans::PropertyAttribute::MAYBEVOID )); -} - - - - -IPropertyArrayHelper & DrawController::getInfoHelper() -{ - SolarMutexGuard aGuard; - - if (mpPropertyArrayHelper.get() == NULL) - { - ::std::vector<beans::Property> aProperties; - FillPropertyTable (aProperties); - Sequence<beans::Property> aPropertySequence (aProperties.size()); - for (unsigned int i=0; i<aProperties.size(); i++) - aPropertySequence[i] = aProperties[i]; - mpPropertyArrayHelper.reset(new OPropertyArrayHelper(aPropertySequence, sal_False)); - } - - return *mpPropertyArrayHelper.get(); -} - - - - -Reference < beans::XPropertySetInfo > DrawController::getPropertySetInfo() - throw ( ::com::sun::star::uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - static Reference < beans::XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) ); - return xInfo; -} - - -uno::Reference< form::runtime::XFormController > SAL_CALL DrawController::getFormController( const uno::Reference< form::XForm >& Form ) throw (uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - FmFormShell* pFormShell = mpBase->GetFormShellManager()->GetFormShell(); - SdrView* pSdrView = mpBase->GetDrawView(); - ::boost::shared_ptr<ViewShell> pViewShell = mpBase->GetMainViewShell(); - ::sd::Window* pWindow = pViewShell ? pViewShell->GetActiveWindow() : NULL; - - uno::Reference< form::runtime::XFormController > xController( NULL ); - if ( pFormShell && pSdrView && pWindow ) - xController = pFormShell->GetFormController( Form, *pSdrView, *pWindow ); - return xController; -} - -::sal_Bool SAL_CALL DrawController::isFormDesignMode( ) throw (uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - sal_Bool bIsDesignMode = sal_True; - - FmFormShell* pFormShell = mpBase->GetFormShellManager()->GetFormShell(); - if ( pFormShell ) - bIsDesignMode = pFormShell->IsDesignMode(); - - return bIsDesignMode; -} - -void SAL_CALL DrawController::setFormDesignMode( ::sal_Bool _DesignMode ) throw (uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - FmFormShell* pFormShell = mpBase->GetFormShellManager()->GetFormShell(); - if ( pFormShell ) - pFormShell->SetDesignMode( _DesignMode ); -} - -uno::Reference< awt::XControl > SAL_CALL DrawController::getControl( const uno::Reference< awt::XControlModel >& xModel ) throw (container::NoSuchElementException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - FmFormShell* pFormShell = mpBase->GetFormShellManager()->GetFormShell(); - SdrView* pSdrView = mpBase->GetDrawView(); - ::boost::shared_ptr<ViewShell> pViewShell = mpBase->GetMainViewShell(); - ::sd::Window* pWindow = pViewShell ? pViewShell->GetActiveWindow() : NULL; - - uno::Reference< awt::XControl > xControl( NULL ); - if ( pFormShell && pSdrView && pWindow ) - pFormShell->GetFormControl( xModel, *pSdrView, *pWindow, xControl ); - return xControl; -} - - - - -sal_Bool DrawController::convertFastPropertyValue ( - Any & rConvertedValue, - Any & rOldValue, - sal_Int32 nHandle, - const Any& rValue) - throw ( com::sun::star::lang::IllegalArgumentException) -{ - sal_Bool bResult = sal_False; - - if (nHandle == PROPERTY_SUB_CONTROLLER) - { - rOldValue <<= mxSubController; - rConvertedValue <<= Reference<drawing::XDrawSubController>(rValue, UNO_QUERY); - bResult = (rOldValue != rConvertedValue); - } - else if (mxSubController.is()) - { - rConvertedValue = rValue; - try - { - rOldValue = mxSubController->getFastPropertyValue(nHandle); - bResult = (rOldValue != rConvertedValue); - } - catch (const beans::UnknownPropertyException&) - { - // The prperty is unknown and thus an illegal argument to this method. - throw com::sun::star::lang::IllegalArgumentException(); - } - } - - return bResult; -} - - - - -void DrawController::setFastPropertyValue_NoBroadcast ( - sal_Int32 nHandle, - const Any& rValue) - throw ( com::sun::star::uno::Exception) -{ - SolarMutexGuard aGuard; - if (nHandle == PROPERTY_SUB_CONTROLLER) - SetSubController(Reference<drawing::XDrawSubController>(rValue, UNO_QUERY)); - else if (mxSubController.is()) - mxSubController->setFastPropertyValue(nHandle, rValue); -} - - - - -void DrawController::getFastPropertyValue ( - Any & rRet, - sal_Int32 nHandle ) const -{ - SolarMutexGuard aGuard; - - switch( nHandle ) - { - case PROPERTY_WORKAREA: - rRet <<= awt::Rectangle( - maLastVisArea.Left(), - maLastVisArea.Top(), - maLastVisArea.GetWidth(), - maLastVisArea.GetHeight()); - break; - - case PROPERTY_SUB_CONTROLLER: - rRet <<= mxSubController; - break; - - default: - if (mxSubController.is()) - rRet = mxSubController->getFastPropertyValue(nHandle); - break; - } -} - - - - -//----------------------------------------------------------------------------- - -void DrawController::ProvideFrameworkControllers (void) -{ - SolarMutexGuard aGuard; - try - { - Reference<XController> xController (this); - const Reference<XComponentContext> xContext ( - ::comphelper::getProcessComponentContext() ); - mxConfigurationController = ConfigurationController::create( - xContext, - xController); - mxModuleController = ModuleController::create( - xContext, - xController); - } - catch (const RuntimeException&) - { - mxConfigurationController = NULL; - mxModuleController = NULL; - } -} - - - - -void DrawController::DisposeFrameworkControllers (void) -{ - Reference<XComponent> xComponent (mxModuleController, UNO_QUERY); - if (xComponent.is()) - xComponent->dispose(); - - xComponent = Reference<XComponent>(mxConfigurationController, UNO_QUERY); - if (xComponent.is()) - xComponent->dispose(); -} - - - - -void DrawController::ThrowIfDisposed (void) const - throw (::com::sun::star::lang::DisposedException) -{ - if (rBHelper.bDisposed || rBHelper.bInDispose || mbDisposing) - { - OSL_TRACE ("Calling disposed DrawController object. Throwing exception:"); - throw lang::DisposedException ( - OUString(RTL_CONSTASCII_USTRINGPARAM( - "DrawController object has already been disposed")), - const_cast<uno::XWeak*>(static_cast<const uno::XWeak*>(this))); - } -} - - - - - -} // end of namespace sd - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/SdUnoDrawView.cxx b/sd/source/ui/unoidl/SdUnoDrawView.cxx deleted file mode 100644 index 89e5ee7a4..000000000 --- a/sd/source/ui/unoidl/SdUnoDrawView.cxx +++ /dev/null @@ -1,642 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" - -#include "SdUnoDrawView.hxx" - -#include "DrawController.hxx" -#include "DrawDocShell.hxx" -#include "DrawViewShell.hxx" -#include "drawdoc.hxx" -#include "unolayer.hxx" -#include "unomodel.hxx" -#include "unopage.hxx" -#include "Window.hxx" -#include "pres.hxx" - -#include <cppuhelper/proptypehlp.hxx> -#include <comphelper/serviceinfohelper.hxx> -#include <sfx2/dispatch.hxx> -#include <sfx2/viewfrm.hxx> -#include <svx/svdpagv.hxx> -#include <svx/unoshape.hxx> -#include <svx/unoshcol.hxx> -#include <svx/zoomitem.hxx> -#include <com/sun/star/drawing/DrawViewMode.hpp> -#include <com/sun/star/drawing/XLayerManager.hpp> -#include <com/sun/star/view/DocumentZoomType.hpp> - -#include <vector> - -using rtl::OUString; - -using namespace ::com::sun::star; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::drawing; - - -namespace sd { - -SdUnoDrawView::SdUnoDrawView( - DrawController& rController, - DrawViewShell& rViewShell, - View& rView) throw() - : DrawSubControllerInterfaceBase(m_aMutex), - mrController(rController), - mrDrawViewShell(rViewShell), - mrView(rView) -{ -} - - - - -SdUnoDrawView::~SdUnoDrawView() throw() -{ -} - - - - -sal_Bool SdUnoDrawView::getMasterPageMode(void) const throw() -{ - return (mrDrawViewShell.GetEditMode() == EM_MASTERPAGE); -} - - - - -void SdUnoDrawView::setMasterPageMode (sal_Bool bMasterPageMode) throw() -{ - if ((mrDrawViewShell.GetEditMode() == EM_MASTERPAGE) != bMasterPageMode) - { - mrDrawViewShell.ChangeEditMode ( - bMasterPageMode ? EM_MASTERPAGE : EM_PAGE, - mrDrawViewShell.IsLayerModeActive()); - } -} - - - - -sal_Bool SdUnoDrawView::getLayerMode(void) const throw() -{ - return mrDrawViewShell.IsLayerModeActive(); -} - - - - -void SdUnoDrawView::setLayerMode (sal_Bool bLayerMode) throw() -{ - if (mrDrawViewShell.IsLayerModeActive() != (bLayerMode==sal_True)) - { - mrDrawViewShell.ChangeEditMode ( - mrDrawViewShell.GetEditMode(), - bLayerMode); - } -} - - - - -Reference<drawing::XLayer> SdUnoDrawView::getActiveLayer (void) throw () -{ - Reference<drawing::XLayer> xCurrentLayer; - - do - { - // Retrieve the layer manager from the model. - SdXImpressDocument* pModel = GetModel(); - if (pModel == NULL) - break; - - SdDrawDocument* pSdModel = pModel->GetDoc(); - if (pSdModel == NULL) - break; - - // From the model get the current SdrLayer object via the layer admin. - SdrLayerAdmin& rLayerAdmin = pSdModel->GetLayerAdmin (); - SdrLayer* pLayer = rLayerAdmin.GetLayer (mrView.GetActiveLayer(), sal_True); - if (pLayer == NULL) - break; - - // Get the corresponding XLayer object from the implementation - // object of the layer manager. - Reference<drawing::XLayerManager> xManager (pModel->getLayerManager(), uno::UNO_QUERY); - SdLayerManager* pManager = SdLayerManager::getImplementation (xManager); - if (pManager != NULL) - xCurrentLayer = pManager->GetLayer (pLayer); - } - while (false); - - return xCurrentLayer; -} - - - - -void SdUnoDrawView::setActiveLayer (const Reference<drawing::XLayer>& rxLayer) throw () -{ - // Get the SdrLayer object corresponding to the given reference. - if ( ! rxLayer.is()) - return; - - SdLayer* pLayer = SdLayer::getImplementation (rxLayer); - if (pLayer == NULL) - return; - - SdrLayer* pSdrLayer = pLayer->GetSdrLayer(); - if (pSdrLayer == NULL) - return; - - // Set the new active layer and make the change visible. - mrView.SetActiveLayer (pSdrLayer->GetName()); - mrDrawViewShell.ResetActualLayer (); -} - - - - -// XSelectionSupplier - - -sal_Bool SAL_CALL SdUnoDrawView::select( const Any& aSelection ) - throw(lang::IllegalArgumentException, RuntimeException) -{ - bool bOk = true; - - ::std::vector<SdrObject*> aObjects; - - SdrPage* pSdrPage = NULL; - - Reference< drawing::XShape > xShape; - aSelection >>= xShape; - - if(xShape.is()) - { - SvxShape* pShape = SvxShape::getImplementation( xShape ); - if( pShape && (pShape->GetSdrObject() != NULL) ) - { - SdrObject* pObj = pShape->GetSdrObject(); - pSdrPage = pObj->GetPage(); - aObjects.push_back( pObj ); - } - else - { - bOk = false; - } - } - else - { - Reference< drawing::XShapes > xShapes; - aSelection >>= xShapes; - if( xShapes.is() ) - { - const sal_uInt32 nCount = xShapes->getCount(); - for( sal_uInt32 i = 0; i < nCount; i++ ) - { - xShapes->getByIndex(i) >>= xShape; - if( xShape.is() ) - { - SvxShape* pShape = SvxShape::getImplementation(xShape); - if( (pShape == NULL) || (pShape->GetSdrObject() == NULL) ) - { - bOk = false; - break; - } - - SdrObject* pObj = pShape->GetSdrObject(); - - if( pSdrPage == NULL ) - { - pSdrPage = pObj->GetPage(); - } - else if( pSdrPage != pObj->GetPage() ) - { - bOk = false; - break; - } - - aObjects.push_back( pObj ); - } - } - } - } - - if( bOk ) - { - if( pSdrPage ) - { - setMasterPageMode( pSdrPage->IsMasterPage() ); - mrDrawViewShell.SwitchPage( (pSdrPage->GetPageNum() - 1) >> 1 ); - mrDrawViewShell.WriteFrameViewData(); - } - - SdrPageView *pPV = mrView.GetSdrPageView(); - - if(pPV) - { - // first deselect all - mrView.UnmarkAllObj( pPV ); - - ::std::vector<SdrObject*>::iterator aIter( aObjects.begin() ); - const ::std::vector<SdrObject*>::iterator aEnd( aObjects.end() ); - while( aIter != aEnd ) - { - SdrObject* pObj = (*aIter++); - mrView.MarkObj( pObj, pPV ); - } - } - else - { - bOk = false; - } - } - - return bOk; -} - -//---------------------------------------------------------------------- - -Any SAL_CALL SdUnoDrawView::getSelection() - throw(RuntimeException) -{ - Any aAny; - - if( mrView.IsTextEdit() ) - mrView.getTextSelection( aAny ); - - - if( !aAny.hasValue() ) - { - const SdrMarkList& rMarkList = mrView.GetMarkedObjectList(); - sal_uInt32 nCount = rMarkList.GetMarkCount(); - if( nCount ) - { - Reference< drawing::XShapes > xShapes( SvxShapeCollection_NewInstance(), UNO_QUERY ); - for( sal_uInt32 nNum = 0; nNum < nCount; nNum++) - { - SdrMark *pMark = rMarkList.GetMark(nNum); - if(pMark==NULL) - continue; - - SdrObject *pObj = pMark->GetMarkedSdrObj(); - if(pObj==NULL || pObj->GetPage() == NULL) - continue; - - Reference< drawing::XDrawPage > xPage( pObj->GetPage()->getUnoPage(), UNO_QUERY); - - if(!xPage.is()) - continue; - - SvxDrawPage* pDrawPage = SvxDrawPage::getImplementation( xPage ); - - if(pDrawPage==NULL) - continue; - - Reference< drawing::XShape > xShape( pObj->getUnoShape(), UNO_QUERY ); - - if(xShape.is()) - xShapes->add(xShape); - } - aAny <<= xShapes; - } - } - - return aAny; -} - - - - -void SAL_CALL SdUnoDrawView::addSelectionChangeListener ( - const css::uno::Reference<css::view::XSelectionChangeListener>& rxListener) - throw(css::uno::RuntimeException) -{ - (void)rxListener; -} - - - - -void SAL_CALL SdUnoDrawView::removeSelectionChangeListener ( - const css::uno::Reference<css::view::XSelectionChangeListener>& rxListener) - throw(css::uno::RuntimeException) -{ - (void)rxListener; -} - - - - -void SdUnoDrawView::setFastPropertyValue ( - sal_Int32 nHandle, - const Any& rValue) - throw(css::beans::UnknownPropertyException, - css::beans::PropertyVetoException, - css::lang::IllegalArgumentException, - css::lang::WrappedTargetException, - css::uno::RuntimeException) -{ - switch( nHandle ) - { - case DrawController::PROPERTY_CURRENTPAGE: - { - Reference< drawing::XDrawPage > xPage; - rValue >>= xPage; - setCurrentPage( xPage ); - } - break; - - case DrawController::PROPERTY_MASTERPAGEMODE: - { - sal_Bool bValue = sal_False; - rValue >>= bValue; - setMasterPageMode( bValue ); - } - break; - - case DrawController::PROPERTY_LAYERMODE: - { - sal_Bool bValue = sal_False; - rValue >>= bValue; - setLayerMode( bValue ); - } - - case DrawController::PROPERTY_ACTIVE_LAYER: - { - Reference<drawing::XLayer> xLayer; - rValue >>= xLayer; - setActiveLayer (xLayer); - } - break; - case DrawController::PROPERTY_ZOOMVALUE: - { - sal_Int16 nZoom = 0; - rValue >>= nZoom; - SetZoom( nZoom ); - } - break; - case DrawController::PROPERTY_ZOOMTYPE: - { - sal_Int16 nType = 0; - rValue >>= nType; - SetZoomType( nType ); - } - break; - case DrawController::PROPERTY_VIEWOFFSET: - { - awt::Point aOffset; - rValue >>= aOffset; - SetViewOffset( aOffset ); - } - break; - default: - throw beans::UnknownPropertyException(); - } -} - - - - -Any SAL_CALL SdUnoDrawView::getFastPropertyValue ( - sal_Int32 nHandle) - throw(css::beans::UnknownPropertyException, - css::lang::WrappedTargetException, - css::uno::RuntimeException) -{ - Any aValue; - switch( nHandle ) - { - case DrawController::PROPERTY_CURRENTPAGE: - aValue <<= (const_cast<SdUnoDrawView*>(this))->getCurrentPage(); - break; - - case DrawController::PROPERTY_MASTERPAGEMODE: - aValue <<= getMasterPageMode(); - break; - - case DrawController::PROPERTY_LAYERMODE: - aValue <<= getLayerMode(); - break; - - case DrawController::PROPERTY_ACTIVE_LAYER: - aValue <<= (const_cast<SdUnoDrawView*>(this))->getActiveLayer(); - break; - - case DrawController::PROPERTY_ZOOMVALUE: - aValue <<= GetZoom(); - break; - case DrawController::PROPERTY_ZOOMTYPE: - aValue <<= (sal_Int16)com::sun::star::view::DocumentZoomType::BY_VALUE; - break; - case DrawController::PROPERTY_VIEWOFFSET: - aValue <<= GetViewOffset(); - break; - - case DrawController::PROPERTY_DRAWVIEWMODE: - aValue = getDrawViewMode(); - break; - - default: - throw beans::UnknownPropertyException(); - } - - return aValue; -} - - - - -// XDrawView - - -void SAL_CALL SdUnoDrawView::setCurrentPage ( - const Reference< drawing::XDrawPage >& xPage ) - throw(RuntimeException) -{ - SvxDrawPage* pDrawPage = SvxDrawPage::getImplementation( xPage ); - SdrPage *pSdrPage = pDrawPage ? pDrawPage->GetSdrPage() : NULL; - - if(pSdrPage) - { - // End editing of text. Otherwise the edited text object would - // still be visible on the new page. - mrDrawViewShell.GetView()->SdrEndTextEdit(); - - setMasterPageMode( pSdrPage->IsMasterPage() ); - mrDrawViewShell.SwitchPage( (pSdrPage->GetPageNum() - 1) >> 1 ); - mrDrawViewShell.WriteFrameViewData(); - } -} - -//---------------------------------------------------------------------- - -Reference< drawing::XDrawPage > SAL_CALL SdUnoDrawView::getCurrentPage() - throw(RuntimeException) -{ - Reference< drawing::XDrawPage > xPage; - - SdrPageView *pPV = mrView.GetSdrPageView(); - SdrPage* pPage = pPV ? pPV->GetPage() : NULL; - - if(pPage) - xPage = Reference< drawing::XDrawPage >::query( pPage->getUnoPage() ); - - return xPage; -} - - -sal_Int16 SdUnoDrawView::GetZoom(void) const -{ - if (mrDrawViewShell.GetActiveWindow() ) - { - return (sal_Int16)mrDrawViewShell.GetActiveWindow()->GetZoom(); - } - else - { - return 0; - } -} - -void SdUnoDrawView::SetZoom( sal_Int16 nZoom ) -{ - SvxZoomItem aZoomItem( SVX_ZOOM_PERCENT, nZoom ); - - SfxViewFrame* pViewFrame = mrDrawViewShell.GetViewFrame(); - if( pViewFrame ) - { - SfxDispatcher* pDispatcher = pViewFrame->GetDispatcher(); - if( pDispatcher ) - { - pDispatcher->Execute(SID_ATTR_ZOOM,SFX_CALLMODE_SYNCHRON,&aZoomItem, 0L); - } - } -} - - -void SdUnoDrawView::SetViewOffset(const awt::Point& rWinPos ) -{ - Point aWinPos( rWinPos.X, rWinPos.Y ); - aWinPos += mrDrawViewShell.GetViewOrigin(); - mrDrawViewShell.SetWinViewPos( aWinPos, true ); -} - -awt::Point SdUnoDrawView::GetViewOffset() const -{ - Point aRet; - - aRet = mrDrawViewShell.GetWinViewPos(); - aRet -= mrDrawViewShell.GetViewOrigin(); - - return awt::Point( aRet.X(), aRet.Y() ); -} - -void SdUnoDrawView::SetZoomType ( sal_Int16 nType ) -{ - SfxViewFrame* pViewFrame = mrDrawViewShell.GetViewFrame(); - if( pViewFrame ) - { - SfxDispatcher* pDispatcher = pViewFrame->GetDispatcher(); - if( pDispatcher ) - { - SvxZoomType eZoomType; - switch( nType ) - { - case com::sun::star::view::DocumentZoomType::OPTIMAL: - eZoomType = SVX_ZOOM_OPTIMAL; - break; - - case com::sun::star::view::DocumentZoomType::PAGE_WIDTH: - case com::sun::star::view::DocumentZoomType::PAGE_WIDTH_EXACT: - eZoomType = SVX_ZOOM_PAGEWIDTH; - break; - - case com::sun::star::view::DocumentZoomType::ENTIRE_PAGE: - eZoomType = SVX_ZOOM_WHOLEPAGE; - break; - - default: - return; - } - SvxZoomItem aZoomItem( eZoomType ); - pDispatcher->Execute(SID_ATTR_ZOOM,SFX_CALLMODE_SYNCHRON,&aZoomItem, 0L); - } - } -} - - - - -SdXImpressDocument* SdUnoDrawView::GetModel (void) const throw() -{ - if (mrView.GetDocSh()!=NULL) - { - Reference<frame::XModel> xModel (mrView.GetDocSh()->GetModel()); - return SdXImpressDocument::getImplementation(xModel); - } - else - return NULL; -} - -Any SdUnoDrawView::getDrawViewMode() const -{ - Any aRet; - switch( mrDrawViewShell.GetPageKind() ) - { - case PK_NOTES: aRet <<= DrawViewMode_NOTES; break; - case PK_HANDOUT: aRet <<= DrawViewMode_HANDOUT; break; - case PK_STANDARD: aRet <<= DrawViewMode_DRAW; break; - } - return aRet; -} - -// XServiceInfo -OUString SAL_CALL SdUnoDrawView::getImplementationName( ) throw (RuntimeException) -{ - return OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.sd.SdUnoDrawView") ); -} - -sal_Bool SAL_CALL SdUnoDrawView::supportsService( const OUString& ServiceName ) throw (RuntimeException) -{ - return comphelper::ServiceInfoHelper::supportsService( ServiceName, getSupportedServiceNames() ); -} - -Sequence< OUString > SAL_CALL SdUnoDrawView::getSupportedServiceNames( ) throw (RuntimeException) -{ - OUString aSN( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.DrawingDocumentDrawView") ); - uno::Sequence< OUString > aSeq( &aSN, 1 ); - return aSeq; -} - -} // end of namespace sd - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/SdUnoOutlineView.cxx b/sd/source/ui/unoidl/SdUnoOutlineView.cxx deleted file mode 100644 index ee1d4538c..000000000 --- a/sd/source/ui/unoidl/SdUnoOutlineView.cxx +++ /dev/null @@ -1,235 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" - -#include <comphelper/serviceinfohelper.hxx> - -#include "SdUnoOutlineView.hxx" - -#include "DrawController.hxx" -#include "OutlineViewShell.hxx" -#include "sdpage.hxx" -#include "unopage.hxx" - -#include <cppuhelper/proptypehlp.hxx> -#include <svx/unopage.hxx> -#include <osl/mutex.hxx> -#include <vcl/svapp.hxx> - -using ::rtl::OUString; -using namespace ::cppu; -using namespace ::com::sun::star; -using namespace ::com::sun::star::uno; - - - -namespace sd { - -SdUnoOutlineView::SdUnoOutlineView( - DrawController& rController, - OutlineViewShell& rViewShell, - View& rView) throw() - : DrawSubControllerInterfaceBase(m_aMutex), - mrController(rController), - mrOutlineViewShell(rViewShell), - mrView(rView) -{ -} - - - - -SdUnoOutlineView::~SdUnoOutlineView (void) throw() -{ -} - - - - -void SAL_CALL SdUnoOutlineView::disposing (void) -{ -} - - - - -//----- XSelectionSupplier ---------------------------------------------------- - -sal_Bool SAL_CALL SdUnoOutlineView::select( const Any& ) - throw(lang::IllegalArgumentException, RuntimeException) -{ - // todo: add selections for text ranges - return sal_False; -} - - - -Any SAL_CALL SdUnoOutlineView::getSelection() - throw(RuntimeException) -{ - Any aAny; - return aAny; -} - - - -void SAL_CALL SdUnoOutlineView::addSelectionChangeListener ( - const css::uno::Reference<css::view::XSelectionChangeListener>& rxListener) - throw(css::uno::RuntimeException) -{ - (void)rxListener; -} - - - - -void SAL_CALL SdUnoOutlineView::removeSelectionChangeListener ( - const css::uno::Reference<css::view::XSelectionChangeListener>& rxListener) - throw(css::uno::RuntimeException) -{ - (void)rxListener; -} - - - - -//----- XDrawView ------------------------------------------------------------- - - -void SAL_CALL SdUnoOutlineView::setCurrentPage ( - const Reference< drawing::XDrawPage >& xPage) - throw(RuntimeException) -{ - SvxDrawPage* pDrawPage = SvxDrawPage::getImplementation( xPage ); - SdrPage *pSdrPage = pDrawPage ? pDrawPage->GetSdrPage() : NULL; - - if (pSdrPage != NULL) - mrOutlineViewShell.SetCurrentPage(dynamic_cast<SdPage*>(pSdrPage)); -} - - - - -Reference< drawing::XDrawPage > SAL_CALL SdUnoOutlineView::getCurrentPage (void) - throw(RuntimeException) -{ - Reference<drawing::XDrawPage> xPage; - - SdPage* pPage = mrOutlineViewShell.getCurrentPage(); - if (pPage != NULL) - xPage = Reference<drawing::XDrawPage>::query(pPage->getUnoPage()); - - return xPage; -} - -void SdUnoOutlineView::setFastPropertyValue ( - sal_Int32 nHandle, - const Any& rValue) - throw(css::beans::UnknownPropertyException, - css::beans::PropertyVetoException, - css::lang::IllegalArgumentException, - css::lang::WrappedTargetException, - css::uno::RuntimeException) -{ - switch( nHandle ) - { - case DrawController::PROPERTY_CURRENTPAGE: - { - Reference< drawing::XDrawPage > xPage; - rValue >>= xPage; - setCurrentPage( xPage ); - } - break; - - default: - throw beans::UnknownPropertyException(); - } -} - - - - -void SAL_CALL SdUnoOutlineView::disposing (const ::com::sun::star::lang::EventObject& ) - throw (::com::sun::star::uno::RuntimeException) -{ -} - - - - -Any SAL_CALL SdUnoOutlineView::getFastPropertyValue ( - sal_Int32 nHandle) - throw(css::beans::UnknownPropertyException, - css::lang::WrappedTargetException, - css::uno::RuntimeException) -{ - Any aValue; - - switch( nHandle ) - { - case DrawController::PROPERTY_CURRENTPAGE: - { - SdPage* pPage = const_cast<OutlineViewShell&>(mrOutlineViewShell).GetActualPage(); - if (pPage != NULL) - aValue <<= pPage->getUnoPage(); - } - break; - case DrawController::PROPERTY_VIEWOFFSET: - break; - - default: - throw beans::UnknownPropertyException(); - } - - return aValue; -} - - -// XServiceInfo -OUString SAL_CALL SdUnoOutlineView::getImplementationName( ) throw (RuntimeException) -{ - return OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.sd.SdUnoOutlineView") ); -} - -sal_Bool SAL_CALL SdUnoOutlineView::supportsService( const OUString& ServiceName ) throw (RuntimeException) -{ - return comphelper::ServiceInfoHelper::supportsService( ServiceName, getSupportedServiceNames() ); -} - -Sequence< OUString > SAL_CALL SdUnoOutlineView::getSupportedServiceNames( ) throw (RuntimeException) -{ - OUString aSN( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.OutlineView") ); - uno::Sequence< OUString > aSeq( &aSN, 1 ); - return aSeq; -} - -} // end of namespace sd - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/SdUnoSlideView.cxx b/sd/source/ui/unoidl/SdUnoSlideView.cxx deleted file mode 100644 index 72c432049..000000000 --- a/sd/source/ui/unoidl/SdUnoSlideView.cxx +++ /dev/null @@ -1,287 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#include "precompiled_sd.hxx" - -#include <comphelper/serviceinfohelper.hxx> - -#include "DrawController.hxx" -#include "SdUnoSlideView.hxx" - -#include "SlideSorter.hxx" -#include "controller/SlideSorterController.hxx" -#include "controller/SlsPageSelector.hxx" -#include "controller/SlsCurrentSlideManager.hxx" -#include "model/SlsPageEnumerationProvider.hxx" -#include "model/SlideSorterModel.hxx" -#include "model/SlsPageDescriptor.hxx" -#include "sdpage.hxx" -#include <com/sun/star/beans/XPropertySet.hpp> - -using ::rtl::OUString; - -using namespace ::com::sun::star; -using namespace ::com::sun::star::uno; - -namespace sd { - - -SdUnoSlideView::SdUnoSlideView ( - DrawController& rController, - slidesorter::SlideSorter& rSlideSorter, - View& rView) throw() - : DrawSubControllerInterfaceBase(m_aMutex), - mrController(rController), - mrSlideSorter(rSlideSorter), - mrView(rView) -{ -} - - - - -SdUnoSlideView::~SdUnoSlideView (void) throw() -{ -} - - - - -//----- XSelectionSupplier ---------------------------------------------------- - -sal_Bool SAL_CALL SdUnoSlideView::select (const Any& aSelection) - throw(lang::IllegalArgumentException, RuntimeException) -{ - bool bOk = true; - - slidesorter::controller::SlideSorterController& rSlideSorterController - = mrSlideSorter.GetController(); - slidesorter::controller::PageSelector& rSelector (rSlideSorterController.GetPageSelector()); - rSelector.DeselectAllPages(); - Sequence<Reference<drawing::XDrawPage> > xPages; - aSelection >>= xPages; - const sal_uInt32 nCount = xPages.getLength(); - for (sal_uInt32 nIndex=0; nIndex<nCount; ++nIndex) - { - Reference<beans::XPropertySet> xSet (xPages[nIndex], UNO_QUERY); - if (xSet.is()) - { - try - { - Any aNumber = xSet->getPropertyValue( - ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Number"))); - sal_Int32 nPageNumber = 0; - aNumber >>= nPageNumber; - nPageNumber -=1; // Transform 1-based page numbers to 0-based ones. - rSelector.SelectPage(nPageNumber); - } - catch (const RuntimeException&) - { - } - } - } - - return bOk; -} - - - - -Any SAL_CALL SdUnoSlideView::getSelection (void) - throw(RuntimeException) -{ - Any aResult; - - slidesorter::model::PageEnumeration aSelectedPages ( - slidesorter::model::PageEnumerationProvider::CreateSelectedPagesEnumeration( - mrSlideSorter.GetModel())); - int nSelectedPageCount ( - mrSlideSorter.GetController().GetPageSelector().GetSelectedPageCount()); - - Sequence<Reference<XInterface> > aPages(nSelectedPageCount); - int nIndex = 0; - while (aSelectedPages.HasMoreElements() && nIndex<nSelectedPageCount) - { - slidesorter::model::SharedPageDescriptor pDescriptor (aSelectedPages.GetNextElement()); - aPages[nIndex++] = pDescriptor->GetPage()->getUnoPage(); - } - aResult <<= aPages; - - return aResult; -} - - - - -void SAL_CALL SdUnoSlideView::addSelectionChangeListener ( - const css::uno::Reference<css::view::XSelectionChangeListener>& rxListener) - throw(css::uno::RuntimeException) -{ - (void)rxListener; -} - - - - -void SAL_CALL SdUnoSlideView::removeSelectionChangeListener ( - const css::uno::Reference<css::view::XSelectionChangeListener>& rxListener) - throw(css::uno::RuntimeException) -{ - (void)rxListener; -} - - - - -//----- XDrawView ------------------------------------------------------------- - -void SAL_CALL SdUnoSlideView::setCurrentPage ( - const css::uno::Reference<css::drawing::XDrawPage>& rxDrawPage) - throw(css::uno::RuntimeException) -{ - Reference<beans::XPropertySet> xProperties (rxDrawPage, UNO_QUERY); - if (xProperties.is()) - { - sal_uInt16 nPageNumber(0); - if (xProperties->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Number"))) >>= nPageNumber) - { - mrSlideSorter.GetController().GetCurrentSlideManager()->SwitchCurrentSlide( - nPageNumber-1, - true); - } - } -} - - - - -css::uno::Reference<css::drawing::XDrawPage > SAL_CALL - SdUnoSlideView::getCurrentPage (void) - throw(css::uno::RuntimeException) -{ - return mrSlideSorter.GetController().GetCurrentSlideManager()->GetCurrentSlide()->GetXDrawPage(); -} - - - - -//----- XFastPropertySet ------------------------------------------------------ - -void SdUnoSlideView::setFastPropertyValue ( - sal_Int32 nHandle, - const Any& rValue) - throw(css::beans::UnknownPropertyException, - css::beans::PropertyVetoException, - css::lang::IllegalArgumentException, - css::lang::WrappedTargetException, - css::uno::RuntimeException) -{ - (void)nHandle; - (void)rValue; - - throw beans::UnknownPropertyException(); -} - - - - -Any SAL_CALL SdUnoSlideView::getFastPropertyValue ( - sal_Int32 nHandle) - throw(css::beans::UnknownPropertyException, - css::lang::WrappedTargetException, - css::uno::RuntimeException) -{ - (void)nHandle; - - if( nHandle != DrawController::PROPERTY_VIEWOFFSET ) - throw beans::UnknownPropertyException(); - - return Any(); -} - - -// XServiceInfo -OUString SAL_CALL SdUnoSlideView::getImplementationName( ) throw (RuntimeException) -{ - return OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.sd.SdUnoSlideView") ); -} - -sal_Bool SAL_CALL SdUnoSlideView::supportsService( const OUString& ServiceName ) throw (RuntimeException) -{ - return comphelper::ServiceInfoHelper::supportsService( ServiceName, getSupportedServiceNames() ); -} - -Sequence< OUString > SAL_CALL SdUnoSlideView::getSupportedServiceNames( ) throw (RuntimeException) -{ - OUString aSN( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.SlidesView") ); - uno::Sequence< OUString > aSeq( &aSN, 1 ); - return aSeq; -} - - -/* -void SdUnoSlideView::FillPropertyTable ( - ::std::vector< ::com::sun::star::beans::Property>& ) -{ -} - - - - -sal_Bool SAL_CALL SdUnoSlideView::convertFastPropertyValue( - ::com::sun::star::uno::Any & , - ::com::sun::star::uno::Any & , - sal_Int32 , - const ::com::sun::star::uno::Any& ) - throw (::com::sun::star::lang::IllegalArgumentException) -{ - return sal_False; -} - - - - -void SAL_CALL SdUnoSlideView::setFastPropertyValue_NoBroadcast( - sal_Int32 , - const ::com::sun::star::uno::Any& ) - throw (::com::sun::star::uno::Exception) -{ -} - - - - -void SAL_CALL SdUnoSlideView::getFastPropertyValue( ::com::sun::star::uno::Any&, sal_Int32 ) const -{ -} - -*/ - -} // end of namespace sd - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/UnoDocumentSettings.cxx b/sd/source/ui/unoidl/UnoDocumentSettings.cxx deleted file mode 100644 index c91577306..000000000 --- a/sd/source/ui/unoidl/UnoDocumentSettings.cxx +++ /dev/null @@ -1,1229 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" - -#include <vector> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/beans/XMultiPropertySet.hpp> -#include <com/sun/star/i18n/XForbiddenCharacters.hpp> -#include <cppuhelper/implbase3.hxx> -#include <comphelper/propertysethelper.hxx> -#include <comphelper/propertysetinfo.hxx> -#include <tools/urlobj.hxx> -#include <svx/xtable.hxx> -#include <osl/diagnose.h> -#include <osl/mutex.hxx> -#include <osl/mutex.hxx> -#include <vcl/svapp.hxx> - -#include "drawdoc.hxx" -#include "DrawDocShell.hxx" -#include "unomodel.hxx" - -#include "optsitem.hxx" -#include <sfx2/printer.hxx> -#include "sdattr.hxx" -#include "../inc/ViewShell.hxx" -#include "../inc/FrameView.hxx" -#include "Outliner.hxx" -#include <editeng/editstat.hxx> -#include <svx/unoapi.hxx> - -#define MAP_LEN(x) x, sizeof(x)-1 - -using namespace ::comphelper; -using namespace ::osl; -using ::rtl::OUString; -using namespace ::cppu; -using namespace ::com::sun::star; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::util; -using namespace ::com::sun::star::container; -using namespace ::com::sun::star::drawing; -using namespace ::com::sun::star::lang; -using namespace ::com::sun::star::document; -using namespace ::com::sun::star::frame; -using namespace ::com::sun::star::beans; -using namespace ::com::sun::star::i18n; - -namespace sd -{ - class DocumentSettings : public WeakImplHelper3< XPropertySet, XMultiPropertySet, XServiceInfo >, - public comphelper::PropertySetHelper - { - public: - DocumentSettings( SdXImpressDocument* pModel ); - virtual ~DocumentSettings() throw(); - - // XInterface - virtual Any SAL_CALL queryInterface( const Type& aType ) throw (RuntimeException); - virtual void SAL_CALL acquire( ) throw (); - virtual void SAL_CALL release( ) throw (); - - // XPropertySet - virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - - // XMultiPropertySet - // virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aValues ) throw(::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL getPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addPropertiesChangeListener( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removePropertiesChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL firePropertiesChangeEvent( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw(::com::sun::star::uno::RuntimeException); - - // XServiceInfo - virtual OUString SAL_CALL getImplementationName( ) throw(RuntimeException); - virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) throw(RuntimeException); - virtual Sequence< OUString > SAL_CALL getSupportedServiceNames( ) throw(RuntimeException); - - protected: - virtual void _setPropertyValues( const comphelper::PropertyMapEntry** ppEntries, const ::com::sun::star::uno::Any* pValues ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException ); - virtual void _getPropertyValues( const comphelper::PropertyMapEntry** ppEntries, ::com::sun::star::uno::Any* pValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException ); - - private: - Reference< XModel > mxModel; - SdXImpressDocument* mpModel; - }; - - Reference< XInterface > SAL_CALL DocumentSettings_createInstance( SdXImpressDocument* pModel ) - throw( Exception ) - { - DBG_ASSERT( pModel, "I need a model for the DocumentSettings!" ); - return (XWeak*)new DocumentSettings( pModel ); - } - -enum SdDocumentSettingsPropertyHandles -{ - HANDLE_PRINTDRAWING, HANDLE_PRINTNOTES, HANDLE_PRINTHANDOUT, HANDLE_PRINTOUTLINE, HANDLE_MEASUREUNIT, HANDLE_SCALE_NUM, - HANDLE_SCALE_DOM, HANDLE_TABSTOP, HANDLE_PRINTPAGENAME, HANDLE_PRINTDATE, HANDLE_PRINTTIME, - HANDLE_PRINTHIDENPAGES, HANDLE_PRINTFITPAGE, HANDLE_PRINTTILEPAGE, HANDLE_PRINTBOOKLET, HANDLE_PRINTBOOKLETFRONT, - HANDLE_PRINTBOOKLETBACK, HANDLE_PRINTQUALITY, HANDLE_COLORTABLEURL, HANDLE_DASHTABLEURL, HANDLE_LINEENDTABLEURL, HANDLE_HATCHTABLEURL, - HANDLE_GRADIENTTABLEURL, HANDLE_BITMAPTABLEURL, HANDLE_FORBIDDENCHARS, HANDLE_APPLYUSERDATA, HANDLE_PAGENUMFMT, - HANDLE_PRINTERNAME, HANDLE_PRINTERJOB, HANDLE_PARAGRAPHSUMMATION, HANDLE_CHARCOMPRESS, HANDLE_ASIANPUNCT, HANDLE_UPDATEFROMTEMPLATE, - HANDLE_PRINTER_INDEPENDENT_LAYOUT - // #i33095# - ,HANDLE_LOAD_READONLY, HANDLE_SAVE_VERSION - ,HANDLE_SLIDESPERHANDOUT, HANDLE_HANDOUTHORIZONTAL -}; - -#define MID_PRINTER 1 - - PropertySetInfo* createSettingsInfoImpl( sal_Bool bIsDraw ) - { - static PropertyMapEntry aImpressSettingsInfoMap[] = - { - { MAP_LEN("IsPrintDrawing"), HANDLE_PRINTDRAWING, &::getBooleanCppuType(), 0, MID_PRINTER }, - { MAP_LEN("IsPrintNotes"), HANDLE_PRINTNOTES, &::getBooleanCppuType(), 0, MID_PRINTER }, - { MAP_LEN("IsPrintHandout"), HANDLE_PRINTHANDOUT, &::getBooleanCppuType(), 0, MID_PRINTER }, - { MAP_LEN("IsPrintOutline"), HANDLE_PRINTOUTLINE, &::getBooleanCppuType(), 0, MID_PRINTER }, - { MAP_LEN("SlidesPerHandout"), HANDLE_SLIDESPERHANDOUT, &::getCppuType((const sal_Int16*)0), 0, MID_PRINTER }, - { MAP_LEN("HandoutsHorizontal"), HANDLE_HANDOUTHORIZONTAL, &::getBooleanCppuType(), 0, MID_PRINTER }, - { NULL, 0, 0, NULL, 0, 0 } - }; - - static PropertyMapEntry aDrawSettingsInfoMap[] = - { - { MAP_LEN("MeasureUnit"), HANDLE_MEASUREUNIT, &::getCppuType((const sal_Int16*)0), 0, 0 }, - { MAP_LEN("ScaleNumerator"), HANDLE_SCALE_NUM, &::getCppuType((const sal_Int32*)0), 0, 0 }, - { MAP_LEN("ScaleDenominator"), HANDLE_SCALE_DOM, &::getCppuType((const sal_Int32*)0), 0, 0 }, - { NULL, 0, 0, NULL, 0, 0 } - }; - - static PropertyMapEntry aCommonSettingsInfoMap[] = - { - { MAP_LEN("DefaultTabStop"), HANDLE_TABSTOP, &::getCppuType((const sal_Int32*)0), 0, 0 }, - { MAP_LEN("PrinterName"), HANDLE_PRINTERNAME, &::getCppuType((const OUString*)0), 0, 0 }, - { MAP_LEN("PrinterSetup"), HANDLE_PRINTERJOB, &::getCppuType((const uno::Sequence < sal_Int8 > *)0), 0, MID_PRINTER }, - - { MAP_LEN("IsPrintPageName"), HANDLE_PRINTPAGENAME, &::getBooleanCppuType(), 0, MID_PRINTER }, - { MAP_LEN("IsPrintDate"), HANDLE_PRINTDATE, &::getBooleanCppuType(), 0, MID_PRINTER }, - { MAP_LEN("IsPrintTime"), HANDLE_PRINTTIME, &::getBooleanCppuType(), 0, MID_PRINTER }, - { MAP_LEN("IsPrintHiddenPages"), HANDLE_PRINTHIDENPAGES, &::getBooleanCppuType(), 0, MID_PRINTER }, - { MAP_LEN("IsPrintFitPage"), HANDLE_PRINTFITPAGE, &::getBooleanCppuType(), 0, MID_PRINTER }, - { MAP_LEN("IsPrintTilePage"), HANDLE_PRINTTILEPAGE, &::getBooleanCppuType(), 0, MID_PRINTER }, - { MAP_LEN("IsPrintBooklet"), HANDLE_PRINTBOOKLET, &::getBooleanCppuType(), 0, MID_PRINTER }, - { MAP_LEN("IsPrintBookletFront"), HANDLE_PRINTBOOKLETFRONT, &::getBooleanCppuType(), 0, MID_PRINTER }, - { MAP_LEN("IsPrintBookletBack"), HANDLE_PRINTBOOKLETBACK, &::getBooleanCppuType(), 0, MID_PRINTER }, - { MAP_LEN("PrintQuality"), HANDLE_PRINTQUALITY, &::getCppuType((const sal_Int32*)0), 0, MID_PRINTER }, - { MAP_LEN("ColorTableURL"), HANDLE_COLORTABLEURL, &::getCppuType((const OUString*)0), 0, 0 }, - { MAP_LEN("DashTableURL"), HANDLE_DASHTABLEURL, &::getCppuType((const OUString*)0), 0, 0 }, - { MAP_LEN("LineEndTableURL"), HANDLE_LINEENDTABLEURL, &::getCppuType((const OUString*)0), 0, 0 }, - { MAP_LEN("HatchTableURL"), HANDLE_HATCHTABLEURL, &::getCppuType((const OUString*)0), 0, 0 }, - { MAP_LEN("GradientTableURL"), HANDLE_GRADIENTTABLEURL, &::getCppuType((const OUString*)0), 0, 0 }, - { MAP_LEN("BitmapTableURL"), HANDLE_BITMAPTABLEURL, &::getCppuType((const OUString*)0), 0, 0 }, - - { MAP_LEN("ForbiddenCharacters"), HANDLE_FORBIDDENCHARS, &::getCppuType((const Reference< XForbiddenCharacters >*)0), 0, 0 }, - { MAP_LEN("ApplyUserData"), HANDLE_APPLYUSERDATA, &::getBooleanCppuType(), 0, 0 }, - - { MAP_LEN("PageNumberFormat"), HANDLE_PAGENUMFMT, &::getCppuType((const sal_Int32*)0), 0, 0 }, - { MAP_LEN("ParagraphSummation"), HANDLE_PARAGRAPHSUMMATION, &::getBooleanCppuType(), 0, 0 }, - { MAP_LEN("CharacterCompressionType"),HANDLE_CHARCOMPRESS, &::getCppuType((sal_Int16*)0), 0, 0 }, - { MAP_LEN("IsKernAsianPunctuation"),HANDLE_ASIANPUNCT, &::getBooleanCppuType(), 0, 0 }, - { MAP_LEN("UpdateFromTemplate"), HANDLE_UPDATEFROMTEMPLATE, &::getBooleanCppuType(), 0, 0 }, - { MAP_LEN("PrinterIndependentLayout"),HANDLE_PRINTER_INDEPENDENT_LAYOUT,&::getCppuType((const sal_Int16*)0), 0, 0 }, - // --> #i33095# - { MAP_LEN("LoadReadonly"), HANDLE_LOAD_READONLY, &::getBooleanCppuType(), 0, 0 }, - { MAP_LEN("SaveVersionOnClose"), HANDLE_SAVE_VERSION, &::getBooleanCppuType(), 0, 0 }, - { NULL, 0, 0, NULL, 0, 0 } - }; - - PropertySetInfo* pInfo = new PropertySetInfo( aCommonSettingsInfoMap ); - pInfo->add( bIsDraw ? aDrawSettingsInfoMap : aImpressSettingsInfoMap ); - - return pInfo; - } -} - -using namespace ::sd; - -DocumentSettings::DocumentSettings( SdXImpressDocument* pModel ) -: PropertySetHelper( createSettingsInfoImpl( !pModel->IsImpressDocument() ) ), - mxModel( pModel ), - mpModel( pModel ) -{ -} - -DocumentSettings::~DocumentSettings() throw() -{ -} - -void DocumentSettings::_setPropertyValues( const PropertyMapEntry** ppEntries, const Any* pValues ) throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException ) -{ - ::SolarMutexGuard aGuard; - - SdDrawDocument* pDoc = mpModel->GetDoc(); - ::sd::DrawDocShell* pDocSh = mpModel->GetDocShell(); - if( NULL == pDoc || NULL == pDocSh ) - throw UnknownPropertyException(); - - sal_Bool bOk, bChanged = sal_False, bValue = sal_False, bOptionsChanged = false; - - SdOptionsPrintItem aOptionsPrintItem( ATTR_OPTIONS_PRINT ); - - SfxPrinter* pPrinter = pDocSh->GetPrinter( sal_False ); - if( pPrinter ) - { - SdOptionsPrintItem* pPrinterOptions = NULL; - if(pPrinter->GetOptions().GetItemState( ATTR_OPTIONS_PRINT, sal_False, (const SfxPoolItem**) &pPrinterOptions) == SFX_ITEM_SET) - aOptionsPrintItem.GetOptionsPrint() = pPrinterOptions->GetOptionsPrint(); - } - else - { - aOptionsPrintItem.SetOptions( SD_MOD()->GetSdOptions(pDoc->GetDocumentType()) ); - } - SdOptionsPrint& aPrintOpts = aOptionsPrintItem.GetOptionsPrint(); - - for( ; *ppEntries; ppEntries++, pValues++ ) - { - bOk = sal_False; - - switch( (*ppEntries)->mnHandle ) - { - case HANDLE_COLORTABLEURL: - { - OUString aURLString; - if( *pValues >>= aURLString ) - { - INetURLObject aURL( aURLString ); - INetURLObject aPathURL( aURL ); - - aPathURL.removeSegment(); - aPathURL.removeFinalSlash(); - - XColorTable* pColTab = new XColorTable( aPathURL.GetMainURL( INetURLObject::NO_DECODE ), (XOutdevItemPool*)&pDoc->GetPool() ); - pColTab->SetName( aURL.getName() ); - if( pColTab->Load() ) - { - pDoc->SetColorTable( pColTab ); - bOk = sal_True; - bChanged = sal_True; - } - } - } - break; - case HANDLE_DASHTABLEURL: - { - OUString aURLString; - if( *pValues >>= aURLString ) - { - INetURLObject aURL( aURLString ); - INetURLObject aPathURL( aURL ); - - aPathURL.removeSegment(); - aPathURL.removeFinalSlash(); - - XDashList* pDashTab = new XDashList( aPathURL.GetMainURL( INetURLObject::NO_DECODE ), (XOutdevItemPool*)&pDoc->GetPool() ); - pDashTab->SetName( aURL.getName() ); - if( pDashTab->Load() ) - { - pDoc->SetDashList( pDashTab ); - bOk = sal_True; - bChanged = sal_True; - } - } - } - break; - case HANDLE_LINEENDTABLEURL: - { - OUString aURLString; - if( *pValues >>= aURLString ) - { - INetURLObject aURL( aURLString ); - INetURLObject aPathURL( aURL ); - - aPathURL.removeSegment(); - aPathURL.removeFinalSlash(); - - XLineEndList* pTab = new XLineEndList( aPathURL.GetMainURL( INetURLObject::NO_DECODE ), (XOutdevItemPool*)&pDoc->GetPool() ); - pTab->SetName( aURL.getName() ); - if( pTab->Load() ) - { - pDoc->SetLineEndList( pTab ); - bOk = sal_True; - bChanged = sal_True; - } - } - } - break; - case HANDLE_HATCHTABLEURL: - { - OUString aURLString; - if( *pValues >>= aURLString ) - { - INetURLObject aURL( aURLString ); - INetURLObject aPathURL( aURL ); - - aPathURL.removeSegment(); - aPathURL.removeFinalSlash(); - - XHatchList* pTab = new XHatchList( aPathURL.GetMainURL( INetURLObject::NO_DECODE ), (XOutdevItemPool*)&pDoc->GetPool() ); - pTab->SetName( aURL.getName() ); - if( pTab->Load() ) - { - pDoc->SetHatchList( pTab ); - bOk = sal_True; - bChanged = sal_True; - } - } - } - break; - case HANDLE_GRADIENTTABLEURL: - { - OUString aURLString; - if( *pValues >>= aURLString ) - { - INetURLObject aURL( aURLString ); - INetURLObject aPathURL( aURL ); - - aPathURL.removeSegment(); - aPathURL.removeFinalSlash(); - - XGradientList* pTab = new XGradientList( aPathURL.GetMainURL( INetURLObject::NO_DECODE ), (XOutdevItemPool*)&pDoc->GetPool() ); - pTab->SetName( aURL.getName() ); - if( pTab->Load() ) - { - pDoc->SetGradientList( pTab ); - bOk = sal_True; - bChanged = sal_True; - } - } - } - break; - case HANDLE_BITMAPTABLEURL: - { - OUString aURLString; - if( *pValues >>= aURLString ) - { - INetURLObject aURL( aURLString ); - INetURLObject aPathURL( aURL ); - - aPathURL.removeSegment(); - aPathURL.removeFinalSlash(); - - XBitmapList* pTab = new XBitmapList( aPathURL.GetMainURL( INetURLObject::NO_DECODE ), (XOutdevItemPool*)&pDoc->GetPool() ); - pTab->SetName( aURL.getName() ); - if( pTab->Load() ) - { - pDoc->SetBitmapList( pTab ); - bOk = sal_True; - bChanged = sal_True; - } - } - } - break; - case HANDLE_FORBIDDENCHARS: - { - bOk = sal_True; - } - break; - case HANDLE_APPLYUSERDATA: - { - sal_Bool bApplyUserData = sal_False; - if( *pValues >>= bApplyUserData ) - { - bChanged = ( bApplyUserData != pDocSh->IsUseUserData() ); - pDocSh->SetUseUserData( bApplyUserData ); - bOk = sal_True; - } - } - break; - case HANDLE_PRINTDRAWING: - if( *pValues >>= bValue ) - { - if( aPrintOpts.IsDraw() != bValue ) - { - aPrintOpts.SetDraw( bValue ); - bOptionsChanged = true; - } - - bOk = sal_True; - } - break; - case HANDLE_PRINTNOTES: - if( *pValues >>= bValue ) - { - if( aPrintOpts.IsNotes() != bValue ) - { - aPrintOpts.SetNotes( bValue ); - bOptionsChanged = true; - } - - bOk = sal_True; - } - break; - case HANDLE_PRINTHANDOUT: - if( *pValues >>= bValue ) - { - if( aPrintOpts.IsHandout() != bValue) - { - aPrintOpts.SetHandout( bValue ); - bOptionsChanged = true; - } - - bOk = sal_True; - } - break; - case HANDLE_PRINTOUTLINE: - if( *pValues >>= bValue ) - { - if( aPrintOpts.IsOutline() != bValue) - { - aPrintOpts.SetOutline( bValue ); - bOptionsChanged = true; - } - bOk = sal_True; - } - break; - case HANDLE_SLIDESPERHANDOUT: - { - sal_Int16 nValue = 0; - if( (*pValues >>= nValue) && (nValue >= 1) && (nValue <= 9) ) - { - if( static_cast<sal_Int16>( aPrintOpts.GetHandoutPages() ) != nValue ) - { - aPrintOpts.SetHandoutPages( static_cast< sal_uInt16 >( nValue ) ); - bOptionsChanged = true; - } - bOk = sal_True; - } - } - break; - case HANDLE_HANDOUTHORIZONTAL: - if( *pValues >>= bValue ) - { - if( aPrintOpts.IsHandoutHorizontal() != bValue ) - { - aPrintOpts.SetHandoutHorizontal( bValue ); - bOptionsChanged = true; - } - bOk = sal_True; - } - break; - - case HANDLE_PRINTPAGENAME: - if( *pValues >>= bValue ) - { - if( aPrintOpts.IsPagename() != bValue) - { - aPrintOpts.SetPagename( bValue ); - bOptionsChanged = true; - } - bOk = sal_True; - } - break; - case HANDLE_PRINTDATE: - if( *pValues >>= bValue ) - { - if( aPrintOpts.IsDate() != bValue) - { - aPrintOpts.SetDate( bValue ); - bOptionsChanged = true; - } - bOk = sal_True; - } - break; - case HANDLE_PRINTTIME: - if( *pValues >>= bValue ) - { - if( aPrintOpts.IsDate() != bValue) - { - aPrintOpts.SetTime( bValue ); - bOptionsChanged = true; - } - bOk = sal_True; - } - break; - case HANDLE_PRINTHIDENPAGES: - if( *pValues >>= bValue ) - { - if( aPrintOpts.IsHiddenPages() != bValue) - { - aPrintOpts.SetHiddenPages( bValue ); - bOptionsChanged = true; - } - bOk = sal_True; - } - break; - case HANDLE_PRINTFITPAGE: - if( *pValues >>= bValue ) - { - if( aPrintOpts.IsPagesize() != bValue) - { - aPrintOpts.SetPagesize( bValue ); - bOptionsChanged = true; - } - bOk = sal_True; - } - break; - case HANDLE_PRINTTILEPAGE: - if( *pValues >>= bValue ) - { - if( aPrintOpts.IsPagetile() != bValue) - { - aPrintOpts.SetPagetile( bValue ); - bOptionsChanged = true; - } - bOk = sal_True; - } - break; - case HANDLE_PRINTBOOKLET: - if( *pValues >>= bValue ) - { - if( aPrintOpts.IsBooklet() != bValue) - { - aPrintOpts.SetBooklet( bValue ); - bOptionsChanged = true; - } - bOk = sal_True; - } - break; - case HANDLE_PRINTBOOKLETFRONT: - if( *pValues >>= bValue ) - { - if( aPrintOpts.IsFrontPage() != bValue) - { - aPrintOpts.SetFrontPage( bValue ); - bOptionsChanged = true; - } - bOk = sal_True; - } - break; - case HANDLE_PRINTBOOKLETBACK: - if( *pValues >>= bValue ) - { - if( aPrintOpts.IsBackPage() != bValue) - { - aPrintOpts.SetBackPage( bValue ); - bOptionsChanged = true; - } - bOk = sal_True; - } - break; - case HANDLE_PRINTQUALITY: - { - sal_Int32 nValue = 0; - if( *pValues >>= nValue ) - { - if( aPrintOpts.GetOutputQuality() != nValue) - { - aPrintOpts.SetOutputQuality( (sal_uInt16)nValue ); - bOptionsChanged = true; - } - bOk = sal_True; - } - } - break; - case HANDLE_MEASUREUNIT: - { - sal_Int16 nValue = 0; - if( *pValues >>= nValue ) - { - short nFieldUnit; - if( SvxMeasureUnitToFieldUnit( nValue, nFieldUnit ) ) - { - pDoc->SetUIUnit((FieldUnit)nFieldUnit ); - bOk = sal_True; - } - } - } - break; - case HANDLE_SCALE_NUM: - { - sal_Int32 nValue = 0; - if( *pValues >>= nValue ) - { - Fraction aFract( nValue, pDoc->GetUIScale().GetDenominator() ); - pDoc->SetUIScale( aFract ); - bOk = sal_True; - bChanged = sal_True; - } - } - break; - case HANDLE_SCALE_DOM: - { - sal_Int32 nValue = 0; - if( *pValues >>= nValue ) - { - Fraction aFract( pDoc->GetUIScale().GetNumerator(), nValue ); - pDoc->SetUIScale( aFract ); - bOk = sal_True; - bChanged = sal_True; - } - } - break; - - case HANDLE_TABSTOP: - { - sal_Int32 nValue = 0; - if( (*pValues >>= nValue) && (nValue >= 0) ) - { - pDoc->SetDefaultTabulator((sal_uInt16)nValue); - bOk = sal_True; - bChanged = sal_True; - } - } - break; - case HANDLE_PAGENUMFMT: - { - sal_Int32 nValue = 0; - if( (*pValues >>= nValue ) && (nValue >= SVX_CHARS_UPPER_LETTER ) && (nValue <= SVX_PAGEDESC) ) - { - pDoc->SetPageNumType((SvxNumType)nValue); - bOk = sal_True; - bChanged = sal_True; - } - } - break; - case HANDLE_PRINTERNAME: - { - OUString aPrinterName; - if( *pValues >>= aPrinterName ) - { - bOk = sal_True; - if( aPrinterName.getLength() && pDocSh->GetCreateMode() != SFX_CREATE_MODE_EMBEDDED ) - { - SfxPrinter *pTempPrinter = pDocSh->GetPrinter( sal_True ); - if (pTempPrinter) - { - SfxPrinter *pNewPrinter = new SfxPrinter( pTempPrinter->GetOptions().Clone(), aPrinterName ); - pDocSh->SetPrinter( pNewPrinter ); - } - } - } - } - break; - case HANDLE_PRINTERJOB: - { - Sequence < sal_Int8 > aSequence; - if ( *pValues >>= aSequence ) - { - bOk = sal_True; - sal_uInt32 nSize = aSequence.getLength(); - if( nSize ) - { - SvMemoryStream aStream (aSequence.getArray(), nSize, STREAM_READ ); - aStream.Seek ( STREAM_SEEK_TO_BEGIN ); - SfxItemSet* pItemSet; - - if( pPrinter ) - { - pItemSet = pPrinter->GetOptions().Clone(); - } - else - { - pItemSet = new SfxItemSet(pDoc->GetPool(), - SID_PRINTER_NOTFOUND_WARN, SID_PRINTER_NOTFOUND_WARN, - SID_PRINTER_CHANGESTODOC, SID_PRINTER_CHANGESTODOC, - ATTR_OPTIONS_PRINT, ATTR_OPTIONS_PRINT, - 0 ); - } - - pPrinter = SfxPrinter::Create ( aStream, pItemSet ); - - MapMode aMM (pPrinter->GetMapMode()); - aMM.SetMapUnit(MAP_100TH_MM); - pPrinter->SetMapMode(aMM); - - pDocSh->SetPrinter( pPrinter ); - - pPrinter = NULL; - } - } - } - break; - - case HANDLE_PARAGRAPHSUMMATION : - { - sal_Bool bIsSummationOfParagraphs = sal_False; - if ( *pValues >>= bIsSummationOfParagraphs ) - { - bOk = sal_True; - bChanged = sal_True; - if ( pDoc->GetDocumentType() == DOCUMENT_TYPE_IMPRESS ) - { - sal_uInt32 nSum = bIsSummationOfParagraphs ? EE_CNTRL_ULSPACESUMMATION : 0; - sal_uInt32 nCntrl; - - pDoc->SetSummationOfParagraphs( bIsSummationOfParagraphs ); - SdDrawDocument* pDocument = pDocSh->GetDoc(); - SdrOutliner& rOutl = pDocument->GetDrawOutliner( sal_False ); - nCntrl = rOutl.GetControlWord() &~ EE_CNTRL_ULSPACESUMMATION; - rOutl.SetControlWord( nCntrl | nSum ); - ::sd::Outliner* pOutl = pDocument->GetOutliner( sal_False ); - if( pOutl ) - { - nCntrl = pOutl->GetControlWord() &~ EE_CNTRL_ULSPACESUMMATION; - pOutl->SetControlWord( nCntrl | nSum ); - } - pOutl = pDocument->GetInternalOutliner( sal_False ); - if( pOutl ) - { - nCntrl = pOutl->GetControlWord() &~ EE_CNTRL_ULSPACESUMMATION; - pOutl->SetControlWord( nCntrl | nSum ); - } - } - } - } - break; - - case HANDLE_CHARCOMPRESS: - { - sal_Int16 nCharCompressType = 0; - if( *pValues >>= nCharCompressType ) - { - bOk = sal_True; - - pDoc->SetCharCompressType( (sal_uInt16)nCharCompressType ); - SdDrawDocument* pDocument = pDocSh->GetDoc(); - SdrOutliner& rOutl = pDocument->GetDrawOutliner( sal_False ); - rOutl.SetAsianCompressionMode( (sal_uInt16)nCharCompressType ); - ::sd::Outliner* pOutl = pDocument->GetOutliner( sal_False ); - if( pOutl ) - { - pOutl->SetAsianCompressionMode( (sal_uInt16)nCharCompressType ); - } - pOutl = pDocument->GetInternalOutliner( sal_False ); - if( pOutl ) - { - pOutl->SetAsianCompressionMode( (sal_uInt16)nCharCompressType ); - } - } - break; - - } - case HANDLE_ASIANPUNCT: - { - sal_Bool bAsianPunct = sal_False; - if( *pValues >>= bAsianPunct ) - { - bOk = sal_True; - - pDoc->SetKernAsianPunctuation( bAsianPunct ); - SdDrawDocument* pDocument = pDocSh->GetDoc(); - SdrOutliner& rOutl = pDocument->GetDrawOutliner( sal_False ); - rOutl.SetKernAsianPunctuation( bAsianPunct ); - ::sd::Outliner* pOutl = pDocument->GetOutliner( sal_False ); - if( pOutl ) - { - pOutl->SetKernAsianPunctuation( bAsianPunct ); - } - pOutl = pDocument->GetInternalOutliner( sal_False ); - if( pOutl ) - { - pOutl->SetKernAsianPunctuation( bAsianPunct ); - } - } - break; - - } - case HANDLE_UPDATEFROMTEMPLATE: - { - sal_Bool value = sal_False; - if( *pValues >>= value ) - { - bChanged = ( value != pDocSh->IsQueryLoadTemplate() ); - pDocSh->SetQueryLoadTemplate( value ); - bOk = sal_True; - } - } - break; - - case HANDLE_PRINTER_INDEPENDENT_LAYOUT: - { - // Just propagate the new printer independent layout mode to - // the document and determine it really differs from the old - // one. - sal_Int16 nOldValue = - (sal_Int16)pDoc->GetPrinterIndependentLayout (); - sal_Int16 nValue = 0; - if (*pValues >>= nValue) - { - pDoc->SetPrinterIndependentLayout (nValue); - bChanged = (nValue != nOldValue); - bOk = sal_True; - } - } - break; - - // --> #i33095# - case HANDLE_LOAD_READONLY: - { - sal_Bool bNewValue = sal_False; - if ( *pValues >>= bNewValue ) - { - bChanged = ( pDocSh->IsLoadReadonly() != bNewValue ); - pDocSh->SetLoadReadonly( bNewValue ); - bOk = sal_True; - } - } - break; - - case HANDLE_SAVE_VERSION: - { - sal_Bool bNewValue = sal_False; - if ( *pValues >>= bNewValue ) - { - bChanged = ( pDocSh->IsSaveVersionOnClose() != bNewValue ); - pDocSh->SetSaveVersionOnClose( bNewValue ); - bOk = sal_True; - } - } - break; - - default: - throw UnknownPropertyException(); - } - - if( !bOk ) - throw IllegalArgumentException(); - } - - if( bOptionsChanged ) - { - if( !pPrinter ) - pPrinter = pDocSh->GetPrinter( sal_True ); - SfxItemSet aNewOptions( pPrinter->GetOptions() ); - aNewOptions.Put( aOptionsPrintItem ); - pPrinter->SetOptions( aNewOptions ); - } - - if( bChanged || bOptionsChanged ) - mpModel->SetModified( sal_True ); -} - -void DocumentSettings::_getPropertyValues( const PropertyMapEntry** ppEntries, Any* pValue ) throw(UnknownPropertyException, WrappedTargetException ) -{ - ::SolarMutexGuard aGuard; - - SdDrawDocument* pDoc = mpModel->GetDoc(); - ::sd::DrawDocShell* pDocSh = mpModel->GetDocShell(); - if( NULL == pDoc || NULL == pDocSh ) - throw UnknownPropertyException(); - - SdOptionsPrintItem aOptionsPrintItem( ATTR_OPTIONS_PRINT ); - - SfxPrinter* pPrinter = pDocSh->GetPrinter( sal_False ); - if( pPrinter ) - { - SdOptionsPrintItem* pPrinterOptions = NULL; - if(pPrinter->GetOptions().GetItemState( ATTR_OPTIONS_PRINT, sal_False, (const SfxPoolItem**) &pPrinterOptions) == SFX_ITEM_SET) - aOptionsPrintItem.GetOptionsPrint() = pPrinterOptions->GetOptionsPrint(); - } - else - { - aOptionsPrintItem.SetOptions( SD_MOD()->GetSdOptions(pDoc->GetDocumentType()) ); - } - SdOptionsPrint& aPrintOpts = aOptionsPrintItem.GetOptionsPrint(); - - for( ; *ppEntries; ppEntries++, pValue++ ) - { - switch( (*ppEntries)->mnHandle ) - { - case HANDLE_COLORTABLEURL: - { - INetURLObject aPathURL( pDoc->GetColorTable()->GetPath() ); - aPathURL.insertName( pDoc->GetColorTable()->GetName() ); - String aExt( RTL_CONSTASCII_USTRINGPARAM("soc") ); - aPathURL.setExtension( aExt ); - OUString aPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) ); - *pValue <<= aPath; - } - break; - case HANDLE_DASHTABLEURL: - { - INetURLObject aPathURL( pDoc->GetDashList()->GetPath() ); - aPathURL.insertName( pDoc->GetDashList()->GetName() ); - String aExt( RTL_CONSTASCII_USTRINGPARAM("sod") ); - aPathURL.setExtension( aExt ); - OUString aPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) ); - *pValue <<= aPath; - } - break; - case HANDLE_LINEENDTABLEURL: - { - INetURLObject aPathURL( pDoc->GetLineEndList()->GetPath() ); - aPathURL.insertName( pDoc->GetLineEndList()->GetName() ); - String aExt( RTL_CONSTASCII_USTRINGPARAM("soe") ); - aPathURL.setExtension( aExt ); - OUString aPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) ); - *pValue <<= aPath; - } - break; - case HANDLE_HATCHTABLEURL: - { - INetURLObject aPathURL( pDoc->GetHatchList()->GetPath() ); - aPathURL.insertName( pDoc->GetHatchList()->GetName() ); - String aExt( RTL_CONSTASCII_USTRINGPARAM("soh") ); - aPathURL.setExtension( aExt ); - OUString aPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) ); - *pValue <<= aPath; - } - break; - case HANDLE_GRADIENTTABLEURL: - { - INetURLObject aPathURL( pDoc->GetGradientList()->GetPath() ); - aPathURL.insertName( pDoc->GetGradientList()->GetName() ); - String aExt( RTL_CONSTASCII_USTRINGPARAM("sog") ); - aPathURL.setExtension( aExt ); - OUString aPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) ); - *pValue <<= aPath; - } - break; - case HANDLE_BITMAPTABLEURL: - { - INetURLObject aPathURL( pDoc->GetBitmapList()->GetPath() ); - aPathURL.insertName( pDoc->GetBitmapList()->GetName() ); - String aExt( RTL_CONSTASCII_USTRINGPARAM("sob") ); - aPathURL.setExtension( aExt ); - OUString aPath( aPathURL.GetMainURL( INetURLObject::NO_DECODE ) ); - *pValue <<= aPath; - } - break; - case HANDLE_FORBIDDENCHARS: - *pValue <<= mpModel->getForbiddenCharsTable(); - break; - - case HANDLE_APPLYUSERDATA: - *pValue <<= pDocSh->IsUseUserData(); - break; - - case HANDLE_PRINTDRAWING: - *pValue <<= (sal_Bool)aPrintOpts.IsDraw(); - break; - case HANDLE_PRINTNOTES: - *pValue <<= (sal_Bool)aPrintOpts.IsNotes(); - break; - case HANDLE_PRINTHANDOUT: - *pValue <<= (sal_Bool)aPrintOpts.IsHandout(); - break; - case HANDLE_PRINTOUTLINE: - *pValue <<= (sal_Bool)aPrintOpts.IsOutline(); - break; - case HANDLE_SLIDESPERHANDOUT: - *pValue <<= (sal_Int16)aPrintOpts.GetHandoutPages(); - break; - case HANDLE_HANDOUTHORIZONTAL: - *pValue <<= (sal_Bool)aPrintOpts.IsHandoutHorizontal(); - break; - case HANDLE_PRINTPAGENAME: - *pValue <<= (sal_Bool)aPrintOpts.IsPagename(); - break; - case HANDLE_PRINTDATE: - *pValue <<= (sal_Bool)aPrintOpts.IsDate(); - break; - case HANDLE_PRINTTIME: - *pValue <<= (sal_Bool)aPrintOpts.IsTime(); - break; - case HANDLE_PRINTHIDENPAGES: - *pValue <<= (sal_Bool)aPrintOpts.IsHiddenPages(); - break; - case HANDLE_PRINTFITPAGE: - *pValue <<= (sal_Bool)aPrintOpts.IsPagesize(); - break; - case HANDLE_PRINTTILEPAGE: - *pValue <<= (sal_Bool)aPrintOpts.IsPagetile(); - break; - case HANDLE_PRINTBOOKLET: - *pValue <<= (sal_Bool)aPrintOpts.IsBooklet(); - break; - case HANDLE_PRINTBOOKLETFRONT: - *pValue <<= (sal_Bool)aPrintOpts.IsFrontPage(); - break; - case HANDLE_PRINTBOOKLETBACK: - *pValue <<= (sal_Bool)aPrintOpts.IsBackPage(); - break; - case HANDLE_PRINTQUALITY: - *pValue <<= (sal_Int32)aPrintOpts.GetOutputQuality(); - break; - case HANDLE_MEASUREUNIT: - { - short nMeasure; - SvxFieldUnitToMeasureUnit( (const short)pDoc->GetUIUnit(), nMeasure ); - *pValue <<= (sal_Int16)nMeasure; - } - break; - case HANDLE_SCALE_NUM: - *pValue <<= (sal_Int32)pDoc->GetUIScale().GetNumerator(); - break; - case HANDLE_SCALE_DOM: - *pValue <<= (sal_Int32)pDoc->GetUIScale().GetDenominator(); - break; - case HANDLE_TABSTOP: - *pValue <<= (sal_Int32)pDoc->GetDefaultTabulator(); - break; - case HANDLE_PAGENUMFMT: - *pValue <<= (sal_Int32)pDoc->GetPageNumType(); - break; - case HANDLE_PRINTERNAME: - { - SfxPrinter *pTempPrinter = pDocSh->GetPrinter( sal_False ); - *pValue <<= pTempPrinter ? OUString ( pTempPrinter->GetName()) : OUString(); - } - break; - case HANDLE_PRINTERJOB: - { - SfxPrinter *pTempPrinter = pDocSh->GetPrinter( sal_False ); - if (pTempPrinter) - { - SvMemoryStream aStream; - pTempPrinter->Store( aStream ); - aStream.Seek ( STREAM_SEEK_TO_END ); - sal_uInt32 nSize = aStream.Tell(); - aStream.Seek ( STREAM_SEEK_TO_BEGIN ); - Sequence < sal_Int8 > aSequence ( nSize ); - memcpy ( aSequence.getArray(), aStream.GetData(), nSize ); - *pValue <<= aSequence; - } - else - { - Sequence < sal_Int8 > aSequence; - *pValue <<= aSequence; - } - } - break; - - case HANDLE_PARAGRAPHSUMMATION : - { - sal_Bool bIsSummationOfParagraphs = pDoc->IsSummationOfParagraphs(); - *pValue <<= bIsSummationOfParagraphs; - } - break; - - case HANDLE_CHARCOMPRESS: - { - *pValue <<= (sal_Int16)pDoc->GetCharCompressType(); - break; - } - - case HANDLE_ASIANPUNCT: - { - *pValue <<= (sal_Bool)pDoc->IsKernAsianPunctuation(); - break; - } - - case HANDLE_UPDATEFROMTEMPLATE: - { - *pValue <<= pDocSh->IsQueryLoadTemplate(); - } - break; - - case HANDLE_PRINTER_INDEPENDENT_LAYOUT: - { - sal_Int16 nPrinterIndependentLayout = - (sal_Int16)pDoc->GetPrinterIndependentLayout(); - *pValue <<= nPrinterIndependentLayout; - } - break; - - // --> #i33095# - case HANDLE_LOAD_READONLY: - { - *pValue <<= pDocSh->IsLoadReadonly(); - } - break; - - case HANDLE_SAVE_VERSION: - { - *pValue <<= pDocSh->IsSaveVersionOnClose(); - } - break; - - default: - throw UnknownPropertyException(); - } - } -} - -// XInterface -Any SAL_CALL DocumentSettings::queryInterface( const Type& aType ) throw (RuntimeException) -{ - return WeakImplHelper3< XPropertySet, XMultiPropertySet, XServiceInfo >::queryInterface( aType ); -} - -void SAL_CALL DocumentSettings::acquire( ) throw () -{ - WeakImplHelper3< XPropertySet, XMultiPropertySet, XServiceInfo >::acquire(); -} - -void SAL_CALL DocumentSettings::release( ) throw () -{ - WeakImplHelper3< XPropertySet, XMultiPropertySet, XServiceInfo >::release(); -} - - -// XPropertySet -Reference< XPropertySetInfo > SAL_CALL DocumentSettings::getPropertySetInfo( ) throw(RuntimeException) -{ - return PropertySetHelper::getPropertySetInfo(); -} - -void SAL_CALL DocumentSettings::setPropertyValue( const OUString& aPropertyName, const Any& aValue ) throw(UnknownPropertyException, PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException) -{ - PropertySetHelper::setPropertyValue( aPropertyName, aValue ); -} - -Any SAL_CALL DocumentSettings::getPropertyValue( const OUString& PropertyName ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException) -{ - return PropertySetHelper::getPropertyValue( PropertyName ); -} - -void SAL_CALL DocumentSettings::addPropertyChangeListener( const OUString& aPropertyName, const Reference< XPropertyChangeListener >& xListener ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException) -{ - PropertySetHelper::addPropertyChangeListener( aPropertyName, xListener ); -} - -void SAL_CALL DocumentSettings::removePropertyChangeListener( const OUString& aPropertyName, const Reference< XPropertyChangeListener >& aListener ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException) -{ - PropertySetHelper::removePropertyChangeListener( aPropertyName, aListener ); -} - -void SAL_CALL DocumentSettings::addVetoableChangeListener( const OUString& PropertyName, const Reference< XVetoableChangeListener >& aListener ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException) -{ - PropertySetHelper::addVetoableChangeListener( PropertyName, aListener ); -} - -void SAL_CALL DocumentSettings::removeVetoableChangeListener( const OUString& PropertyName, const Reference< XVetoableChangeListener >& aListener ) throw(UnknownPropertyException, WrappedTargetException, RuntimeException) -{ - PropertySetHelper::removeVetoableChangeListener( PropertyName, aListener ); -} - -// XMultiPropertySet -void SAL_CALL DocumentSettings::setPropertyValues( const Sequence< OUString >& aPropertyNames, const Sequence< Any >& aValues ) throw(PropertyVetoException, IllegalArgumentException, WrappedTargetException, RuntimeException) -{ - PropertySetHelper::setPropertyValues( aPropertyNames, aValues ); -} - -Sequence< Any > SAL_CALL DocumentSettings::getPropertyValues( const Sequence< OUString >& aPropertyNames ) throw(RuntimeException) -{ - return PropertySetHelper::getPropertyValues( aPropertyNames ); -} - -void SAL_CALL DocumentSettings::addPropertiesChangeListener( const Sequence< OUString >& aPropertyNames, const Reference< XPropertiesChangeListener >& xListener ) throw(RuntimeException) -{ - PropertySetHelper::addPropertiesChangeListener( aPropertyNames, xListener ); -} - -void SAL_CALL DocumentSettings::removePropertiesChangeListener( const Reference< XPropertiesChangeListener >& xListener ) throw(RuntimeException) -{ - PropertySetHelper::removePropertiesChangeListener( xListener ); -} - -void SAL_CALL DocumentSettings::firePropertiesChangeEvent( const Sequence< OUString >& aPropertyNames, const Reference< XPropertiesChangeListener >& xListener ) throw(RuntimeException) -{ - PropertySetHelper::firePropertiesChangeEvent( aPropertyNames, xListener ); -} - -// XServiceInfo -OUString SAL_CALL DocumentSettings::getImplementationName( ) - throw(RuntimeException) -{ - return OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.Draw.DocumentSettings")); -} - -sal_Bool SAL_CALL DocumentSettings::supportsService( const OUString& ServiceName ) - throw(RuntimeException) -{ - const Sequence< OUString > aSeq( getSupportedServiceNames() ); - sal_Int32 nCount = aSeq.getLength(); - const OUString* pServices = aSeq.getConstArray(); - while( nCount-- ) - { - if( *pServices++ == ServiceName ) - return sal_True; - } - - return sal_True; -} - -Sequence< OUString > SAL_CALL DocumentSettings::getSupportedServiceNames( ) - throw(RuntimeException) -{ - Sequence< OUString > aSeq( 2 ); - aSeq[0] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.Settings") ); - if( mpModel->IsImpressDocument() ) - { - aSeq[1] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.DocumentSettings") ); - } - else - { - aSeq[1] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.DocumentSettings") ); - } - - return aSeq; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/UnoDocumentSettings.hxx b/sd/source/ui/unoidl/UnoDocumentSettings.hxx deleted file mode 100644 index 3bdd24ee2..000000000 --- a/sd/source/ui/unoidl/UnoDocumentSettings.hxx +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _SD_UNODOCUMENTSETTINGS_HXX_ -#define _SD_UNODOCUMENTSETTINGS_HXX_ - -#include <com/sun/star/frame/XModel.hpp> - -class SdXImpressDocument; - -namespace sd -{ - ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL DocumentSettings_createInstance( SdXImpressDocument* pDoc ) throw(); -} - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/detreg.cxx b/sd/source/ui/unoidl/detreg.cxx deleted file mode 100644 index 060205f09..000000000 --- a/sd/source/ui/unoidl/detreg.cxx +++ /dev/null @@ -1,84 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" - -#include "sddetect.hxx" -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/registry/XRegistryKey.hpp> -#include <com/sun/star/uno/Sequence.h> -#include <rtl/ustring.hxx> -#include "sal/types.h" - -using namespace ::com::sun::star; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::lang; - -extern "C" { - -SAL_DLLPUBLIC_EXPORT void* SAL_CALL sdd_component_getFactory( - const sal_Char* pImplementationName, - void* pServiceManager, - void* ) -{ - // Set default return value for this operation - if it failed. - void* pReturn = NULL ; - - if ( - ( pImplementationName != NULL ) && - ( pServiceManager != NULL ) - ) - { - // Define variables which are used in following macros. - Reference< XSingleServiceFactory > xFactory ; - Reference< XMultiServiceFactory > xServiceManager( reinterpret_cast< XMultiServiceFactory* >( pServiceManager ) ) ; - - if( SdFilterDetect::impl_getStaticImplementationName().equalsAscii( pImplementationName ) ) - { - xFactory = ::cppu::createSingleFactory( xServiceManager, - SdFilterDetect::impl_getStaticImplementationName(), - SdFilterDetect::impl_createInstance, - SdFilterDetect::impl_getStaticSupportedServiceNames() ); - } - - // Factory is valid - service was found. - if ( xFactory.is() ) - { - xFactory->acquire(); - pReturn = xFactory.get(); - } - } - - // Return with result of this operation. - return pReturn ; -} -} // extern "C" - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/facreg.cxx b/sd/source/ui/unoidl/facreg.cxx deleted file mode 100644 index 7019c2337..000000000 --- a/sd/source/ui/unoidl/facreg.cxx +++ /dev/null @@ -1,510 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" -#include <com/sun/star/registry/XRegistryKey.hpp> - -#include "sddll.hxx" - -#include <cppuhelper/factory.hxx> -#include <uno/lbnames.h> -#include <sfx2/sfxmodelfactory.hxx> -#include "osl/diagnose.h" -#include "sal/types.h" - -#ifndef INCLUDED_STRING_H -#include <string.h> -#define INCLUDED_STRING_H -#endif -#include <comphelper/stl_types.hxx> -#include <boost/unordered_map.hpp> -#include <boost/shared_ptr.hpp> - -using namespace com::sun::star; - -using ::rtl::OUString; - -// Forward declarations of the factories. - -extern uno::Reference< uno::XInterface > SAL_CALL SdDrawingDocument_createInstance( const uno::Reference< lang::XMultiServiceFactory > & _rxFactory, const sal_uInt64 _nCreationFlags ); -extern OUString SdDrawingDocument_getImplementationName() throw( uno::RuntimeException ); -extern uno::Sequence< OUString > SAL_CALL SdDrawingDocument_getSupportedServiceNames() throw( uno::RuntimeException ); - -extern uno::Reference< uno::XInterface > SAL_CALL SdPresentationDocument_createInstance( const uno::Reference< lang::XMultiServiceFactory > & _rxFactory, const sal_uInt64 _nCreationFlags ); -extern OUString SdPresentationDocument_getImplementationName() throw( uno::RuntimeException ); -extern uno::Sequence< OUString > SAL_CALL SdPresentationDocument_getSupportedServiceNames() throw( uno::RuntimeException ); - -extern uno::Reference< uno::XInterface > SAL_CALL SdHtmlOptionsDialog_CreateInstance( const uno::Reference< lang::XMultiServiceFactory > & _rxFactory ); -extern OUString SdHtmlOptionsDialog_getImplementationName() throw( uno::RuntimeException ); -extern uno::Sequence< OUString > SAL_CALL SdHtmlOptionsDialog_getSupportedServiceNames() throw( uno::RuntimeException ); - -extern uno::Reference< uno::XInterface > SAL_CALL SdUnoModule_createInstance( const uno::Reference< lang::XMultiServiceFactory > & _rxFactory ); -extern OUString SdUnoModule_getImplementationName() throw( uno::RuntimeException ); -extern uno::Sequence< OUString > SAL_CALL SdUnoModule_getSupportedServiceNames() throw( uno::RuntimeException ); - -namespace sd -{ -extern uno::Reference< uno::XInterface > SAL_CALL RandomNode_createInstance( const uno::Reference< lang::XMultiServiceFactory > & _rxFactory ); -extern OUString RandomNode__getImplementationName() throw( uno::RuntimeException ); -extern uno::Sequence< OUString > SAL_CALL RandomNode_getSupportedServiceNames() throw( uno::RuntimeException ); - -extern uno::Reference< uno::XInterface > SAL_CALL SlideLayoutController_createInstance( const uno::Reference< lang::XMultiServiceFactory > & _rxFactory ); -extern OUString SlideLayoutController_getImplementationName() throw( uno::RuntimeException ); -extern uno::Sequence< OUString > SlideLayoutController_getSupportedServiceNames() throw( uno::RuntimeException ); - -extern uno::Reference< uno::XInterface > SAL_CALL InsertSlideController_createInstance( const uno::Reference< lang::XMultiServiceFactory > & _rxFactory ); -extern OUString InsertSlideController_getImplementationName() throw( uno::RuntimeException ); -extern uno::Sequence< OUString > InsertSlideController_getSupportedServiceNames() throw( uno::RuntimeException ); -} - -namespace sd { namespace framework { - -extern uno::Reference<uno::XInterface> SAL_CALL Configuration_createInstance( - const uno::Reference<uno::XComponentContext>& rxContext) - throw(uno::Exception); -extern OUString Configuration_getImplementationName(void) throw (uno::RuntimeException); -extern uno::Sequence<OUString> SAL_CALL Configuration_getSupportedServiceNames (void) - throw (uno::RuntimeException); - -extern uno::Reference<uno::XInterface> SAL_CALL ConfigurationController_createInstance( - const uno::Reference<uno::XComponentContext>& rxContext) - throw(uno::Exception); -extern OUString ConfigurationController_getImplementationName(void) throw (uno::RuntimeException); -extern uno::Sequence<OUString> SAL_CALL ConfigurationController_getSupportedServiceNames (void) - throw (uno::RuntimeException); - -extern uno::Reference<uno::XInterface> SAL_CALL ModuleController_createInstance( - const uno::Reference<uno::XComponentContext>& rxContext) - throw(uno::Exception); -extern OUString ModuleController_getImplementationName(void) throw (uno::RuntimeException); -extern uno::Sequence<OUString> SAL_CALL ModuleController_getSupportedServiceNames (void) - throw (uno::RuntimeException); - -extern uno::Reference<uno::XInterface> SAL_CALL BasicPaneFactory_createInstance( - const uno::Reference<uno::XComponentContext>& rxContext) - throw(uno::Exception); -extern OUString BasicPaneFactory_getImplementationName(void) throw (uno::RuntimeException); -extern uno::Sequence<OUString> SAL_CALL BasicPaneFactory_getSupportedServiceNames (void) - throw (uno::RuntimeException); - -extern uno::Reference<uno::XInterface> SAL_CALL BasicToolBarFactory_createInstance( - const uno::Reference<uno::XComponentContext>& rxContext) - throw(uno::Exception); -extern OUString BasicToolBarFactory_getImplementationName(void) throw (uno::RuntimeException); -extern uno::Sequence<OUString> SAL_CALL BasicToolBarFactory_getSupportedServiceNames (void) - throw (uno::RuntimeException); - -extern uno::Reference<uno::XInterface> SAL_CALL BasicViewFactory_createInstance( - const uno::Reference<uno::XComponentContext>& rxContext) - throw(uno::Exception); -extern OUString BasicViewFactory_getImplementationName(void) throw (uno::RuntimeException); -extern uno::Sequence<OUString> SAL_CALL BasicViewFactory_getSupportedServiceNames (void) - throw (uno::RuntimeException); - -extern uno::Reference<uno::XInterface> SAL_CALL TaskPanelFactory_createInstance( - const uno::Reference<uno::XComponentContext>& rxContext) - throw(uno::Exception); -extern OUString TaskPanelFactory_getImplementationName(void) throw (uno::RuntimeException); -extern uno::Sequence<OUString> SAL_CALL TaskPanelFactory_getSupportedServiceNames (void) - throw (uno::RuntimeException); - -extern uno::Reference<uno::XInterface> SAL_CALL ResourceId_createInstance( - const uno::Reference<uno::XComponentContext>& rxContext) - throw(uno::Exception); -extern OUString ResourceId_getImplementationName(void) throw (uno::RuntimeException); -extern uno::Sequence<OUString> SAL_CALL ResourceId_getSupportedServiceNames (void) - throw (uno::RuntimeException); - -extern uno::Reference<uno::XInterface> SAL_CALL PresentationFactoryProvider_createInstance( - const uno::Reference<uno::XComponentContext>& rxContext) - throw(uno::Exception); -extern OUString PresentationFactoryProvider_getImplementationName(void) - throw (uno::RuntimeException); -extern uno::Sequence<OUString> SAL_CALL PresentationFactoryProvider_getSupportedServiceNames (void) - throw (uno::RuntimeException); -} } - - -namespace sd { namespace toolpanel { - -extern uno::Reference<uno::XInterface> SAL_CALL ToolPanelFactory_createInstance( - const uno::Reference<uno::XComponentContext>& rxContext) - throw(uno::Exception); -extern OUString ToolPanelFactory_getImplementationName(void) throw (uno::RuntimeException); -extern uno::Sequence<OUString> SAL_CALL ToolPanelFactory_getSupportedServiceNames (void) - throw (uno::RuntimeException); - -} } - -namespace sd { namespace presenter { -extern uno::Reference<uno::XInterface> SAL_CALL SlideRenderer_createInstance( - const uno::Reference<uno::XComponentContext>& rxContext) - throw(uno::Exception); -extern OUString SlideRenderer_getImplementationName(void) - throw (uno::RuntimeException); -extern uno::Sequence<OUString> SAL_CALL SlideRenderer_getSupportedServiceNames (void) - throw (uno::RuntimeException); - -extern uno::Reference<uno::XInterface> SAL_CALL PresenterCanvas_createInstance( - const uno::Reference<uno::XComponentContext>& rxContext) - throw(uno::Exception); -extern OUString PresenterCanvas_getImplementationName(void) - throw (uno::RuntimeException); -extern uno::Sequence<OUString> SAL_CALL PresenterCanvas_getSupportedServiceNames (void) - throw (uno::RuntimeException); - -extern uno::Reference<uno::XInterface> SAL_CALL PresenterTextViewService_createInstance( - const uno::Reference<uno::XComponentContext>& rxContext) - throw(uno::Exception); -extern OUString PresenterTextViewService_getImplementationName(void) - throw (uno::RuntimeException); -extern uno::Sequence<OUString> SAL_CALL PresenterTextViewService_getSupportedServiceNames (void) - throw (uno::RuntimeException); - -extern uno::Reference<uno::XInterface> SAL_CALL PresenterHelperService_createInstance( - const uno::Reference<uno::XComponentContext>& rxContext) - throw(uno::Exception); -extern OUString PresenterHelperService_getImplementationName(void) - throw (uno::RuntimeException); -extern uno::Sequence<OUString> SAL_CALL PresenterHelperService_getSupportedServiceNames (void) - throw (uno::RuntimeException); - -extern uno::Reference<uno::XInterface> SAL_CALL PresenterPreviewCache_createInstance( - const uno::Reference<uno::XComponentContext>& rxContext) - throw(uno::Exception); -extern OUString PresenterPreviewCache_getImplementationName(void) - throw (uno::RuntimeException); -extern uno::Sequence<OUString> SAL_CALL PresenterPreviewCache_getSupportedServiceNames (void) - throw (uno::RuntimeException); -} } - - -namespace sd { namespace slidesorter { -extern uno::Reference<uno::XInterface> SAL_CALL SlideSorterService_createInstance( - const uno::Reference<uno::XComponentContext>& rxContext) - throw(uno::Exception); -extern OUString SlideSorterService_getImplementationName(void) - throw (uno::RuntimeException); -extern uno::Sequence<OUString> SAL_CALL SlideSorterService_getSupportedServiceNames (void) - throw (uno::RuntimeException); -} } - -using namespace ::sd; -using namespace ::sd::framework; -using namespace ::sd::presenter; -using namespace ::sd::slidesorter; -using namespace ::sd::toolpanel; - - - - -// ---------------------------------------------------------------------------- -// Declaration and initialization of a map from service names to locally -// unique factory identifiers. - -enum FactoryId -{ - SdDrawingDocumentFactoryId, - SdPresentationDocumentFactoryId, - SdHtmlOptionsDialogFactoryId, - SdUnoModuleFactoryId, - RandomNodeFactoryId, - - ConfigurationFactoryId, - ConfigurationControllerFactoryId, - ModuleControllerFactoryId, - BasicPaneFactoryFactoryId, - BasicToolBarFactoryFactoryId, - BasicViewFactoryFactoryId, - TaskPanelFactoryFactoryId, - ToolPanelFactoryFactoryId, - ResourceIdFactoryId, - PresentationFactoryProviderFactoryId, - SlideRendererFactoryId, - PresenterCanvasFactoryId, - PresenterTextViewServiceFactoryId, - PresenterHelperServiceFactoryId, - PresenterPreviewCacheFactoryId, - SlideSorterServiceFactoryId, - SlideLayoutControllerFactoryId, - InsertSlideControllerFactoryId, -}; -typedef ::boost::unordered_map<OUString, FactoryId, rtl::OUStringHash, comphelper::UStringEqual> FactoryMap; - - -namespace { -static ::boost::shared_ptr<FactoryMap> spFactoryMap; -::boost::shared_ptr<FactoryMap> GetFactoryMap (void) -{ - if (spFactoryMap.get() == NULL) - { - spFactoryMap.reset(new FactoryMap); - (*spFactoryMap)[SdDrawingDocument_getImplementationName()] = SdDrawingDocumentFactoryId; - (*spFactoryMap)[SdPresentationDocument_getImplementationName()] = SdPresentationDocumentFactoryId; - (*spFactoryMap)[SdHtmlOptionsDialog_getImplementationName()] = SdHtmlOptionsDialogFactoryId; - (*spFactoryMap)[SdUnoModule_getImplementationName()] = SdUnoModuleFactoryId; - (*spFactoryMap)[RandomNode__getImplementationName()] = RandomNodeFactoryId; - (*spFactoryMap)[Configuration_getImplementationName()] = ConfigurationFactoryId; - (*spFactoryMap)[ConfigurationController_getImplementationName()] = ConfigurationControllerFactoryId; - (*spFactoryMap)[ModuleController_getImplementationName()] = ModuleControllerFactoryId; - (*spFactoryMap)[BasicPaneFactory_getImplementationName()] = BasicPaneFactoryFactoryId; - (*spFactoryMap)[BasicToolBarFactory_getImplementationName()] = BasicToolBarFactoryFactoryId; - (*spFactoryMap)[BasicViewFactory_getImplementationName()] = BasicViewFactoryFactoryId; - (*spFactoryMap)[TaskPanelFactory_getImplementationName()] = TaskPanelFactoryFactoryId; - (*spFactoryMap)[ToolPanelFactory_getImplementationName()] = ToolPanelFactoryFactoryId; - (*spFactoryMap)[ResourceId_getImplementationName()] = ResourceIdFactoryId; - (*spFactoryMap)[PresentationFactoryProvider_getImplementationName()] = PresentationFactoryProviderFactoryId; - (*spFactoryMap)[SlideRenderer_getImplementationName()] = SlideRendererFactoryId; - (*spFactoryMap)[PresenterCanvas_getImplementationName()] = PresenterCanvasFactoryId; - (*spFactoryMap)[PresenterTextViewService_getImplementationName()] = PresenterTextViewServiceFactoryId; - (*spFactoryMap)[PresenterHelperService_getImplementationName()] = PresenterHelperServiceFactoryId; - (*spFactoryMap)[PresenterPreviewCache_getImplementationName()] = PresenterPreviewCacheFactoryId; - (*spFactoryMap)[SlideSorterService_getImplementationName()] = SlideSorterServiceFactoryId; - (*spFactoryMap)[SlideLayoutController_getImplementationName()] = SlideLayoutControllerFactoryId; - (*spFactoryMap)[InsertSlideController_getImplementationName()] = InsertSlideControllerFactoryId; - } - return spFactoryMap; -}; -} // end of anonymous namespace - - -extern "C" -{ - -SAL_DLLPUBLIC_EXPORT void * SAL_CALL sd_component_getFactory( - const sal_Char * pImplName, - void * pServiceManager, - void * ) -{ - void * pRet = 0; - - if( pServiceManager ) - { - uno::Reference< lang::XMultiServiceFactory > xMSF( reinterpret_cast< lang::XMultiServiceFactory * >( pServiceManager ) ); - - uno::Reference<lang::XSingleServiceFactory> xFactory; - uno::Reference<lang::XSingleComponentFactory> xComponentFactory; - - ::boost::shared_ptr<FactoryMap> pFactoryMap (GetFactoryMap()); - OUString sImplementationName (OUString::createFromAscii(pImplName)); - FactoryMap::const_iterator iFactory (pFactoryMap->find(sImplementationName)); - if (iFactory != pFactoryMap->end()) - { - switch (iFactory->second) - { - case SdHtmlOptionsDialogFactoryId: - xFactory = ::cppu::createSingleFactory( - xMSF, - SdHtmlOptionsDialog_getImplementationName(), - SdHtmlOptionsDialog_CreateInstance, - SdHtmlOptionsDialog_getSupportedServiceNames()); - break; - - case SdDrawingDocumentFactoryId: - xFactory = ::sfx2::createSfxModelFactory( - xMSF, - SdDrawingDocument_getImplementationName(), - SdDrawingDocument_createInstance, - SdDrawingDocument_getSupportedServiceNames()); - break; - - case SdPresentationDocumentFactoryId: - xFactory = ::sfx2::createSfxModelFactory( - xMSF, - SdPresentationDocument_getImplementationName(), - SdPresentationDocument_createInstance, - SdPresentationDocument_getSupportedServiceNames()); - break; - - case SdUnoModuleFactoryId: - xFactory = ::cppu::createSingleFactory( - xMSF, - SdUnoModule_getImplementationName(), - SdUnoModule_createInstance, - SdUnoModule_getSupportedServiceNames()); - break; - - case RandomNodeFactoryId: - xFactory = ::cppu::createSingleFactory( - xMSF, - sd::RandomNode__getImplementationName(), - sd::RandomNode_createInstance, - sd::RandomNode_getSupportedServiceNames()); - break; - - case ConfigurationFactoryId: - xComponentFactory = ::cppu::createSingleComponentFactory( - sd::framework::Configuration_createInstance, - sd::framework::Configuration_getImplementationName(), - sd::framework::Configuration_getSupportedServiceNames()); - break; - - case ConfigurationControllerFactoryId: - xComponentFactory = ::cppu::createSingleComponentFactory( - sd::framework::ConfigurationController_createInstance, - sd::framework::ConfigurationController_getImplementationName(), - sd::framework::ConfigurationController_getSupportedServiceNames()); - break; - - case ModuleControllerFactoryId: - xComponentFactory = ::cppu::createSingleComponentFactory( - sd::framework::ModuleController_createInstance, - sd::framework::ModuleController_getImplementationName(), - sd::framework::ModuleController_getSupportedServiceNames()); - break; - - case BasicPaneFactoryFactoryId: - xComponentFactory = ::cppu::createSingleComponentFactory( - sd::framework::BasicPaneFactory_createInstance, - sd::framework::BasicPaneFactory_getImplementationName(), - sd::framework::BasicPaneFactory_getSupportedServiceNames()); - break; - - case BasicToolBarFactoryFactoryId: - xComponentFactory = ::cppu::createSingleComponentFactory( - sd::framework::BasicToolBarFactory_createInstance, - sd::framework::BasicToolBarFactory_getImplementationName(), - sd::framework::BasicToolBarFactory_getSupportedServiceNames()); - break; - - case BasicViewFactoryFactoryId: - xComponentFactory = ::cppu::createSingleComponentFactory( - sd::framework::BasicViewFactory_createInstance, - sd::framework::BasicViewFactory_getImplementationName(), - sd::framework::BasicViewFactory_getSupportedServiceNames()); - break; - - case TaskPanelFactoryFactoryId: - xComponentFactory = ::cppu::createSingleComponentFactory( - sd::framework::TaskPanelFactory_createInstance, - sd::framework::TaskPanelFactory_getImplementationName(), - sd::framework::TaskPanelFactory_getSupportedServiceNames()); - break; - - case ToolPanelFactoryFactoryId: - xComponentFactory = ::cppu::createSingleComponentFactory( - sd::toolpanel::ToolPanelFactory_createInstance, - sd::toolpanel::ToolPanelFactory_getImplementationName(), - sd::toolpanel::ToolPanelFactory_getSupportedServiceNames()); - break; - - case ResourceIdFactoryId: - xComponentFactory = ::cppu::createSingleComponentFactory( - sd::framework::ResourceId_createInstance, - sd::framework::ResourceId_getImplementationName(), - sd::framework::ResourceId_getSupportedServiceNames()); - break; - - case PresentationFactoryProviderFactoryId: - xComponentFactory = ::cppu::createSingleComponentFactory( - sd::framework::PresentationFactoryProvider_createInstance, - sd::framework::PresentationFactoryProvider_getImplementationName(), - sd::framework::PresentationFactoryProvider_getSupportedServiceNames()); - break; - - case SlideRendererFactoryId: - xComponentFactory = ::cppu::createSingleComponentFactory( - sd::presenter::SlideRenderer_createInstance, - sd::presenter::SlideRenderer_getImplementationName(), - sd::presenter::SlideRenderer_getSupportedServiceNames()); - break; - - case PresenterCanvasFactoryId: - xComponentFactory = ::cppu::createSingleComponentFactory( - sd::presenter::PresenterCanvas_createInstance, - sd::presenter::PresenterCanvas_getImplementationName(), - sd::presenter::PresenterCanvas_getSupportedServiceNames()); - break; - - case PresenterTextViewServiceFactoryId: - xComponentFactory = ::cppu::createSingleComponentFactory( - sd::presenter::PresenterTextViewService_createInstance, - sd::presenter::PresenterTextViewService_getImplementationName(), - sd::presenter::PresenterTextViewService_getSupportedServiceNames()); - break; - - case PresenterHelperServiceFactoryId: - xComponentFactory = ::cppu::createSingleComponentFactory( - sd::presenter::PresenterHelperService_createInstance, - sd::presenter::PresenterHelperService_getImplementationName(), - sd::presenter::PresenterHelperService_getSupportedServiceNames()); - break; - - case PresenterPreviewCacheFactoryId: - xComponentFactory = ::cppu::createSingleComponentFactory( - sd::presenter::PresenterPreviewCache_createInstance, - sd::presenter::PresenterPreviewCache_getImplementationName(), - sd::presenter::PresenterPreviewCache_getSupportedServiceNames()); - break; - - case SlideSorterServiceFactoryId: - xComponentFactory = ::cppu::createSingleComponentFactory( - sd::slidesorter::SlideSorterService_createInstance, - sd::slidesorter::SlideSorterService_getImplementationName(), - sd::slidesorter::SlideSorterService_getSupportedServiceNames()); - break; - - case SlideLayoutControllerFactoryId: - xFactory = ::cppu::createSingleFactory( - xMSF, - sd::SlideLayoutController_getImplementationName(), - sd::SlideLayoutController_createInstance, - sd::SlideLayoutController_getSupportedServiceNames()); - break; - - case InsertSlideControllerFactoryId: - xFactory = ::cppu::createSingleFactory( - xMSF, - sd::InsertSlideController_getImplementationName(), - sd::InsertSlideController_createInstance, - sd::InsertSlideController_getSupportedServiceNames()); - default: - break; - } - if (xComponentFactory.is()) - { - xComponentFactory->acquire(); - pRet = xComponentFactory.get(); - } - else if (xFactory.is()) - { - xFactory->acquire(); - pRet = xFactory.get(); - } - } - } - - if (pRet != NULL) - SdDLL::Init(); - return pRet; -} - -} // end of extern "C" - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/randomnode.cxx b/sd/source/ui/unoidl/randomnode.cxx deleted file mode 100644 index 0183fba4b..000000000 --- a/sd/source/ui/unoidl/randomnode.cxx +++ /dev/null @@ -1,702 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" -#include <com/sun/star/animations/XTimeContainer.hpp> -#include <com/sun/star/presentation/ParagraphTarget.hpp> -#include <com/sun/star/animations/AnimationFill.hpp> -#include <com/sun/star/animations/XAnimate.hpp> -#include <com/sun/star/animations/AnimationRestart.hpp> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/lang/XInitialization.hpp> -#include <com/sun/star/container/XEnumerationAccess.hpp> -#include <com/sun/star/util/XCloneable.hpp> -#include <comphelper/processfactory.hxx> - -#include <cppuhelper/implbase5.hxx> -#include <osl/mutex.hxx> -#include "CustomAnimationPreset.hxx" - -using ::osl::Mutex; -using ::osl::Guard; -using ::rtl::OUString; - -using ::com::sun::star::uno::Reference; -using ::com::sun::star::uno::RuntimeException; -using ::com::sun::star::uno::Exception; -using ::com::sun::star::uno::Sequence; -using ::com::sun::star::uno::Any; -using ::com::sun::star::uno::UNO_QUERY; -using ::com::sun::star::uno::XInterface; -using ::com::sun::star::lang::NoSupportException; -using ::com::sun::star::beans::NamedValue; -using ::com::sun::star::lang::IllegalArgumentException; -using ::com::sun::star::container::NoSuchElementException; -using ::com::sun::star::container::ElementExistException; -using ::com::sun::star::lang::WrappedTargetException; -using ::com::sun::star::container::XEnumeration; -using ::com::sun::star::container::XEnumerationAccess; -using ::com::sun::star::util::XCloneable; -using ::com::sun::star::lang::XServiceInfo; -using ::com::sun::star::lang::XInitialization; -using ::com::sun::star::uno::Type; -using ::com::sun::star::uno::XWeak; -using ::com::sun::star::lang::XMultiServiceFactory; -using ::com::sun::star::presentation::ParagraphTarget; -using ::com::sun::star::drawing::XShape; - -using namespace ::com::sun::star::animations; -namespace sd -{ - -typedef ::cppu::WeakImplHelper5< XTimeContainer, XEnumerationAccess, XCloneable, XServiceInfo, XInitialization > RandomAnimationNodeBase; -class RandomAnimationNode : public RandomAnimationNodeBase -{ -public: - RandomAnimationNode( const RandomAnimationNode& rNode ); - RandomAnimationNode( sal_Int16 nPresetClass ); - RandomAnimationNode(); - - void init( sal_Int16 nPresetClass ); - - // XInitialization - void SAL_CALL initialize( const Sequence< Any >& aArguments ) throw (Exception, RuntimeException); - - // XChild - Reference< XInterface > SAL_CALL getParent( ) throw (RuntimeException); - void SAL_CALL setParent( const Reference< XInterface >& Parent ) throw (NoSupportException, RuntimeException); - - // XCloneable - virtual Reference< XCloneable > SAL_CALL createClone() throw (RuntimeException); - - // XServiceInfo - OUString SAL_CALL getImplementationName() throw(); - Sequence< OUString > SAL_CALL getSupportedServiceNames(void) throw(); - sal_Bool SAL_CALL supportsService(const OUString& ServiceName) throw(); - - // XAnimationNode - ::sal_Int16 SAL_CALL getType() throw (RuntimeException); - Any SAL_CALL getBegin() throw (RuntimeException); - void SAL_CALL setBegin( const Any& _begin ) throw (RuntimeException); - Any SAL_CALL getDuration() throw (RuntimeException); - void SAL_CALL setDuration( const Any& _duration ) throw (RuntimeException); - Any SAL_CALL getEnd() throw (RuntimeException); - void SAL_CALL setEnd( const Any& _end ) throw (RuntimeException); - Any SAL_CALL getEndSync() throw (RuntimeException); - void SAL_CALL setEndSync( const Any& _endsync ) throw (RuntimeException); - Any SAL_CALL getRepeatCount() throw (RuntimeException); - void SAL_CALL setRepeatCount( const Any& _repeatcount ) throw (RuntimeException); - Any SAL_CALL getRepeatDuration() throw (RuntimeException); - void SAL_CALL setRepeatDuration( const Any& _repeatduration ) throw (RuntimeException); - ::sal_Int16 SAL_CALL getFill() throw (RuntimeException); - void SAL_CALL setFill( ::sal_Int16 _fill ) throw (RuntimeException); - ::sal_Int16 SAL_CALL getFillDefault() throw (RuntimeException); - void SAL_CALL setFillDefault( ::sal_Int16 _filldefault ) throw (RuntimeException); - ::sal_Int16 SAL_CALL getRestart() throw (RuntimeException); - void SAL_CALL setRestart( ::sal_Int16 _restart ) throw (RuntimeException); - ::sal_Int16 SAL_CALL getRestartDefault() throw (RuntimeException); - void SAL_CALL setRestartDefault( ::sal_Int16 _restartdefault ) throw (RuntimeException); - double SAL_CALL getAcceleration() throw (RuntimeException); - void SAL_CALL setAcceleration( double _acceleration ) throw (RuntimeException); - double SAL_CALL getDecelerate() throw (RuntimeException); - void SAL_CALL setDecelerate( double _decelerate ) throw (RuntimeException); - ::sal_Bool SAL_CALL getAutoReverse() throw (RuntimeException); - void SAL_CALL setAutoReverse( ::sal_Bool _autoreverse ) throw (RuntimeException); - Sequence< NamedValue > SAL_CALL getUserData() throw (RuntimeException); - void SAL_CALL setUserData( const Sequence< NamedValue >& _userdata ) throw (RuntimeException); - - // XElementAccess - virtual Type SAL_CALL getElementType() throw (RuntimeException); - virtual sal_Bool SAL_CALL hasElements() throw (RuntimeException); - - // XEnumerationAccess - virtual Reference< XEnumeration > SAL_CALL createEnumeration() throw (RuntimeException); - - // XTimeContainer - Reference< XAnimationNode > SAL_CALL insertBefore( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& refChild ) throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException); - Reference< XAnimationNode > SAL_CALL insertAfter( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& refChild ) throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException); - Reference< XAnimationNode > SAL_CALL replaceChild( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& oldChild ) throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException); - Reference< XAnimationNode > SAL_CALL removeChild( const Reference< XAnimationNode >& oldChild ) throw (IllegalArgumentException, NoSuchElementException, WrappedTargetException, RuntimeException); - Reference< XAnimationNode > SAL_CALL appendChild( const Reference< XAnimationNode >& newChild ) throw (IllegalArgumentException, ElementExistException, WrappedTargetException, RuntimeException); - -private: - // our first, last and only protection from mutli-threads! - Mutex maMutex; - - sal_Int16 mnPresetClass; - Reference< XInterface > mxParent; - - Any maBegin, maDuration, maEnd, maEndSync, maRepeatCount, maRepeatDuration, maTarget; - sal_Int16 mnFill, mnFillDefault, mnRestart, mnRestartDefault; - double mfAcceleration, mfDecelerate; - sal_Bool mbAutoReverse; - Sequence< NamedValue > maUserData; - - Reference< XAnimate > mxFirstNode; -}; - -// -------------------------------------------------------------------- - -static const sal_Char* pSN1 = "com.sun.star.animations.ParallelTimeContainer"; -static const sal_Char* pSN2 = "com.sun.star.comp.sd.RandomAnimationNode"; - -// -------------------------------------------------------------------- - -SD_DLLPUBLIC Reference< XInterface > RandomAnimationNode_createInstance( sal_Int16 nPresetClass ) -{ - Reference< XInterface > xInt( static_cast<XWeak*>( new RandomAnimationNode( nPresetClass ) ) ); - return xInt; -} - -// -------------------------------------------------------------------- - -Reference< XInterface > SAL_CALL RandomNode_createInstance( const Reference< XMultiServiceFactory > & ) -{ - Reference< XInterface > xInt( static_cast<XWeak*>( new RandomAnimationNode() ) ); - return xInt; -} - -// -------------------------------------------------------------------- - -OUString RandomNode__getImplementationName() throw( RuntimeException ) -{ - return OUString( RTL_CONSTASCII_USTRINGPARAM( "sd::RandomAnimationNode" ) ); -} - -// -------------------------------------------------------------------- - -Sequence< OUString > SAL_CALL RandomNode_getSupportedServiceNames() throw( RuntimeException ) -{ - static const OUString aSN2( OUString::createFromAscii( pSN2 ) ); - Sequence< OUString > aSeq( &aSN2, 1 ); - return aSeq; -} - -// -------------------------------------------------------------------- - -RandomAnimationNode::RandomAnimationNode( const RandomAnimationNode& rNode ) -: RandomAnimationNodeBase(), - mnPresetClass( rNode.mnPresetClass ), - maBegin( rNode.maBegin ), - maDuration( rNode.maDuration ), - maEnd( rNode.maEnd ), - maEndSync( rNode.maEndSync ), - maRepeatCount( rNode.maRepeatCount ), - maRepeatDuration( rNode.maRepeatDuration ), - maTarget( rNode.maTarget ), - mnFill( rNode.mnFill ), - mnFillDefault( rNode.mnFillDefault ), - mnRestart( rNode.mnRestart ), - mnRestartDefault( rNode.mnRestartDefault ), - mfAcceleration( rNode.mfAcceleration ), - mfDecelerate( rNode.mfDecelerate ), - mbAutoReverse( rNode.mbAutoReverse ), - maUserData( rNode.maUserData ) -{ -} - -// -------------------------------------------------------------------- - -RandomAnimationNode::RandomAnimationNode( sal_Int16 nPresetClass ) -{ - init( nPresetClass ); -} - -RandomAnimationNode::RandomAnimationNode() -{ - init( 1 ); -} - -void RandomAnimationNode::init( sal_Int16 nPresetClass ) -{ - mnPresetClass = nPresetClass; - mnFill = AnimationFill::DEFAULT; - mnFillDefault = AnimationFill::INHERIT; - mnRestart = AnimationRestart::DEFAULT; - mnRestartDefault = AnimationRestart::INHERIT; - mfAcceleration = 0.0; - mfDecelerate = 0.0; - mbAutoReverse = sal_False; -} - -// -------------------------------------------------------------------- - -// XInitialization -void SAL_CALL RandomAnimationNode::initialize( const Sequence< Any >& aArguments ) throw (Exception, RuntimeException) -{ - if( aArguments.getLength() != 1 ) - throw IllegalArgumentException(); - - if( aArguments[0].getValueType() == ::getCppuType((const sal_Int16*)0) ) - { - aArguments[0] >>= mnPresetClass; - } - else if( aArguments[0].getValueType() != ::getCppuType((const ParagraphTarget*)0) ) - { - Reference< XShape > xShape; - aArguments[0] >>= xShape; - if( !xShape.is() ) - throw IllegalArgumentException(); - } - maTarget = aArguments[0]; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -sal_Int16 SAL_CALL RandomAnimationNode::getType() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return ::com::sun::star::animations::AnimationNodeType::PAR; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -Any SAL_CALL RandomAnimationNode::getBegin() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maBegin; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL RandomAnimationNode::setBegin( const Any& _begin ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - maBegin = _begin; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -Any SAL_CALL RandomAnimationNode::getDuration() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maDuration; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL RandomAnimationNode::setDuration( const Any& _duration ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - maDuration = _duration; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -Any SAL_CALL RandomAnimationNode::getEnd() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maEnd; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL RandomAnimationNode::setEnd( const Any& _end ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - maEnd = _end; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -Any SAL_CALL RandomAnimationNode::getEndSync() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maEndSync; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL RandomAnimationNode::setEndSync( const Any& _endsync ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - maEndSync = _endsync; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -Any SAL_CALL RandomAnimationNode::getRepeatCount() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maRepeatCount; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL RandomAnimationNode::setRepeatCount( const Any& _repeatcount ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - maRepeatCount = _repeatcount; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -Any SAL_CALL RandomAnimationNode::getRepeatDuration() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maRepeatDuration; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL RandomAnimationNode::setRepeatDuration( const Any& _repeatduration ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - maRepeatDuration = _repeatduration; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -sal_Int16 SAL_CALL RandomAnimationNode::getFill() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnFill; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL RandomAnimationNode::setFill( sal_Int16 _fill ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - mnFill = _fill; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -sal_Int16 SAL_CALL RandomAnimationNode::getFillDefault() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnFillDefault; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL RandomAnimationNode::setFillDefault( sal_Int16 _filldefault ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - mnFillDefault = _filldefault; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -sal_Int16 SAL_CALL RandomAnimationNode::getRestart() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnRestart; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL RandomAnimationNode::setRestart( sal_Int16 _restart ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - mnRestart = _restart; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -sal_Int16 SAL_CALL RandomAnimationNode::getRestartDefault() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mnRestartDefault; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL RandomAnimationNode::setRestartDefault( sal_Int16 _restartdefault ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - mnRestartDefault = _restartdefault; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -double SAL_CALL RandomAnimationNode::getAcceleration() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mfAcceleration; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL RandomAnimationNode::setAcceleration( double _acceleration ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - mfAcceleration = _acceleration; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -double SAL_CALL RandomAnimationNode::getDecelerate() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mfDecelerate; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL RandomAnimationNode::setDecelerate( double _decelerate ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - mfDecelerate = _decelerate; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -sal_Bool SAL_CALL RandomAnimationNode::getAutoReverse() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mbAutoReverse; -} - -// -------------------------------------------------------------------- - -// XAnimationNode -void SAL_CALL RandomAnimationNode::setAutoReverse( sal_Bool _autoreverse ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - mbAutoReverse = _autoreverse; -} - -// -------------------------------------------------------------------- - -Sequence< NamedValue > SAL_CALL RandomAnimationNode::getUserData() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return maUserData; -} - -// -------------------------------------------------------------------- - -void SAL_CALL RandomAnimationNode::setUserData( const Sequence< NamedValue >& _userdata ) throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - maUserData = _userdata; -} - -// -------------------------------------------------------------------- - -// XChild -Reference< XInterface > SAL_CALL RandomAnimationNode::getParent() throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - return mxParent; -} - -// -------------------------------------------------------------------- - -// XChild -void SAL_CALL RandomAnimationNode::setParent( const Reference< XInterface >& Parent ) throw (NoSupportException, RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - mxParent = Parent; -} - -// -------------------------------------------------------------------- - -// XCloneable -Reference< XCloneable > SAL_CALL RandomAnimationNode::createClone() throw (RuntimeException) -{ - Reference< XCloneable > xNewNode( new RandomAnimationNode( *this ) ); - return xNewNode; -} - -// -------------------------------------------------------------------- - -// XElementAccess -Type SAL_CALL RandomAnimationNode::getElementType() throw (RuntimeException) -{ - return ::getCppuType((const Reference< XAnimationNode >*)0); -} - -// -------------------------------------------------------------------- - -// XElementAccess -sal_Bool SAL_CALL RandomAnimationNode::hasElements() throw (RuntimeException) -{ - return sal_True; -} - -// -------------------------------------------------------------------- - -// XEnumerationAccess -Reference< XEnumeration > SAL_CALL RandomAnimationNode::createEnumeration() - throw (RuntimeException) -{ - Guard< Mutex > aGuard( maMutex ); - - if( !maTarget.hasValue() && mxFirstNode.is() ) - { - Any aTarget( mxFirstNode->getTarget() ); - if( aTarget.hasValue() ) - { - maTarget = aTarget; - mxFirstNode.clear(); - } - } - - Reference< XEnumeration > xEnum; - - Reference< XEnumerationAccess > aEnumAccess( CustomAnimationPresets::getCustomAnimationPresets().getRandomPreset( mnPresetClass ), UNO_QUERY ); - - if( aEnumAccess.is() ) - { - Reference< XEnumeration > xEnumeration( aEnumAccess->createEnumeration(), UNO_QUERY ); - if( xEnumeration.is() ) - { - while( xEnumeration->hasMoreElements() ) - { - Reference< XAnimate > xAnimate( xEnumeration->nextElement(), UNO_QUERY ); - if( xAnimate.is() ) - xAnimate->setTarget( maTarget ); - } - } - xEnum = aEnumAccess->createEnumeration(); - } - else - { - // no presets? give empty node! - Reference< XMultiServiceFactory > xServiceFactory( comphelper::getProcessServiceFactory() ); - Reference< XEnumerationAccess > aEmptyEnumAccess( - xServiceFactory->createInstance( - OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.animations.ParallelTimeContainer" ))), - UNO_QUERY ); - - if( aEmptyEnumAccess.is() ) - xEnum = aEmptyEnumAccess->createEnumeration(); - } - - return xEnum; -} - -// -------------------------------------------------------------------- - - -// XTimeContainer -Reference< XAnimationNode > SAL_CALL RandomAnimationNode::insertBefore( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& ) - throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException) -{ - return appendChild( newChild ); -} - -// -------------------------------------------------------------------- - -// XTimeContainer -Reference< XAnimationNode > SAL_CALL RandomAnimationNode::insertAfter( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& ) - throw (IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException) -{ - return appendChild( newChild ); -} - -// -------------------------------------------------------------------- - -// XTimeContainer -Reference< XAnimationNode > SAL_CALL RandomAnimationNode::replaceChild( const Reference< XAnimationNode >& newChild, const Reference< XAnimationNode >& ) - throw( IllegalArgumentException, NoSuchElementException, ElementExistException, WrappedTargetException, RuntimeException) -{ - return appendChild( newChild ); -} - -// -------------------------------------------------------------------- - -// XTimeContainer -Reference< XAnimationNode > SAL_CALL RandomAnimationNode::removeChild( const Reference< XAnimationNode >& oldChild ) - throw(IllegalArgumentException, NoSuchElementException, WrappedTargetException, RuntimeException) -{ - return oldChild; -} - -// -------------------------------------------------------------------- - -// XTimeContainer -Reference< XAnimationNode > SAL_CALL RandomAnimationNode::appendChild( const Reference< XAnimationNode >& newChild ) - throw(IllegalArgumentException, ElementExistException, WrappedTargetException, RuntimeException) -{ - Reference< XAnimate > xAnimate( newChild, UNO_QUERY ); - if( xAnimate.is() ) - { - Any aTarget( xAnimate->getTarget() ); - if( aTarget.hasValue() ) - maTarget = aTarget; - } - - if( !maTarget.hasValue() && !mxFirstNode.is() ) - mxFirstNode = xAnimate; - - return newChild; -} - -// XServiceInfo -OUString RandomAnimationNode::getImplementationName() throw() -{ - return RandomNode__getImplementationName(); -} - -// XServiceInfo -sal_Bool RandomAnimationNode::supportsService(const OUString& ServiceName) throw() -{ - return ServiceName.equalsAscii( pSN1 ) || ServiceName.equalsAscii( pSN2 ); -} - -// XServiceInfo -Sequence< OUString > RandomAnimationNode::getSupportedServiceNames(void) throw() -{ - return RandomNode_getSupportedServiceNames(); -} - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/sddetect.cxx b/sd/source/ui/unoidl/sddetect.cxx deleted file mode 100644 index b40705284..000000000 --- a/sd/source/ui/unoidl/sddetect.cxx +++ /dev/null @@ -1,540 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" - -#include "sddetect.hxx" - -#include <framework/interaction.hxx> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/beans/PropertyValue.hpp> -#include <com/sun/star/frame/XFrame.hpp> -#include <com/sun/star/frame/XModel.hpp> -#include <com/sun/star/awt/XWindow.hpp> -#include <com/sun/star/lang/XUnoTunnel.hpp> -#include <comphelper/processfactory.hxx> -#include <com/sun/star/beans/PropertyValue.hpp> -#include <com/sun/star/container/XNameAccess.hpp> -#include <com/sun/star/io/XInputStream.hpp> -#include <com/sun/star/task/XInteractionHandler.hpp> -#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp> -#include <com/sun/star/ucb/CommandAbortedException.hpp> -#include <com/sun/star/ucb/InteractiveAppException.hpp> -#include <com/sun/star/ucb/XContent.hpp> -#include <com/sun/star/packages/zip/ZipIOException.hpp> -#include <framework/interaction.hxx> -#include <toolkit/helper/vclunohelper.hxx> -#include <ucbhelper/simpleinteractionrequest.hxx> -#include <svtools/filter.hxx> -#include <rtl/ustring.h> -#include <rtl/logfile.hxx> -#include <svl/itemset.hxx> -#include <vcl/window.hxx> -#include <svl/eitem.hxx> -#include <svl/stritem.hxx> -#include <tools/urlobj.hxx> -#include <osl/mutex.hxx> -#include <svtools/sfxecode.hxx> -#include <svtools/ehdl.hxx> -#include <sot/storinfo.hxx> -#include <vcl/svapp.hxx> -#include <sfx2/app.hxx> -#include <sfx2/sfxsids.hrc> -#include <sfx2/request.hxx> -#include <sfx2/docfile.hxx> -#include <sfx2/docfilt.hxx> -#include <sfx2/fcontnr.hxx> -#include <sfx2/brokenpackageint.hxx> -#include <svtools/FilterConfigItem.hxx> -#include <sot/storage.hxx> -#include <unotools/moduleoptions.hxx> -#include <com/sun/star/util/XArchiver.hpp> -#include <comphelper/processfactory.hxx> - -#include "strmname.h" - -using namespace ::com::sun::star; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::io; -using namespace ::com::sun::star::frame; -using namespace ::com::sun::star::task; -using namespace ::com::sun::star::beans; -using namespace ::com::sun::star::lang; -using namespace ::com::sun::star::ucb; -using namespace ::rtl; - -SdFilterDetect::SdFilterDetect( const REFERENCE < ::com::sun::star::lang::XMultiServiceFactory >& ) -{ -} - -SdFilterDetect::~SdFilterDetect() -{ -} - -::rtl::OUString SAL_CALL SdFilterDetect::detect( ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lDescriptor ) throw( ::com::sun::star::uno::RuntimeException ) -{ - REFERENCE< XInputStream > xStream; - REFERENCE< XContent > xContent; - REFERENCE< XInteractionHandler > xInteraction; - String aURL; - ::rtl::OUString sTemp; - String aTypeName; // a name describing the type (from MediaDescriptor, usually from flat detection) - String aPreselectedFilterName; // a name describing the filter to use (from MediaDescriptor, usually from UI action) - - ::rtl::OUString aDocumentTitle; // interesting only if set in this method - - // opening as template is done when a parameter tells to do so and a template filter can be detected - // (otherwise no valid filter would be found) or if the detected filter is a template filter and - // there is no parameter that forbids to open as template - sal_Bool bOpenAsTemplate = sal_False; - sal_Bool bWasReadOnly = sal_False, bReadOnly = sal_False; - - sal_Bool bRepairPackage = sal_False; - sal_Bool bRepairAllowed = sal_False; - - // now some parameters that can already be in the array, but may be overwritten or new inserted here - // remember their indices in the case new values must be added to the array - sal_Int32 nPropertyCount = lDescriptor.getLength(); - sal_Int32 nIndexOfInputStream = -1; - sal_Int32 nIndexOfContent = -1; - sal_Int32 nIndexOfReadOnlyFlag = -1; - sal_Int32 nIndexOfTemplateFlag = -1; - sal_Int32 nIndexOfDocumentTitle = -1; - - for( sal_Int32 nProperty=0; nProperty<nPropertyCount; ++nProperty ) - { - // extract properties - if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("URL")) ) - { - lDescriptor[nProperty].Value >>= sTemp; - aURL = sTemp; - } - else if( !aURL.Len() && lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("FileName")) ) - { - lDescriptor[nProperty].Value >>= sTemp; - aURL = sTemp; - } - else if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("TypeName")) ) - { - lDescriptor[nProperty].Value >>= sTemp; - aTypeName = sTemp; - } - else if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("FilterName")) ) - { - lDescriptor[nProperty].Value >>= sTemp; - aPreselectedFilterName = sTemp; - } - else if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("InputStream")) ) - nIndexOfInputStream = nProperty; - else if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("ReadOnly")) ) - nIndexOfReadOnlyFlag = nProperty; - else if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("UCBContent")) ) - nIndexOfContent = nProperty; - else if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("AsTemplate")) ) - { - lDescriptor[nProperty].Value >>= bOpenAsTemplate; - nIndexOfTemplateFlag = nProperty; - } - else if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("InteractionHandler")) ) - lDescriptor[nProperty].Value >>= xInteraction; - else if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("RepairPackage")) ) - lDescriptor[nProperty].Value >>= bRepairPackage; - else if( lDescriptor[nProperty].Name == OUString(RTL_CONSTASCII_USTRINGPARAM("DocumentTitle")) ) - nIndexOfDocumentTitle = nProperty; - } - - // can't check the type for external filters, so set the "dont" flag accordingly - SolarMutexGuard aGuard; - //SfxFilterFlags nMust = SFX_FILTER_IMPORT, nDont = SFX_FILTER_NOTINSTALLED; - - SfxApplication* pApp = SFX_APP(); - SfxAllItemSet *pSet = new SfxAllItemSet( pApp->GetPool() ); - TransformParameters( SID_OPENDOC, lDescriptor, *pSet ); - SFX_ITEMSET_ARG( pSet, pItem, SfxBoolItem, SID_DOC_READONLY, sal_False ); - - bWasReadOnly = pItem && pItem->GetValue(); - - const SfxFilter* pFilter = 0; - String aFilterName; - String aPrefix = String::CreateFromAscii( "private:factory/" ); - if( aURL.Match( aPrefix ) == aPrefix.Len() ) - { - if( SvtModuleOptions().IsImpress() ) - { - String aPattern( aPrefix ); - aPattern += String::CreateFromAscii("simpress"); - if ( aURL.Match( aPattern ) >= aPattern.Len() ) - pFilter = SfxFilter::GetDefaultFilterFromFactory( aURL ); - } - - if( !pFilter && SvtModuleOptions().IsDraw() ) - { - String aPattern( aPrefix ); - aPattern += String::CreateFromAscii("sdraw"); - if ( aURL.Match( aPattern ) >= aPattern.Len() ) - pFilter = SfxFilter::GetDefaultFilterFromFactory( aURL ); - } - } - else - { - // ctor of SfxMedium uses owner transition of ItemSet - SfxMedium aMedium( aURL, bWasReadOnly ? STREAM_STD_READ : STREAM_STD_READWRITE, sal_False, NULL, pSet ); - aMedium.UseInteractionHandler( sal_True ); - if ( aPreselectedFilterName.Len() ) - pFilter = SfxFilter::GetFilterByName( aPreselectedFilterName ); - else if( aTypeName.Len() ) - { - SfxFilterMatcher aMatch; - pFilter = aMatch.GetFilter4EA( aTypeName ); - } - - if ( aMedium.GetErrorCode() == ERRCODE_NONE ) - { - // remember input stream and content and put them into the descriptor later - // should be done here since later the medium can switch to a version - xStream = aMedium.GetInputStream(); - xContent = aMedium.GetContent(); - bReadOnly = aMedium.IsReadOnly(); - sal_Bool bIsStorage = aMedium.IsStorage(); - - if (aMedium.GetError() == SVSTREAM_OK) - { - if ( bIsStorage ) - { - // PowerPoint needs to be detected via StreamName, all other storage based formats are our own and can - // be detected by the ClipboardId, so except for the PPT filter all filters must have a ClipboardId set - uno::Reference < embed::XStorage > xStorage = aMedium.GetStorage( sal_False ); - - //TODO/LATER: move error handling to central place! (maybe even complete own filters) - if ( aMedium.GetLastStorageCreationState() != ERRCODE_NONE ) - { - // error during storage creation means _here_ that the medium - // is broken, but we can not handle it in medium since unpossibility - // to create a storage does not _always_ means that the medium is broken - aMedium.SetError( aMedium.GetLastStorageCreationState(), ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( OSL_LOG_PREFIX ) ) ); - if ( xInteraction.is() ) - { - OUString empty; - try - { - InteractiveAppException xException( empty, - REFERENCE< XInterface >(), - InteractionClassification_ERROR, - aMedium.GetError() ); - - REFERENCE< XInteractionRequest > xRequest( - new ucbhelper::SimpleInteractionRequest( makeAny( xException ), - ucbhelper::CONTINUATION_APPROVE ) ); - xInteraction->handle( xRequest ); - } - catch ( Exception & ) {}; - } - } - else - { - if ( pFilter && !pFilter->GetFormat() ) - // preselected Filter has no ClipboardId -> doesn't match (see comment above) - pFilter = 0; - - // the storage must be checked even if filter is already found, since it is deep type detection - // the storage can be corrupted and it will be detected here - try - { - String sFilterName; - if ( pFilter ) - sFilterName = pFilter->GetName(); - aTypeName = SfxFilter::GetTypeFromStorage( xStorage, pFilter ? pFilter->IsOwnTemplateFormat() : sal_False, &sFilterName ); - } - catch( lang::WrappedTargetException& aWrap ) - { - packages::zip::ZipIOException aZipException; - if ( ( aWrap.TargetException >>= aZipException ) && aTypeName.Len() ) - { - if ( xInteraction.is() ) - { - // the package is broken one - aDocumentTitle = aMedium.GetURLObject().getName( - INetURLObject::LAST_SEGMENT, - true, - INetURLObject::DECODE_WITH_CHARSET ); - - if ( !bRepairPackage ) - { - // ask the user whether he wants to try to repair - RequestPackageReparation aRequest( aDocumentTitle ); - xInteraction->handle( aRequest.GetRequest() ); - bRepairAllowed = aRequest.isApproved(); - } - - if ( !bRepairAllowed ) - { - // repair either not allowed or not successful - NotifyBrokenPackage aNotifyRequest( aDocumentTitle ); - xInteraction->handle( aNotifyRequest.GetRequest() ); - } - } - - if ( !bRepairAllowed ) - { - aTypeName.Erase(); - pFilter = 0; - } - } - } - catch( uno::RuntimeException& ) - { - throw; - } - catch( uno::Exception& ) - { - aTypeName.Erase(); - pFilter = 0; - } - - if ( !pFilter && aTypeName.Len() ) - { - //TODO/LATER: using this method impress is always preferred if no flat detecion has been made - // this should been discussed! - if ( SvtModuleOptions().IsImpress() ) - pFilter = SfxFilterMatcher( String::CreateFromAscii("simpress") ).GetFilter4EA( aTypeName ); - else if ( SvtModuleOptions().IsDraw() ) - pFilter = SfxFilterMatcher( String::CreateFromAscii("sdraw") ).GetFilter4EA( aTypeName ); - } - } - } - else - { - SvStream* pStm = aMedium.GetInStream(); - if ( !pStm ) - { - pFilter = 0; - } - else - { - SotStorageRef aStorage = new SotStorage ( pStm, sal_False ); - if ( !aStorage->GetError() ) - { - String aStreamName = UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "PowerPoint Document" ) ); - if ( aStorage->IsStream( aStreamName ) && SvtModuleOptions().IsImpress() ) - { - String aFileName(aMedium.GetName()); - aFileName.ToUpperAscii(); - - if( aFileName.SearchAscii( ".POT" ) != STRING_NOTFOUND ) - pFilter = SfxFilter::GetFilterByName( pFilterPowerPoint97Template ); - else if( aFileName.SearchAscii( ".PPS" ) != STRING_NOTFOUND ) - pFilter = SfxFilter::GetFilterByName( pFilterPowerPoint97AutoPlay ); - else - pFilter = SfxFilter::GetFilterByName( pFilterPowerPoint97); - } - } - else - { - // Vektorgraphik? - pStm->Seek( STREAM_SEEK_TO_BEGIN ); - - const String aFileName( aMedium.GetURLObject().GetMainURL( INetURLObject::NO_DECODE ) ); - GraphicDescriptor aDesc( *pStm, &aFileName ); - if( !aDesc.Detect( sal_False ) ) - { - pFilter = 0; - if( SvtModuleOptions().IsImpress() ) - { - INetURLObject aCheckURL( aFileName ); - if( aCheckURL.getExtension().equalsIgnoreAsciiCaseAscii( "cgm" ) ) - { - sal_uInt8 n8; - pStm->Seek( STREAM_SEEK_TO_BEGIN ); - *pStm >> n8; - if ( ( n8 & 0xf0 ) == 0 ) // we are supporting binary cgm format only, so - { // this is a small test to exclude cgm text - const String aName = UniString::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "CGM - Computer Graphics Metafile" ) ); - SfxFilterMatcher aMatch( String::CreateFromAscii("simpress") ); - pFilter = aMatch.GetFilter4FilterName( aName ); - } - } - } - } - else - { - String aShortName( aDesc.GetImportFormatShortName( aDesc.GetFileFormat() ) ); - GraphicFilter &rGrfFilter = GraphicFilter::GetGraphicFilter(); - const String aName( rGrfFilter.GetImportFormatTypeName( rGrfFilter.GetImportFormatNumberForShortName( aShortName ) ) ); - - if ( pFilter && aShortName.EqualsIgnoreCaseAscii( "PCD" ) ) // there is a multiple pcd selection possible - { - sal_Int32 nBase = 2; // default Base0 - String aFilterTypeName( pFilter->GetRealTypeName() ); - if ( aFilterTypeName.CompareToAscii( "pcd_Photo_CD_Base4" ) == COMPARE_EQUAL ) - nBase = 1; - else if ( aFilterTypeName.CompareToAscii( "pcd_Photo_CD_Base16" ) == COMPARE_EQUAL ) - nBase = 0; - String aFilterConfigPath( RTL_CONSTASCII_USTRINGPARAM( "Office.Common/Filter/Graphic/Import/PCD" ) ); - FilterConfigItem aFilterConfigItem( aFilterConfigPath ); - aFilterConfigItem.WriteInt32( String( RTL_CONSTASCII_USTRINGPARAM( "Resolution" ) ), nBase ); - } - - SfxFilterMatcher aMatch( String::CreateFromAscii("sdraw") ); - pFilter = aMatch.GetFilter4FilterName( aName ); - } - } - } - } - } - } - } - - if ( nIndexOfInputStream == -1 && xStream.is() ) - { - // if input stream wasn't part of the descriptor, now it should be, otherwise the content would be opend twice - lDescriptor.realloc( nPropertyCount + 1 ); - lDescriptor[nPropertyCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("InputStream")); - lDescriptor[nPropertyCount].Value <<= xStream; - nPropertyCount++; - } - - if ( nIndexOfContent == -1 && xContent.is() ) - { - // if input stream wasn't part of the descriptor, now it should be, otherwise the content would be opend twice - lDescriptor.realloc( nPropertyCount + 1 ); - lDescriptor[nPropertyCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("UCBContent")); - lDescriptor[nPropertyCount].Value <<= xContent; - nPropertyCount++; - } - - if ( bReadOnly != bWasReadOnly ) - { - if ( nIndexOfReadOnlyFlag == -1 ) - { - lDescriptor.realloc( nPropertyCount + 1 ); - lDescriptor[nPropertyCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ReadOnly")); - lDescriptor[nPropertyCount].Value <<= bReadOnly; - nPropertyCount++; - } - else - lDescriptor[nIndexOfReadOnlyFlag].Value <<= bReadOnly; - } - - if ( !bRepairPackage && bRepairAllowed ) - { - lDescriptor.realloc( nPropertyCount + 1 ); - lDescriptor[nPropertyCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("RepairPackage")); - lDescriptor[nPropertyCount].Value <<= bRepairAllowed; - nPropertyCount++; - - bOpenAsTemplate = sal_True; - - // TODO/LATER: set progress bar that should be used - } - - if ( bOpenAsTemplate ) - { - if ( nIndexOfTemplateFlag == -1 ) - { - lDescriptor.realloc( nPropertyCount + 1 ); - lDescriptor[nPropertyCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AsTemplate")); - lDescriptor[nPropertyCount].Value <<= bOpenAsTemplate; - nPropertyCount++; - } - else - lDescriptor[nIndexOfTemplateFlag].Value <<= bOpenAsTemplate; - } - - if ( aDocumentTitle.getLength() ) - { - // the title was set here - if ( nIndexOfDocumentTitle == -1 ) - { - lDescriptor.realloc( nPropertyCount + 1 ); - lDescriptor[nPropertyCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DocumentTitle")); - lDescriptor[nPropertyCount].Value <<= aDocumentTitle; - nPropertyCount++; - } - else - lDescriptor[nIndexOfDocumentTitle].Value <<= aDocumentTitle; - } - - if ( pFilter ) - aTypeName = pFilter->GetTypeName(); - else - aTypeName.Erase(); - - return aTypeName; -} - -SFX_IMPL_SINGLEFACTORY( SdFilterDetect ) - -/* XServiceInfo */ -UNOOUSTRING SAL_CALL SdFilterDetect::getImplementationName() throw( UNORUNTIMEEXCEPTION ) -{ - return impl_getStaticImplementationName(); -} - \ -/* XServiceInfo */ -sal_Bool SAL_CALL SdFilterDetect::supportsService( const UNOOUSTRING& sServiceName ) throw( UNORUNTIMEEXCEPTION ) -{ - UNOSEQUENCE< UNOOUSTRING > seqServiceNames = getSupportedServiceNames(); - const UNOOUSTRING* pArray = seqServiceNames.getConstArray(); - for ( sal_Int32 nCounter=0; nCounter<seqServiceNames.getLength(); nCounter++ ) - { - if ( pArray[nCounter] == sServiceName ) - { - return sal_True ; - } - } - return sal_False ; -} - -/* XServiceInfo */ -UNOSEQUENCE< UNOOUSTRING > SAL_CALL SdFilterDetect::getSupportedServiceNames() throw( UNORUNTIMEEXCEPTION ) -{ - return impl_getStaticSupportedServiceNames(); -} - -/* Helper for XServiceInfo */ -UNOSEQUENCE< UNOOUSTRING > SdFilterDetect::impl_getStaticSupportedServiceNames() -{ - UNOSEQUENCE< UNOOUSTRING > seqServiceNames( 1 ); - seqServiceNames.getArray() [0] = UNOOUSTRING(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.frame.ExtendedTypeDetection" )); - return seqServiceNames ; -} - -/* Helper for XServiceInfo */ -UNOOUSTRING SdFilterDetect::impl_getStaticImplementationName() -{ - return UNOOUSTRING(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.draw.FormatDetector" )); -} - -/* Helper for registry */ -UNOREFERENCE< UNOXINTERFACE > SAL_CALL SdFilterDetect::impl_createInstance( const UNOREFERENCE< UNOXMULTISERVICEFACTORY >& xServiceManager ) throw( UNOEXCEPTION ) -{ - return UNOREFERENCE< UNOXINTERFACE >( *new SdFilterDetect( xServiceManager ) ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/sddetect.hxx b/sd/source/ui/unoidl/sddetect.hxx deleted file mode 100644 index a3d94a39a..000000000 --- a/sd/source/ui/unoidl/sddetect.hxx +++ /dev/null @@ -1,98 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _SD_TYPEDETECT_HXX -#define _SD_TYPEDETECT_HXX - -#include <rtl/ustring.hxx> -#include <tools/debug.hxx> -#include <com/sun/star/document/XExtendedFilterDetection.hpp> -#include <com/sun/star/uno/Exception.hpp> -#include <com/sun/star/uno/Reference.h> -#include <cppuhelper/implbase2.hxx> - -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/lang/XSingleServiceFactory.hpp> -#include <cppuhelper/factory.hxx> -#include <tools/link.hxx> -#include <tools/string.hxx> - -class SfxObjectFactory; -class SfxFilterMatcher; -class LoadEnvironment_Impl; -class SfxMedium; - -namespace com -{ - namespace sun - { - namespace star - { - namespace uno - { - class Any; - } - namespace lang - { - class XMultiServiceFactory; - } - namespace frame - { - class XFrame; - } - namespace beans - { - struct PropertyValue; - } - } - } -} - -#include <sfx2/sfxuno.hxx> - -#define REFERENCE ::com::sun::star::uno::Reference -#define SEQUENCE ::com::sun::star::uno::Sequence -#define RUNTIME_EXCEPTION ::com::sun::star::uno::RuntimeException - -class SdFilterDetect : public ::cppu::WeakImplHelper2< ::com::sun::star::document::XExtendedFilterDetection, ::com::sun::star::lang::XServiceInfo > -{ -public: - SdFilterDetect( const REFERENCE < ::com::sun::star::lang::XMultiServiceFactory >& xFactory ); - virtual ~SdFilterDetect(); - - SFX_DECL_XSERVICEINFO - - //---------------------------------------------------------------------------------- - // XExtendedFilterDetect - //---------------------------------------------------------------------------------- - virtual ::rtl::OUString SAL_CALL detect( SEQUENCE< ::com::sun::star::beans::PropertyValue >& lDescriptor ) throw( RUNTIME_EXCEPTION ); -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unocpres.cxx b/sd/source/ui/unoidl/unocpres.cxx deleted file mode 100644 index 4c18277f3..000000000 --- a/sd/source/ui/unoidl/unocpres.cxx +++ /dev/null @@ -1,497 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" -#include <com/sun/star/lang/DisposedException.hpp> -#include <osl/mutex.hxx> -#include <osl/mutex.hxx> -#include <vcl/svapp.hxx> -#include <svx/svdpage.hxx> -#include <comphelper/extract.hxx> -#include <comphelper/serviceinfohelper.hxx> - -#include "unohelp.hxx" -#include "unomodel.hxx" -#include "drawdoc.hxx" -#include "unocpres.hxx" -#include "cusshow.hxx" -#include "unopage.hxx" - -using namespace ::rtl; -using namespace ::com::sun::star; - - -uno::Reference< uno::XInterface > createUnoCustomShow( SdCustomShow* pShow ) -{ - return (cppu::OWeakObject*)new SdXCustomPresentation( pShow, NULL ); -} - -SdXCustomPresentation::SdXCustomPresentation() throw() -: mpSdCustomShow(NULL), mpModel(NULL), - aDisposeListeners( aDisposeContainerMutex ), - bDisposing( sal_False ) -{ -} - -SdXCustomPresentation::SdXCustomPresentation( SdCustomShow* pShow, SdXImpressDocument* pMyModel) throw() -: mpSdCustomShow(pShow), mpModel(pMyModel), - aDisposeListeners( aDisposeContainerMutex ), - bDisposing( sal_False ) -{ -} - -SdXCustomPresentation::~SdXCustomPresentation() throw() -{ -} - -UNO3_GETIMPLEMENTATION_IMPL( SdXCustomPresentation ); - -// XServiceInfo -OUString SAL_CALL SdXCustomPresentation::getImplementationName() - throw(uno::RuntimeException) -{ - return OUString( RTL_CONSTASCII_USTRINGPARAM("SdXCustomPresentation") ); -} - -sal_Bool SAL_CALL SdXCustomPresentation::supportsService( const OUString& ServiceName ) - throw(uno::RuntimeException) -{ - return comphelper::ServiceInfoHelper::supportsService( ServiceName, getSupportedServiceNames() ); -} - -uno::Sequence< OUString > SAL_CALL SdXCustomPresentation::getSupportedServiceNames() - throw(uno::RuntimeException) -{ - OUString aSN( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.CustomPresentation") ); - uno::Sequence< OUString > aSeq( &aSN, 1 ); - return aSeq; -} - -// XIndexContainer -void SAL_CALL SdXCustomPresentation::insertByIndex( sal_Int32 Index, const uno::Any& Element ) - throw(lang::IllegalArgumentException, lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( bDisposing ) - throw lang::DisposedException(); - - if( Index < 0 || Index > (sal_Int32)( mpSdCustomShow ? mpSdCustomShow->Count() : 0 ) ) - throw lang::IndexOutOfBoundsException(); - - uno::Reference< drawing::XDrawPage > xPage; - Element >>= xPage; - - if(!xPage.is()) - throw lang::IllegalArgumentException(); - - SdDrawPage* pPage = SdDrawPage::getImplementation( xPage ); - - if(pPage) - { - if( NULL == mpModel ) - mpModel = pPage->GetModel(); - - if( NULL != mpModel && NULL == mpSdCustomShow && mpModel->GetDoc() ) - mpSdCustomShow = new SdCustomShow( mpModel->GetDoc() ); - - mpSdCustomShow->Insert(pPage->GetSdrPage(), Index); - } - - if( mpModel ) - mpModel->SetModified(); -} - -void SAL_CALL SdXCustomPresentation::removeByIndex( sal_Int32 Index ) - throw(lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( bDisposing ) - throw lang::DisposedException(); - - if(mpSdCustomShow) - { - uno::Reference< drawing::XDrawPage > xPage; - getByIndex( Index ) >>= xPage; - - if( xPage.is() ) - { - SvxDrawPage* pPage = SvxDrawPage::getImplementation( xPage ); - if(pPage) - mpSdCustomShow->Remove(pPage->GetSdrPage()); - } - } - - if( mpModel ) - mpModel->SetModified(); -} - -// XIndexReplace -void SAL_CALL SdXCustomPresentation::replaceByIndex( sal_Int32 Index, const uno::Any& Element ) - throw(lang::IllegalArgumentException, lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) -{ - removeByIndex( Index ); - insertByIndex( Index, Element ); -} - -// XElementAccess -uno::Type SAL_CALL SdXCustomPresentation::getElementType() - throw(uno::RuntimeException) -{ - return ITYPE( drawing::XDrawPage ); -} - -sal_Bool SAL_CALL SdXCustomPresentation::hasElements() - throw(uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( bDisposing ) - throw lang::DisposedException(); - - return getCount() > 0; -} - -// XIndexAccess -sal_Int32 SAL_CALL SdXCustomPresentation::getCount() - throw(uno::RuntimeException) -{ - SolarMutexGuard aGuard; - if( bDisposing ) - throw lang::DisposedException(); - - return mpSdCustomShow?mpSdCustomShow->Count():0; -} - -uno::Any SAL_CALL SdXCustomPresentation::getByIndex( sal_Int32 Index ) - throw(lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( bDisposing ) - throw lang::DisposedException(); - - if( Index < 0 || Index >= (sal_Int32)mpSdCustomShow->Count() ) - throw lang::IndexOutOfBoundsException(); - - uno::Any aAny; - if(mpSdCustomShow ) - { - SdrPage* pPage = (SdrPage*)mpSdCustomShow->GetObject(Index); - - if( pPage ) - { - uno::Reference< drawing::XDrawPage > xRef( pPage->getUnoPage(), uno::UNO_QUERY ); - aAny <<= xRef; - } - } - - return aAny; -} - -// XNamed -OUString SAL_CALL SdXCustomPresentation::getName() - throw(uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( bDisposing ) - throw lang::DisposedException(); - - if(mpSdCustomShow) - return mpSdCustomShow->GetName(); - - return OUString(); -} - -void SAL_CALL SdXCustomPresentation::setName( const OUString& aName ) - throw(uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( bDisposing ) - throw lang::DisposedException(); - - if(mpSdCustomShow) - mpSdCustomShow->SetName( aName ); -} - -// XComponent -void SAL_CALL SdXCustomPresentation::dispose() throw(uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( bDisposing ) - return; // catched a recursion - - bDisposing = sal_True; - - uno::Reference< uno::XInterface > xSource( (cppu::OWeakObject*)this ); - - lang::EventObject aEvt; - aEvt.Source = xSource; - aDisposeListeners.disposeAndClear(aEvt); - - mpSdCustomShow = NULL; -} - -//---------------------------------------------------------------------- -void SAL_CALL SdXCustomPresentation::addEventListener( const uno::Reference< lang::XEventListener >& xListener ) - throw(uno::RuntimeException) -{ - if( bDisposing ) - throw lang::DisposedException(); - - aDisposeListeners.addInterface(xListener); -} - -//---------------------------------------------------------------------- -void SAL_CALL SdXCustomPresentation::removeEventListener( const uno::Reference< lang::XEventListener >& aListener ) throw(uno::RuntimeException) -{ - if( !bDisposing ) - aDisposeListeners.removeInterface(aListener); -} - -/*===========================================================================* - * class SdXCustomPresentationAccess : public XCustomPresentationAccess, * - * public UsrObject * - *===========================================================================*/ - -SdXCustomPresentationAccess::SdXCustomPresentationAccess(SdXImpressDocument& rMyModel) throw() -: mrModel(rMyModel) -{ -} - -SdXCustomPresentationAccess::~SdXCustomPresentationAccess() throw() -{ -} - -// XServiceInfo -OUString SAL_CALL SdXCustomPresentationAccess::getImplementationName() - throw(uno::RuntimeException) -{ - return OUString( RTL_CONSTASCII_USTRINGPARAM("SdXCustomPresentationAccess") ); -} - -sal_Bool SAL_CALL SdXCustomPresentationAccess::supportsService( const OUString& ServiceName ) - throw(uno::RuntimeException) -{ - return comphelper::ServiceInfoHelper::supportsService( ServiceName, getSupportedServiceNames() ); -} - -uno::Sequence< OUString > SAL_CALL SdXCustomPresentationAccess::getSupportedServiceNames() - throw(uno::RuntimeException) -{ - const OUString aNS( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.CustomPresentationAccess") ); - uno::Sequence< OUString > aSeq( &aNS, 1 ); - return aSeq; -} - -// XSingleServiceFactory -uno::Reference< uno::XInterface > SAL_CALL SdXCustomPresentationAccess::createInstance() - throw(uno::Exception, uno::RuntimeException) -{ - uno::Reference< uno::XInterface > xRef( (::cppu::OWeakObject*)new SdXCustomPresentation() ); - return xRef; -} - -uno::Reference< uno::XInterface > SAL_CALL SdXCustomPresentationAccess::createInstanceWithArguments( const uno::Sequence< uno::Any >& ) - throw(uno::Exception, uno::RuntimeException) -{ - return createInstance(); -} - -// XNameContainer -void SAL_CALL SdXCustomPresentationAccess::insertByName( const OUString& aName, const uno::Any& aElement ) - throw(lang::IllegalArgumentException, container::ElementExistException, lang::WrappedTargetException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - // get the documents custom show list - List* pList = 0; - if(mrModel.GetDoc()) - pList = mrModel.GetDoc()->GetCustomShowList(sal_True); - - // no list, no cookies - if( NULL == pList) - throw uno::RuntimeException(); - - // do we have an container::XIndexContainer? - SdXCustomPresentation* pXShow = NULL; - - uno::Reference< container::XIndexContainer > xContainer; - if( (aElement >>= xContainer) && xContainer.is() ) - pXShow = SdXCustomPresentation::getImplementation(xContainer); - - if( NULL == pXShow ) - throw lang::IllegalArgumentException(); - - // get the internal custom show from the api wrapper - SdCustomShow* pShow = pXShow->GetSdCustomShow(); - if( NULL == pShow ) - { - pShow = new SdCustomShow( mrModel.GetDoc(), xContainer ); - pXShow->SetSdCustomShow( pShow ); - } - else - { - if( NULL == pXShow->GetModel() || *pXShow->GetModel() != mrModel ) - throw lang::IllegalArgumentException(); - } - - // give it a name - pShow->SetName( aName); - - // check if this or another customshow with the same name already exists - for( SdCustomShow* pCompare = (SdCustomShow*)pList->First(); - pCompare; - pCompare = (SdCustomShow*)pList->Next() ) - { - if( pCompare == pShow || pCompare->GetName() == pShow->GetName() ) - throw container::ElementExistException(); - } - - pList->Insert(pShow); - - mrModel.SetModified(); -} - -void SAL_CALL SdXCustomPresentationAccess::removeByName( const OUString& Name ) - throw(container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - SdCustomShow* pShow = getSdCustomShow(Name); - - List* pList = GetCustomShowList(); - if(pList && pShow) - delete (SdCustomShow*)pList->Remove( pShow ); - else - throw container::NoSuchElementException(); - - mrModel.SetModified(); -} - -// XNameReplace -void SAL_CALL SdXCustomPresentationAccess::replaceByName( const OUString& aName, const uno::Any& aElement ) - throw(lang::IllegalArgumentException, container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) -{ - removeByName( aName ); - insertByName( aName, aElement ); -} - -// XNameAccess -uno::Any SAL_CALL SdXCustomPresentationAccess::getByName( const OUString& aName ) - throw(container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - uno::Any aAny; - - SdCustomShow* pShow = getSdCustomShow(aName); - if(pShow) - { - uno::Reference< container::XIndexContainer > xRef( pShow->getUnoCustomShow(), uno::UNO_QUERY ); - aAny <<= xRef; - } - else - { - throw container::NoSuchElementException(); - } - - return aAny; -} - -uno::Sequence< OUString > SAL_CALL SdXCustomPresentationAccess::getElementNames() - throw(uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - List* pList = GetCustomShowList(); - const sal_uInt32 nCount = pList?pList->Count():0; - - uno::Sequence< OUString > aSequence( nCount ); - OUString* pStringList = aSequence.getArray(); - - sal_uInt32 nIdx = 0; - while( nIdx < nCount ) - { - const SdCustomShow* pShow = (const SdCustomShow*)pList->GetObject(nIdx); - pStringList[nIdx] = pShow->GetName(); - nIdx++; - } - - return aSequence; -} - - -sal_Bool SAL_CALL SdXCustomPresentationAccess::hasByName( const OUString& aName ) - throw(uno::RuntimeException) -{ - SolarMutexGuard aGuard; - return getSdCustomShow(aName) != NULL; -} - -// XElementAccess -uno::Type SAL_CALL SdXCustomPresentationAccess::getElementType() - throw(uno::RuntimeException) -{ - return ITYPE( container::XIndexContainer ); -} - -sal_Bool SAL_CALL SdXCustomPresentationAccess::hasElements() - throw(uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - List* pList = GetCustomShowList(); - return pList && pList->Count() > 0; -} - -SdCustomShow * SdXCustomPresentationAccess::getSdCustomShow( const OUString& Name ) const throw() -{ - sal_uInt32 nIdx = 0; - - List* pList = GetCustomShowList(); - const sal_uInt32 nCount = pList?pList->Count():0; - - const String aName( Name ); - - while( nIdx < nCount ) - { - SdCustomShow* pShow = (SdCustomShow*)pList->GetObject(nIdx); - if( pShow->GetName() == aName ) - return pShow; - nIdx++; - } - return NULL; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unocpres.hxx b/sd/source/ui/unoidl/unocpres.hxx deleted file mode 100644 index 7ce4e3fe4..000000000 --- a/sd/source/ui/unoidl/unocpres.hxx +++ /dev/null @@ -1,171 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _SD_UNOCPRES_HXX -#define _SD_UNOCPRES_HXX - -#include <com/sun/star/lang/XComponent.hpp> -#include <com/sun/star/container/XIndexContainer.hpp> -#include <com/sun/star/container/XNamed.hpp> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/lang/XUnoTunnel.hpp> -#include <cppuhelper/interfacecontainer.h> -#include <osl/mutex.hxx> - -#include <cppuhelper/implbase5.hxx> -#include <comphelper/servicehelper.hxx> - -/////////////////////////////////////////////////////////////////////////////// - -class SdXImpressDocument; -class SdView; -class SdDrawViewShell; -class SdCustomShow; - -class SdXCustomPresentation : public ::cppu::WeakImplHelper5< ::com::sun::star::container::XIndexContainer, - ::com::sun::star::container::XNamed, - ::com::sun::star::lang::XUnoTunnel, - ::com::sun::star::lang::XComponent, - ::com::sun::star::lang::XServiceInfo > -{ -private: - SdCustomShow* mpSdCustomShow; - SdXImpressDocument* mpModel; - - // for xComponent - ::osl::Mutex aDisposeContainerMutex; - ::cppu::OInterfaceContainerHelper aDisposeListeners; - sal_Bool bDisposing; - -public: - SdXCustomPresentation() throw(); - SdXCustomPresentation( SdCustomShow* mpSdCustomShow, SdXImpressDocument* pMyModel) throw(); - virtual ~SdXCustomPresentation() throw(); - - // internal - void Invalidate() { mpSdCustomShow = NULL; } - SdCustomShow* GetSdCustomShow() const throw() { return mpSdCustomShow; } - void SetSdCustomShow( SdCustomShow* pShow ) throw() { mpSdCustomShow = pShow; } - SdXImpressDocument* GetModel() const throw() { return mpModel; } - - // uno helper - UNO3_GETIMPLEMENTATION_DECL(SdXCustomPresentation) - - // XServiceInfo - virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException); - - // XIndexContainer - virtual void SAL_CALL insertByIndex( sal_Int32 Index, const ::com::sun::star::uno::Any& Element ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removeByIndex( sal_Int32 Index ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - - // XIndexReplace - virtual void SAL_CALL replaceByIndex( sal_Int32 Index, const ::com::sun::star::uno::Any& Element ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - - // XElementAccess - virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); - - // XIndexAccess - virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException) ; - virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - - // XNamed - virtual ::rtl::OUString SAL_CALL getName( ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setName( const ::rtl::OUString& aName ) throw(::com::sun::star::uno::RuntimeException); - - // XComponent - virtual void SAL_CALL dispose( ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw(::com::sun::star::uno::RuntimeException); -}; - -// -------------------------------------------------------------------------- -#include <com/sun/star/container/XNameContainer.hpp> -#include <com/sun/star/lang/XSingleServiceFactory.hpp> - -#include <cppuhelper/implbase3.hxx> - -#include "unomodel.hxx" -#include "drawdoc.hxx" - -class List; - -class SdXCustomPresentationAccess : public ::cppu::WeakImplHelper3< ::com::sun::star::container::XNameContainer, - ::com::sun::star::lang::XSingleServiceFactory, - ::com::sun::star::lang::XServiceInfo > -{ -private: - SdXImpressDocument& mrModel; - - // intern - inline List* GetCustomShowList() const throw(); - SdCustomShow * getSdCustomShow( const ::rtl::OUString& Name ) const throw(); - -public: - SdXCustomPresentationAccess(SdXImpressDocument& rMyModel) throw(); - ~SdXCustomPresentationAccess() throw(); - - // XServiceInfo - virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException); - - // XSingleServiceFactory - virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstance( ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstanceWithArguments( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); - - // XNameContainer - virtual void SAL_CALL insertByName( const ::rtl::OUString& aName, const ::com::sun::star::uno::Any& aElement ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::ElementExistException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removeByName( const ::rtl::OUString& Name ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - - // XNameReplace - virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName, const ::com::sun::star::uno::Any& aElement ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - - // XNameAccess - virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw(::com::sun::star::uno::RuntimeException); - - // XElementAccess - virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); -}; - -inline List * SdXCustomPresentationAccess::GetCustomShowList() const throw() -{ - if(mrModel.GetDoc()) - return mrModel.GetDoc()->GetCustomShowList(sal_False); - else - return NULL; -}; - -#endif - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unodoc.cxx b/sd/source/ui/unoidl/unodoc.cxx deleted file mode 100644 index 2d3483e90..000000000 --- a/sd/source/ui/unoidl/unodoc.cxx +++ /dev/null @@ -1,106 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" - -// System - Includes ----------------------------------------------------- - -#include <tools/string.hxx> -#include <sfx2/docfac.hxx> -#include <sfx2/sfxmodelfactory.hxx> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> - -#include "sdmod.hxx" -#include "DrawDocShell.hxx" -#include "GraphicDocShell.hxx" -#include <osl/mutex.hxx> -#include <vcl/svapp.hxx> - -using namespace ::com::sun::star; - -// com.sun.star.comp.Draw.DrawingDocument - -::rtl::OUString SAL_CALL SdDrawingDocument_getImplementationName() throw( uno::RuntimeException ) -{ - return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.Draw.DrawingDocument" ) ); -} - -uno::Sequence< rtl::OUString > SAL_CALL SdDrawingDocument_getSupportedServiceNames() throw( uno::RuntimeException ) -{ - uno::Sequence< rtl::OUString > aSeq( 2 ); - aSeq[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.DrawingDocument")); - aSeq[1] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.DrawingDocumentFactory")); - - return aSeq; -} - -uno::Reference< uno::XInterface > SAL_CALL SdDrawingDocument_createInstance( - const uno::Reference< lang::XMultiServiceFactory > &, const sal_uInt64 _nCreationFlags ) -{ - SolarMutexGuard aGuard; - - SdDLL::Init(); - - SfxObjectShell* pShell = - new ::sd::GraphicDocShell( - _nCreationFlags, sal_False, DOCUMENT_TYPE_DRAW ); - return uno::Reference< uno::XInterface >( pShell->GetModel() ); -} - -// com.sun.star.comp.Draw.PresentationDocument - -::rtl::OUString SAL_CALL SdPresentationDocument_getImplementationName() throw( uno::RuntimeException ) -{ - return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.Draw.PresentationDocument" ) ); -} - -uno::Sequence< rtl::OUString > SAL_CALL SdPresentationDocument_getSupportedServiceNames() throw( uno::RuntimeException ) -{ - uno::Sequence< rtl::OUString > aSeq( 2 ); - aSeq[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.DrawingDocumentFactory")); - aSeq[1] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.PresentationDocument")); - - return aSeq; -} - -uno::Reference< uno::XInterface > SAL_CALL SdPresentationDocument_createInstance( - const uno::Reference< lang::XMultiServiceFactory > &, const sal_uInt64 _nCreationFlags ) -{ - SolarMutexGuard aGuard; - - SdDLL::Init(); - - SfxObjectShell* pShell = - new ::sd::DrawDocShell( - _nCreationFlags, sal_False, DOCUMENT_TYPE_IMPRESS ); - return uno::Reference< uno::XInterface >( pShell->GetModel() ); -} - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unohelp.hxx b/sd/source/ui/unoidl/unohelp.hxx deleted file mode 100644 index 7d5fd896f..000000000 --- a/sd/source/ui/unoidl/unohelp.hxx +++ /dev/null @@ -1,62 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -namespace sd -{ -inline sal_Bool any2bool( const ::com::sun::star::uno::Any& rAny, sal_Bool& rBool ) -{ - if( rAny.getValueType() == ::getCppuBooleanType() ) - { - rBool = *(sal_Bool*)rAny.getValue(); - } - else - { - sal_Int32 nValue = 0; - if(!(rAny >>= nValue)) - return sal_False; - rBool = nValue != 0; - } - - return sal_True; -} - -inline void bool2any( sal_Bool bBool, ::com::sun::star::uno::Any& rAny ) -{ - rAny.setValue( &bBool, ::getCppuBooleanType() ); -} - -} - -#define ITYPE( xint ) \ - ::getCppuType((const uno::Reference< xint >*)0) - -#define QUERYINT( xint ) \ - if( rType == ::getCppuType((const uno::Reference< xint >*)0) ) \ - aAny <<= uno::Reference< xint >(this) - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unokywds.cxx b/sd/source/ui/unoidl/unokywds.cxx deleted file mode 100644 index 85ddeb032..000000000 --- a/sd/source/ui/unoidl/unokywds.cxx +++ /dev/null @@ -1,39 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" - -#ifndef _SD_UNOKYWDS_HXX_ -#define SD_DEFINE_KEYWORDS -#include <unokywds.hxx> -#undef SD_DEFINE_KEYWORDS -#endif - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unolayer.cxx b/sd/source/ui/unoidl/unolayer.cxx deleted file mode 100644 index 69a0b298a..000000000 --- a/sd/source/ui/unoidl/unolayer.cxx +++ /dev/null @@ -1,824 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" -#include <com/sun/star/lang/DisposedException.hpp> - -#include "unolayer.hxx" -#include <osl/mutex.hxx> -#include <osl/mutex.hxx> - -#include <svx/svdpagv.hxx> -#include <svx/unoshape.hxx> -#include <svx/svdobj.hxx> -#include <comphelper/serviceinfohelper.hxx> - -// folgende fuer InsertSdPage() -#include <svx/svdlayer.hxx> - -#include "DrawDocShell.hxx" -#include <drawdoc.hxx> -#include <unomodel.hxx> -#include "unoprnms.hxx" -#include <com/sun/star/lang/NoSupportException.hpp> -#include <svx/svdpool.hxx> -#include "unohelp.hxx" -#include "FrameView.hxx" -#include "DrawViewShell.hxx" -#include "View.hxx" -#include "ViewShell.hxx" -#include "app.hrc" -#include "strings.hrc" -#include "sdresid.hxx" -#include "glob.hrc" - -#include "unokywds.hxx" -#include "unowcntr.hxx" -#include <vcl/svapp.hxx> - -using namespace ::rtl; -using namespace ::com::sun::star; - -//============================================================================= -// class SdLayer -//============================================================================= - -#define WID_LAYER_LOCKED 1 -#define WID_LAYER_PRINTABLE 2 -#define WID_LAYER_VISIBLE 3 -#define WID_LAYER_NAME 4 -#define WID_LAYER_TITLE 5 -#define WID_LAYER_DESC 6 - -const SvxItemPropertySet* ImplGetSdLayerPropertySet() -{ - static const SfxItemPropertyMapEntry aSdLayerPropertyMap_Impl[] = - { - { MAP_CHAR_LEN(UNO_NAME_LAYER_LOCKED), WID_LAYER_LOCKED, &::getBooleanCppuType(), 0, 0 }, - { MAP_CHAR_LEN(UNO_NAME_LAYER_PRINTABLE), WID_LAYER_PRINTABLE,&::getBooleanCppuType(), 0, 0 }, - { MAP_CHAR_LEN(UNO_NAME_LAYER_VISIBLE), WID_LAYER_VISIBLE, &::getBooleanCppuType(), 0, 0 }, - { MAP_CHAR_LEN(UNO_NAME_LAYER_NAME), WID_LAYER_NAME, &::getCppuType((const OUString*)0), 0, 0 }, - { MAP_CHAR_LEN("Title"), WID_LAYER_TITLE, &::getCppuType((const OUString*)0), 0, 0 }, - { MAP_CHAR_LEN("Description"), WID_LAYER_DESC, &::getCppuType((const OUString*)0), 0, 0 }, - { 0,0,0,0,0,0} - }; - static SvxItemPropertySet aSDLayerPropertySet_Impl( aSdLayerPropertyMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() ); - return &aSDLayerPropertySet_Impl; -} - -String SdLayer::convertToInternalName( const OUString& rName ) -{ - if( rName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM(sUNO_LayerName_background) ) ) - { - return String( SdResId( STR_LAYER_BCKGRND ) ); - } - else if( rName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM(sUNO_LayerName_background_objects) ) ) - { - return String( SdResId( STR_LAYER_BCKGRNDOBJ ) ); - } - else if( rName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM(sUNO_LayerName_layout) ) ) - { - return String( SdResId( STR_LAYER_LAYOUT ) ); - } - else if( rName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM(sUNO_LayerName_controls) ) ) - { - return String( SdResId( STR_LAYER_CONTROLS ) ); - } - else if( rName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM(sUNO_LayerName_measurelines) ) ) - { - return String( SdResId( STR_LAYER_MEASURELINES ) ); - } - else - { - return String( rName ); - } -} - -OUString SdLayer::convertToExternalName( const String& rName ) -{ - const String aCompare( rName ); - if( rName == String( SdResId( STR_LAYER_BCKGRND ) ) ) - { - return OUString( RTL_CONSTASCII_USTRINGPARAM(sUNO_LayerName_background) ); - } - else if( rName == String( SdResId( STR_LAYER_BCKGRNDOBJ ) ) ) - { - return OUString( RTL_CONSTASCII_USTRINGPARAM(sUNO_LayerName_background_objects) ); - } - else if( rName == String( SdResId( STR_LAYER_LAYOUT ) ) ) - { - return OUString( RTL_CONSTASCII_USTRINGPARAM(sUNO_LayerName_layout) ); - } - else if( rName == String( SdResId( STR_LAYER_CONTROLS ) ) ) - { - return OUString( RTL_CONSTASCII_USTRINGPARAM(sUNO_LayerName_controls) ); - } - else if( rName == String( SdResId( STR_LAYER_MEASURELINES ) ) ) - { - return OUString( RTL_CONSTASCII_USTRINGPARAM(sUNO_LayerName_measurelines) ); - } - else - { - return OUString( rName ); - } -} - -/** */ -SdLayer::SdLayer( SdLayerManager* pLayerManager_, SdrLayer* pSdrLayer_ ) throw() -: pLayerManager(pLayerManager_) -, mxLayerManager(pLayerManager_) -, pLayer(pSdrLayer_) -, pPropSet(ImplGetSdLayerPropertySet()) -{ -} - -/** */ -SdLayer::~SdLayer() throw() -{ -} - -// uno helper -UNO3_GETIMPLEMENTATION_IMPL( SdLayer ); - -// XServiceInfo -OUString SAL_CALL SdLayer::getImplementationName() - throw(uno::RuntimeException) -{ - return OUString( OUString::createFromAscii(sUNO_SdLayer) ); -} - -sal_Bool SAL_CALL SdLayer::supportsService( const OUString& ServiceName ) - throw(uno::RuntimeException) -{ - return comphelper::ServiceInfoHelper::supportsService( ServiceName, getSupportedServiceNames() ); -} - -uno::Sequence< OUString > SAL_CALL SdLayer::getSupportedServiceNames() - throw(uno::RuntimeException) -{ - OUString aServiceName( OUString::createFromAscii(sUNO_Service_DrawingLayer) ); - uno::Sequence< OUString > aSeq( &aServiceName, 1 ); - return aSeq; -} - -// beans::XPropertySet -uno::Reference< beans::XPropertySetInfo > SAL_CALL SdLayer::getPropertySetInfo( ) - throw(uno::RuntimeException) -{ - SolarMutexGuard aGuard; - return pPropSet->getPropertySetInfo(); -} - -void SAL_CALL SdLayer::setPropertyValue( const OUString& aPropertyName, const uno::Any& aValue ) - throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if(pLayer == NULL || pLayerManager == NULL) - throw lang::DisposedException(); - - const SfxItemPropertySimpleEntry* pEntry = pPropSet->getPropertyMapEntry(aPropertyName); - - switch( pEntry ? pEntry->nWID : -1 ) - { - case WID_LAYER_LOCKED: - { - sal_Bool bValue = sal_False; - if(!sd::any2bool( aValue, bValue )) - throw lang::IllegalArgumentException(); - set( LOCKED, bValue ); - break; - } - case WID_LAYER_PRINTABLE: - { - sal_Bool bValue = sal_False; - if(!sd::any2bool( aValue, bValue )) - throw lang::IllegalArgumentException(); - set( PRINTABLE, bValue ); - break; - } - case WID_LAYER_VISIBLE: - { - sal_Bool bValue = sal_False; - if(!sd::any2bool( aValue, bValue )) - throw lang::IllegalArgumentException(); - set( VISIBLE, bValue ); - break; - } - case WID_LAYER_NAME: - { - OUString aName; - if(!(aValue >>= aName)) - throw lang::IllegalArgumentException(); - - pLayer->SetName(SdLayer::convertToInternalName( aName ) ); - pLayerManager->UpdateLayerView(); - break; - } - - case WID_LAYER_TITLE: - { - OUString sTitle; - if(!(aValue >>= sTitle)) - throw lang::IllegalArgumentException(); - - pLayer->SetTitle(sTitle); - break; - } - - case WID_LAYER_DESC: - { - OUString sDescription; - if(!(aValue >>= sDescription)) - throw lang::IllegalArgumentException(); - - pLayer->SetDescription(sDescription); - break; - } - - default: - throw beans::UnknownPropertyException(); - } - - if( pLayerManager->GetDocShell() ) - pLayerManager->GetDocShell()->SetModified(); -} - -uno::Any SAL_CALL SdLayer::getPropertyValue( const OUString& PropertyName ) - throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if(pLayer == NULL || pLayerManager == NULL) - throw lang::DisposedException(); - - const SfxItemPropertySimpleEntry* pEntry = pPropSet->getPropertyMapEntry(PropertyName); - - uno::Any aValue; - - switch( pEntry ? pEntry->nWID : -1 ) - { - case WID_LAYER_LOCKED: - sd::bool2any( get( LOCKED ), aValue ); - break; - case WID_LAYER_PRINTABLE: - sd::bool2any( get( PRINTABLE ), aValue ); - break; - case WID_LAYER_VISIBLE: - sd::bool2any( get( VISIBLE ), aValue ); - break; - case WID_LAYER_NAME: - { - OUString aRet( SdLayer::convertToExternalName( pLayer->GetName() ) ); - aValue <<= aRet; - break; - } - case WID_LAYER_TITLE: - aValue <<= OUString( pLayer->GetTitle() ); - break; - case WID_LAYER_DESC: - aValue <<= OUString( pLayer->GetDescription() ); - break; - default: - throw beans::UnknownPropertyException(); - } - - return aValue; -} - -void SAL_CALL SdLayer::addPropertyChangeListener( const OUString& , const uno::Reference< beans::XPropertyChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {} -void SAL_CALL SdLayer::removePropertyChangeListener( const OUString& , const uno::Reference< beans::XPropertyChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {} -void SAL_CALL SdLayer::addVetoableChangeListener( const OUString& , const uno::Reference< beans::XVetoableChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {} -void SAL_CALL SdLayer::removeVetoableChangeListener( const OUString& , const uno::Reference< beans::XVetoableChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {} - -/** */ -sal_Bool SdLayer::get( LayerAttribute what ) throw() -{ - if(pLayer&&pLayerManager) - { - // Versuch 1. ist eine beliebige Seite geoeffnet? - ::sd::View *pView = pLayerManager->GetView(); - SdrPageView* pSdrPageView = NULL; - if(pView) - pSdrPageView = pView->GetSdrPageView(); - - if(pSdrPageView) - { - String aLayerName = pLayer->GetName(); - switch(what) - { - case VISIBLE: return pSdrPageView->IsLayerVisible(aLayerName); - case PRINTABLE: return pSdrPageView->IsLayerPrintable(aLayerName); - case LOCKED: return pSdrPageView->IsLayerLocked(aLayerName); - } - } - - // Versuch 2. Info von der FrameView besorgen - if(pLayerManager->GetDocShell()) - { - ::sd::FrameView *pFrameView = pLayerManager->GetDocShell()->GetFrameView(); - if(pFrameView) - switch(what) - { - case VISIBLE: return pFrameView->GetVisibleLayers().IsSet(pLayer->GetID()); - case PRINTABLE: return pFrameView->GetPrintableLayers().IsSet(pLayer->GetID()); - case LOCKED: return pFrameView->GetLockedLayers().IsSet(pLayer->GetID()); - } - } - } - return sal_False; //TODO: uno::Exception? -} - -void SdLayer::set( LayerAttribute what, sal_Bool flag ) throw() -{ - if(pLayer&&pLayerManager) - { - // Versuch 1. ist eine beliebige Seite geoeffnet? - ::sd::View *pView = pLayerManager->GetView(); - SdrPageView* pSdrPageView = NULL; - if(pView) - pSdrPageView = pView->GetSdrPageView(); - - if(pSdrPageView) - { - String aLayerName(pLayer->GetName()); - switch(what) - { - case VISIBLE: pSdrPageView->SetLayerVisible(aLayerName,flag); - break; - case PRINTABLE: pSdrPageView->SetLayerPrintable(aLayerName,flag); - break; - case LOCKED: pSdrPageView->SetLayerLocked(aLayerName,flag); - break; - } - } - - // Versuch 2. Info von der FrameView besorgen - if(pLayerManager->GetDocShell()) - { - ::sd::FrameView *pFrameView = pLayerManager->GetDocShell()->GetFrameView(); - - if(pFrameView) - { - SetOfByte aNewLayers; - switch(what) - { - case VISIBLE: aNewLayers = pFrameView->GetVisibleLayers(); - break; - case PRINTABLE: aNewLayers = pFrameView->GetPrintableLayers(); - break; - case LOCKED: aNewLayers = pFrameView->GetLockedLayers(); - break; - } - - aNewLayers.Set(pLayer->GetID(),flag); - - switch(what) - { - case VISIBLE: pFrameView->SetVisibleLayers(aNewLayers); - break; - case PRINTABLE: pFrameView->SetPrintableLayers(aNewLayers); - break; - case LOCKED: pFrameView->SetLockedLayers(aNewLayers); - break; - } - return; - } - } - } - //TODO: uno::Exception? -} - - - - -//===== ::com::sun::star::container::XChild ================================= - -uno::Reference<uno::XInterface> SAL_CALL SdLayer::getParent (void) - throw (::com::sun::star::uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( pLayerManager == NULL ) - throw lang::DisposedException(); - - return uno::Reference<uno::XInterface> (mxLayerManager, uno::UNO_QUERY); -} - - -void SAL_CALL SdLayer::setParent (const uno::Reference<uno::XInterface >& ) - throw (::com::sun::star::lang::NoSupportException, - ::com::sun::star::uno::RuntimeException) -{ - throw lang::NoSupportException (); -} - -// XComponent -void SAL_CALL SdLayer::dispose( ) throw (uno::RuntimeException) -{ - pLayerManager = 0; - mxLayerManager = 0; - pLayer = 0; -} - -void SAL_CALL SdLayer::addEventListener( const uno::Reference< lang::XEventListener >& ) throw (uno::RuntimeException) -{ - OSL_FAIL("not implemented!"); -} - -void SAL_CALL SdLayer::removeEventListener( const uno::Reference< lang::XEventListener >& ) throw (uno::RuntimeException) -{ - OSL_FAIL("not implemented!"); -} - - -//============================================================================= -// class SdLayerManager -//============================================================================= - -/** */ -SdLayerManager::SdLayerManager( SdXImpressDocument& rMyModel ) throw() -:mpModel( &rMyModel) -{ - mpLayers = new SvUnoWeakContainer; -} - -/** */ -SdLayerManager::~SdLayerManager() throw() -{ - dispose(); -} - -// uno helper -UNO3_GETIMPLEMENTATION_IMPL( SdLayerManager ); - -// XComponent -void SAL_CALL SdLayerManager::dispose( ) throw (uno::RuntimeException) -{ - mpModel = 0; - if( mpLayers ) - { - mpLayers->dispose(); - - delete mpLayers; - mpLayers = 0; - } -} - -void SAL_CALL SdLayerManager::addEventListener( const uno::Reference< lang::XEventListener >& ) throw (uno::RuntimeException) -{ - OSL_FAIL("not implemented!"); -} - -void SAL_CALL SdLayerManager::removeEventListener( const uno::Reference< lang::XEventListener >& ) throw (uno::RuntimeException) -{ - OSL_FAIL("not implemented!"); -} - -// XServiceInfo -OUString SAL_CALL SdLayerManager::getImplementationName() - throw(uno::RuntimeException) -{ - return OUString( OUString::createFromAscii(sUNO_SdLayerManager) ); -} - -sal_Bool SAL_CALL SdLayerManager::supportsService( const OUString& ServiceName ) - throw(uno::RuntimeException) -{ - return comphelper::ServiceInfoHelper::supportsService( ServiceName, getSupportedServiceNames() ); -} - -uno::Sequence< OUString > SAL_CALL SdLayerManager::getSupportedServiceNames() - throw(uno::RuntimeException) -{ - OUString aServiceName( OUString::createFromAscii(sUNO_Service_DrawingLayerManager) ); - uno::Sequence< OUString > aSeq( &aServiceName, 1 ); - return aSeq; -} - -// XLayerManager -uno::Reference< drawing::XLayer > SAL_CALL SdLayerManager::insertNewByIndex( sal_Int32 nIndex ) - throw(uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( mpModel == 0 ) - throw lang::DisposedException(); - - uno::Reference< drawing::XLayer > xLayer; - - if( mpModel->mpDoc ) - { - SdrLayerAdmin& rLayerAdmin = mpModel->mpDoc->GetLayerAdmin(); - sal_uInt16 nLayerCnt = rLayerAdmin.GetLayerCount(); - sal_uInt16 nLayer = nLayerCnt - 2 + 1; - String aLayerName; - - // Ueberpruefung auf schon vorhandene Namen - while( aLayerName.Len()==0 || rLayerAdmin.GetLayer( aLayerName, sal_False) ) - { - aLayerName = String(SdResId(STR_LAYER)); - aLayerName += String::CreateFromInt32( (sal_Int32)nLayer ); - nLayer++; - } - - SdrLayerAdmin& rLA=mpModel->mpDoc->GetLayerAdmin(); - const sal_Int32 nMax=rLA.GetLayerCount(); - if (nIndex>nMax) nIndex=nMax; - xLayer = GetLayer (rLA.NewLayer(aLayerName,(sal_uInt16)nIndex)); - mpModel->SetModified(); - } - return xLayer; -} - -void SAL_CALL SdLayerManager::remove( const uno::Reference< drawing::XLayer >& xLayer ) - throw(container::NoSuchElementException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( mpModel == 0 ) - throw lang::DisposedException(); - - SdLayer* pSdLayer = SdLayer::getImplementation(xLayer); - - if(pSdLayer && GetView()) - { - const SdrLayer* pSdrLayer = pSdLayer->GetSdrLayer(); - GetView()->DeleteLayer( pSdrLayer->GetName() ); - - UpdateLayerView(); - } - - mpModel->SetModified(); -} - -void SAL_CALL SdLayerManager::attachShapeToLayer( const uno::Reference< drawing::XShape >& xShape, const uno::Reference< drawing::XLayer >& xLayer ) - throw(uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( mpModel == 0 ) - throw lang::DisposedException(); - - SdLayer* pSdLayer = SdLayer::getImplementation(xLayer); - SdrLayer* pSdrLayer = pSdLayer?pSdLayer->GetSdrLayer():NULL; - if(pSdrLayer==NULL) - return; - - SvxShape* pShape = SvxShape::getImplementation( xShape ); - SdrObject* pSdrObject = pShape?pShape->GetSdrObject():NULL; - - if(pSdrObject && pSdrLayer ) - pSdrObject->SetLayer(pSdrLayer->GetID()); - - mpModel->SetModified(); -} - -uno::Reference< drawing::XLayer > SAL_CALL SdLayerManager::getLayerForShape( const uno::Reference< drawing::XShape >& xShape ) throw(uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( mpModel == 0 ) - throw lang::DisposedException(); - - uno::Reference< drawing::XLayer > xLayer; - - if(mpModel->mpDoc) - { - SvxShape* pShape = SvxShape::getImplementation( xShape ); - SdrObject* pObj = pShape?pShape->GetSdrObject():NULL; - if(pObj) - { - SdrLayerID aId = pObj->GetLayer(); - SdrLayerAdmin& rLayerAdmin = mpModel->mpDoc->GetLayerAdmin(); - xLayer = GetLayer (rLayerAdmin.GetLayerPerID(aId)); - } - } - return xLayer; -} - -// XIndexAccess -sal_Int32 SAL_CALL SdLayerManager::getCount() - throw(uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( mpModel == 0 ) - throw lang::DisposedException(); - - if( mpModel->mpDoc ) - { - SdrLayerAdmin& rLayerAdmin = mpModel->mpDoc->GetLayerAdmin(); - return rLayerAdmin.GetLayerCount(); - } - - return 0; -} - -uno::Any SAL_CALL SdLayerManager::getByIndex( sal_Int32 nLayer ) - throw(lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( mpModel == 0 ) - throw lang::DisposedException(); - - if( nLayer >= getCount() || nLayer < 0 ) - throw lang::IndexOutOfBoundsException(); - - uno::Any aAny; - - if( mpModel->mpDoc ) - { - SdrLayerAdmin& rLayerAdmin = mpModel->mpDoc->GetLayerAdmin(); - uno::Reference<drawing::XLayer> xLayer (GetLayer (rLayerAdmin.GetLayer((sal_uInt16)nLayer))); - aAny <<= xLayer; - } - return aAny; -} - - -// XNameAccess -uno::Any SAL_CALL SdLayerManager::getByName( const OUString& aName ) - throw(container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( (mpModel == 0) || (mpModel->mpDoc == 0 ) ) - throw lang::DisposedException(); - - SdrLayerAdmin& rLayerAdmin = mpModel->mpDoc->GetLayerAdmin(); - SdrLayer* pLayer = rLayerAdmin.GetLayer( SdLayer::convertToInternalName( aName ), sal_False ); - if( pLayer == NULL ) - throw container::NoSuchElementException(); - - return uno::Any( GetLayer (pLayer) ); -} - -uno::Sequence< OUString > SAL_CALL SdLayerManager::getElementNames() - throw(uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( mpModel == 0 ) - throw lang::DisposedException(); - - SdrLayerAdmin& rLayerAdmin = mpModel->mpDoc->GetLayerAdmin(); - const sal_uInt16 nLayerCount = rLayerAdmin.GetLayerCount(); - - uno::Sequence< OUString > aSeq( nLayerCount ); - - OUString* pStrings = aSeq.getArray(); - SdrLayer* pLayer; - - for( sal_uInt16 nLayer = 0; nLayer < nLayerCount; nLayer++ ) - { - pLayer = rLayerAdmin.GetLayer( nLayer ); - if( pLayer ) - *pStrings++ = SdLayer::convertToExternalName( pLayer->GetName() ); - } - - return aSeq; -} - -sal_Bool SAL_CALL SdLayerManager::hasByName( const OUString& aName ) throw(uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( mpModel == 0 ) - throw lang::DisposedException(); - - SdrLayerAdmin& rLayerAdmin = mpModel->mpDoc->GetLayerAdmin(); - - return NULL != rLayerAdmin.GetLayer( SdLayer::convertToInternalName( aName ), sal_False ); -} - -// XElementAccess -uno::Type SAL_CALL SdLayerManager::getElementType() - throw(uno::RuntimeException) -{ - return ITYPE( drawing::XLayer ); -} - -sal_Bool SAL_CALL SdLayerManager::hasElements() throw(uno::RuntimeException) -{ - return getCount() > 0; -} - -/** Falls an den Layern was geaendert wurde sorgt diese Methode dafuer, das - die Aenderungen auch in der sdbcx::View sichtbar gemacht werden */ -void SdLayerManager::UpdateLayerView( sal_Bool modify ) const throw() -{ - if(mpModel->mpDocShell) - { - ::sd::DrawViewShell* pDrViewSh = - PTR_CAST(::sd::DrawViewShell, mpModel->mpDocShell->GetViewShell()); - - if(pDrViewSh) - { - sal_Bool bLayerMode = pDrViewSh->IsLayerModeActive(); - pDrViewSh->ChangeEditMode(pDrViewSh->GetEditMode(), !bLayerMode); - pDrViewSh->ChangeEditMode(pDrViewSh->GetEditMode(), bLayerMode); - } - - if(modify) - mpModel->mpDoc->SetChanged(sal_True); - } -} - -/** */ -::sd::View* SdLayerManager::GetView() const throw() -{ - if( mpModel->mpDocShell ) - { - ::sd::ViewShell* pViewSh = mpModel->mpDocShell->GetViewShell(); - if(pViewSh) - return pViewSh->GetView(); - } - return NULL; -} - - - -namespace -{ -/** Compare two pointers to <type>SdrLayer</type> objects. - @param xRef - The implementing SdLayer class provides the first pointer by the - <member>SdLayer::GetSdrLayer</member> method. - @param pSearchData - This void pointer is the second pointer to an <type>SdrLayer</type> - object. - @return - Return </True> if both pointers point to the same object. -*/ -sal_Bool compare_layers (uno::WeakReference<uno::XInterface> xRef, void* pSearchData) -{ - uno::Reference<uno::XInterface> xLayer (xRef); - if (xLayer.is()) - { - SdLayer* pSdLayer = SdLayer::getImplementation (xRef); - if (pSdLayer != NULL) - { - SdrLayer* pSdrLayer = pSdLayer->GetSdrLayer (); - if (pSdrLayer == static_cast<SdrLayer*>(pSearchData)) - return sal_True; - } - } - return sal_False; -} -} - -/** Use the <member>mpLayers</member> container of weak references to either - retrieve and return a previously created <type>XLayer</type> object for - the given <type>SdrLayer</type> object or create and remember a new one. -*/ -uno::Reference<drawing::XLayer> SdLayerManager::GetLayer (SdrLayer* pLayer) -{ - uno::WeakReference<uno::XInterface> xRef; - uno::Reference<drawing::XLayer> xLayer; - - // Search existing xLayer for the given pLayer. - if (mpLayers->findRef (xRef, (void*)pLayer, compare_layers)) - xLayer = uno::Reference<drawing::XLayer> (xRef, uno::UNO_QUERY); - - // Create the xLayer if necessary. - if ( ! xLayer.is()) - { - xLayer = new SdLayer (this, pLayer); - - // Remember the new xLayer for future calls. - uno::WeakReference<uno::XInterface> wRef(xLayer); - mpLayers->insert(wRef); - } - - return xLayer; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unolayer.hxx b/sd/source/ui/unoidl/unolayer.hxx deleted file mode 100644 index d7f73d02e..000000000 --- a/sd/source/ui/unoidl/unolayer.hxx +++ /dev/null @@ -1,190 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef SD_UNOLAYER_HXX -#define SD_UNOLAYER_HXX - -#include <com/sun/star/container/XIndexAccess.hpp> -#include <com/sun/star/drawing/XLayer.hpp> -#include <com/sun/star/drawing/XLayerManager.hpp> - -#include <cppuhelper/implbase5.hxx> -#include <comphelper/servicehelper.hxx> - -#include <unomodel.hxx> - -class SdrLayer; -class SdLayerManager; -class SdXImpressDocument; -class SvUnoWeakContainer; - -namespace sd { -class View; -} -enum LayerAttribute { VISIBLE, PRINTABLE, LOCKED }; - -/*********************************************************************** -* * -***********************************************************************/ -class SdLayer : public ::cppu::WeakImplHelper5< ::com::sun::star::drawing::XLayer, - ::com::sun::star::lang::XServiceInfo, - ::com::sun::star::container::XChild, - ::com::sun::star::lang::XUnoTunnel, - ::com::sun::star::lang::XComponent > -{ -public: - SdLayer( SdLayerManager* pLayerManager_, SdrLayer* pSdrLayer_ ) throw(); - virtual ~SdLayer() throw(); - - // intern - SdrLayer* GetSdrLayer() const throw() { return pLayer; } - - static String convertToInternalName( const ::rtl::OUString& rName ); - static ::rtl::OUString convertToExternalName( const String& rName ); - - // uno helper - UNO3_GETIMPLEMENTATION_DECL( SdLayer ) - - // XServiceInfo - virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException); - - // ::com::sun::star::beans::XPropertySet - virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - - // ::com::sun::star::container::XChild - - /** Returns the layer manager that manages this layer. - */ - virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getParent( ) throw (::com::sun::star::uno::RuntimeException); - - // XComponent - virtual void SAL_CALL dispose( ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException); - - /** Not implemented. Allways throws an exception. - @raises NoSupportException. - */ - virtual void SAL_CALL setParent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Parent ) throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException); - -private: - SdLayerManager* pLayerManager; - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XLayerManager > mxLayerManager; - - SdrLayer* pLayer; - const SvxItemPropertySet* pPropSet; - - sal_Bool get( LayerAttribute what ) throw(); - void set( LayerAttribute what, sal_Bool flag ) throw(); - -}; - - - - -/*********************************************************************** -* * -***********************************************************************/ - -class SdLayerManager : public ::cppu::WeakImplHelper5< ::com::sun::star::drawing::XLayerManager, - ::com::sun::star::container::XNameAccess, - ::com::sun::star::lang::XServiceInfo, - ::com::sun::star::lang::XUnoTunnel, - ::com::sun::star::lang::XComponent > -{ - friend class SdLayer; - -public: - SdLayerManager( SdXImpressDocument& rMyModel ) throw(); - virtual ~SdLayerManager() throw(); - - // uno helper - UNO3_GETIMPLEMENTATION_DECL( SdLayerManager ) - - // XServiceInfo - virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException); - - // XLayerManager - virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XLayer > SAL_CALL insertNewByIndex( sal_Int32 nIndex ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL remove( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XLayer >& xLayer ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL attachShapeToLayer( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape, const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XLayer >& xLayer ) throw(::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XLayer > SAL_CALL getLayerForShape( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(::com::sun::star::uno::RuntimeException); - - // XIndexAccess - virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException) ; - virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - - // XNameAccess - virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw(::com::sun::star::uno::RuntimeException); - - // XElementAccess - virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); - - /** Return the <type>XLayer</type> object that is associated with the - given <type>SdrLayer</type> object. If the requested object does - not yet exist it is created. All calls with the same argument - return the same object. - @param pLayer - The <type>SdrLayer</type> object for which to return the - associated <type>XLayer</type> object. - @return - The returned value is the unique <type>XLayer</type> object - associated with the specified argument. If no layer can be - created for the argument than an empty reference is returned. - */ - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XLayer> GetLayer (SdrLayer* pLayer); - - // XComponent - virtual void SAL_CALL dispose( ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException); - -private: - SdXImpressDocument* mpModel; - SvUnoWeakContainer* mpLayers; - - ::sd::View* GetView() const throw(); - ::sd::DrawDocShell* GetDocShell() const throw() { return mpModel->mpDocShell; } - void UpdateLayerView( sal_Bool modify = sal_True ) const throw(); -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unomodel.cxx b/sd/source/ui/unoidl/unomodel.cxx deleted file mode 100644 index 6ecbaa9ec..000000000 --- a/sd/source/ui/unoidl/unomodel.cxx +++ /dev/null @@ -1,3022 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" - -#include <com/sun/star/presentation/XPresentation2.hpp> - -#include <com/sun/star/lang/DisposedException.hpp> -#include <com/sun/star/lang/ServiceNotRegisteredException.hpp> -#include <com/sun/star/lang/Locale.hpp> -#include <com/sun/star/style/XStyle.hpp> -#include <com/sun/star/awt/XDevice.hpp> - -#include <com/sun/star/embed/Aspects.hpp> -#include <com/sun/star/presentation/XPresentation2.hpp> - -#include <osl/mutex.hxx> -#include <comphelper/sequence.hxx> -#include <comphelper/servicehelper.hxx> -#include <comphelper/serviceinfohelper.hxx> - -#include <rtl/memory.h> -#include <editeng/unofield.hxx> -#include <unomodel.hxx> -#include <sfx2/dispatch.hxx> -#include <sfx2/bindings.hxx> -#include <vcl/svapp.hxx> -#include <editeng/UnoForbiddenCharsTable.hxx> -#include <svx/svdoutl.hxx> -#include <editeng/forbiddencharacterstable.hxx> -#include <svx/UnoNamespaceMap.hxx> -#include <svx/svdlayer.hxx> -#include <svx/svdsob.hxx> -#include <svx/unoapi.hxx> -#include <svx/unofill.hxx> -#include <svx/unopool.hxx> -#include <svx/svdorect.hxx> -#include <editeng/flditem.hxx> -#include <osl/mutex.hxx> -#include <toolkit/awt/vclxdevice.hxx> -#include <svx/svdpool.hxx> -#include <editeng/unolingu.hxx> -#include <svx/svdpagv.hxx> -#include <svtools/unoimap.hxx> -#include <svx/unoshape.hxx> -#include <editeng/unonrule.hxx> -#include <editeng/eeitem.hxx> - -// Support creation of GraphicObjectResolver and EmbeddedObjectResolver -#include <svx/xmleohlp.hxx> -#include <svx/xmlgrhlp.hxx> -#include "DrawDocShell.hxx" -#include "ViewShellBase.hxx" -#include <UnoDocumentSettings.hxx> - -#include <drawdoc.hxx> -#include <glob.hrc> -#include <sdresid.hxx> -#include <sdpage.hxx> - -#include <strings.hrc> -#include "unohelp.hxx" -#include <unolayer.hxx> -#include <unoprnms.hxx> -#include <unopage.hxx> -#include <unocpres.hxx> -#include <unoobj.hxx> -#include <stlpool.hxx> -#include <unopback.hxx> -#include <unokywds.hxx> -#include "FrameView.hxx" -#include "ClientView.hxx" -#include "ViewShell.hxx" -#include "app.hrc" -#include <vcl/pdfextoutdevdata.hxx> -#include <com/sun/star/presentation/AnimationEffect.hpp> -#include <com/sun/star/presentation/AnimationSpeed.hpp> -#include <com/sun/star/presentation/ClickAction.hpp> -#include <tools/urlobj.hxx> -#include <svx/sdr/contact/viewobjectcontact.hxx> -#include <svx/sdr/contact/viewcontact.hxx> -#include <svx/sdr/contact/displayinfo.hxx> - -#include <com/sun/star/office/XAnnotation.hpp> -#include <com/sun/star/office/XAnnotationAccess.hpp> -#include <com/sun/star/office/XAnnotationEnumeration.hpp> -#include <com/sun/star/geometry/RealPoint2D.hpp> -#include <com/sun/star/util/DateTime.hpp> - -using ::rtl::OUString; - -#include <drawinglayer/primitive2d/structuretagprimitive2d.hxx> - -using namespace ::osl; -using namespace ::cppu; -using namespace ::com::sun::star; - -extern uno::Reference< uno::XInterface > SdUnoCreatePool( SdDrawDocument* pDrawModel ); - -class SdUnoForbiddenCharsTable : public SvxUnoForbiddenCharsTable, - public SfxListener -{ -public: - SdUnoForbiddenCharsTable( SdrModel* pModel ); - ~SdUnoForbiddenCharsTable(); - - // SfxListener - virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) throw (); -protected: - virtual void onChange(); - -private: - SdrModel* mpModel; -}; - -SdUnoForbiddenCharsTable::SdUnoForbiddenCharsTable( SdrModel* pModel ) -: SvxUnoForbiddenCharsTable( pModel->GetForbiddenCharsTable() ), mpModel( pModel ) -{ - StartListening( *pModel ); -} - -void SdUnoForbiddenCharsTable::onChange() -{ - if( mpModel ) - { - mpModel->ReformatAllTextObjects(); - } -} - -SdUnoForbiddenCharsTable::~SdUnoForbiddenCharsTable() -{ - if( mpModel ) - EndListening( *mpModel ); -} - -void SdUnoForbiddenCharsTable::Notify( SfxBroadcaster&, const SfxHint& rHint ) throw() -{ - const SdrHint* pSdrHint = PTR_CAST( SdrHint, &rHint ); - - if( pSdrHint ) - { - if( HINT_MODELCLEARED == pSdrHint->GetKind() ) - { - mpModel = NULL; - } - } -} - -/////////////////////////////////////////////////////////////////////// - -const sal_Int32 WID_MODEL_LANGUAGE = 1; -const sal_Int32 WID_MODEL_TABSTOP = 2; -const sal_Int32 WID_MODEL_VISAREA = 3; -const sal_Int32 WID_MODEL_MAPUNIT = 4; -const sal_Int32 WID_MODEL_FORBCHARS= 5; -const sal_Int32 WID_MODEL_CONTFOCUS = 6; -const sal_Int32 WID_MODEL_DSGNMODE = 7; -const sal_Int32 WID_MODEL_BASICLIBS = 8; -const sal_Int32 WID_MODEL_RUNTIMEUID = 9; -const sal_Int32 WID_MODEL_BUILDID = 10; -const sal_Int32 WID_MODEL_HASVALIDSIGNATURES = 11; -const sal_Int32 WID_MODEL_DIALOGLIBS = 12; - -const SvxItemPropertySet* ImplGetDrawModelPropertySet() -{ - // Achtung: Der erste Parameter MUSS sortiert vorliegen !!! - const static SfxItemPropertyMapEntry aDrawModelPropertyMap_Impl[] = - { - { MAP_CHAR_LEN("BuildId"), WID_MODEL_BUILDID, &::getCppuType(static_cast< const rtl::OUString * >(0)), 0, 0}, - { MAP_CHAR_LEN(sUNO_Prop_CharLocale), WID_MODEL_LANGUAGE, &::getCppuType((const lang::Locale*)0), 0, 0}, - { MAP_CHAR_LEN(sUNO_Prop_TabStop), WID_MODEL_TABSTOP, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(sUNO_Prop_VisibleArea), WID_MODEL_VISAREA, &::getCppuType((const awt::Rectangle*)0), 0, 0}, - { MAP_CHAR_LEN(sUNO_Prop_MapUnit), WID_MODEL_MAPUNIT, &::getCppuType((const sal_Int16*)0), beans::PropertyAttribute::READONLY, 0}, - { MAP_CHAR_LEN(sUNO_Prop_ForbiddenCharacters), WID_MODEL_FORBCHARS,&::getCppuType((const uno::Reference< i18n::XForbiddenCharacters > *)0), beans::PropertyAttribute::READONLY, 0 }, - { MAP_CHAR_LEN(sUNO_Prop_AutomContFocus ), WID_MODEL_CONTFOCUS, &::getBooleanCppuType(), 0, 0}, - { MAP_CHAR_LEN(sUNO_Prop_ApplyFrmDsgnMode), WID_MODEL_DSGNMODE, &::getBooleanCppuType(), 0, 0}, - { MAP_CHAR_LEN("BasicLibraries"), WID_MODEL_BASICLIBS,&::getCppuType((const uno::Reference< script::XLibraryContainer > *)0), beans::PropertyAttribute::READONLY, 0 }, - { MAP_CHAR_LEN("DialogLibraries"), WID_MODEL_DIALOGLIBS, &::getCppuType((const uno::Reference< script::XLibraryContainer > *)0), beans::PropertyAttribute::READONLY, 0 }, - { MAP_CHAR_LEN(sUNO_Prop_RuntimeUID), WID_MODEL_RUNTIMEUID, &::getCppuType(static_cast< const rtl::OUString * >(0)), beans::PropertyAttribute::READONLY, 0 }, - { MAP_CHAR_LEN(sUNO_Prop_HasValidSignatures), WID_MODEL_HASVALIDSIGNATURES, &::getCppuType(static_cast< const sal_Bool * >(0)), beans::PropertyAttribute::READONLY, 0 }, - { 0,0,0,0,0,0 } - }; - static SvxItemPropertySet aDrawModelPropertySet_Impl( aDrawModelPropertyMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() ); - return &aDrawModelPropertySet_Impl; -} - -// this ctor is used from the DocShell -SdXImpressDocument::SdXImpressDocument (::sd::DrawDocShell* pShell, bool bClipBoard ) throw() -: SfxBaseModel( pShell ), - mpDocShell( pShell ), - mpDoc( pShell ? pShell->GetDoc() : NULL ), - mbDisposed(false), - mbImpressDoc( pShell && pShell->GetDoc() && pShell->GetDoc()->GetDocumentType() == DOCUMENT_TYPE_IMPRESS ), - mbClipBoard( bClipBoard ), - mpPropSet( ImplGetDrawModelPropertySet() ) -{ - if( mpDoc ) - { - StartListening( *mpDoc ); - } - else - { - OSL_FAIL("DocShell is invalid"); - } -} - -SdXImpressDocument::SdXImpressDocument( SdDrawDocument* pDoc, bool bClipBoard ) throw() -: SfxBaseModel( NULL ), - mpDocShell( NULL ), - mpDoc( pDoc ), - mbDisposed(false), - mbImpressDoc( pDoc && pDoc->GetDocumentType() == DOCUMENT_TYPE_IMPRESS ), - mbClipBoard( bClipBoard ), - mpPropSet( ImplGetDrawModelPropertySet() ) -{ - if( mpDoc ) - { - StartListening( *mpDoc ); - } - else - { - OSL_FAIL("SdDrawDocument is invalid"); - } -} - -/*********************************************************************** -* * -***********************************************************************/ -SdXImpressDocument::~SdXImpressDocument() throw() -{ -} - -// XInterface -uno::Any SAL_CALL SdXImpressDocument::queryInterface( const uno::Type & rType ) throw(uno::RuntimeException) -{ - uno::Any aAny; - - QUERYINT(lang::XServiceInfo); - else QUERYINT(beans::XPropertySet); - else QUERYINT(lang::XMultiServiceFactory); - else QUERYINT(drawing::XDrawPageDuplicator); - else QUERYINT(drawing::XLayerSupplier); - else QUERYINT(drawing::XMasterPagesSupplier); - else QUERYINT(drawing::XDrawPagesSupplier); - else QUERYINT(presentation::XHandoutMasterSupplier); - else QUERYINT(document::XLinkTargetSupplier); - else QUERYINT(style::XStyleFamiliesSupplier); - else QUERYINT(com::sun::star::ucb::XAnyCompareFactory); - else QUERYINT(view::XRenderable); - else if( mbImpressDoc && rType == ITYPE(presentation::XPresentationSupplier) ) - aAny <<= uno::Reference< presentation::XPresentationSupplier >(this); - else if( mbImpressDoc && rType == ITYPE(presentation::XCustomPresentationSupplier) ) - aAny <<= uno::Reference< presentation::XCustomPresentationSupplier >(this); - else - return SfxBaseModel::queryInterface( rType ); - - return aAny; -} - -void SAL_CALL SdXImpressDocument::acquire() throw ( ) -{ - SfxBaseModel::acquire(); -} - -void SAL_CALL SdXImpressDocument::release() throw ( ) -{ - if (osl_decrementInterlockedCount( &m_refCount ) == 0) - { - // restore reference count: - osl_incrementInterlockedCount( &m_refCount ); - if(!mbDisposed) - { - try - { - dispose(); - } - catch (uno::RuntimeException const& exc) - { // don't break throw () - OSL_FAIL( - OUStringToOString( - exc.Message, RTL_TEXTENCODING_ASCII_US ).getStr() ); - static_cast<void>(exc); - } - } - SfxBaseModel::release(); - } -} - -namespace -{ - class theSdXImpressDocumentUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theSdXImpressDocumentUnoTunnelId> {}; -} - -// XUnoTunnel -const ::com::sun::star::uno::Sequence< sal_Int8 > & SdXImpressDocument::getUnoTunnelId() throw() -{ - return theSdXImpressDocumentUnoTunnelId::get().getSeq(); -} - -SdXImpressDocument* SdXImpressDocument::getImplementation( const uno::Reference< uno::XInterface >& xInt ) -{ - ::com::sun::star::uno::Reference< ::com::sun::star::lang::XUnoTunnel > xUT( xInt, ::com::sun::star::uno::UNO_QUERY ); - if( xUT.is() ) - return reinterpret_cast<SdXImpressDocument*>(sal::static_int_cast<sal_IntPtr>(xUT->getSomething( SdXImpressDocument::getUnoTunnelId() ))); - else - return NULL; -} - -sal_Int64 SAL_CALL SdXImpressDocument::getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rIdentifier ) throw(::com::sun::star::uno::RuntimeException) -{ - if( rIdentifier.getLength() == 16 ) - { - if( (0 == rtl_compareMemory( SdXImpressDocument::getUnoTunnelId().getConstArray(), rIdentifier.getConstArray(), 16 )) ) - return sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(this)); - - if( (0 == rtl_compareMemory( SdrModel::getUnoTunnelImplementationId().getConstArray(), rIdentifier.getConstArray(), 16 )) ) - return sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(mpDoc)); - } - - return SfxBaseModel::getSomething( rIdentifier ); -} - -// XTypeProvider -uno::Sequence< uno::Type > SAL_CALL SdXImpressDocument::getTypes( ) throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( maTypeSequence.getLength() == 0 ) - { - const uno::Sequence< uno::Type > aBaseTypes( SfxBaseModel::getTypes() ); - const sal_Int32 nBaseTypes = aBaseTypes.getLength(); - const uno::Type* pBaseTypes = aBaseTypes.getConstArray(); - - const sal_Int32 nOwnTypes = mbImpressDoc ? 14 : 11; // !DANGER! Keep this updated! - - maTypeSequence.realloc( nBaseTypes + nOwnTypes ); - uno::Type* pTypes = maTypeSequence.getArray(); - - *pTypes++ = ITYPE(beans::XPropertySet); - *pTypes++ = ITYPE(lang::XServiceInfo); - *pTypes++ = ITYPE(lang::XMultiServiceFactory); - *pTypes++ = ITYPE(drawing::XDrawPageDuplicator); - *pTypes++ = ITYPE(drawing::XLayerSupplier); - *pTypes++ = ITYPE(drawing::XMasterPagesSupplier); - *pTypes++ = ITYPE(drawing::XDrawPagesSupplier); - *pTypes++ = ITYPE(document::XLinkTargetSupplier); - *pTypes++ = ITYPE(style::XStyleFamiliesSupplier); - *pTypes++ = ITYPE(com::sun::star::ucb::XAnyCompareFactory); - *pTypes++ = ITYPE(view::XRenderable); - if( mbImpressDoc ) - { - *pTypes++ = ITYPE(presentation::XPresentationSupplier); - *pTypes++ = ITYPE(presentation::XCustomPresentationSupplier); - *pTypes++ = ITYPE(presentation::XHandoutMasterSupplier); - } - - for( sal_Int32 nType = 0; nType < nBaseTypes; nType++ ) - *pTypes++ = *pBaseTypes++; - } - - return maTypeSequence; -} - -namespace -{ - class theSdXImpressDocumentImplementationId : public rtl::Static< UnoTunnelIdInit, theSdXImpressDocumentImplementationId > {}; -} - -uno::Sequence< sal_Int8 > SAL_CALL SdXImpressDocument::getImplementationId( ) throw(uno::RuntimeException) -{ - return theSdXImpressDocumentImplementationId::get().getSeq(); -} - -/*********************************************************************** -* * -***********************************************************************/ -void SdXImpressDocument::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) -{ - if( mpDoc ) - { - const SdrHint* pSdrHint = PTR_CAST( SdrHint, &rHint ); - - if( pSdrHint ) - { - if( hasEventListeners() ) - { - document::EventObject aEvent; - if( SvxUnoDrawMSFactory::createEvent( mpDoc, pSdrHint, aEvent ) ) - notifyEvent( aEvent ); - } - - if( pSdrHint->GetKind() == HINT_MODELCLEARED ) - { - if( mpDoc ) - EndListening( *mpDoc ); - mpDoc = NULL; - mpDocShell = NULL; - } - } - else - { - const SfxSimpleHint* pSfxHint = PTR_CAST(SfxSimpleHint, &rHint ); - - // ist unser SdDrawDocument gerade gestorben? - if(pSfxHint && pSfxHint->GetId() == SFX_HINT_DYING) - { - // yup, also schnell ein neues erfragen - if( mpDocShell ) - { - SdDrawDocument *pNewDoc = mpDocShell->GetDoc(); - - // ist ueberhaupt ein neues da? - if( pNewDoc != mpDoc ) - { - mpDoc = pNewDoc; - if(mpDoc) - StartListening( *mpDoc ); - } - } - } - } - } - SfxBaseModel::Notify( rBC, rHint ); -} - -/****************************************************************************** -* * -******************************************************************************/ -SdPage* SdXImpressDocument::InsertSdPage( sal_uInt16 nPage, sal_Bool bDuplicate ) throw() -{ - sal_uInt16 nPageCount = mpDoc->GetSdPageCount( PK_STANDARD ); - SdrLayerAdmin& rLayerAdmin = mpDoc->GetLayerAdmin(); - sal_uInt8 aBckgrnd = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), sal_False); - sal_uInt8 aBckgrndObj = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), sal_False); - - SdPage* pStandardPage = NULL; - - if( 0 == nPageCount ) - { - // this is only used for clipboard where we only have one page - pStandardPage = (SdPage*) mpDoc->AllocPage(sal_False); - - Size aDefSize(21000, 29700); // A4-Hochformat - pStandardPage->SetSize( aDefSize ); - mpDoc->InsertPage(pStandardPage, 0); - } - else - { - // Hier wird die Seite ermittelt, hinter der eingefuegt werden soll - SdPage* pPreviousStandardPage = mpDoc->GetSdPage( Min( (sal_uInt16)(nPageCount - 1), nPage ), PK_STANDARD ); - SetOfByte aVisibleLayers = pPreviousStandardPage->TRG_GetMasterPageVisibleLayers(); - sal_Bool bIsPageBack = aVisibleLayers.IsSet( aBckgrnd ); - sal_Bool bIsPageObj = aVisibleLayers.IsSet( aBckgrndObj ); - - // AutoLayouts must be ready - mpDoc->StopWorkStartupDelay(); - - /************************************************************** - * Es wird stets zuerst eine Standardseite und dann eine - * Notizseite erzeugt. Es ist sichergestellt, dass auf eine - * Standardseite stets die zugehoerige Notizseite folgt. - **************************************************************/ - - sal_uInt16 nStandardPageNum = pPreviousStandardPage->GetPageNum() + 2; - SdPage* pPreviousNotesPage = (SdPage*) mpDoc->GetPage( nStandardPageNum - 1 ); - sal_uInt16 nNotesPageNum = nStandardPageNum + 1; - String aStandardPageName; - String aNotesPageName; - - /************************************************************** - * Standardpage - **************************************************************/ - if( bDuplicate ) - pStandardPage = (SdPage*) pPreviousStandardPage->Clone(); - else - pStandardPage = (SdPage*) mpDoc->AllocPage(sal_False); - - pStandardPage->SetSize( pPreviousStandardPage->GetSize() ); - pStandardPage->SetBorder( pPreviousStandardPage->GetLftBorder(), - pPreviousStandardPage->GetUppBorder(), - pPreviousStandardPage->GetRgtBorder(), - pPreviousStandardPage->GetLwrBorder() ); - pStandardPage->SetOrientation( pPreviousStandardPage->GetOrientation() ); - pStandardPage->SetName(aStandardPageName); - - // Seite hinter aktueller Seite einfuegen - mpDoc->InsertPage(pStandardPage, nStandardPageNum); - - if( !bDuplicate ) - { - // MasterPage der aktuellen Seite verwenden - pStandardPage->TRG_SetMasterPage(pPreviousStandardPage->TRG_GetMasterPage()); - pStandardPage->SetLayoutName( pPreviousStandardPage->GetLayoutName() ); - pStandardPage->SetAutoLayout(AUTOLAYOUT_NONE, sal_True ); - } - - aBckgrnd = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), sal_False); - aBckgrndObj = rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), sal_False); - aVisibleLayers.Set(aBckgrnd, bIsPageBack); - aVisibleLayers.Set(aBckgrndObj, bIsPageObj); - pStandardPage->TRG_SetMasterPageVisibleLayers(aVisibleLayers); - - /************************************************************** - * Notespage - **************************************************************/ - SdPage* pNotesPage = NULL; - - if( bDuplicate ) - pNotesPage = (SdPage*) pPreviousNotesPage->Clone(); - else - pNotesPage = (SdPage*) mpDoc->AllocPage(sal_False); - - pNotesPage->SetSize( pPreviousNotesPage->GetSize() ); - pNotesPage->SetBorder( pPreviousNotesPage->GetLftBorder(), - pPreviousNotesPage->GetUppBorder(), - pPreviousNotesPage->GetRgtBorder(), - pPreviousNotesPage->GetLwrBorder() ); - pNotesPage->SetOrientation( pPreviousNotesPage->GetOrientation() ); - pNotesPage->SetName(aNotesPageName); - pNotesPage->SetPageKind(PK_NOTES); - - // Seite hinter aktueller Seite einfuegen - mpDoc->InsertPage(pNotesPage, nNotesPageNum); - - if( !bDuplicate ) - { - // MasterPage der aktuellen Seite verwenden - pNotesPage->TRG_SetMasterPage(pPreviousNotesPage->TRG_GetMasterPage()); - pNotesPage->SetLayoutName( pPreviousNotesPage->GetLayoutName() ); - pNotesPage->SetAutoLayout(AUTOLAYOUT_NOTES, sal_True ); - } - } - - SetModified(); - - return( pStandardPage ); -} - -void SdXImpressDocument::SetModified( sal_Bool bModified /* = sal_True */ ) throw() -{ - if( mpDoc ) - mpDoc->SetChanged( bModified ); -} - -// XModel -void SAL_CALL SdXImpressDocument ::lockControllers( ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - mpDoc->setLock(true); -} - -void SAL_CALL SdXImpressDocument::unlockControllers( ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - if( mpDoc->isLocked() ) - { - mpDoc->setLock(false); - } -} - -sal_Bool SAL_CALL SdXImpressDocument::hasControllersLocked( ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - return mpDoc && mpDoc->isLocked(); -} - -#include <comphelper/processfactory.hxx> - -uno::Reference < container::XIndexAccess > SAL_CALL SdXImpressDocument::getViewData() throw( uno::RuntimeException ) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - uno::Reference < container::XIndexAccess > xRet( SfxBaseModel::getViewData() ); - - if( !xRet.is() ) - { - const std::vector<sd::FrameView*> &rList = mpDoc->GetFrameViewList(); - - if( !rList.empty() ) - { - xRet = uno::Reference < container::XIndexAccess >::query(::comphelper::getProcessServiceFactory()->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.IndexedPropertyValues")))); - - - uno::Reference < container::XIndexContainer > xCont( xRet, uno::UNO_QUERY ); - DBG_ASSERT( xCont.is(), "SdXImpressDocument::getViewData() failed for OLE object" ); - if( xCont.is() ) - { - for( sal_uInt32 i = 0, n = rList.size(); i < n; i++ ) - { - ::sd::FrameView* pFrameView = rList[ i ]; - - uno::Sequence< beans::PropertyValue > aSeq; - pFrameView->WriteUserDataSequence( aSeq ); - xCont->insertByIndex( i, uno::makeAny( aSeq ) ); - } - } - } - } - - return xRet; -} - -void SAL_CALL SdXImpressDocument::setViewData( const uno::Reference < container::XIndexAccess >& xData ) throw(::com::sun::star::uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - SfxBaseModel::setViewData( xData ); - if( mpDocShell && (mpDocShell->GetCreateMode() == SFX_CREATE_MODE_EMBEDDED) && xData.is() ) - { - const sal_Int32 nCount = xData->getCount(); - - std::vector<sd::FrameView*>::iterator pIter; - std::vector<sd::FrameView*> &rViews = mpDoc->GetFrameViewList(); - - for ( pIter = rViews.begin(); pIter != rViews.end(); ++pIter ) - delete *pIter; - - rViews.clear(); - - ::sd::FrameView* pFrameView; - uno::Sequence< beans::PropertyValue > aSeq; - for( sal_Int32 nIndex = 0; nIndex < nCount; nIndex++ ) - { - if( xData->getByIndex( nIndex ) >>= aSeq ) - { - pFrameView = new ::sd::FrameView( mpDoc ); - - pFrameView->ReadUserDataSequence( aSeq ); - rViews.push_back( pFrameView ); - } - } - } -} - -// XDrawPageDuplicator -uno::Reference< drawing::XDrawPage > SAL_CALL SdXImpressDocument::duplicate( const uno::Reference< drawing::XDrawPage >& xPage ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - // pPage von xPage besorgen und dann die Id (nPos )ermitteln - SvxDrawPage* pSvxPage = SvxDrawPage::getImplementation( xPage ); - if( pSvxPage ) - { - SdPage* pPage = (SdPage*) pSvxPage->GetSdrPage(); - sal_uInt16 nPos = pPage->GetPageNum(); - nPos = ( nPos - 1 ) / 2; - pPage = InsertSdPage( nPos, sal_True ); - if( pPage ) - { - uno::Reference< drawing::XDrawPage > xDrawPage( pPage->getUnoPage(), uno::UNO_QUERY ); - return xDrawPage; - } - } - - uno::Reference< drawing::XDrawPage > xDrawPage; - return xDrawPage; -} - - -// XDrawPagesSupplier -uno::Reference< drawing::XDrawPages > SAL_CALL SdXImpressDocument::getDrawPages() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - uno::Reference< drawing::XDrawPages > xDrawPages( mxDrawPagesAccess ); - - if( !xDrawPages.is() ) - { - initializeDocument(); - mxDrawPagesAccess = xDrawPages = (drawing::XDrawPages*)new SdDrawPagesAccess(*this); - } - - return xDrawPages; -} - -// XMasterPagesSupplier -uno::Reference< drawing::XDrawPages > SAL_CALL SdXImpressDocument::getMasterPages() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - uno::Reference< drawing::XDrawPages > xMasterPages( mxMasterPagesAccess ); - - if( !xMasterPages.is() ) - { - initializeDocument(); - mxMasterPagesAccess = xMasterPages = new SdMasterPagesAccess(*this); - } - - return xMasterPages; -} - -// XLayerManagerSupplier -uno::Reference< container::XNameAccess > SAL_CALL SdXImpressDocument::getLayerManager( ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - uno::Reference< container::XNameAccess > xLayerManager( mxLayerManager ); - - if( !xLayerManager.is() ) - mxLayerManager = xLayerManager = new SdLayerManager(*this); - - return xLayerManager; -} - -// XCustomPresentationSupplier -uno::Reference< container::XNameContainer > SAL_CALL SdXImpressDocument::getCustomPresentations() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - uno::Reference< container::XNameContainer > xCustomPres( mxCustomPresentationAccess ); - - if( !xCustomPres.is() ) - mxCustomPresentationAccess = xCustomPres = new SdXCustomPresentationAccess(*this); - - return xCustomPres; -} - -extern uno::Reference< presentation::XPresentation > createPresentation( SdXImpressDocument& rModel ); - -// XPresentationSupplier -uno::Reference< presentation::XPresentation > SAL_CALL SdXImpressDocument::getPresentation() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - return uno::Reference< presentation::XPresentation >( mpDoc->getPresentation().get() ); -} - -// XHandoutMasterSupplier -uno::Reference< drawing::XDrawPage > SAL_CALL SdXImpressDocument::getHandoutMasterPage() - throw (uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - uno::Reference< drawing::XDrawPage > xPage; - - if( mpDoc ) - { - initializeDocument(); - SdPage* pPage = mpDoc->GetMasterSdPage( 0, PK_HANDOUT ); - if( pPage ) - xPage = uno::Reference< drawing::XDrawPage >::query( pPage->getUnoPage() ); - } - return xPage; -} - -// XMultiServiceFactory ( SvxFmMSFactory ) -uno::Reference< uno::XInterface > SAL_CALL SdXImpressDocument::createInstance( const OUString& aServiceSpecifier ) - throw(uno::Exception, uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - if( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.DashTable") ) ) - { - if( !mxDashTable.is() ) - mxDashTable = SvxUnoDashTable_createInstance( mpDoc ); - - return mxDashTable; - } - if( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.GradientTable") ) ) - { - if( !mxGradientTable.is() ) - mxGradientTable = SvxUnoGradientTable_createInstance( mpDoc ); - - return mxGradientTable; - } - if( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.HatchTable") ) ) - { - if( !mxHatchTable.is() ) - mxHatchTable = SvxUnoHatchTable_createInstance( mpDoc ); - - return mxHatchTable; - } - if( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.BitmapTable") ) ) - { - if( !mxBitmapTable.is() ) - mxBitmapTable = SvxUnoBitmapTable_createInstance( mpDoc ); - - return mxBitmapTable; - } - if( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.TransparencyGradientTable") ) ) - { - if( !mxTransGradientTable.is() ) - mxTransGradientTable = SvxUnoTransGradientTable_createInstance( mpDoc ); - - return mxTransGradientTable; - } - if( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.MarkerTable") ) ) - { - if( !mxMarkerTable.is() ) - mxMarkerTable = SvxUnoMarkerTable_createInstance( mpDoc ); - - return mxMarkerTable; - } - if( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.text.NumberingRules" ) ) ) - { - return uno::Reference< uno::XInterface >( SvxCreateNumRule( mpDoc ), uno::UNO_QUERY ); - } - if( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.Background" ) ) ) - { - return uno::Reference< uno::XInterface >( - static_cast<uno::XWeak*>(new SdUnoPageBackground( mpDoc ))); - } - - if( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.Defaults") ) ) - { - if( !mxDrawingPool.is() ) - mxDrawingPool = SdUnoCreatePool( mpDoc ); - - return mxDrawingPool; - - } - - if( aServiceSpecifier.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM(sUNO_Service_ImageMapRectangleObject) ) ) - { - return SvUnoImageMapRectangleObject_createInstance( ImplGetSupportedMacroItems() ); - } - - if( aServiceSpecifier.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM(sUNO_Service_ImageMapCircleObject) ) ) - { - return SvUnoImageMapCircleObject_createInstance( ImplGetSupportedMacroItems() ); - } - - if( aServiceSpecifier.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM(sUNO_Service_ImageMapPolygonObject) ) ) - { - return SvUnoImageMapPolygonObject_createInstance( ImplGetSupportedMacroItems() ); - } - - if( ( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.document.Settings") ) ) || - ( !mbImpressDoc && ( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.DocumentSettings") ) ) ) || - ( mbImpressDoc && ( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.presentation.DocumentSettings") ) ) ) ) - { - return sd::DocumentSettings_createInstance( this ); - } - - if( ( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.text.TextField.DateTime") ) ) || - ( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.text.textfield.DateTime") ) ) ) - { - return (::cppu::OWeakObject * )new SvxUnoTextField( ID_EXT_DATEFIELD ); - } - - if( (0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.presentation.TextField.Header"))) || - (0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.presentation.textfield.Header"))) ) - { - return (::cppu::OWeakObject * )new SvxUnoTextField( ID_HEADERFIELD ); - } - - if( (0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.presentation.TextField.Footer"))) || - (0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.presentation.textfield.Footer"))) ) - { - return (::cppu::OWeakObject * )new SvxUnoTextField( ID_FOOTERFIELD ); - } - - if( (0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.presentation.TextField.DateTime"))) || - (0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.presentation.textfield.DateTime"))) ) - { - return (::cppu::OWeakObject * )new SvxUnoTextField( ID_DATETIMEFIELD ); - } - - if( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.xml.NamespaceMap") ) ) - { - static sal_uInt16 aWhichIds[] = { SDRATTR_XMLATTRIBUTES, EE_CHAR_XMLATTRIBS, EE_PARA_XMLATTRIBS, 0 }; - - return svx::NamespaceMap_createInstance( aWhichIds, &mpDoc->GetItemPool() ); - } - - // Support creation of GraphicObjectResolver and EmbeddedObjectResolver - if( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.document.ExportGraphicObjectResolver") ) ) - { - return (::cppu::OWeakObject * )new SvXMLGraphicHelper( GRAPHICHELPER_MODE_WRITE ); - } - - if( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.document.ImportGraphicObjectResolver") ) ) - { - return (::cppu::OWeakObject * )new SvXMLGraphicHelper( GRAPHICHELPER_MODE_READ ); - } - - if( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.document.ExportEmbeddedObjectResolver") ) ) - { - ::comphelper::IEmbeddedHelper *pPersist = mpDoc ? mpDoc->GetPersist() : NULL; - if( NULL == pPersist ) - throw lang::DisposedException(); - - return (::cppu::OWeakObject * )new SvXMLEmbeddedObjectHelper( *pPersist, EMBEDDEDOBJECTHELPER_MODE_WRITE ); - } - - if( 0 == aServiceSpecifier.reverseCompareToAsciiL( RTL_CONSTASCII_STRINGPARAM("com.sun.star.document.ImportEmbeddedObjectResolver") ) ) - { - ::comphelper::IEmbeddedHelper *pPersist = mpDoc ? mpDoc->GetPersist() : NULL; - if( NULL == pPersist ) - throw lang::DisposedException(); - - return (::cppu::OWeakObject * )new SvXMLEmbeddedObjectHelper( *pPersist, EMBEDDEDOBJECTHELPER_MODE_READ ); - } - - uno::Reference< uno::XInterface > xRet; - - const String aType( aServiceSpecifier ); - if( aType.EqualsAscii( "com.sun.star.presentation.", 0, 26 ) ) - { - SvxShape* pShape = NULL; - - sal_uInt16 nType = OBJ_TEXT; - // create a shape wrapper - if( aType.EqualsAscii( "TitleTextShape", 26, 14 ) ) - { - nType = OBJ_TEXT; - } - else if( aType.EqualsAscii( "OutlinerShape", 26, 13 ) ) - { - nType = OBJ_TEXT; - } - else if( aType.EqualsAscii( "SubtitleShape", 26, 13 ) ) - { - nType = OBJ_TEXT; - } - else if( aType.EqualsAscii( "GraphicObjectShape", 26, 18 ) ) - { - nType = OBJ_GRAF; - } - else if( aType.EqualsAscii( "PageShape", 26, 9 ) ) - { - nType = OBJ_PAGE; - } - else if( aType.EqualsAscii( "OLE2Shape", 26, 9 ) ) - { - nType = OBJ_OLE2; - } - else if( aType.EqualsAscii( "ChartShape", 26, 10 ) ) - { - nType = OBJ_OLE2; - } - else if( aType.EqualsAscii( "CalcShape", 26, 9 ) ) - { - nType = OBJ_OLE2; - } - else if( aType.EqualsAscii( "TableShape", 26, 10 ) ) - { - nType = OBJ_TABLE; - } - else if( aType.EqualsAscii( "OrgChartShape", 26, 13 ) ) - { - nType = OBJ_OLE2; - } - else if( aType.EqualsAscii( "NotesShape", 26, 13 ) ) - { - nType = OBJ_TEXT; - } - else if( aType.EqualsAscii( "HandoutShape", 26, 13 ) ) - { - nType = OBJ_PAGE; - } - else if( aType.EqualsAscii( "FooterShape", 26, 12 ) ) - { - nType = OBJ_TEXT; - } - else if( aType.EqualsAscii( "HeaderShape", 26, 12 ) ) - { - nType = OBJ_TEXT; - } - else if( aType.EqualsAscii( "SlideNumberShape", 26, 17 ) ) - { - nType = OBJ_TEXT; - } - else if( aType.EqualsAscii( "DateTimeShape", 26, 17 ) ) - { - nType = OBJ_TEXT; - } - else if( aType.EqualsAscii( "MediaShape", 26, 10 ) ) - { - nType = OBJ_MEDIA; - } - else - { - throw lang::ServiceNotRegisteredException(); - } - - // create the API wrapper - pShape = CreateSvxShapeByTypeAndInventor( nType, SdrInventor ); - - // set shape type - if( pShape && !mbClipBoard ) - pShape->SetShapeType(aServiceSpecifier); - - xRet = (uno::XWeak*)pShape; - } - else if( aServiceSpecifier.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.TableShape") ) ) - { - SvxShape* pShape = CreateSvxShapeByTypeAndInventor( OBJ_TABLE, SdrInventor ); - if( pShape && !mbClipBoard ) - pShape->SetShapeType(aServiceSpecifier); - - xRet = (uno::XWeak*)pShape; - } - else - { - xRet = SvxFmMSFactory::createInstance( aServiceSpecifier ); - } - - uno::Reference< drawing::XShape > xShape( xRet, uno::UNO_QUERY ); - if( xShape.is() ) - { - xRet.clear(); - new SdXShape( SvxShape::getImplementation( xShape ), (SdXImpressDocument*)this ); - xRet = xShape; - xShape.clear(); - } - - return xRet; -} - -uno::Sequence< OUString > SAL_CALL SdXImpressDocument::getAvailableServiceNames() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - const uno::Sequence< OUString > aSNS_ORG( SvxFmMSFactory::getAvailableServiceNames() ); - - uno::Sequence< OUString > aSNS( mbImpressDoc ? (36) : (19) ); - - sal_uInt16 i(0); - - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.DashTable")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.GradientTable")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.HatchTable")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.BitmapTable")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.TransparencyGradientTable")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.MarkerTable")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.text.NumberingRules")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.Background")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.Settings")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM(sUNO_Service_ImageMapRectangleObject)); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM(sUNO_Service_ImageMapCircleObject)); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM(sUNO_Service_ImageMapPolygonObject)); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.xml.NamespaceMap")); - - // Support creation of GraphicObjectResolver and EmbeddedObjectResolver - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.ExportGraphicObjectResolver")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.ImportGraphicObjectResolver")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.ExportEmbeddedObjectResolver")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.ImportEmbeddedObjectResolver")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.TableShape")); - - if(mbImpressDoc) - { - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.TitleTextShape")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.OutlinerShape")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.SubtitleShape")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.GraphicObjectShape")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.ChartShape")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.PageShape")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.OLE2Shape")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.TableShape")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.OrgChartShape")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.NotesShape")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.HandoutShape")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.DocumentSettings")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.FooterShape")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.HeaderShape")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.SlideNumberShape")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.DateTimeShape")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.CalcShape")); - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.MediaShape")); - } - else - { - aSNS[i++] = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.DocumentSettings")); - } - - DBG_ASSERT( i == aSNS.getLength(), "Sequence overrun!" ); - - return comphelper::concatSequences( aSNS_ORG, aSNS ); -} - -// lang::XServiceInfo -OUString SAL_CALL SdXImpressDocument::getImplementationName() - throw(uno::RuntimeException) -{ - return OUString( RTL_CONSTASCII_USTRINGPARAM("SdXImpressDocument")); -} - -sal_Bool SAL_CALL SdXImpressDocument::supportsService( const OUString& ServiceName ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if ( - (ServiceName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("com.sun.star.document.OfficeDocument"))) || - (ServiceName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.GenericDrawingDocument"))) || - (ServiceName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.DrawingDocumentFactory"))) - ) - { - return sal_True; - } - - return ( - ( mbImpressDoc && ServiceName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("com.sun.star.presentation.PresentationDocument"))) || - (!mbImpressDoc && ServiceName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.DrawingDocument"))) - ); -} - -uno::Sequence< OUString > SAL_CALL SdXImpressDocument::getSupportedServiceNames() throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - uno::Sequence< OUString > aSeq( 4 ); - OUString* pServices = aSeq.getArray(); - - *pServices++ = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.OfficeDocument")); - *pServices++ = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.GenericDrawingDocument")); - *pServices++ = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.DrawingDocumentFactory")); - - if( mbImpressDoc ) - *pServices++ = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.PresentationDocument")); - else - *pServices++ = OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.DrawingDocument")); - - return aSeq; -} - -// XPropertySet -uno::Reference< beans::XPropertySetInfo > SAL_CALL SdXImpressDocument::getPropertySetInfo( ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - return mpPropSet->getPropertySetInfo(); -} - -void SAL_CALL SdXImpressDocument::setPropertyValue( const OUString& aPropertyName, const uno::Any& aValue ) - throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - const SfxItemPropertySimpleEntry* pEntry = mpPropSet->getPropertyMapEntry(aPropertyName); - - switch( pEntry ? pEntry->nWID : -1 ) - { - case WID_MODEL_LANGUAGE: - { - lang::Locale aLocale; - if(!(aValue >>= aLocale)) - throw lang::IllegalArgumentException(); - - mpDoc->SetLanguage( SvxLocaleToLanguage(aLocale), EE_CHAR_LANGUAGE ); - break; - } - case WID_MODEL_TABSTOP: - { - sal_Int32 nValue = 0; - if(!(aValue >>= nValue) || nValue < 0 ) - throw lang::IllegalArgumentException(); - - mpDoc->SetDefaultTabulator((sal_uInt16)nValue); - break; - } - case WID_MODEL_VISAREA: - { - SfxObjectShell* pEmbeddedObj = mpDoc->GetDocSh(); - if( !pEmbeddedObj ) - break; - - awt::Rectangle aVisArea; - if( !(aValue >>= aVisArea) || (aVisArea.Width < 0) || (aVisArea.Height < 0) ) - throw lang::IllegalArgumentException(); - - pEmbeddedObj->SetVisArea( Rectangle( aVisArea.X, aVisArea.Y, aVisArea.X + aVisArea.Width - 1, aVisArea.Y + aVisArea.Height - 1 ) ); - } - break; - case WID_MODEL_CONTFOCUS: - { - sal_Bool bFocus = sal_False; - if( !(aValue >>= bFocus ) ) - throw lang::IllegalArgumentException(); - mpDoc->SetAutoControlFocus( bFocus ); - } - break; - case WID_MODEL_DSGNMODE: - { - sal_Bool bMode = sal_False; - if( !(aValue >>= bMode ) ) - throw lang::IllegalArgumentException(); - mpDoc->SetOpenInDesignMode( bMode ); - } - break; - case WID_MODEL_BUILDID: - aValue >>= maBuildId; - return; - case WID_MODEL_MAPUNIT: - case WID_MODEL_BASICLIBS: - case WID_MODEL_RUNTIMEUID: // is read-only - case WID_MODEL_DIALOGLIBS: - throw beans::PropertyVetoException(); - default: - throw beans::UnknownPropertyException(); - } - - SetModified(); -} - -uno::Any SAL_CALL SdXImpressDocument::getPropertyValue( const OUString& PropertyName ) - throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - uno::Any aAny; - if( NULL == mpDoc ) - throw lang::DisposedException(); - - const SfxItemPropertySimpleEntry* pEntry = mpPropSet->getPropertyMapEntry(PropertyName); - - switch( pEntry ? pEntry->nWID : -1 ) - { - case WID_MODEL_LANGUAGE: - { - LanguageType eLang = mpDoc->GetLanguage( EE_CHAR_LANGUAGE ); - lang::Locale aLocale; - SvxLanguageToLocale( aLocale, eLang ); - aAny <<= aLocale; - break; - } - case WID_MODEL_TABSTOP: - aAny <<= (sal_Int32)mpDoc->GetDefaultTabulator(); - break; - case WID_MODEL_VISAREA: - { - SfxObjectShell* pEmbeddedObj = mpDoc->GetDocSh(); - if( !pEmbeddedObj ) - break; - - const Rectangle& aRect = pEmbeddedObj->GetVisArea(); - awt::Rectangle aVisArea( aRect.nLeft, aRect.nTop, aRect.getWidth(), aRect.getHeight() ); - aAny <<= aVisArea; - } - break; - case WID_MODEL_MAPUNIT: - { - SfxObjectShell* pEmbeddedObj = mpDoc->GetDocSh(); - if( !pEmbeddedObj ) - break; - - sal_Int16 nMeasureUnit = 0; - SvxMapUnitToMeasureUnit( (const short)pEmbeddedObj->GetMapUnit(), nMeasureUnit ); - aAny <<= (sal_Int16)nMeasureUnit; - } - break; - case WID_MODEL_FORBCHARS: - { - aAny <<= getForbiddenCharsTable(); - } - break; - case WID_MODEL_CONTFOCUS: - aAny <<= (sal_Bool)mpDoc->GetAutoControlFocus(); - break; - case WID_MODEL_DSGNMODE: - aAny <<= mpDoc->GetOpenInDesignMode(); - break; - case WID_MODEL_BASICLIBS: - aAny <<= mpDocShell->GetBasicContainer(); - break; - case WID_MODEL_DIALOGLIBS: - aAny <<= mpDocShell->GetDialogContainer(); - break; - case WID_MODEL_RUNTIMEUID: - aAny <<= getRuntimeUID(); - break; - case WID_MODEL_BUILDID: - return uno::Any( maBuildId ); - case WID_MODEL_HASVALIDSIGNATURES: - aAny <<= hasValidSignatures(); - break; - default: - throw beans::UnknownPropertyException(); - } - - return aAny; -} - -void SAL_CALL SdXImpressDocument::addPropertyChangeListener( const OUString& , const uno::Reference< beans::XPropertyChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {} -void SAL_CALL SdXImpressDocument::removePropertyChangeListener( const OUString& , const uno::Reference< beans::XPropertyChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {} -void SAL_CALL SdXImpressDocument::addVetoableChangeListener( const OUString& , const uno::Reference< beans::XVetoableChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {} -void SAL_CALL SdXImpressDocument::removeVetoableChangeListener( const OUString& , const uno::Reference< beans::XVetoableChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {} - -// XLinkTargetSupplier -uno::Reference< container::XNameAccess > SAL_CALL SdXImpressDocument::getLinks() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - uno::Reference< container::XNameAccess > xLinks( mxLinks ); - if( !xLinks.is() ) - mxLinks = xLinks = new SdDocLinkTargets( *this ); - return xLinks; -} - -// XStyleFamiliesSupplier -uno::Reference< container::XNameAccess > SAL_CALL SdXImpressDocument::getStyleFamilies( ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - uno::Reference< container::XNameAccess > xStyles( dynamic_cast< container::XNameAccess* >( mpDoc->GetStyleSheetPool()) ); - return xStyles; -} - -// XAnyCompareFactory -uno::Reference< com::sun::star::ucb::XAnyCompare > SAL_CALL SdXImpressDocument::createAnyCompareByName( const OUString& ) - throw (uno::RuntimeException) -{ - return SvxCreateNumRuleCompare(); -} - -// XRenderable -sal_Int32 SAL_CALL SdXImpressDocument::getRendererCount( const uno::Any& rSelection, - const uno::Sequence< beans::PropertyValue >& ) - throw (lang::IllegalArgumentException, uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - sal_Int32 nRet = 0; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - uno::Sequence< beans::PropertyValue > aRenderer; - - if( mpDocShell && mpDoc ) - { - uno::Reference< frame::XModel > xModel; - - rSelection >>= xModel; - - if( xModel == mpDocShell->GetModel() ) - nRet = mpDoc->GetSdPageCount( PK_STANDARD ); - else - { - uno::Reference< drawing::XShapes > xShapes; - - rSelection >>= xShapes; - - if( xShapes.is() && xShapes->getCount() ) - nRet = 1; - } - } - return nRet; -} - -uno::Sequence< beans::PropertyValue > SAL_CALL SdXImpressDocument::getRenderer( sal_Int32 , const uno::Any& , - const uno::Sequence< beans::PropertyValue >& rxOptions ) - throw (lang::IllegalArgumentException, uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - sal_Bool bExportNotesPages = sal_False; - for( sal_Int32 nProperty = 0, nPropertyCount = rxOptions.getLength(); nProperty < nPropertyCount; ++nProperty ) - { - if( rxOptions[ nProperty ].Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "ExportNotesPages" ) ) ) - rxOptions[ nProperty].Value >>= bExportNotesPages; - } - uno::Sequence< beans::PropertyValue > aRenderer; - if( mpDocShell && mpDoc ) - { - awt::Size aPageSize; - if ( bExportNotesPages ) - { - Size aNotesPageSize = mpDoc->GetSdPage( 0, PK_NOTES )->GetSize(); - aPageSize = awt::Size( aNotesPageSize.Width(), aNotesPageSize.Height() ); - } - else - { - const Rectangle aVisArea( mpDocShell->GetVisArea( embed::Aspects::MSOLE_DOCPRINT ) ); - aPageSize = awt::Size( aVisArea.GetWidth(), aVisArea.GetHeight() ); - } - aRenderer.realloc( 1 ); - - aRenderer[ 0 ].Name = OUString( RTL_CONSTASCII_USTRINGPARAM( "PageSize" ) ); - aRenderer[ 0 ].Value <<= aPageSize; - } - return aRenderer; -} - -class ImplRenderPaintProc : public ::sdr::contact::ViewObjectContactRedirector -{ - const SdrLayerAdmin& rLayerAdmin; - SdrPageView* pSdrPageView; - vcl::PDFExtOutDevData* pPDFExtOutDevData; - - vcl::PDFWriter::StructElement ImplBegStructureTag( SdrObject& rObject ); - -public: - sal_Bool IsVisible ( const SdrObject* pObj ) const; - sal_Bool IsPrintable( const SdrObject* pObj ) const; - - ImplRenderPaintProc( const SdrLayerAdmin& rLA, SdrPageView* pView, vcl::PDFExtOutDevData* pData ); - virtual ~ImplRenderPaintProc(); - - // all default implementations just call the same methods at the original. To do something - // different, overload the method and at least do what the method does. - virtual drawinglayer::primitive2d::Primitive2DSequence createRedirectedPrimitive2DSequence( - const sdr::contact::ViewObjectContact& rOriginal, - const sdr::contact::DisplayInfo& rDisplayInfo); -}; - -ImplRenderPaintProc::ImplRenderPaintProc( const SdrLayerAdmin& rLA, SdrPageView* pView, vcl::PDFExtOutDevData* pData ) -: ViewObjectContactRedirector(), - rLayerAdmin ( rLA ), - pSdrPageView ( pView ), - pPDFExtOutDevData ( pData ) -{ -} - -ImplRenderPaintProc::~ImplRenderPaintProc() -{ -} - -sal_Int32 ImplPDFGetBookmarkPage( const String& rBookmark, SdDrawDocument& rDoc ) -{ - sal_Int32 nPage = -1; - - OSL_TRACE("GotoBookmark %s", - ::rtl::OUStringToOString(rBookmark, RTL_TEXTENCODING_UTF8).getStr()); - - String aBookmark( rBookmark ); - - if( rBookmark.Len() && rBookmark.GetChar( 0 ) == sal_Unicode('#') ) - aBookmark = rBookmark.Copy( 1 ); - - // is the bookmark a page ? - sal_Bool bIsMasterPage; - sal_uInt16 nPgNum = rDoc.GetPageByName( aBookmark, bIsMasterPage ); - SdrObject* pObj = NULL; - - if ( nPgNum == SDRPAGE_NOTFOUND ) - { - // is the bookmark a object ? - pObj = rDoc.GetObj( aBookmark ); - if (pObj) - nPgNum = pObj->GetPage()->GetPageNum(); - } - if ( nPgNum != SDRPAGE_NOTFOUND ) - nPage = ( nPgNum - 1 ) / 2; - return nPage; -} - -void ImplPDFExportComments( uno::Reference< drawing::XDrawPage > xPage, vcl::PDFExtOutDevData& rPDFExtOutDevData ) -{ - try - { - uno::Reference< office::XAnnotationAccess > xAnnotationAccess( xPage, uno::UNO_QUERY_THROW ); - uno::Reference< office::XAnnotationEnumeration > xAnnotationEnumeration( xAnnotationAccess->createAnnotationEnumeration() ); - - LanguageType eLanguage = Application::GetSettings().GetLanguage(); - while( xAnnotationEnumeration->hasMoreElements() ) - { - uno::Reference< office::XAnnotation > xAnnotation( xAnnotationEnumeration->nextElement() ); - - geometry::RealPoint2D aRealPoint2D( xAnnotation->getPosition() ); - uno::Reference< text::XText > xText( xAnnotation->getTextRange() ); - util::DateTime aDateTime( xAnnotation->getDateTime() ); - - Date aDate( aDateTime.Day, aDateTime.Month, aDateTime.Year ); - Time aTime; - String aStr( SvxDateTimeField::GetFormatted( aDate, aTime, SVXDATEFORMAT_B, *(SD_MOD()->GetNumberFormatter()), eLanguage ) ); - - vcl::PDFNote aNote; - String sTitle( xAnnotation->getAuthor() ); - sTitle.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ", " ) ); - sTitle += aStr; - aNote.Title = sTitle; - aNote.Contents = xText->getString(); - rPDFExtOutDevData.CreateNote( Rectangle( Point( static_cast< long >( aRealPoint2D.X * 100 ), - static_cast< long >( aRealPoint2D.Y * 100 ) ), Size( 1000, 1000 ) ), aNote ); - } - } - catch( uno::Exception& ) - { - } -} - -void ImplPDFExportShapeInteraction( uno::Reference< drawing::XShape > xShape, SdDrawDocument& rDoc, vcl::PDFExtOutDevData& rPDFExtOutDevData ) -{ - const rtl::OUString sGroup ( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.drawing.GroupShape" ) ); - const rtl::OUString sOnClick ( RTL_CONSTASCII_USTRINGPARAM( "OnClick" ) ); - const rtl::OUString sBookmark( RTL_CONSTASCII_USTRINGPARAM( "Bookmark" ) ); - - if ( xShape->getShapeType().equals( sGroup ) ) - { - uno::Reference< container::XIndexAccess > xIndexAccess( xShape, uno::UNO_QUERY ); - if ( xIndexAccess.is() ) - { - sal_Int32 i, nCount = xIndexAccess->getCount(); - for ( i = 0; i < nCount; i++ ) - { - uno::Reference< drawing::XShape > xSubShape( xIndexAccess->getByIndex( i ), uno::UNO_QUERY ); - if ( xSubShape.is() ) - ImplPDFExportShapeInteraction( xSubShape, rDoc, rPDFExtOutDevData ); - } - } - } - else - { - uno::Reference< beans::XPropertySet > xShapePropSet( xShape, uno::UNO_QUERY ); - if( xShapePropSet.is() ) - { - Size aPageSize( rDoc.GetSdPage( 0, PK_STANDARD )->GetSize() ); - Point aPoint( 0, 0 ); - Rectangle aPageRect( aPoint, aPageSize ); - - awt::Point aShapePos( xShape->getPosition() ); - awt::Size aShapeSize( xShape->getSize() ); - Rectangle aLinkRect( Point( aShapePos.X, aShapePos.Y ), Size( aShapeSize.Width, aShapeSize.Height ) ); - - presentation::ClickAction eCa; - uno::Any aAny( xShapePropSet->getPropertyValue( sOnClick ) ); - if ( aAny >>= eCa ) - { - switch ( eCa ) - { - case presentation::ClickAction_LASTPAGE : - { - sal_Int32 nCount = rDoc.GetSdPageCount( PK_STANDARD ); - sal_Int32 nDestId = rPDFExtOutDevData.CreateDest( aPageRect, nCount - 1, vcl::PDFWriter::FitRectangle ); - sal_Int32 nLinkId = rPDFExtOutDevData.CreateLink( aLinkRect, -1 ); - rPDFExtOutDevData.SetLinkDest( nLinkId, nDestId ); - } - break; - case presentation::ClickAction_FIRSTPAGE : - { - sal_Int32 nDestId = rPDFExtOutDevData.CreateDest( aPageRect, 0, vcl::PDFWriter::FitRectangle ); - sal_Int32 nLinkId = rPDFExtOutDevData.CreateLink( aLinkRect, -1 ); - rPDFExtOutDevData.SetLinkDest( nLinkId, nDestId ); - } - break; - case presentation::ClickAction_PREVPAGE : - { - sal_Int32 nDestPage = rPDFExtOutDevData.GetCurrentPageNumber(); - if ( nDestPage ) - nDestPage--; - sal_Int32 nDestId = rPDFExtOutDevData.CreateDest( aPageRect, nDestPage, vcl::PDFWriter::FitRectangle ); - sal_Int32 nLinkId = rPDFExtOutDevData.CreateLink( aLinkRect, -1 ); - rPDFExtOutDevData.SetLinkDest( nLinkId, nDestId ); - } - break; - case presentation::ClickAction_NEXTPAGE : - { - sal_Int32 nDestPage = rPDFExtOutDevData.GetCurrentPageNumber() + 1; - sal_Int32 nLastPage = rDoc.GetSdPageCount( PK_STANDARD ) - 1; - if ( nDestPage > nLastPage ) - nDestPage = nLastPage; - sal_Int32 nDestId = rPDFExtOutDevData.CreateDest( aPageRect, nDestPage, vcl::PDFWriter::FitRectangle ); - sal_Int32 nLinkId = rPDFExtOutDevData.CreateLink( aLinkRect, -1 ); - rPDFExtOutDevData.SetLinkDest( nLinkId, nDestId ); - } - break; - - case presentation::ClickAction_PROGRAM : - case presentation::ClickAction_BOOKMARK : - case presentation::ClickAction_DOCUMENT : - { - rtl::OUString aBookmark; - xShapePropSet->getPropertyValue( sBookmark ) >>= aBookmark; - if( aBookmark.getLength() ) - { - switch( eCa ) - { - case presentation::ClickAction_DOCUMENT : - case presentation::ClickAction_PROGRAM : - { - sal_Int32 nLinkId = rPDFExtOutDevData.CreateLink( aLinkRect, -1 ); - rPDFExtOutDevData.SetLinkURL( nLinkId, aBookmark ); - } - break; - case presentation::ClickAction_BOOKMARK : - { - sal_Int32 nPage = ImplPDFGetBookmarkPage( aBookmark, rDoc ); - if ( nPage != -1 ) - { - sal_Int32 nDestId = rPDFExtOutDevData.CreateDest( aPageRect, nPage, vcl::PDFWriter::FitRectangle ); - sal_Int32 nLinkId = rPDFExtOutDevData.CreateLink( aLinkRect, -1 ); - rPDFExtOutDevData.SetLinkDest( nLinkId, nDestId ); - } - } - break; - default: - break; - } - } - } - break; - - case presentation::ClickAction_STOPPRESENTATION : - case presentation::ClickAction_SOUND : - case presentation::ClickAction_INVISIBLE : - case presentation::ClickAction_VERB : - case presentation::ClickAction_VANISH : - case presentation::ClickAction_MACRO : - default : - break; - } - } - } - } -} - -vcl::PDFWriter::StructElement ImplRenderPaintProc::ImplBegStructureTag( SdrObject& rObject ) -{ - vcl::PDFWriter::StructElement eElement(vcl::PDFWriter::NonStructElement); - - if ( pPDFExtOutDevData && pPDFExtOutDevData->GetIsExportTaggedPDF() ) - { - sal_uInt32 nInventor = rObject.GetObjInventor(); - sal_uInt16 nIdentifier = rObject.GetObjIdentifier(); - sal_Bool bIsTextObj = rObject.ISA( SdrTextObj ); - - if ( nInventor == SdrInventor ) - { - if ( nIdentifier == OBJ_GRUP ) - eElement = vcl::PDFWriter::Section; - else if ( nIdentifier == OBJ_TITLETEXT ) - eElement = vcl::PDFWriter::Heading; - else if ( nIdentifier == OBJ_OUTLINETEXT ) - eElement = vcl::PDFWriter::Division; - else if ( !bIsTextObj || !((SdrTextObj&)rObject).HasText() ) - eElement = vcl::PDFWriter::Figure; - } - } - - return eElement; -} - -drawinglayer::primitive2d::Primitive2DSequence ImplRenderPaintProc::createRedirectedPrimitive2DSequence( - const sdr::contact::ViewObjectContact& rOriginal, - const sdr::contact::DisplayInfo& rDisplayInfo) -{ - SdrObject* pObject = rOriginal.GetViewContact().TryToGetSdrObject(); - - if(pObject) - { - drawinglayer::primitive2d::Primitive2DSequence xRetval; - - if(pObject->GetPage()) - { - if(pObject->GetPage()->checkVisibility(rOriginal, rDisplayInfo, false)) - { - if(IsVisible(pObject) && IsPrintable(pObject)) - { - const vcl::PDFWriter::StructElement eElement(ImplBegStructureTag( *pObject )); - const bool bTagUsed(vcl::PDFWriter::NonStructElement != eElement); - - xRetval = ::sdr::contact::ViewObjectContactRedirector::createRedirectedPrimitive2DSequence(rOriginal, rDisplayInfo); - - if(xRetval.hasElements() && bTagUsed) - { - // embed Primitive2DSequence in a structure tag element for - // exactly this purpose (StructureTagPrimitive2D) - const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::StructureTagPrimitive2D(eElement, xRetval)); - xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1); - } - } - } - } - - return xRetval; - } - else - { - // not an object, maybe a page - return sdr::contact::ViewObjectContactRedirector::createRedirectedPrimitive2DSequence(rOriginal, rDisplayInfo); - } -} - -sal_Bool ImplRenderPaintProc::IsVisible( const SdrObject* pObj ) const -{ - sal_Bool bVisible = sal_True; - SdrLayerID nLayerId = pObj->GetLayer(); - if( pSdrPageView ) - { - const SdrLayer* pSdrLayer = rLayerAdmin.GetLayer( nLayerId ); - if ( pSdrLayer ) - { - String aLayerName = pSdrLayer->GetName(); - bVisible = pSdrPageView->IsLayerVisible( aLayerName ); - } - } - return bVisible; -} -sal_Bool ImplRenderPaintProc::IsPrintable( const SdrObject* pObj ) const -{ - sal_Bool bPrintable = sal_True; - SdrLayerID nLayerId = pObj->GetLayer(); - if( pSdrPageView ) - { - const SdrLayer* pSdrLayer = rLayerAdmin.GetLayer( nLayerId ); - if ( pSdrLayer ) - { - String aLayerName = pSdrLayer->GetName(); - bPrintable = pSdrPageView->IsLayerPrintable( aLayerName ); - } - } - return bPrintable; - -} -void SAL_CALL SdXImpressDocument::render( sal_Int32 nRenderer, const uno::Any& rSelection, - const uno::Sequence< beans::PropertyValue >& rxOptions ) - throw (lang::IllegalArgumentException, uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpDoc ) - throw lang::DisposedException(); - - if( mpDocShell && mpDoc ) - { - uno::Reference< awt::XDevice > xRenderDevice; - const sal_Int32 nPageNumber = nRenderer + 1; - PageKind ePageKind = PK_STANDARD; - sal_Bool bExportNotesPages = sal_False; - - for( sal_Int32 nProperty = 0, nPropertyCount = rxOptions.getLength(); nProperty < nPropertyCount; ++nProperty ) - { - if( rxOptions[ nProperty ].Name == OUString( RTL_CONSTASCII_USTRINGPARAM( "RenderDevice" ) ) ) - rxOptions[ nProperty ].Value >>= xRenderDevice; - else if ( rxOptions[ nProperty ].Name == OUString( RTL_CONSTASCII_USTRINGPARAM( "ExportNotesPages" ) ) ) - { - rxOptions[ nProperty].Value >>= bExportNotesPages; - if ( bExportNotesPages ) - ePageKind = PK_NOTES; - } - } - - if( xRenderDevice.is() && nPageNumber && ( nPageNumber <= mpDoc->GetSdPageCount( ePageKind ) ) ) - { - VCLXDevice* pDevice = VCLXDevice::GetImplementation( xRenderDevice ); - OutputDevice* pOut = pDevice ? pDevice->GetOutputDevice() : NULL; - - if( pOut ) - { - vcl::PDFExtOutDevData* pPDFExtOutDevData = PTR_CAST( vcl::PDFExtOutDevData, pOut->GetExtOutDevData() ); - - ::sd::ClientView* pView = new ::sd::ClientView( mpDocShell, pOut, NULL ); - Rectangle aVisArea = Rectangle( Point(), mpDoc->GetSdPage( (sal_uInt16)nPageNumber - 1, ePageKind )->GetSize() ); - Region aRegion( aVisArea ); - Point aOrigin; - - ::sd::ViewShell* pOldViewSh = mpDocShell->GetViewShell(); - ::sd::View* pOldSdView = pOldViewSh ? pOldViewSh->GetView() : NULL; - - if ( pOldSdView ) - pOldSdView->SdrEndTextEdit(); - - pView->SetHlplVisible( sal_False ); - pView->SetGridVisible( sal_False ); - pView->SetBordVisible( sal_False ); - pView->SetPageVisible( sal_False ); - pView->SetGlueVisible( sal_False ); - - pOut->SetMapMode( MAP_100TH_MM ); - pOut->IntersectClipRegion( aVisArea ); - - - - uno::Reference< frame::XModel > xModel; - rSelection >>= xModel; - - if( xModel == mpDocShell->GetModel() ) - { - pView->ShowSdrPage( mpDoc->GetSdPage( (sal_uInt16)nPageNumber - 1, ePageKind )); - SdrPageView* pPV = pView->GetSdrPageView(); - - if( pOldSdView ) - { - SdrPageView* pOldPV = pOldSdView->GetSdrPageView(); - if( pPV && pOldPV ) - { - pPV->SetVisibleLayers( pOldPV->GetVisibleLayers() ); - pPV->SetPrintableLayers( pOldPV->GetPrintableLayers() ); - } - } - - ImplRenderPaintProc aImplRenderPaintProc( mpDoc->GetLayerAdmin(), - pPV, pPDFExtOutDevData ); - - // background color for outliner :o - SdPage* pPage = (SdPage*)pPV->GetPage(); - if( pPage ) - { - SdrOutliner& rOutl = mpDoc->GetDrawOutliner( NULL ); - bool bScreenDisplay(true); - - if(bScreenDisplay && pOut && OUTDEV_PRINTER == pOut->GetOutDevType()) - { - // #i75566# printing; suppress AutoColor BackgroundColor generation - // for visibility reasons by giving GetPageBackgroundColor() - // the needed hint - bScreenDisplay = false; - } - - if(bScreenDisplay && pOut && pOut->GetPDFWriter()) - { - // #i75566# PDF export; suppress AutoColor BackgroundColor generation (see above) - bScreenDisplay = false; - } - - // #i75566# Name change GetBackgroundColor -> GetPageBackgroundColor and - // hint value if screen display. Only then the AutoColor mechanisms shall be applied - rOutl.SetBackgroundColor( pPage->GetPageBackgroundColor( pPV, bScreenDisplay ) ); - } - pView->SdrPaintView::CompleteRedraw( pOut, aRegion, &aImplRenderPaintProc ); - - if ( pPDFExtOutDevData ) - { - try - { - uno::Any aAny; - uno::Reference< drawing::XDrawPage > xPage( uno::Reference< drawing::XDrawPage >::query( pPage->getUnoPage() ) ); - if ( xPage.is() ) - { - if ( pPDFExtOutDevData->GetIsExportNotes() ) - ImplPDFExportComments( xPage, *pPDFExtOutDevData ); - uno::Reference< beans::XPropertySet > xPagePropSet( xPage, uno::UNO_QUERY ); - if( xPagePropSet.is() ) - { - // exporting object interactions to pdf - - // if necessary, the master page interactions will be exported first - sal_Bool bIsBackgroundObjectsVisible = sal_False; // #i39428# IsBackgroundObjectsVisible not available for Draw - const rtl::OUString sIsBackgroundObjectsVisible( RTL_CONSTASCII_USTRINGPARAM( "IsBackgroundObjectsVisible" ) ); - if ( xPagePropSet->getPropertySetInfo( )->hasPropertyByName( sIsBackgroundObjectsVisible ) ) - xPagePropSet->getPropertyValue( sIsBackgroundObjectsVisible ) >>= bIsBackgroundObjectsVisible; - if ( mbImpressDoc && bIsBackgroundObjectsVisible ) - { - uno::Reference< drawing::XMasterPageTarget > xMasterPageTarget( xPage, uno::UNO_QUERY ); - if ( xMasterPageTarget.is() ) - { - uno::Reference< drawing::XDrawPage > xMasterPage = xMasterPageTarget->getMasterPage(); - if ( xMasterPage.is() ) - { - uno::Reference< drawing::XShapes> xShapes( xMasterPage, uno::UNO_QUERY ); - sal_Int32 i, nCount = xShapes->getCount(); - for ( i = 0; i < nCount; i++ ) - { - aAny = xShapes->getByIndex( i ); - uno::Reference< drawing::XShape > xShape; - if ( aAny >>= xShape ) - ImplPDFExportShapeInteraction( xShape, *mpDoc, *pPDFExtOutDevData ); - } - } - } - } - - // exporting slide page object interactions - uno::Reference< drawing::XShapes> xShapes( xPage, uno::UNO_QUERY ); - sal_Int32 i, nCount = xShapes->getCount(); - for ( i = 0; i < nCount; i++ ) - { - aAny = xShapes->getByIndex( i ); - uno::Reference< drawing::XShape > xShape; - if ( aAny >>= xShape ) - ImplPDFExportShapeInteraction( xShape, *mpDoc, *pPDFExtOutDevData ); - } - - // exporting transition effects to pdf - if ( mbImpressDoc && pPDFExtOutDevData->GetIsExportTransitionEffects() ) // #i39428# TransitionEffects not available for Draw - { - const rtl::OUString sEffect( RTL_CONSTASCII_USTRINGPARAM( "Effect" ) ); - const rtl::OUString sSpeed ( RTL_CONSTASCII_USTRINGPARAM( "Speed" ) ); - sal_Int32 nTime = 800; - presentation::AnimationSpeed aAs; - if ( xPagePropSet->getPropertySetInfo( )->hasPropertyByName( sSpeed ) ) - { - aAny = xPagePropSet->getPropertyValue( sSpeed ); - if ( aAny >>= aAs ) - { - switch( aAs ) - { - case presentation::AnimationSpeed_SLOW : nTime = 1500; break; - case presentation::AnimationSpeed_FAST : nTime = 300; break; - default: - case presentation::AnimationSpeed_MEDIUM : nTime = 800; - } - } - } - presentation::FadeEffect eFe; - vcl::PDFWriter::PageTransition eType = vcl::PDFWriter::Regular; - if ( xPagePropSet->getPropertySetInfo( )->hasPropertyByName( sEffect ) ) - { - aAny = xPagePropSet->getPropertyValue( sEffect ); - if ( aAny >>= eFe ) - { - switch( eFe ) - { - case presentation::FadeEffect_HORIZONTAL_LINES : - case presentation::FadeEffect_HORIZONTAL_CHECKERBOARD : - case presentation::FadeEffect_HORIZONTAL_STRIPES : eType = vcl::PDFWriter::BlindsHorizontal; break; - - case presentation::FadeEffect_VERTICAL_LINES : - case presentation::FadeEffect_VERTICAL_CHECKERBOARD : - case presentation::FadeEffect_VERTICAL_STRIPES : eType = vcl::PDFWriter::BlindsVertical; break; - - case presentation::FadeEffect_UNCOVER_TO_RIGHT : - case presentation::FadeEffect_UNCOVER_TO_UPPERRIGHT : - case presentation::FadeEffect_ROLL_FROM_LEFT : - case presentation::FadeEffect_FADE_FROM_UPPERLEFT : - case presentation::FadeEffect_MOVE_FROM_UPPERLEFT : - case presentation::FadeEffect_FADE_FROM_LEFT : - case presentation::FadeEffect_MOVE_FROM_LEFT : eType = vcl::PDFWriter::WipeLeftToRight; break; - - case presentation::FadeEffect_UNCOVER_TO_BOTTOM : - case presentation::FadeEffect_UNCOVER_TO_LOWERRIGHT : - case presentation::FadeEffect_ROLL_FROM_TOP : - case presentation::FadeEffect_FADE_FROM_UPPERRIGHT : - case presentation::FadeEffect_MOVE_FROM_UPPERRIGHT : - case presentation::FadeEffect_FADE_FROM_TOP : - case presentation::FadeEffect_MOVE_FROM_TOP : eType = vcl::PDFWriter::WipeTopToBottom; break; - - case presentation::FadeEffect_UNCOVER_TO_LEFT : - case presentation::FadeEffect_UNCOVER_TO_LOWERLEFT : - case presentation::FadeEffect_ROLL_FROM_RIGHT : - - case presentation::FadeEffect_FADE_FROM_LOWERRIGHT : - case presentation::FadeEffect_MOVE_FROM_LOWERRIGHT : - case presentation::FadeEffect_FADE_FROM_RIGHT : - case presentation::FadeEffect_MOVE_FROM_RIGHT : eType = vcl::PDFWriter::WipeRightToLeft; break; - - case presentation::FadeEffect_UNCOVER_TO_TOP : - case presentation::FadeEffect_UNCOVER_TO_UPPERLEFT : - case presentation::FadeEffect_ROLL_FROM_BOTTOM : - case presentation::FadeEffect_FADE_FROM_LOWERLEFT : - case presentation::FadeEffect_MOVE_FROM_LOWERLEFT : - case presentation::FadeEffect_FADE_FROM_BOTTOM : - case presentation::FadeEffect_MOVE_FROM_BOTTOM : eType = vcl::PDFWriter::WipeBottomToTop; break; - - case presentation::FadeEffect_OPEN_VERTICAL : eType = vcl::PDFWriter::SplitHorizontalInward; break; - case presentation::FadeEffect_CLOSE_HORIZONTAL : eType = vcl::PDFWriter::SplitHorizontalOutward; break; - - case presentation::FadeEffect_OPEN_HORIZONTAL : eType = vcl::PDFWriter::SplitVerticalInward; break; - case presentation::FadeEffect_CLOSE_VERTICAL : eType = vcl::PDFWriter::SplitVerticalOutward; break; - - case presentation::FadeEffect_FADE_TO_CENTER : eType = vcl::PDFWriter::BoxInward; break; - case presentation::FadeEffect_FADE_FROM_CENTER : eType = vcl::PDFWriter::BoxOutward; break; - - case presentation::FadeEffect_NONE : eType = vcl::PDFWriter::Regular; break; - - case presentation::FadeEffect_RANDOM : - case presentation::FadeEffect_DISSOLVE : - default: eType = vcl::PDFWriter::Dissolve; break; - } - } - } - - if ( xPagePropSet->getPropertySetInfo( )->hasPropertyByName( sEffect ) || - xPagePropSet->getPropertySetInfo( )->hasPropertyByName( sSpeed ) ) - { - pPDFExtOutDevData->SetPageTransition( eType, nTime, -1 ); - } - } - } - } - - Size aPageSize( mpDoc->GetSdPage( 0, PK_STANDARD )->GetSize() ); - Point aPoint( 0, 0 ); - Rectangle aPageRect( aPoint, aPageSize ); - - // resolving links found in this page by the method ImpEditEngine::Paint - std::vector< vcl::PDFExtOutDevBookmarkEntry >& rBookmarks = pPDFExtOutDevData->GetBookmarks(); - std::vector< vcl::PDFExtOutDevBookmarkEntry >::iterator aIBeg = rBookmarks.begin(); - std::vector< vcl::PDFExtOutDevBookmarkEntry >::iterator aIEnd = rBookmarks.end(); - while ( aIBeg != aIEnd ) - { - sal_Int32 nPage = ImplPDFGetBookmarkPage( aIBeg->aBookmark, *mpDoc ); - if ( nPage != -1 ) - { - if ( aIBeg->nLinkId != -1 ) - pPDFExtOutDevData->SetLinkDest( aIBeg->nLinkId, pPDFExtOutDevData->CreateDest( aPageRect, nPage, vcl::PDFWriter::FitRectangle ) ); - else - pPDFExtOutDevData->DescribeRegisteredDest( aIBeg->nDestId, aPageRect, nPage, vcl::PDFWriter::FitRectangle ); - } - else - pPDFExtOutDevData->SetLinkURL( aIBeg->nLinkId, aIBeg->aBookmark ); - ++aIBeg; - } - rBookmarks.clear(); - //---> #i56629, #i40318 - //get the page name, will be used as outline element in PDF bookmark pane - String aPageName = mpDoc->GetSdPage( (sal_uInt16)nPageNumber - 1 , PK_STANDARD )->GetName(); - if( aPageName.Len() > 0 ) - { - // insert the bookmark to this page into the NamedDestinations - if( pPDFExtOutDevData->GetIsExportNamedDestinations() ) - pPDFExtOutDevData->CreateNamedDest( aPageName, aPageRect, nPageNumber - 1 ); - // - // add the name to the outline, (almost) same code as in sc/source/ui/unoobj/docuno.cxx - // issue #i40318. - // - if( pPDFExtOutDevData->GetIsExportBookmarks() ) - { - // Destination Export - const sal_Int32 nDestId = - pPDFExtOutDevData->CreateDest( aPageRect , nPageNumber - 1 ); - - // Create a new outline item: - pPDFExtOutDevData->CreateOutlineItem( -1 , aPageName, nDestId ); - } - } - //<--- #i56629, #i40318 - } - catch( uno::Exception& e ) - { - } - - } - } - else - { - uno::Reference< drawing::XShapes > xShapes; - rSelection >>= xShapes; - - if( xShapes.is() && xShapes->getCount() ) - { - SdrPageView* pPV = NULL; - - ImplRenderPaintProc aImplRenderPaintProc( mpDoc->GetLayerAdmin(), - pOldSdView ? pOldSdView->GetSdrPageView() : NULL, pPDFExtOutDevData ); - - for( sal_uInt32 i = 0, nCount = xShapes->getCount(); i < nCount; i++ ) - { - uno::Reference< drawing::XShape > xShape; - xShapes->getByIndex( i ) >>= xShape; - - if( xShape.is() ) - { - SvxShape* pShape = SvxShape::getImplementation( xShape ); - - if( pShape ) - { - SdrObject* pObj = pShape->GetSdrObject(); - if( pObj && pObj->GetPage() - && aImplRenderPaintProc.IsVisible( pObj ) - && aImplRenderPaintProc.IsPrintable( pObj ) ) - { - if( !pPV ) - pPV = pView->ShowSdrPage( pObj->GetPage() ); - - if( pPV ) - pView->MarkObj( pObj, pPV ); - } - } - } - } - pView->DrawMarkedObj(*pOut); - } - } - - delete pView; - } - } - } -} - -uno::Reference< i18n::XForbiddenCharacters > SdXImpressDocument::getForbiddenCharsTable() -{ - uno::Reference< i18n::XForbiddenCharacters > xForb(mxForbidenCharacters); - - if( !xForb.is() ) - mxForbidenCharacters = xForb = new SdUnoForbiddenCharsTable( mpDoc ); - - return xForb; -} - -void SdXImpressDocument::initializeDocument() -{ - if( !mbClipBoard ) - { - switch( mpDoc->GetPageCount() ) - { - case 1: - { - // nasty hack to detect clipboard document - mbClipBoard = true; - break; - } - case 0: - { - mpDoc->CreateFirstPages(); - mpDoc->StopWorkStartupDelay(); - break; - } - } - } -} - -void SAL_CALL SdXImpressDocument::dispose() throw (::com::sun::star::uno::RuntimeException) -{ - if( !mbDisposed ) - { - { - ::SolarMutexGuard aGuard; - - if( mpDoc ) - { - EndListening( *mpDoc ); - mpDoc = NULL; - } - - // Call the base class dispose() before setting the mbDisposed flag - // to true. The reason for this is that if close() has not yet been - // called this is done in SfxBaseModel::dispose(). At the end of - // that dispose() is called again. It is important to forward this - // second dispose() to the base class, too. - // As a consequence the following code has to be able to be run twice. - SfxBaseModel::dispose(); - mbDisposed = true; - - uno::Reference< container::XNameAccess > xStyles(mxStyleFamilies); - if( xStyles.is() ) - { - uno::Reference< lang::XComponent > xComp( xStyles, uno::UNO_QUERY ); - if( xComp.is() ) - xComp->dispose(); - - xStyles = 0; - } - - uno::Reference< presentation::XPresentation > xPresentation( mxPresentation ); - if( xPresentation.is() ) - { - uno::Reference< ::com::sun::star::presentation::XPresentation2 > xPres( mpDoc->getPresentation().get() ); - uno::Reference< lang::XComponent > xPresComp( xPres, uno::UNO_QUERY ); - if( xPresComp.is() ) - xPresComp->dispose(); - } - - uno::Reference< container::XNameAccess > xLinks( mxLinks ); - if( xLinks.is() ) - { - uno::Reference< lang::XComponent > xComp( xLinks, uno::UNO_QUERY ); - if( xComp.is() ) - xComp->dispose(); - - xLinks = 0; - } - - uno::Reference< drawing::XDrawPages > xDrawPagesAccess( mxDrawPagesAccess ); - if( xDrawPagesAccess.is() ) - { - uno::Reference< lang::XComponent > xComp( xDrawPagesAccess, uno::UNO_QUERY ); - if( xComp.is() ) - xComp->dispose(); - - xDrawPagesAccess = 0; - } - - uno::Reference< drawing::XDrawPages > xMasterPagesAccess( mxMasterPagesAccess ); - if( xDrawPagesAccess.is() ) - { - uno::Reference< lang::XComponent > xComp( xMasterPagesAccess, uno::UNO_QUERY ); - if( xComp.is() ) - xComp->dispose(); - - xDrawPagesAccess = 0; - } - - uno::Reference< container::XNameAccess > xLayerManager( mxLayerManager ); - if( xLayerManager.is() ) - { - uno::Reference< lang::XComponent > xComp( xLayerManager, uno::UNO_QUERY ); - if( xComp.is() ) - xComp->dispose(); - - xLayerManager = 0; - } - - uno::Reference< container::XNameContainer > xCustomPresentationAccess( mxCustomPresentationAccess ); - if( xCustomPresentationAccess.is() ) - { - uno::Reference< lang::XComponent > xComp( xCustomPresentationAccess, uno::UNO_QUERY ); - if( xComp.is() ) - xComp->dispose(); - - xCustomPresentationAccess = 0; - } - - mxDashTable = 0; - mxGradientTable = 0; - mxHatchTable = 0; - mxBitmapTable = 0; - mxTransGradientTable = 0; - mxMarkerTable = 0; - mxDrawingPool = 0; - } - } -} - -//============================================================================= -// class SdDrawPagesAccess -//============================================================================= - -SdDrawPagesAccess::SdDrawPagesAccess( SdXImpressDocument& rMyModel ) throw() -: mpModel( &rMyModel) -{ -} - -SdDrawPagesAccess::~SdDrawPagesAccess() throw() -{ -} - -// XIndexAccess -sal_Int32 SAL_CALL SdDrawPagesAccess::getCount() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpModel ) - throw lang::DisposedException(); - - return mpModel->mpDoc->GetSdPageCount( PK_STANDARD ); -} - -uno::Any SAL_CALL SdDrawPagesAccess::getByIndex( sal_Int32 Index ) - throw(lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpModel ) - throw lang::DisposedException(); - - uno::Any aAny; - - if( (Index < 0) || (Index >= mpModel->mpDoc->GetSdPageCount( PK_STANDARD ) ) ) - throw lang::IndexOutOfBoundsException(); - - SdPage* pPage = mpModel->mpDoc->GetSdPage( (sal_uInt16)Index, PK_STANDARD ); - if( pPage ) - { - uno::Reference< drawing::XDrawPage > xDrawPage( pPage->getUnoPage(), uno::UNO_QUERY ); - aAny <<= xDrawPage; - } - - return aAny; -} - -// XNameAccess -uno::Any SAL_CALL SdDrawPagesAccess::getByName( const OUString& aName ) throw(container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpModel ) - throw lang::DisposedException(); - - if( aName.getLength() != 0 ) - { - const sal_uInt16 nCount = mpModel->mpDoc->GetSdPageCount( PK_STANDARD ); - sal_uInt16 nPage; - for( nPage = 0; nPage < nCount; nPage++ ) - { - SdPage* pPage = mpModel->mpDoc->GetSdPage( nPage, PK_STANDARD ); - if(NULL == pPage) - continue; - - if( aName == SdDrawPage::getPageApiName( pPage ) ) - { - uno::Any aAny; - uno::Reference< drawing::XDrawPage > xDrawPage( pPage->getUnoPage(), uno::UNO_QUERY ); - aAny <<= xDrawPage; - return aAny; - } - } - } - - throw container::NoSuchElementException(); -} - -uno::Sequence< OUString > SAL_CALL SdDrawPagesAccess::getElementNames() throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpModel ) - throw lang::DisposedException(); - - const sal_uInt16 nCount = mpModel->mpDoc->GetSdPageCount( PK_STANDARD ); - uno::Sequence< OUString > aNames( nCount ); - OUString* pNames = aNames.getArray(); - - sal_uInt16 nPage; - for( nPage = 0; nPage < nCount; nPage++ ) - { - SdPage* pPage = mpModel->mpDoc->GetSdPage( nPage, PK_STANDARD ); - *pNames++ = SdDrawPage::getPageApiName( pPage ); - } - - return aNames; -} - -sal_Bool SAL_CALL SdDrawPagesAccess::hasByName( const OUString& aName ) throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpModel ) - throw lang::DisposedException(); - - const sal_uInt16 nCount = mpModel->mpDoc->GetSdPageCount( PK_STANDARD ); - sal_uInt16 nPage; - for( nPage = 0; nPage < nCount; nPage++ ) - { - SdPage* pPage = mpModel->mpDoc->GetSdPage( nPage, PK_STANDARD ); - if(NULL == pPage) - continue; - - if( aName == SdDrawPage::getPageApiName( pPage ) ) - return sal_True; - } - - return sal_False; -} - -// XElementAccess -uno::Type SAL_CALL SdDrawPagesAccess::getElementType() - throw(uno::RuntimeException) -{ - return ITYPE( drawing::XDrawPage ); -} - -sal_Bool SAL_CALL SdDrawPagesAccess::hasElements() - throw(uno::RuntimeException) -{ - return getCount() > 0; -} - -// XDrawPages - -/****************************************************************************** -* Erzeugt eine neue Seite mit Model an der angegebennen Position und gibt die * -* dazugehoerige SdDrawPage zurueck. * -******************************************************************************/ -uno::Reference< drawing::XDrawPage > SAL_CALL SdDrawPagesAccess::insertNewByIndex( sal_Int32 nIndex ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpModel ) - throw lang::DisposedException(); - - if( mpModel->mpDoc ) - { - SdPage* pPage = mpModel->InsertSdPage( (sal_uInt16)nIndex ); - if( pPage ) - { - uno::Reference< drawing::XDrawPage > xDrawPage( pPage->getUnoPage(), uno::UNO_QUERY ); - return xDrawPage; - } - } - uno::Reference< drawing::XDrawPage > xDrawPage; - return xDrawPage; -} - -/****************************************************************************** -* Entfernt die angegebenne SdDrawPage aus dem Model und aus der internen * -* Liste. Dies funktioniert nur, wenn mindestens eine *normale* Seite im Model * -* nach dem entfernen dieser Seite vorhanden ist. * -******************************************************************************/ -void SAL_CALL SdDrawPagesAccess::remove( const uno::Reference< drawing::XDrawPage >& xPage ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpModel || mpModel->mpDoc == NULL ) - throw lang::DisposedException(); - - SdDrawDocument& rDoc = *mpModel->mpDoc; - - sal_uInt16 nPageCount = rDoc.GetSdPageCount( PK_STANDARD ); - if( nPageCount > 1 ) - { - // pPage von xPage besorgen und dann die Id (nPos )ermitteln - SdDrawPage* pSvxPage = SdDrawPage::getImplementation( xPage ); - if( pSvxPage ) - { - SdPage* pPage = (SdPage*) pSvxPage->GetSdrPage(); - if(pPage && ( pPage->GetPageKind() == PK_STANDARD ) ) - { - sal_uInt16 nPage = pPage->GetPageNum(); - - SdPage* pNotesPage = static_cast< SdPage* >( rDoc.GetPage( nPage+1 ) ); - - bool bUndo = rDoc.IsUndoEnabled(); - if( bUndo ) - { - // Add undo actions and delete the pages. The order of adding - // the undo actions is important. - rDoc.BegUndo( SdResId( STR_UNDO_DELETEPAGES ) ); - rDoc.AddUndo(rDoc.GetSdrUndoFactory().CreateUndoDeletePage(*pNotesPage)); - rDoc.AddUndo(rDoc.GetSdrUndoFactory().CreateUndoDeletePage(*pPage)); - } - - rDoc.RemovePage( nPage ); // the page - rDoc.RemovePage( nPage ); // the notes page - - if( bUndo ) - { - rDoc.EndUndo(); - } - else - { - delete pNotesPage; - delete pPage; - } - } - } - } - - mpModel->SetModified(); -} - -// XServiceInfo -sal_Char pSdDrawPagesAccessService[sizeof("com.sun.star.drawing.DrawPages")] = "com.sun.star.drawing.DrawPages"; - -OUString SAL_CALL SdDrawPagesAccess::getImplementationName( ) throw(uno::RuntimeException) -{ - return OUString( RTL_CONSTASCII_USTRINGPARAM( "SdDrawPagesAccess" ) ); -} - -sal_Bool SAL_CALL SdDrawPagesAccess::supportsService( const OUString& ServiceName ) throw(uno::RuntimeException) -{ - return ServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( pSdDrawPagesAccessService ) ); -} - -uno::Sequence< OUString > SAL_CALL SdDrawPagesAccess::getSupportedServiceNames( ) throw(uno::RuntimeException) -{ - OUString aService( RTL_CONSTASCII_USTRINGPARAM( pSdDrawPagesAccessService ) ); - uno::Sequence< OUString > aSeq( &aService, 1 ); - return aSeq; -} - -// XComponent -void SAL_CALL SdDrawPagesAccess::dispose( ) throw (uno::RuntimeException) -{ - mpModel = NULL; -} - -void SAL_CALL SdDrawPagesAccess::addEventListener( const uno::Reference< lang::XEventListener >& ) throw (uno::RuntimeException) -{ - OSL_FAIL( "not implemented!" ); -} - -void SAL_CALL SdDrawPagesAccess::removeEventListener( const uno::Reference< lang::XEventListener >& ) throw (uno::RuntimeException) -{ - OSL_FAIL( "not implemented!" ); -} - -//============================================================================= -// class SdMasterPagesAccess -//============================================================================= - -SdMasterPagesAccess::SdMasterPagesAccess( SdXImpressDocument& rMyModel ) throw() -: mpModel(&rMyModel) -{ -} - -SdMasterPagesAccess::~SdMasterPagesAccess() throw() -{ -} - -// XComponent -void SAL_CALL SdMasterPagesAccess::dispose( ) throw (uno::RuntimeException) -{ - mpModel = NULL; -} - -void SAL_CALL SdMasterPagesAccess::addEventListener( const uno::Reference< lang::XEventListener >& ) throw (uno::RuntimeException) -{ - OSL_FAIL( "not implemented!" ); -} - -void SAL_CALL SdMasterPagesAccess::removeEventListener( const uno::Reference< lang::XEventListener >& ) throw (uno::RuntimeException) -{ - OSL_FAIL( "not implemented!" ); -} - -// XIndexAccess -sal_Int32 SAL_CALL SdMasterPagesAccess::getCount() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpModel->mpDoc ) - throw lang::DisposedException(); - - return mpModel->mpDoc->GetMasterSdPageCount(PK_STANDARD); -} - -/****************************************************************************** -* Liefert ein drawing::XDrawPage Interface fuer den Zugriff auf die Masterpage and der * -* angegebennen Position im Model. * -******************************************************************************/ -uno::Any SAL_CALL SdMasterPagesAccess::getByIndex( sal_Int32 Index ) - throw(lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpModel ) - throw lang::DisposedException(); - - uno::Any aAny; - - if( (Index < 0) || (Index >= mpModel->mpDoc->GetMasterSdPageCount( PK_STANDARD ) ) ) - throw lang::IndexOutOfBoundsException(); - - SdPage* pPage = mpModel->mpDoc->GetMasterSdPage( (sal_uInt16)Index, PK_STANDARD ); - if( pPage ) - { - uno::Reference< drawing::XDrawPage > xDrawPage( pPage->getUnoPage(), uno::UNO_QUERY ); - aAny <<= xDrawPage; - } - - return aAny; -} - -// XElementAccess -uno::Type SAL_CALL SdMasterPagesAccess::getElementType() - throw(uno::RuntimeException) -{ - return ITYPE(drawing::XDrawPage); -} - -sal_Bool SAL_CALL SdMasterPagesAccess::hasElements() - throw(uno::RuntimeException) -{ - return getCount() > 0; -} - -// XDrawPages -uno::Reference< drawing::XDrawPage > SAL_CALL SdMasterPagesAccess::insertNewByIndex( sal_Int32 nInsertPos ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpModel ) - throw lang::DisposedException(); - - uno::Reference< drawing::XDrawPage > xDrawPage; - - SdDrawDocument* mpDoc = mpModel->mpDoc; - if( mpDoc ) - { - // calculate internal index and check for range errors - const sal_Int32 nMPageCount = mpDoc->GetMasterPageCount(); - nInsertPos = nInsertPos * 2 + 1; - if( nInsertPos < 0 || nInsertPos > nMPageCount ) - nInsertPos = nMPageCount; - - // now generate a unique name for the new masterpage - const String aStdPrefix( SdResId(STR_LAYOUT_DEFAULT_NAME) ); - String aPrefix( aStdPrefix ); - - sal_Bool bUnique = sal_True; - sal_Int32 i = 0; - do - { - bUnique = sal_True; - for( sal_Int32 nMaster = 1; nMaster < nMPageCount; nMaster++ ) - { - SdPage* pPage = (SdPage*)mpDoc->GetMasterPage((sal_uInt16)nMaster); - if( pPage && pPage->GetName() == aPrefix ) - { - bUnique = sal_False; - break; - } - } - - if( !bUnique ) - { - i++; - aPrefix = aStdPrefix; - aPrefix += sal_Unicode( ' ' ); - aPrefix += String::CreateFromInt32( i ); - } - - } while( !bUnique ); - - String aLayoutName( aPrefix ); - aLayoutName.AppendAscii( RTL_CONSTASCII_STRINGPARAM( SD_LT_SEPARATOR )); - aLayoutName += String(SdResId(STR_LAYOUT_OUTLINE)); - - // create styles - ((SdStyleSheetPool*)mpDoc->GetStyleSheetPool())->CreateLayoutStyleSheets( aPrefix ); - - // get the first page for initial size and border settings - SdPage* pPage = mpModel->mpDoc->GetSdPage( (sal_uInt16)0, PK_STANDARD ); - SdPage* pRefNotesPage = mpModel->mpDoc->GetSdPage( (sal_uInt16)0, PK_NOTES); - - // create and instert new draw masterpage - SdPage* pMPage = (SdPage*)mpModel->mpDoc->AllocPage(sal_True); - pMPage->SetSize( pPage->GetSize() ); - pMPage->SetBorder( pPage->GetLftBorder(), - pPage->GetUppBorder(), - pPage->GetRgtBorder(), - pPage->GetLwrBorder() ); - pMPage->SetLayoutName( aLayoutName ); - mpDoc->InsertMasterPage(pMPage, (sal_uInt16)nInsertPos); - - { - // ensure default MasterPage fill - pMPage->EnsureMasterPageDefaultBackground(); - } - - xDrawPage = uno::Reference< drawing::XDrawPage >::query( pMPage->getUnoPage() ); - - // create and instert new notes masterpage - SdPage* pMNotesPage = (SdPage*)mpModel->mpDoc->AllocPage(sal_True); - pMNotesPage->SetSize( pRefNotesPage->GetSize() ); - pMNotesPage->SetPageKind(PK_NOTES); - pMNotesPage->SetBorder( pRefNotesPage->GetLftBorder(), - pRefNotesPage->GetUppBorder(), - pRefNotesPage->GetRgtBorder(), - pRefNotesPage->GetLwrBorder() ); - pMNotesPage->SetLayoutName( aLayoutName ); - mpDoc->InsertMasterPage(pMNotesPage, (sal_uInt16)nInsertPos + 1); - pMNotesPage->SetAutoLayout(AUTOLAYOUT_NOTES, sal_True, sal_True); - mpModel->SetModified(); - } - - return( xDrawPage ); -} - -/****************************************************************************** -* Entfernt die angegebenne SdMasterPage aus dem Model und aus der internen * -* Liste. Dies funktioniert nur, wenn keine *normale* Seite im Model diese * -* Seite als Masterpage benutzt. * -******************************************************************************/ -void SAL_CALL SdMasterPagesAccess::remove( const uno::Reference< drawing::XDrawPage >& xPage ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpModel || mpModel->mpDoc == NULL ) - throw lang::DisposedException(); - - SdDrawDocument& rDoc = *mpModel->mpDoc; - - SdMasterPage* pSdPage = SdMasterPage::getImplementation( xPage ); - if(pSdPage == NULL) - return; - - SdPage* pPage = dynamic_cast< SdPage* > (pSdPage->GetSdrPage()); - - DBG_ASSERT( pPage && pPage->IsMasterPage(), "SdMasterPage is not masterpage?"); - - if( !pPage || !pPage->IsMasterPage() || (mpModel->mpDoc->GetMasterPageUserCount(pPage) > 0)) - return; //Todo: this should be excepted - - // only standard pages can be removed directly - if( pPage->GetPageKind() == PK_STANDARD ) - { - sal_uInt16 nPage = pPage->GetPageNum(); - - SdPage* pNotesPage = static_cast< SdPage* >( rDoc.GetMasterPage( nPage+1 ) ); - - bool bUndo = rDoc.IsUndoEnabled(); - if( bUndo ) - { - // Add undo actions and delete the pages. The order of adding - // the undo actions is important. - rDoc.BegUndo( SdResId( STR_UNDO_DELETEPAGES ) ); - rDoc.AddUndo(rDoc.GetSdrUndoFactory().CreateUndoDeletePage(*pNotesPage)); - rDoc.AddUndo(rDoc.GetSdrUndoFactory().CreateUndoDeletePage(*pPage)); - } - - rDoc.RemoveMasterPage( nPage ); - rDoc.RemoveMasterPage( nPage ); - - if( bUndo ) - { - rDoc.EndUndo(); - } - else - { - delete pNotesPage; - delete pPage; - } - } -} - -// XServiceInfo -sal_Char pSdMasterPagesAccessService[sizeof("com.sun.star.drawing.MasterPages")] = "com.sun.star.drawing.MasterPages"; - -OUString SAL_CALL SdMasterPagesAccess::getImplementationName( ) throw(uno::RuntimeException) -{ - return OUString( RTL_CONSTASCII_USTRINGPARAM( "SdMasterPagesAccess" ) ); -} - -sal_Bool SAL_CALL SdMasterPagesAccess::supportsService( const OUString& ServiceName ) throw(uno::RuntimeException) -{ - return ServiceName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( pSdMasterPagesAccessService ) ); -} - -uno::Sequence< OUString > SAL_CALL SdMasterPagesAccess::getSupportedServiceNames( ) throw(uno::RuntimeException) -{ - OUString aService( RTL_CONSTASCII_USTRINGPARAM( pSdMasterPagesAccessService ) ); - uno::Sequence< OUString > aSeq( &aService, 1 ); - return aSeq; -} - -//============================================================================= -// class SdDocLinkTargets -//============================================================================= - -SdDocLinkTargets::SdDocLinkTargets( SdXImpressDocument& rMyModel ) throw() -: mpModel( &rMyModel ) -{ -} - -SdDocLinkTargets::~SdDocLinkTargets() throw() -{ -} - -// XComponent -void SAL_CALL SdDocLinkTargets::dispose( ) throw (uno::RuntimeException) -{ - mpModel = NULL; -} - -void SAL_CALL SdDocLinkTargets::addEventListener( const uno::Reference< lang::XEventListener >& ) throw (uno::RuntimeException) -{ - OSL_FAIL( "not implemented!" ); -} - -void SAL_CALL SdDocLinkTargets::removeEventListener( const uno::Reference< lang::XEventListener >& ) throw (uno::RuntimeException) -{ - OSL_FAIL( "not implemented!" ); -} - -// XNameAccess -uno::Any SAL_CALL SdDocLinkTargets::getByName( const OUString& aName ) - throw(container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpModel ) - throw lang::DisposedException(); - - SdPage* pPage = FindPage( aName ); - - if( pPage == NULL ) - throw container::NoSuchElementException(); - - uno::Any aAny; - - uno::Reference< beans::XPropertySet > xProps( pPage->getUnoPage(), uno::UNO_QUERY ); - if( xProps.is() ) - aAny <<= xProps; - - return aAny; -} - -uno::Sequence< OUString > SAL_CALL SdDocLinkTargets::getElementNames() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpModel ) - throw lang::DisposedException(); - - SdDrawDocument* mpDoc = mpModel->GetDoc(); - if( mpDoc == NULL ) - { - uno::Sequence< OUString > aSeq; - return aSeq; - } - - if( mpDoc->GetDocumentType() == DOCUMENT_TYPE_DRAW ) - { - const sal_uInt16 nMaxPages = mpDoc->GetSdPageCount( PK_STANDARD ); - const sal_uInt16 nMaxMasterPages = mpDoc->GetMasterSdPageCount( PK_STANDARD ); - - uno::Sequence< OUString > aSeq( nMaxPages + nMaxMasterPages ); - OUString* pStr = aSeq.getArray(); - - sal_uInt16 nPage; - // standard pages - for( nPage = 0; nPage < nMaxPages; nPage++ ) - *pStr++ = mpDoc->GetSdPage( nPage, PK_STANDARD )->GetName(); - - // master pages - for( nPage = 0; nPage < nMaxMasterPages; nPage++ ) - *pStr++ = mpDoc->GetMasterSdPage( nPage, PK_STANDARD )->GetName(); - return aSeq; - } - else - { - const sal_uInt16 nMaxPages = mpDoc->GetPageCount(); - const sal_uInt16 nMaxMasterPages = mpDoc->GetMasterPageCount(); - - uno::Sequence< OUString > aSeq( nMaxPages + nMaxMasterPages ); - OUString* pStr = aSeq.getArray(); - - sal_uInt16 nPage; - // standard pages - for( nPage = 0; nPage < nMaxPages; nPage++ ) - *pStr++ = ((SdPage*)mpDoc->GetPage( nPage ))->GetName(); - - // master pages - for( nPage = 0; nPage < nMaxMasterPages; nPage++ ) - *pStr++ = ((SdPage*)mpDoc->GetMasterPage( nPage ))->GetName(); - return aSeq; - } -} - -sal_Bool SAL_CALL SdDocLinkTargets::hasByName( const OUString& aName ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpModel ) - throw lang::DisposedException(); - - return FindPage( aName ) != NULL; -} - -// container::XElementAccess -uno::Type SAL_CALL SdDocLinkTargets::getElementType() - throw(uno::RuntimeException) -{ - return ITYPE(beans::XPropertySet); -} - -sal_Bool SAL_CALL SdDocLinkTargets::hasElements() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - if( NULL == mpModel ) - throw lang::DisposedException(); - - return mpModel->GetDoc() != NULL; -} - -SdPage* SdDocLinkTargets::FindPage( const OUString& rName ) const throw() -{ - SdDrawDocument* mpDoc = mpModel->GetDoc(); - if( mpDoc == NULL ) - return NULL; - - const sal_uInt16 nMaxPages = mpDoc->GetPageCount(); - const sal_uInt16 nMaxMasterPages = mpDoc->GetMasterPageCount(); - - sal_uInt16 nPage; - SdPage* pPage; - - const String aName( rName ); - - const bool bDraw = mpDoc->GetDocumentType() == DOCUMENT_TYPE_DRAW; - - // standard pages - for( nPage = 0; nPage < nMaxPages; nPage++ ) - { - pPage = (SdPage*)mpDoc->GetPage( nPage ); - if( (pPage->GetName() == aName) && (!bDraw || (pPage->GetPageKind() == PK_STANDARD)) ) - return pPage; - } - - // master pages - for( nPage = 0; nPage < nMaxMasterPages; nPage++ ) - { - pPage = (SdPage*)mpDoc->GetMasterPage( nPage ); - if( (pPage->GetName() == aName) && (!bDraw || (pPage->GetPageKind() == PK_STANDARD)) ) - return pPage; - } - - return NULL; -} - -// XServiceInfo -OUString SAL_CALL SdDocLinkTargets::getImplementationName() - throw(uno::RuntimeException) -{ - return OUString( RTL_CONSTASCII_USTRINGPARAM("SdDocLinkTargets") ); -} - -sal_Bool SAL_CALL SdDocLinkTargets::supportsService( const OUString& ServiceName ) - throw(uno::RuntimeException) -{ - return comphelper::ServiceInfoHelper::supportsService( ServiceName, getSupportedServiceNames() ); -} - -uno::Sequence< OUString > SAL_CALL SdDocLinkTargets::getSupportedServiceNames() - throw(uno::RuntimeException) -{ - const OUString aSN( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.LinkTargets") ); - uno::Sequence< OUString > aSeq( &aSN, 1 ); - return aSeq; -} - -rtl::Reference< SdXImpressDocument > SdXImpressDocument::GetModel( SdDrawDocument* pDocument ) -{ - rtl::Reference< SdXImpressDocument > xRet; - if( pDocument ) - { - ::sd::DrawDocShell* pDocShell = pDocument->GetDocSh(); - if( pDocShell ) - { - uno::Reference<frame::XModel> xModel(pDocShell->GetModel()); - - xRet.set( dynamic_cast< SdXImpressDocument* >( xModel.get() ) ); - } - } - - return xRet; -} - -void NotifyDocumentEvent( SdDrawDocument* pDocument, const rtl::OUString& rEventName ) -{ - rtl::Reference< SdXImpressDocument > xModel( SdXImpressDocument::GetModel( pDocument ) ); - - if( xModel.is() ) - { - uno::Reference< uno::XInterface > xSource( static_cast<uno::XWeak*>( xModel.get() ) ); - ::com::sun::star::document::EventObject aEvent( xSource, rEventName ); - xModel->notifyEvent(aEvent ); - } -} - -void NotifyDocumentEvent( SdDrawDocument* pDocument, const rtl::OUString& rEventName, const uno::Reference< uno::XInterface >& xSource ) -{ - rtl::Reference< SdXImpressDocument > xModel( SdXImpressDocument::GetModel( pDocument ) ); - - if( xModel.is() ) - { - ::com::sun::star::document::EventObject aEvent( xSource, rEventName ); - xModel->notifyEvent(aEvent ); - } -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unomodule.cxx b/sd/source/ui/unoidl/unomodule.cxx deleted file mode 100644 index d340fc47b..000000000 --- a/sd/source/ui/unoidl/unomodule.cxx +++ /dev/null @@ -1,165 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" - -// System - Includes ----------------------------------------------------- -#include <com/sun/star/lang/XMultiServiceFactory.hpp> -#include <com/sun/star/frame/DispatchResultState.hpp> - -#include "sdmod.hxx" -#include "unomodule.hxx" -#include <sfx2/objface.hxx> -#include <sfx2/bindings.hxx> -#include <sfx2/request.hxx> -#include <osl/mutex.hxx> -#include <vcl/svapp.hxx> - -using namespace ::com::sun::star; - -::rtl::OUString SAL_CALL SdUnoModule_getImplementationName() throw( uno::RuntimeException ) -{ - return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.Draw.DrawingModule" ) ); -} - -uno::Sequence< rtl::OUString > SAL_CALL SdUnoModule_getSupportedServiceNames() throw( uno::RuntimeException ) -{ - uno::Sequence< rtl::OUString > aSeq( 1 ); - aSeq[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.ModuleDispatcher")); - return aSeq; -} - -uno::Reference< uno::XInterface > SAL_CALL SdUnoModule_createInstance( - const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) -{ - SolarMutexGuard aGuard; - return uno::Reference< uno::XInterface >( static_cast< cppu::OWeakObject* >( new SdUnoModule( rSMgr ) ) ); -} - - // XNotifyingDispatch -void SAL_CALL SdUnoModule::dispatchWithNotification( const ::com::sun::star::util::URL& aURL, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aArgs, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchResultListener >& xListener ) throw (::com::sun::star::uno::RuntimeException) -{ - // there is no guarantee, that we are holded alive during this method! - // May the outside dispatch container will be updated by a CONTEXT_CHANGED - // asynchronous ... - ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xThis(static_cast< ::com::sun::star::frame::XNotifyingDispatch* >(this)); - - SolarMutexGuard aGuard; - SdDLL::Init(); - const SfxSlot* pSlot = SD_MOD()->GetInterface()->GetSlot( aURL.Complete ); - - sal_Int16 aState = ::com::sun::star::frame::DispatchResultState::DONTKNOW; - if ( !pSlot ) - aState = ::com::sun::star::frame::DispatchResultState::FAILURE; - else - { - SfxRequest aReq( pSlot, aArgs, SFX_CALLMODE_SYNCHRON, SD_MOD()->GetPool() ); - const SfxPoolItem* pResult = SD_MOD()->ExecuteSlot( aReq ); - if ( pResult ) - aState = ::com::sun::star::frame::DispatchResultState::SUCCESS; - else - aState = ::com::sun::star::frame::DispatchResultState::FAILURE; - } - - if ( xListener.is() ) - { - xListener->dispatchFinished( - ::com::sun::star::frame::DispatchResultEvent( - xThis, aState, ::com::sun::star::uno::Any())); - } -} - // XDispatch -void SAL_CALL SdUnoModule::dispatch( const ::com::sun::star::util::URL& aURL, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aArgs ) throw( ::com::sun::star::uno::RuntimeException ) -{ - dispatchWithNotification(aURL, aArgs, ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchResultListener >()); -} - -void SAL_CALL SdUnoModule::addStatusListener(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener > &, const ::com::sun::star::util::URL&) throw( ::com::sun::star::uno::RuntimeException ) -{ -} - -void SAL_CALL SdUnoModule::removeStatusListener(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener > &, const ::com::sun::star::util::URL&) throw( ::com::sun::star::uno::RuntimeException ) -{ -} - -SEQUENCE< REFERENCE< XDISPATCH > > SAL_CALL SdUnoModule::queryDispatches( const SEQUENCE< DISPATCHDESCRIPTOR >& seqDescripts ) throw( ::com::sun::star::uno::RuntimeException ) -{ - sal_Int32 nCount = seqDescripts.getLength(); - SEQUENCE< REFERENCE< XDISPATCH > > lDispatcher( nCount ); - - for( sal_Int32 i=0; i<nCount; ++i ) - { - lDispatcher[i] = queryDispatch( seqDescripts[i].FeatureURL , - seqDescripts[i].FrameName , - seqDescripts[i].SearchFlags ); - } - - return lDispatcher; -} - -// XDispatchProvider -REFERENCE< XDISPATCH > SAL_CALL SdUnoModule::queryDispatch( const UNOURL& aURL, const OUSTRING&, sal_Int32 ) throw( RUNTIMEEXCEPTION ) -{ - SolarMutexGuard aGuard; - SdDLL::Init(); - const SfxSlot* pSlot = SD_MOD()->GetInterface()->GetSlot( aURL.Complete ); - - REFERENCE< XDISPATCH > xSlot; - if ( pSlot ) - xSlot = this; - - return xSlot; -} - -// XServiceInfo -::rtl::OUString SAL_CALL SdUnoModule::getImplementationName( ) throw(::com::sun::star::uno::RuntimeException) -{ - return SdUnoModule_getImplementationName(); -} - -sal_Bool SAL_CALL SdUnoModule::supportsService( const ::rtl::OUString& sServiceName ) throw(::com::sun::star::uno::RuntimeException) -{ - UNOSEQUENCE< UNOOUSTRING > seqServiceNames = getSupportedServiceNames(); - const UNOOUSTRING* pArray = seqServiceNames.getConstArray(); - for ( sal_Int32 nCounter=0; nCounter<seqServiceNames.getLength(); nCounter++ ) - { - if ( pArray[nCounter] == sServiceName ) - { - return sal_True ; - } - } - return sal_False ; -} - -::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL SdUnoModule::getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException) -{ - return SdUnoModule_getSupportedServiceNames(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unomodule.hxx b/sd/source/ui/unoidl/unomodule.hxx deleted file mode 100644 index 5af44440d..000000000 --- a/sd/source/ui/unoidl/unomodule.hxx +++ /dev/null @@ -1,101 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _SD_UNOMODULE_HXX -#define _SD_UNOMODULE_HXX - -#include <rtl/ustring.hxx> -#include <com/sun/star/frame/XDispatchProvider.hpp> -#include <com/sun/star/frame/XNotifyingDispatch.hpp> -#include <com/sun/star/uno/RuntimeException.hpp> -#include <com/sun/star/frame/DispatchDescriptor.hpp> -#include <com/sun/star/uno/Reference.h> -#include <cppuhelper/implbase3.hxx> - -#include <com/sun/star/lang/XServiceInfo.hpp> - -namespace com -{ - namespace sun - { - namespace star - { - namespace lang - { - class XMultiServiceFactory; - } - namespace beans - { - struct PropertyValue; - } - } - } -} - -#define REFERENCE ::com::sun::star::uno::Reference -#define SEQUENCE ::com::sun::star::uno::Sequence -#define RUNTIMEEXCEPTION ::com::sun::star::uno::RuntimeException -#define REFERENCE ::com::sun::star::uno::Reference -#define SEQUENCE ::com::sun::star::uno::Sequence -#define XDISPATCH ::com::sun::star::frame::XDispatch -#define XNOTIFYINGDISPATCH ::com::sun::star::frame::XNotifyingDispatch -#define OUSTRING ::rtl::OUString -#define UNOURL ::com::sun::star::util::URL -#define DISPATCHDESCRIPTOR ::com::sun::star::frame::DispatchDescriptor - -class SdUnoModule : public ::cppu::WeakImplHelper3< ::com::sun::star::frame::XDispatchProvider, ::com::sun::star::frame::XNotifyingDispatch, ::com::sun::star::lang::XServiceInfo > -{ - REFERENCE < ::com::sun::star::lang::XMultiServiceFactory > m_xFactory; - -public: - SdUnoModule( const REFERENCE < ::com::sun::star::lang::XMultiServiceFactory >& xFactory ) - : m_xFactory( xFactory ) - {} - - // XnotifyingDispatch - virtual void SAL_CALL dispatchWithNotification( const ::com::sun::star::util::URL& URL, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& Arguments, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchResultListener >& Listener ) throw (::com::sun::star::uno::RuntimeException); - - // XDispatch - virtual void SAL_CALL dispatch( const ::com::sun::star::util::URL& aURL, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aArgs ) throw( ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL addStatusListener(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener > & xControl, const ::com::sun::star::util::URL& aURL) throw( ::com::sun::star::uno::RuntimeException ); - virtual void SAL_CALL removeStatusListener(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XStatusListener > & xControl, const ::com::sun::star::util::URL& aURL) throw( ::com::sun::star::uno::RuntimeException ); - - // XDispatchProvider - virtual SEQUENCE< REFERENCE< XDISPATCH > > SAL_CALL queryDispatches( const SEQUENCE< DISPATCHDESCRIPTOR >& seqDescriptor ) throw( RUNTIMEEXCEPTION ) ; - virtual REFERENCE< XDISPATCH > SAL_CALL queryDispatch( const UNOURL & aURL , - const OUSTRING & sTargetFrameName, - sal_Int32 eSearchFlags ) throw( RUNTIMEEXCEPTION ) ; - // XServiceInfo - virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException); -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unoobj.cxx b/sd/source/ui/unoidl/unoobj.cxx deleted file mode 100644 index e47d9fc7d..000000000 --- a/sd/source/ui/unoidl/unoobj.cxx +++ /dev/null @@ -1,1730 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" - -#include <com/sun/star/style/XStyle.hpp> -#include <com/sun/star/presentation/ClickAction.hpp> -#include <com/sun/star/beans/PropertyAttribute.hpp> -#include <com/sun/star/text/XText.hpp> -#include <com/sun/star/beans/PropertyState.hpp> -#include <com/sun/star/beans/PropertyValues.hpp> -#include <rtl/ustrbuf.hxx> -#include <comphelper/stl_types.hxx> -#include <osl/mutex.hxx> -#include <svl/itemprop.hxx> -#include <svl/style.hxx> -#include <svx/svdpool.hxx> -#include <sfx2/viewfrm.hxx> -#include <sfx2/app.hxx> -#include <svtools/unoimap.hxx> -#include <svtools/unoevent.hxx> -#include <sfx2/bindings.hxx> -#include <sfx2/sfxsids.hrc> -#include <comphelper/extract.hxx> -#include <svx/unoprov.hxx> -#include <svx/unoshape.hxx> -#include <svx/svditer.hxx> -#include <svx/svdotext.hxx> -#include <svx/unoapi.hxx> -#include <svx/svdopath.hxx> -#include <svx/svdoole2.hxx> -#include <svx/svdograf.hxx> -#include <editeng/outlobj.hxx> -#include "CustomAnimationPreset.hxx" -#include "Outliner.hxx" -#include "sdresid.hxx" -#include <comphelper/serviceinfohelper.hxx> - -#include "anminfo.hxx" -#include "unohelp.hxx" -#include "unoobj.hxx" -#include "unoprnms.hxx" -#include "unomodel.hxx" -#include "drawdoc.hxx" -#include "sdpage.hxx" -#include "ViewShell.hxx" -#include "unokywds.hxx" -#include "unopage.hxx" -#include "DrawDocShell.hxx" -#include "helpids.h" -#include "glob.hxx" -#include "glob.hrc" -#include "unolayer.hxx" -#include "imapinfo.hxx" -#include "EffectMigration.hxx" - -#ifndef SEQTYPE - #if defined(__SUNPRO_CC) && (__SUNPRO_CC == 0x500) - #define SEQTYPE(x) (new ::com::sun::star::uno::Type( x )) - #else - #define SEQTYPE(x) &(x) - #endif -#endif - -using ::rtl::OUString; -using ::rtl::OUStringBuffer; -using namespace ::sd; -using namespace ::com::sun::star; -using namespace ::com::sun::star::presentation; -using namespace ::com::sun::star::animations; - -using ::com::sun::star::uno::makeAny; -using ::com::sun::star::uno::Any; -using ::com::sun::star::uno::Reference; -using ::com::sun::star::drawing::XShape; - -extern OUString getPageApiNameFromUiName( const String& rUIName ); -extern String getUiNameFromPageApiNameImpl( const ::rtl::OUString& rApiName ); - -/////////////////////////////////////////////////////////////////////// - -DECLARE_STL_STDKEY_MAP(sal_uIntPtr, SfxExtItemPropertySetInfo*, SdExtPropertySetInfoCache); -static SdExtPropertySetInfoCache gImplImpressPropertySetInfoCache; -static SdExtPropertySetInfoCache gImplDrawPropertySetInfoCache; - -DECLARE_STL_STDKEY_MAP(sal_uInt32, uno::Sequence< uno::Type >*, SdTypesCache); -static SdTypesCache gImplTypesCache; - -/////////////////////////////////////////////////////////////////////// - - -#define WID_EFFECT 1 -#define WID_SPEED 2 -#define WID_TEXTEFFECT 3 -#define WID_BOOKMARK 4 -#define WID_CLICKACTION 5 -#define WID_PLAYFULL 6 -#define WID_SOUNDFILE 7 -#define WID_SOUNDON 8 -#define WID_BLUESCREEN 9 -#define WID_VERB 10 -#define WID_DIMCOLOR 11 -#define WID_DIMHIDE 12 -#define WID_DIMPREV 13 -#define WID_PRESORDER 14 -#define WID_STYLE 15 -#define WID_ANIMPATH 16 -#define WID_IMAGEMAP 17 -#define WID_ISANIMATION 18 - -#define WID_ISEMPTYPRESOBJ 20 -#define WID_ISPRESOBJ 21 -#define WID_MASTERDEPEND 22 - -#define WID_NAVORDER 23 - -#define WID_THAT_NEED_ANIMINFO 19 - -#define WID_PLACEHOLDERTEXT 24 - - - #define IMPRESS_MAP_ENTRIES \ - { MAP_CHAR_LEN(UNO_NAME_OBJ_ANIMATIONPATH), WID_ANIMPATH, &ITYPE(drawing::XShape), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_BOOKMARK), WID_BOOKMARK, &::getCppuType((const OUString*)0), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_DIMCOLOR), WID_DIMCOLOR, &::getCppuType((const sal_Int32*)0), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_DIMHIDE), WID_DIMHIDE, &::getBooleanCppuType(), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_DIMPREV), WID_DIMPREV, &::getBooleanCppuType(), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_EFFECT), WID_EFFECT, &::getCppuType((const presentation::AnimationEffect*)0), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_ISEMPTYPRESOBJ),WID_ISEMPTYPRESOBJ, &::getBooleanCppuType(), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_ISPRESOBJ), WID_ISPRESOBJ, &::getBooleanCppuType(), ::com::sun::star::beans::PropertyAttribute::READONLY, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_MASTERDEPENDENT),WID_MASTERDEPEND, &::getBooleanCppuType(), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_CLICKACTION), WID_CLICKACTION, &::getCppuType((const presentation::ClickAction*)0), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_PLAYFULL), WID_PLAYFULL, &::getBooleanCppuType(), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_PRESORDER), WID_PRESORDER, &::getCppuType((const sal_Int32*)0), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_STYLE), WID_STYLE, &ITYPE( style::XStyle), ::com::sun::star::beans::PropertyAttribute::MAYBEVOID, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_SOUNDFILE), WID_SOUNDFILE, &::getCppuType((const OUString*)0), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_SOUNDON), WID_SOUNDON, &::getBooleanCppuType(), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_SPEED), WID_SPEED, &::getCppuType((const presentation::AnimationSpeed*)0), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_TEXTEFFECT), WID_TEXTEFFECT, &::getCppuType((const presentation::AnimationEffect*)0), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_BLUESCREEN), WID_BLUESCREEN, &::getCppuType((const sal_Int32*)0), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_VERB), WID_VERB, &::getCppuType((const sal_Int32*)0), 0, 0},\ - { MAP_CHAR_LEN("IsAnimation"), WID_ISANIMATION, &::getBooleanCppuType(), 0, 0},\ - { MAP_CHAR_LEN("NavigationOrder"), WID_NAVORDER, &::getCppuType((const sal_Int32*)0), 0, 0},\ - { MAP_CHAR_LEN("PlaceholderText"), WID_PLACEHOLDERTEXT, &::getCppuType((const OUString*)0), 0, 0},\ - { 0,0,0,0,0,0} - - - const SfxItemPropertyMapEntry* lcl_GetImpress_SdXShapePropertyGraphicMap_Impl() - { - - static const SfxItemPropertyMapEntry aImpress_SdXShapePropertyGraphicMap_Impl[] = - { - { MAP_CHAR_LEN("ImageMap"), WID_IMAGEMAP, &::getCppuType((const uno::Reference< container::XIndexContainer >*)0), 0, 0 }, - IMPRESS_MAP_ENTRIES - }; - return aImpress_SdXShapePropertyGraphicMap_Impl; - } - - const SfxItemPropertyMapEntry* lcl_GetImpress_SdXShapePropertySimpleMap_Impl() - { - - static const SfxItemPropertyMapEntry aImpress_SdXShapePropertySimpleMap_Impl[] = - { - IMPRESS_MAP_ENTRIES - }; - return aImpress_SdXShapePropertySimpleMap_Impl; - } - - #define DRAW_MAP_ENTRIES\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_BOOKMARK), WID_BOOKMARK, &::getCppuType((const OUString*)0), 0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_CLICKACTION), WID_CLICKACTION, &::getCppuType((const presentation::ClickAction*)0),0, 0},\ - { MAP_CHAR_LEN(UNO_NAME_OBJ_STYLE), WID_STYLE, &ITYPE(style::XStyle), ::com::sun::star::beans::PropertyAttribute::MAYBEVOID, 0},\ - { MAP_CHAR_LEN("NavigationOrder"), WID_NAVORDER, &::getCppuType((const sal_Int32*)0), 0, 0},\ - { 0,0,0,0,0,0} - - const SfxItemPropertyMapEntry* lcl_GetDraw_SdXShapePropertySimpleMap_Impl() - { - static const SfxItemPropertyMapEntry aDraw_SdXShapePropertyMap_Impl[] = - { - DRAW_MAP_ENTRIES - }; - return aDraw_SdXShapePropertyMap_Impl; - } - const SfxItemPropertyMapEntry* lcl_GetDraw_SdXShapePropertyGraphicMap_Impl() - { - static const SfxItemPropertyMapEntry aDraw_SdXShapePropertyGraphicMap_Impl[] = - { - { MAP_CHAR_LEN("ImageMap"), WID_IMAGEMAP, &::getCppuType((const uno::Reference< container::XIndexContainer >*)0), 0, 0 }, - DRAW_MAP_ENTRIES - }; - return aDraw_SdXShapePropertyGraphicMap_Impl; - } - const SfxItemPropertyMapEntry* lcl_ImplGetShapePropertyMap( sal_Bool bImpress, sal_Bool bGraphicObj ) - { - const SfxItemPropertyMapEntry* pRet = 0; - if( bImpress ) - { - if( bGraphicObj ) - pRet = lcl_GetImpress_SdXShapePropertyGraphicMap_Impl(); - else - pRet = lcl_GetImpress_SdXShapePropertySimpleMap_Impl(); - } - else - { - if( bGraphicObj ) - pRet = lcl_GetDraw_SdXShapePropertyGraphicMap_Impl(); - else - pRet = lcl_GetDraw_SdXShapePropertySimpleMap_Impl(); - } - return pRet; - - } - const SvxItemPropertySet* lcl_ImplGetShapePropertySet( sal_Bool bImpress, sal_Bool bGraphicObj ) - { - const SvxItemPropertySet* pRet = 0; - if( bImpress ) - { - if( bGraphicObj ) - { - static SvxItemPropertySet aImpress_SdXShapePropertyGraphicSet_Impl( lcl_GetImpress_SdXShapePropertyGraphicMap_Impl(), SdrObject::GetGlobalDrawObjectItemPool()); - pRet = &aImpress_SdXShapePropertyGraphicSet_Impl; - } - else - { - static SvxItemPropertySet aImpress_SdXShapePropertySet_Impl(lcl_GetImpress_SdXShapePropertySimpleMap_Impl(), SdrObject::GetGlobalDrawObjectItemPool()); - pRet = &aImpress_SdXShapePropertySet_Impl; - } - } - else - { - if( bGraphicObj ) - { - static SvxItemPropertySet aDraw_SdXShapePropertyGraphicSet_Impl(lcl_GetDraw_SdXShapePropertyGraphicMap_Impl(), SdrObject::GetGlobalDrawObjectItemPool()); - pRet = &aDraw_SdXShapePropertyGraphicSet_Impl; - } - else - { - static SvxItemPropertySet aDraw_SdXShapePropertySet_Impl( lcl_GetDraw_SdXShapePropertySimpleMap_Impl(), SdrObject::GetGlobalDrawObjectItemPool()); - pRet = &aDraw_SdXShapePropertySet_Impl; - } - } - return pRet; - } - const SfxItemPropertyMapEntry* lcl_GetEmpty_SdXShapePropertyMap_Impl() - { - static SfxItemPropertyMapEntry aEmpty_SdXShapePropertyMap_Impl[] = - { - { 0,0,0,0,0,0} - }; - return aEmpty_SdXShapePropertyMap_Impl; - } - - static const SvxItemPropertySet* lcl_GetEmpty_SdXShapePropertySet_Impl() - { - static SvxItemPropertySet aEmptyPropSet( lcl_GetEmpty_SdXShapePropertyMap_Impl(), SdrObject::GetGlobalDrawObjectItemPool() ); - return &aEmptyPropSet; - } -const SvEventDescription* ImplGetSupportedMacroItems() -{ - static const SvEventDescription aMacroDescriptionsImpl[] = - { - { SFX_EVENT_MOUSEOVER_OBJECT, "OnMouseOver" }, - { SFX_EVENT_MOUSEOUT_OBJECT, "OnMouseOut" }, - { 0, NULL } - }; - - return aMacroDescriptionsImpl; -} - -/************************************************************************* -|* -|* Vergleichsfkt. fuer QSort -|* -\************************************************************************/ -struct SortStruct -{ - SdrObject* pObj; - sal_uInt32 nOrder; -}; - -typedef SortStruct SORT; -typedef SORT* PSORT; - -extern "C" int __LOADONCALLAPI SortFunc( const void* p1, const void* p2 ); - -SdXShape::SdXShape( SvxShape* pShape, SdXImpressDocument* pModel) throw() -: mpShape( pShape ), - mpPropSet( pModel? - lcl_ImplGetShapePropertySet(pModel->IsImpressDocument(), pShape->getShapeKind() == OBJ_GRAF ) - : lcl_GetEmpty_SdXShapePropertySet_Impl() ), - mpMap( pModel? - lcl_ImplGetShapePropertyMap(pModel->IsImpressDocument(), pShape->getShapeKind() == OBJ_GRAF ) - : lcl_GetEmpty_SdXShapePropertyMap_Impl() ), - mpModel(pModel), - mpImplementationId( NULL ) - -{ - - pShape->setMaster( this ); -} - -SdXShape::~SdXShape() throw() -{ -} - -void SdXShape::dispose() -{ - mpShape->setMaster( NULL ); - delete this; -} - -// XInterface -uno::Any SAL_CALL SdXShape::queryAggregation( const uno::Type & rType ) - throw(uno::RuntimeException) -{ - return mpShape->queryAggregation( rType ); -} - -uno::Any SAL_CALL SdXShape::queryInterface( const uno::Type & rType ) - throw(uno::RuntimeException) -{ - return mpShape->queryInterface( rType ); -} - -void SAL_CALL SdXShape::acquire() throw() -{ - mpShape->acquire(); -} - -void SAL_CALL SdXShape::release() throw() -{ - mpShape->release(); -} - -sal_Bool SdXShape::queryAggregation( const com::sun::star::uno::Type & rType, com::sun::star::uno::Any& aAny ) -{ - if( mpModel && mpModel ->IsImpressDocument() ) - { - if( rType == ::getCppuType(( const uno::Reference< document::XEventsSupplier >*)0) ) - { - aAny <<= uno::Reference< document::XEventsSupplier >(this); - return sal_True; - } - } - - return sal_False; -} - -uno::Sequence< uno::Type > SAL_CALL SdXShape::getTypes() - throw (uno::RuntimeException) -{ - if( mpModel && !mpModel->IsImpressDocument() ) - { - return mpShape->_getTypes(); - } - else - { - const sal_uInt32 nObjId = mpShape->getShapeKind(); - uno::Sequence< uno::Type >* pTypes; - SdTypesCache::iterator aIter( gImplTypesCache.find( nObjId ) ); - if( aIter == gImplTypesCache.end() ) - { - pTypes = new uno::Sequence< uno::Type >( mpShape->_getTypes() ); - sal_uInt32 nCount = pTypes->getLength(); - pTypes->realloc( nCount+1 ); - (*pTypes)[nCount] = ::getCppuType((const uno::Reference< lang::XTypeProvider>*)0); - - gImplTypesCache[ nObjId ] = pTypes; - } - else - { - // use the already computed implementation id - pTypes = (*aIter).second; - } - return *pTypes; - } -} - -// XPropertyState -beans::PropertyState SAL_CALL SdXShape::getPropertyState( const OUString& PropertyName ) throw( beans::UnknownPropertyException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( mpPropSet->getPropertyMapEntry(PropertyName) ) - { - return beans::PropertyState_DIRECT_VALUE; - } - else - { - SdrObject* pObj = mpShape->GetSdrObject(); - if( pObj == NULL || ( pObj->GetPage()->IsMasterPage() && pObj->IsEmptyPresObj() ) ) - return beans::PropertyState_DEFAULT_VALUE; - - return mpShape->_getPropertyState( PropertyName ); - } -} - -void SAL_CALL SdXShape::setPropertyToDefault( const OUString& PropertyName ) throw( beans::UnknownPropertyException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( mpPropSet->getPropertyMapEntry(PropertyName) ) - { - return; - } - else - { - mpShape->_setPropertyToDefault(PropertyName); - } -} - -uno::Any SAL_CALL SdXShape::getPropertyDefault( const OUString& aPropertyName ) throw( beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - if( mpPropSet->getPropertyMapEntry(aPropertyName) ) - { - return getPropertyValue( aPropertyName ); - } - else - { - uno::Any aRet( mpShape->_getPropertyDefault(aPropertyName) ); - - if( aPropertyName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( sUNO_shape_layername ) ) ) - { - OUString aName; - if( aRet >>= aName ) - { - aName = SdLayer::convertToExternalName( aName ); - aRet <<= aName; - } - } - return aRet; - } -} - -//XPropertySet -::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL SdXShape::getPropertySetInfo() - throw(::com::sun::star::uno::RuntimeException) -{ - sal_uIntPtr nObjId = (sal_uIntPtr)mpShape->getPropertyMapEntries(); - SfxExtItemPropertySetInfo* pInfo = NULL; - - SdExtPropertySetInfoCache* pCache = (mpModel && mpModel->IsImpressDocument()) ? - &gImplImpressPropertySetInfoCache : &gImplDrawPropertySetInfoCache; - - SdExtPropertySetInfoCache::iterator aIter( pCache->find( nObjId ) ); - if( aIter == pCache->end() ) - { - uno::Reference< beans::XPropertySetInfo > xInfo( mpShape->_getPropertySetInfo() ); - pInfo = new SfxExtItemPropertySetInfo( mpMap, xInfo->getProperties() ); - pInfo->acquire(); - - (*pCache)[ nObjId ] = pInfo; - } - else - { - // use the already computed implementation id - pInfo = (*aIter).second; - } - - uno::Reference< beans::XPropertySetInfo > xInfo( pInfo ); - return pInfo; -} - -void SAL_CALL SdXShape::setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) - throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - const SfxItemPropertySimpleEntry* pEntry = mpPropSet->getPropertyMapEntry(aPropertyName); - - if( pEntry ) - { - SdrObject* pObj = mpShape->GetSdrObject(); - if( pObj ) - { - SdAnimationInfo* pInfo = GetAnimationInfo((pEntry->nWID <= WID_THAT_NEED_ANIMINFO)?sal_True:sal_False); - - switch(pEntry->nWID) - { - case WID_NAVORDER: - { - sal_Int32 nNavOrder = 0; - if(!(aValue >>= nNavOrder)) - throw lang::IllegalArgumentException(); - - SdrObjList* pObjList = pObj->GetObjList(); - if( pObjList ) - pObjList->SetObjectNavigationPosition( *pObj, (nNavOrder < 0) ? SAL_MAX_UINT32 : static_cast< sal_uInt32 >( nNavOrder ) ); - break; - } - - case WID_EFFECT: - { - AnimationEffect eEffect; - if(!(aValue >>= eEffect)) - throw lang::IllegalArgumentException(); - - EffectMigration::SetAnimationEffect( mpShape, eEffect ); - break; - } - case WID_TEXTEFFECT: - { - AnimationEffect eEffect; - if(!(aValue >>= eEffect)) - throw lang::IllegalArgumentException(); - - EffectMigration::SetTextAnimationEffect( mpShape, eEffect ); - break; - } - case WID_SPEED: - { - AnimationSpeed eSpeed; - if(!(aValue>>=eSpeed)) - throw lang::IllegalArgumentException(); - - EffectMigration::SetAnimationSpeed( mpShape, eSpeed ); - break; - } -// TODO: WID_ISANIMATION - case WID_BOOKMARK: - { - OUString aString; - if(!(aValue >>= aString)) - throw lang::IllegalArgumentException(); - - pInfo->SetBookmark( SdDrawPage::getUiNameFromPageApiName( aString ) ); - break; - } - case WID_CLICKACTION: - ::cppu::any2enum< presentation::ClickAction >( pInfo->meClickAction, aValue); - break; - -// TODO: WID_PLAYFULL: - case WID_SOUNDFILE: - { - OUString aString; - if(!(aValue >>= aString)) - throw lang::IllegalArgumentException(); - pInfo->maSoundFile = aString; - EffectMigration::UpdateSoundEffect( mpShape, pInfo ); - break; - } - - case WID_SOUNDON: - { - if( !(aValue >>= pInfo->mbSoundOn) ) - throw lang::IllegalArgumentException(); - EffectMigration::UpdateSoundEffect( mpShape, pInfo ); - break; - } - case WID_VERB: - { - sal_Int32 nVerb = 0; - if(!(aValue >>= nVerb)) - throw lang::IllegalArgumentException(); - - pInfo->mnVerb = (sal_uInt16)nVerb; - break; - } - case WID_DIMCOLOR: - { - sal_Int32 nColor = 0; - - if( !(aValue >>= nColor) ) - throw lang::IllegalArgumentException(); - - EffectMigration::SetDimColor( mpShape, nColor ); - break; - } - case WID_DIMHIDE: - { - sal_Bool bDimHide = sal_False; - if( !(aValue >>= bDimHide) ) - lang::IllegalArgumentException(); - - EffectMigration::SetDimHide( mpShape, bDimHide ); - break; - } - case WID_DIMPREV: - { - sal_Bool bDimPrevious = sal_False; - if( !(aValue >>= bDimPrevious) ) - lang::IllegalArgumentException(); - - EffectMigration::SetDimPrevious( mpShape, bDimPrevious ); - break; - } - case WID_PRESORDER: - { - sal_Int32 nNewPos = 0; - if( !(aValue >>= nNewPos) ) - lang::IllegalArgumentException(); - - EffectMigration::SetPresentationOrder( mpShape, nNewPos ); - break; - } - case WID_STYLE: - SetStyleSheet( aValue ); - break; - case WID_ISEMPTYPRESOBJ: - SetEmptyPresObj( ::cppu::any2bool(aValue) ); - break; - case WID_MASTERDEPEND: - SetMasterDepend( ::cppu::any2bool(aValue) ); - break; - -// TODO: WID_ANIMPATH - case WID_IMAGEMAP: - { - SdDrawDocument* pDoc = mpModel?mpModel->GetDoc():NULL; - if( pDoc ) - { - ImageMap aImageMap; - uno::Reference< uno::XInterface > xImageMap; - aValue >>= xImageMap; - - if( !xImageMap.is() || !SvUnoImageMap_fillImageMap( xImageMap, aImageMap ) ) - throw lang::IllegalArgumentException(); - - SdIMapInfo* pIMapInfo = pDoc->GetIMapInfo(pObj); - if( pIMapInfo ) - { - // replace existing image map - pIMapInfo->SetImageMap( aImageMap ); - } - else - { - // insert new user data with image map - pObj->InsertUserData(new SdIMapInfo(aImageMap) ); - } - } - } - } - } - } - else - { - uno::Any aAny( aValue ); - - if( aPropertyName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( sUNO_shape_layername ) ) ) - { - OUString aName; - if( aAny >>= aName ) - { - aName = SdLayer::convertToInternalName( aName ); - aAny <<= aName; - } - } - - mpShape->_setPropertyValue(aPropertyName, aAny); - } - - if( mpModel ) - mpModel->SetModified(); -} - -::com::sun::star::uno::Any SAL_CALL SdXShape::getPropertyValue( const ::rtl::OUString& PropertyName ) - throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - uno::Any aRet; - - const SfxItemPropertySimpleEntry* pEntry = mpPropSet->getPropertyMapEntry(PropertyName); - - if( pEntry && mpShape->GetSdrObject() ) - { - SdAnimationInfo* pInfo = GetAnimationInfo(sal_False); - - switch(pEntry->nWID) - { - case WID_NAVORDER: - { - const sal_uInt32 nNavOrder = mpShape->GetSdrObject()->GetNavigationPosition(); - aRet <<= nNavOrder == SAL_MAX_UINT32 ? static_cast<sal_Int32>(-1) : static_cast< sal_Int32 >(nNavOrder); - } - break; - case WID_EFFECT: - aRet <<= EffectMigration::GetAnimationEffect( mpShape ); - break; - case WID_TEXTEFFECT: - aRet <<= EffectMigration::GetTextAnimationEffect( mpShape ); - break; - case WID_ISPRESOBJ: - aRet <<= (sal_Bool)IsPresObj(); - break; - case WID_ISEMPTYPRESOBJ: - aRet <<= (sal_Bool)IsEmptyPresObj(); - break; - case WID_MASTERDEPEND: - aRet <<= (sal_Bool)IsMasterDepend(); - break; - case WID_SPEED: - aRet <<= EffectMigration::GetAnimationSpeed( mpShape ); - break; - case WID_ISANIMATION: - aRet <<= (sal_Bool)( pInfo && pInfo->mbIsMovie); - break; - case WID_PLACEHOLDERTEXT: - aRet <<= GetPlaceholderText(); - break; - case WID_BOOKMARK: - { - OUString aString; - if( pInfo ) - { - SdDrawDocument* pDoc = mpModel?mpModel->GetDoc():NULL; - // is the bookmark a page? - sal_Bool bIsMasterPage; - if(pDoc->GetPageByName( pInfo->GetBookmark(), bIsMasterPage ) != SDRPAGE_NOTFOUND) - { - aString = SdDrawPage::getPageApiNameFromUiName( pInfo->GetBookmark() ); - } - else - { - aString = pInfo->GetBookmark() ; - sal_Int32 nPos = aString.lastIndexOf( sal_Unicode('#') ); - if( nPos >= 0 ) - { - OUString aURL( aString.copy( 0, nPos+1 ) ); - OUString aName( aString.copy( nPos+1 ) ); - if(pDoc->GetPageByName( aName, bIsMasterPage ) != SDRPAGE_NOTFOUND) - { - aURL += SdDrawPage::getPageApiNameFromUiName( aName ); - aString = aURL; - } - } - } - } - - aRet <<= aString; - break; - } - case WID_CLICKACTION: - aRet = ::cppu::enum2any< presentation::ClickAction >( pInfo?pInfo->meClickAction:presentation::ClickAction_NONE ); - break; - case WID_PLAYFULL: - aRet <<= (sal_Bool)( pInfo && pInfo->mbPlayFull ); - break; - case WID_SOUNDFILE: - aRet <<= EffectMigration::GetSoundFile( mpShape ); - break; - case WID_SOUNDON: - aRet <<= EffectMigration::GetSoundOn( mpShape ); - break; - case WID_BLUESCREEN: - aRet <<= (sal_Int32)( pInfo?pInfo->maBlueScreen.GetColor():0x00ffffff ); - break; - case WID_VERB: - aRet <<= (sal_Int32)( pInfo?pInfo->mnVerb:0 ); - break; - case WID_DIMCOLOR: - aRet <<= EffectMigration::GetDimColor( mpShape ); - break; - case WID_DIMHIDE: - aRet <<= EffectMigration::GetDimHide( mpShape ); - break; - case WID_DIMPREV: - aRet <<= EffectMigration::GetDimPrevious( mpShape ); - break; - case WID_PRESORDER: - aRet <<= EffectMigration::GetPresentationOrder( mpShape ); - break; - case WID_STYLE: - aRet = GetStyleSheet(); - break; - case WID_ANIMPATH: - if( pInfo && pInfo->mpPathObj ) - aRet <<= pInfo->mpPathObj->getUnoShape(); - break; - case WID_IMAGEMAP: - { - uno::Reference< uno::XInterface > xImageMap; - - SdDrawDocument* pDoc = mpModel?mpModel->GetDoc():NULL; - if( pDoc ) - { - - SdIMapInfo* pIMapInfo = pDoc->GetIMapInfo(mpShape->GetSdrObject()); - if( pIMapInfo ) - { - const ImageMap& rIMap = pIMapInfo->GetImageMap(); - xImageMap = SvUnoImageMap_createInstance( rIMap, ImplGetSupportedMacroItems() ); - } - else - { - xImageMap = SvUnoImageMap_createInstance(ImplGetSupportedMacroItems() ); - } - } - - aRet <<= uno::Reference< container::XIndexContainer >::query( xImageMap ); - break; - } - } - } - else - { - aRet = mpShape->_getPropertyValue(PropertyName); - - if( PropertyName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( sUNO_shape_layername ) ) ) - { - OUString aName; - if( aRet >>= aName ) - { - aName = SdLayer::convertToExternalName( aName ); - aRet <<= aName; - } - } - } - - return aRet; -} - -/** */ -SdAnimationInfo* SdXShape::GetAnimationInfo( sal_Bool bCreate ) const throw() -{ - SdAnimationInfo* pInfo = NULL; - - SdrObject* pObj = mpShape->GetSdrObject(); - if(pObj) - pInfo = SdDrawDocument::GetShapeUserData(*pObj, bCreate ? true : false); - - return pInfo; -} - -uno::Sequence< ::rtl::OUString > SAL_CALL SdXShape::getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException) -{ - uno::Sequence< OUString > aSeq( mpShape->_getSupportedServiceNames() ); - - comphelper::ServiceInfoHelper::addToSequence( aSeq, 2, "com.sun.star.presentation.Shape", - "com.sun.star.document.LinkTarget" ); - - SdrObject* pObj = mpShape->GetSdrObject(); - if(pObj && pObj->GetObjInventor() == SdrInventor ) - { - sal_uInt32 nInventor = pObj->GetObjIdentifier(); - switch( nInventor ) - { - case OBJ_TITLETEXT: - comphelper::ServiceInfoHelper::addToSequence( aSeq, 1, "com.sun.star.presentation.TitleTextShape" ); - break; - case OBJ_OUTLINETEXT: - comphelper::ServiceInfoHelper::addToSequence( aSeq, 1, "com.sun.star.presentation.OutlinerShape" ); - break; - } - } - return aSeq; -} - -/** checks if this is a presentation object - */ -sal_Bool SdXShape::IsPresObj() const throw() -{ - SdrObject* pObj = mpShape->GetSdrObject(); - if(pObj) - { - SdPage* pPage = PTR_CAST(SdPage,pObj->GetPage()); - if(pPage) - return pPage->GetPresObjKind(pObj) != PRESOBJ_NONE; - } - return sal_False; -} - -/** checks if this presentation object is empty - */ -sal_Bool SdXShape::IsEmptyPresObj() const throw() -{ - SdrObject* pObj = mpShape->GetSdrObject(); - if( (pObj != NULL) && pObj->IsEmptyPresObj() ) - { - // check if the object is in edit, than its temporarely not empty - SdrTextObj* pTextObj = dynamic_cast< SdrTextObj* >( pObj ); - if( pTextObj == 0 ) - return sal_True; - - OutlinerParaObject* pParaObj = pTextObj->GetEditOutlinerParaObject(); - if( pParaObj ) - { - delete pParaObj; - } - else - { - return sal_True; - } - } - - return sal_False; -} - -OUString SdXShape::GetPlaceholderText() const -{ - // only possible if this actually *is* a presentation object - if( !IsPresObj() ) - return OUString(); - - SdrObject* pObj = mpShape->GetSdrObject(); - if( pObj == NULL ) - return OUString(); - - SdPage* pPage = PTR_CAST(SdPage,pObj->GetPage()); - DBG_ASSERT( pPage, "no page?" ); - if( pPage == NULL ) - return OUString(); - - return pPage->GetPresObjText( pPage->GetPresObjKind(pObj) ); - } - -/** sets/reset the empty status of a presentation object -*/ -void SdXShape::SetEmptyPresObj( sal_Bool bEmpty ) throw() -{ - // only possible if this actually *is* a presentation object - if( !IsPresObj() ) - return; - - SdrObject* pObj = mpShape->GetSdrObject(); - if( pObj == NULL ) - return; - - if( pObj->IsEmptyPresObj() != bEmpty ) - { - if(!bEmpty) - { - OutlinerParaObject* pOutlinerParaObject = pObj->GetOutlinerParaObject(); - const sal_Bool bVertical = pOutlinerParaObject ? pOutlinerParaObject->IsVertical() : sal_False; - - // really delete SdrOutlinerObj at pObj - pObj->NbcSetOutlinerParaObject(0L); - if( bVertical && PTR_CAST( SdrTextObj, pObj ) ) - ((SdrTextObj*)pObj)->SetVerticalWriting( sal_True ); - - SdrGrafObj* pGraphicObj = PTR_CAST( SdrGrafObj, pObj ); - if( pGraphicObj ) - { - Graphic aEmpty; - pGraphicObj->SetGraphic(aEmpty); - } - else - { - SdrOle2Obj* pOleObj = PTR_CAST( SdrOle2Obj, pObj ); - if( pOleObj ) - { - pOleObj->SetGraphic( NULL ); - } - } - } - else - { - // now set an empty OutlinerParaObject at pObj without - // any content but with the style of the old OutlinerParaObjects - // first paragraph - do - { - SdDrawDocument* pDoc = mpModel?mpModel->GetDoc():NULL; - DBG_ASSERT( pDoc, "no document?" ); - if( pDoc == NULL) - break; - - ::sd::Outliner* pOutliner = pDoc->GetInternalOutliner(); - DBG_ASSERT( pOutliner, "no outliner?" ); - if( pOutliner == NULL ) - break; - - SdPage* pPage = PTR_CAST(SdPage,pObj->GetPage()); - DBG_ASSERT( pPage, "no page?" ); - if( pPage == NULL ) - break; - - OutlinerParaObject* pOutlinerParaObject = pObj->GetOutlinerParaObject(); - pOutliner->SetText( *pOutlinerParaObject ); - const sal_Bool bVertical = pOutliner->IsVertical(); - - pOutliner->Clear(); - pOutliner->SetVertical( bVertical ); - pOutliner->SetStyleSheetPool( (SfxStyleSheetPool*)pDoc->GetStyleSheetPool() ); - pOutliner->SetStyleSheet( 0, pPage->GetTextStyleSheetForObject( pObj ) ); - pOutliner->Insert( pPage->GetPresObjText( pPage->GetPresObjKind(pObj) ) ); - pObj->SetOutlinerParaObject( pOutliner->CreateParaObject() ); - pOutliner->Clear(); - } - while(0); - } - - pObj->SetEmptyPresObj(bEmpty); - } -} - -sal_Bool SdXShape::IsMasterDepend() const throw() -{ - SdrObject* pObj = mpShape->GetSdrObject(); - return pObj && pObj->GetUserCall() != NULL; -} - -void SdXShape::SetMasterDepend( sal_Bool bDepend ) throw() -{ - if( IsMasterDepend() != bDepend ) - { - SdrObject* pObj = mpShape->GetSdrObject(); - if( pObj ) - { - if( bDepend ) - { - SdPage* pPage = PTR_CAST(SdPage,pObj->GetPage()); - pObj->SetUserCall( pPage ); - } - else - { - pObj->SetUserCall( NULL ); - } - } - } -} - -void SdXShape::SetStyleSheet( const uno::Any& rAny ) throw( lang::IllegalArgumentException ) -{ - SdrObject* pObj = mpShape->GetSdrObject(); - if( pObj == NULL ) - throw beans::UnknownPropertyException(); - - uno::Reference< style::XStyle > xStyle( rAny, uno::UNO_QUERY ); - SfxStyleSheet* pStyleSheet = SfxUnoStyleSheet::getUnoStyleSheet( xStyle ); - - const SfxStyleSheet* pOldStyleSheet = pObj->GetStyleSheet(); - if( pOldStyleSheet != pStyleSheet ) - { - if( pStyleSheet == 0 || (pStyleSheet->GetFamily() != SD_STYLE_FAMILY_GRAPHICS && pStyleSheet->GetFamily() != SD_STYLE_FAMILY_MASTERPAGE) ) - throw lang::IllegalArgumentException(); - - pObj->SetStyleSheet( pStyleSheet, sal_False ); - - SdDrawDocument* pDoc = mpModel? mpModel->GetDoc() : NULL; - if( pDoc ) - { - ::sd::DrawDocShell* pDocSh = pDoc->GetDocSh(); - ::sd::ViewShell* pViewSh = pDocSh ? pDocSh->GetViewShell() : NULL; - - if( pViewSh ) - pViewSh->GetViewFrame()->GetBindings().Invalidate( SID_STYLE_FAMILY2 ); - } - } -} - -uno::Any SdXShape::GetStyleSheet() const throw( beans::UnknownPropertyException ) -{ - SdrObject* pObj = mpShape->GetSdrObject(); - if( pObj == NULL ) - throw beans::UnknownPropertyException(); - - SfxStyleSheet* pStyleSheet = pObj->GetStyleSheet(); - // it is possible for shapes inside a draw to have a presentation style - // but we don't want this for the api - if( (pStyleSheet == NULL) || ((pStyleSheet->GetFamily() != SD_STYLE_FAMILY_GRAPHICS) && !mpModel->IsImpressDocument()) ) - return Any(); - - return Any( uno::Reference< style::XStyle >( dynamic_cast< SfxUnoStyleSheet* >( pStyleSheet ) ) ); -} - -class SdUnoEventsAccess : public cppu::WeakImplHelper2< com::sun::star::container::XNameReplace, com::sun::star::lang::XServiceInfo > -{ -private: - const OUString maStrOnClick; - const OUString maStrServiceName; - const OUString maStrEventType; - const OUString maStrPresentation; - const OUString maStrLibrary; - const OUString maStrMacroName; - const OUString maStrClickAction; - const OUString maStrBookmark; - const OUString maStrEffect; - const OUString maStrPlayFull; - const OUString maStrVerb; - const OUString maStrSoundURL; - const OUString maStrSpeed; - const OUString maStrStarBasic; - const OUString maStrScript; - - SdXShape* mpShape; - uno::Reference< document::XEventsSupplier > mxShape; - -public: - SdUnoEventsAccess( SdXShape* pShape ) throw(); - - // XNameReplace - virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName, const ::com::sun::star::uno::Any& aElement ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - - // XNameAccess - virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames( ) throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw(::com::sun::star::uno::RuntimeException); - - // XElementAccess - virtual ::com::sun::star::uno::Type SAL_CALL getElementType( ) throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL hasElements( ) throw(::com::sun::star::uno::RuntimeException); - - // XServiceInfo - virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException); -}; - -// XEventsSupplier -uno::Reference< container::XNameReplace > SAL_CALL SdXShape::getEvents( ) throw(::com::sun::star::uno::RuntimeException) -{ - return new SdUnoEventsAccess( this ); -} - -SdUnoEventsAccess::SdUnoEventsAccess( SdXShape* pShape ) throw() -: maStrOnClick( RTL_CONSTASCII_USTRINGPARAM("OnClick") ), - maStrServiceName( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.documents.Events") ), - maStrEventType( RTL_CONSTASCII_USTRINGPARAM("EventType") ), - maStrPresentation( RTL_CONSTASCII_USTRINGPARAM("Presentation") ), - maStrLibrary(RTL_CONSTASCII_USTRINGPARAM("Library")), - maStrMacroName(RTL_CONSTASCII_USTRINGPARAM("MacroName")), - maStrClickAction( RTL_CONSTASCII_USTRINGPARAM("ClickAction") ), - maStrBookmark( RTL_CONSTASCII_USTRINGPARAM("Bookmark") ), - maStrEffect( RTL_CONSTASCII_USTRINGPARAM("Effect") ), - maStrPlayFull( RTL_CONSTASCII_USTRINGPARAM("PlayFull") ), - maStrVerb( RTL_CONSTASCII_USTRINGPARAM("Verb") ), - maStrSoundURL( RTL_CONSTASCII_USTRINGPARAM("SoundURL") ), - maStrSpeed( RTL_CONSTASCII_USTRINGPARAM("Speed") ), - maStrStarBasic( RTL_CONSTASCII_USTRINGPARAM("StarBasic") ), - maStrScript( RTL_CONSTASCII_USTRINGPARAM("Script") ), - mpShape( pShape ), mxShape( pShape ) -{ -} - -#define FOUND_CLICKACTION 0x0001 -#define FOUND_BOOKMARK 0x0002 -#define FOUND_EFFECT 0x0004 -#define FOUND_PLAYFULL 0x0008 -#define FOUND_VERB 0x0010 -#define FOUND_SOUNDURL 0x0020 -#define FOUND_SPEED 0x0040 -#define FOUND_EVENTTYPE 0x0080 -#define FOUND_MACRO 0x0100 -#define FOUND_LIBRARY 0x0200 - -static void clearEventsInAnimationInfo( SdAnimationInfo* pInfo ) -{ - const String aEmpty; - pInfo->SetBookmark( aEmpty ); - pInfo->mbSecondSoundOn = sal_False; - pInfo->mbSecondPlayFull = sal_False; - pInfo->meClickAction = presentation::ClickAction_NONE; - pInfo->meSecondEffect = presentation::AnimationEffect_NONE; - pInfo->meSecondSpeed = presentation::AnimationSpeed_MEDIUM; - pInfo->mnVerb = 0; -} - -// XNameReplace -void SAL_CALL SdUnoEventsAccess::replaceByName( const OUString& aName, const uno::Any& aElement ) - throw(lang::IllegalArgumentException, container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) -{ - if( mpShape == NULL || aName != maStrOnClick ) - throw container::NoSuchElementException(); - - uno::Sequence< beans::PropertyValue > aProperties; - if( !aElement.hasValue() || aElement.getValueType() != getElementType() || !(aElement >>= aProperties) ) - throw lang::IllegalArgumentException(); - - sal_Int32 nFound = 0; - const beans::PropertyValue* pProperties = aProperties.getConstArray(); - - OUString aStrEventType; - presentation::ClickAction eClickAction = presentation::ClickAction_NONE; - presentation::AnimationEffect eEffect = presentation::AnimationEffect_NONE; - presentation::AnimationSpeed eSpeed = presentation::AnimationSpeed_MEDIUM; - OUString aStrSoundURL; - sal_Bool bPlayFull = sal_False; - sal_Int32 nVerb = 0; - OUString aStrMacro; - OUString aStrLibrary; - OUString aStrBookmark; - - const sal_Int32 nCount = aProperties.getLength(); - sal_Int32 nIndex; - for( nIndex = 0; nIndex < nCount; nIndex++, pProperties++ ) - { - if( ( ( nFound & FOUND_EVENTTYPE ) == 0 ) && pProperties->Name == maStrEventType ) - { - if( pProperties->Value >>= aStrEventType ) - { - nFound |= FOUND_EVENTTYPE; - continue; - } - } - else if( ( ( nFound & FOUND_CLICKACTION ) == 0 ) && pProperties->Name == maStrClickAction ) - { - if( pProperties->Value >>= eClickAction ) - { - nFound |= FOUND_CLICKACTION; - continue; - } - } - else if( ( ( nFound & FOUND_MACRO ) == 0 ) && ( pProperties->Name == maStrMacroName || pProperties->Name == maStrScript ) ) - { - if( pProperties->Value >>= aStrMacro ) - { - nFound |= FOUND_MACRO; - continue; - } - } - else if( ( ( nFound & FOUND_LIBRARY ) == 0 ) && pProperties->Name == maStrLibrary ) - { - if( pProperties->Value >>= aStrLibrary ) - { - nFound |= FOUND_LIBRARY; - continue; - } - } - else if( ( ( nFound & FOUND_EFFECT ) == 0 ) && pProperties->Name == maStrEffect ) - { - if( pProperties->Value >>= eEffect ) - { - nFound |= FOUND_EFFECT; - continue; - } - } - else if( ( ( nFound & FOUND_BOOKMARK ) == 0 ) && pProperties->Name == maStrBookmark ) - { - if( pProperties->Value >>= aStrBookmark ) - { - nFound |= FOUND_BOOKMARK; - continue; - } - } - else if( ( ( nFound & FOUND_SPEED ) == 0 ) && pProperties->Name == maStrSpeed ) - { - if( pProperties->Value >>= eSpeed ) - { - nFound |= FOUND_SPEED; - continue; - } - } - else if( ( ( nFound & FOUND_SOUNDURL ) == 0 ) && pProperties->Name == maStrSoundURL ) - { - if( pProperties->Value >>= aStrSoundURL ) - { - nFound |= FOUND_SOUNDURL; - continue; - } - } - else if( ( ( nFound & FOUND_PLAYFULL ) == 0 ) && pProperties->Name == maStrPlayFull ) - { - if( pProperties->Value >>= bPlayFull ) - { - nFound |= FOUND_PLAYFULL; - continue; - } - } - else if( ( ( nFound & FOUND_VERB ) == 0 ) && pProperties->Name == maStrVerb ) - { - if( pProperties->Value >>= nVerb ) - { - nFound |= FOUND_VERB; - continue; - } - } - - throw lang::IllegalArgumentException(); - } - - sal_Bool bOk = sal_False; - do - { - if( ( nFound & FOUND_EVENTTYPE ) == 0 ) - break; - - if( aStrEventType == maStrPresentation ) - { - if( ( nFound & FOUND_CLICKACTION ) == 0 ) - break; - - SdAnimationInfo* pInfo = mpShape->GetAnimationInfo( sal_False ); - if( presentation::ClickAction_NONE == eClickAction && NULL == pInfo ) - { - bOk = sal_True; - break; - } - - if( NULL == pInfo ) - pInfo = mpShape->GetAnimationInfo( sal_True ); - - DBG_ASSERT( pInfo, "shape animation info could not be created!" ); - if( NULL == pInfo ) - break; - - clearEventsInAnimationInfo( pInfo ); - pInfo->meClickAction = eClickAction; - - switch( eClickAction ) - { - case presentation::ClickAction_NONE: - case presentation::ClickAction_PREVPAGE: - case presentation::ClickAction_NEXTPAGE: - case presentation::ClickAction_FIRSTPAGE: - case presentation::ClickAction_LASTPAGE: - case presentation::ClickAction_INVISIBLE: - case presentation::ClickAction_STOPPRESENTATION: - { - bOk = sal_True; - } - break; - - case presentation::ClickAction_PROGRAM: - case presentation::ClickAction_BOOKMARK: - case presentation::ClickAction_DOCUMENT: - if( nFound & FOUND_BOOKMARK ) - { - if( eClickAction == presentation::ClickAction_BOOKMARK ) - { - aStrBookmark = getUiNameFromPageApiNameImpl( aStrBookmark ); - } - else if( eClickAction == presentation::ClickAction_DOCUMENT ) - { - sal_Int32 nPos = aStrBookmark.lastIndexOf( sal_Unicode('#') ); - if( nPos >= 0 ) - { - OUString aURL( aStrBookmark.copy( 0, nPos+1 ) ); - aURL += getUiNameFromPageApiNameImpl( aStrBookmark.copy( nPos+1 ) ); - aStrBookmark = aURL; - } - } - - pInfo->SetBookmark( aStrBookmark ); - bOk = sal_True; - } - break; - - case presentation::ClickAction_MACRO: - if( nFound & FOUND_MACRO ) - { - pInfo->SetBookmark( aStrMacro ); - bOk = sal_True; - } - break; - - case presentation::ClickAction_VERB: - if( nFound & FOUND_VERB ) - { - pInfo->mnVerb = (sal_uInt16)nVerb; - bOk = sal_True; - } - break; - - case presentation::ClickAction_VANISH: - if( ( nFound & FOUND_EFFECT ) == 0 ) - break; - - pInfo->meSecondEffect = eEffect; - pInfo->meSecondSpeed = nFound & FOUND_SPEED ? eSpeed : presentation::AnimationSpeed_MEDIUM; - - bOk = sal_True; - - // NOTE: No break here!!! - - case presentation::ClickAction_SOUND: - if( nFound & FOUND_SOUNDURL ) - { - pInfo->SetBookmark( aStrSoundURL ); - if( eClickAction != presentation::ClickAction_SOUND ) - pInfo->mbSecondSoundOn = aStrSoundURL.getLength() != 0; - pInfo->mbSecondPlayFull = nFound & FOUND_PLAYFULL ? bPlayFull : sal_False; - - bOk = sal_True; - } - break; - case presentation::ClickAction_MAKE_FIXED_SIZE: - break; - } - } - else - { - SdAnimationInfo* pInfo = mpShape->GetAnimationInfo( sal_True ); - - DBG_ASSERT( pInfo, "shape animation info could not be created!" ); - if( NULL == pInfo ) - break; - - clearEventsInAnimationInfo( pInfo ); - pInfo->meClickAction = presentation::ClickAction_MACRO; - - if ( SfxApplication::IsXScriptURL( aStrMacro ) ) - { - pInfo->SetBookmark( aStrMacro ); - } - else - { - String aMacro = aStrMacro; - - String aLibName = aMacro.GetToken(0, sal_Unicode('.')); - String aModulName = aMacro.GetToken(1, sal_Unicode('.')); - String aMacroName = aMacro.GetToken(2, sal_Unicode('.')); - - OUStringBuffer sBuffer; - sBuffer.append( aMacroName ); - sBuffer.append( sal_Unicode('.') ); - sBuffer.append( aModulName ); - sBuffer.append( sal_Unicode('.') ); - sBuffer.append( aLibName ); - sBuffer.append( sal_Unicode('.') ); - - if( aStrLibrary.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "StarOffice" ) ) ) - { - sBuffer.append( OUString( RTL_CONSTASCII_USTRINGPARAM( "BASIC" ) ) ); - } - else - { - sBuffer.append( aStrLibrary ); - } - - pInfo->SetBookmark( sBuffer.makeStringAndClear() ); - } - bOk = sal_True; - } - } - while(0); - - if( !bOk ) - throw lang::IllegalArgumentException(); -} - -// XNameAccess -uno::Any SAL_CALL SdUnoEventsAccess::getByName( const OUString& aName ) - throw(container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) -{ - if( mpShape == NULL || aName != maStrOnClick ) - throw container::NoSuchElementException(); - - SdAnimationInfo* pInfo = mpShape->GetAnimationInfo( sal_False ); - - presentation::ClickAction eClickAction = presentation::ClickAction_NONE; - if( pInfo ) - eClickAction = pInfo->meClickAction; - - sal_Int32 nPropertyCount = 2; - switch( eClickAction ) - { - case presentation::ClickAction_NONE: - case presentation::ClickAction_PREVPAGE: - case presentation::ClickAction_NEXTPAGE: - case presentation::ClickAction_FIRSTPAGE: - case presentation::ClickAction_LASTPAGE: - case presentation::ClickAction_INVISIBLE: - case presentation::ClickAction_STOPPRESENTATION: - break; - case presentation::ClickAction_PROGRAM: - case presentation::ClickAction_VERB: - case presentation::ClickAction_BOOKMARK: - case presentation::ClickAction_DOCUMENT: - case presentation::ClickAction_MACRO: - if ( !SfxApplication::IsXScriptURL( pInfo->GetBookmark() ) ) - nPropertyCount += 1; - break; - - case presentation::ClickAction_SOUND: - nPropertyCount += 2; - break; - - case presentation::ClickAction_VANISH: - nPropertyCount += 4; - break; - default: - break; - } - - uno::Sequence< beans::PropertyValue > aProperties( nPropertyCount ); - beans::PropertyValue* pProperties = aProperties.getArray(); - - uno::Any aAny; - - if( eClickAction == presentation::ClickAction_MACRO ) - { - if ( SfxApplication::IsXScriptURL( pInfo->GetBookmark() ) ) - { - // Scripting Framework URL - aAny <<= maStrScript;; - pProperties->Name = maStrEventType; - pProperties->Handle = -1; - pProperties->Value = aAny; - pProperties->State = beans::PropertyState_DIRECT_VALUE; - pProperties++; - - aAny <<= OUString( pInfo->GetBookmark() ); - pProperties->Name = maStrScript; - pProperties->Handle = -1; - pProperties->Value = aAny; - pProperties->State = beans::PropertyState_DIRECT_VALUE; - pProperties++; - } - else - { - // Old Basic macro URL - aAny <<= maStrStarBasic;; - pProperties->Name = maStrEventType; - pProperties->Handle = -1; - pProperties->Value = aAny; - pProperties->State = beans::PropertyState_DIRECT_VALUE; - pProperties++; - - String aMacro = pInfo->GetBookmark(); - - // aMacro has got following format: - // "Macroname.Modulname.Libname.Documentname" or - // "Macroname.Modulname.Libname.Applicationsname" - String aMacroName = aMacro.GetToken(0, sal_Unicode('.')); - String aModulName = aMacro.GetToken(1, sal_Unicode('.')); - String aLibName = aMacro.GetToken(2, sal_Unicode('.')); - String aDocName = aMacro.GetToken(3, sal_Unicode('.')); - - OUStringBuffer sBuffer; - sBuffer.append( aLibName ); - sBuffer.append( sal_Unicode('.') ); - sBuffer.append( aModulName ); - sBuffer.append( sal_Unicode('.') ); - sBuffer.append( aMacroName ); - - aAny <<= OUString( sBuffer.makeStringAndClear() ); - pProperties->Name = maStrMacroName; - pProperties->Handle = -1; - pProperties->Value = aAny; - pProperties->State = beans::PropertyState_DIRECT_VALUE; - pProperties++; - - aAny <<= OUString( RTL_CONSTASCII_USTRINGPARAM( "StarOffice" ) ); - pProperties->Name = maStrLibrary; - pProperties->Handle = -1; - pProperties->Value = aAny; - pProperties->State = beans::PropertyState_DIRECT_VALUE; - } - } - else - { - aAny <<= maStrPresentation; - pProperties->Name = maStrEventType; - pProperties->Handle = -1; - pProperties->Value = aAny; - pProperties->State = beans::PropertyState_DIRECT_VALUE; - pProperties++; - - aAny <<= eClickAction; - pProperties->Name = maStrClickAction; - pProperties->Handle = -1; - pProperties->Value = aAny; - pProperties->State = beans::PropertyState_DIRECT_VALUE; - pProperties++; - - switch( eClickAction ) - { - case presentation::ClickAction_NONE: - case presentation::ClickAction_PREVPAGE: - case presentation::ClickAction_NEXTPAGE: - case presentation::ClickAction_FIRSTPAGE: - case presentation::ClickAction_LASTPAGE: - case presentation::ClickAction_INVISIBLE: - case presentation::ClickAction_STOPPRESENTATION: - break; - case presentation::ClickAction_BOOKMARK: - { - const OUString aStrBookmark( getPageApiNameFromUiName( pInfo->GetBookmark()) ); - pProperties->Name = maStrBookmark; - pProperties->Handle = -1; - pProperties->Value <<= aStrBookmark; - pProperties->State = beans::PropertyState_DIRECT_VALUE; - } - break; - - case presentation::ClickAction_DOCUMENT: - case presentation::ClickAction_PROGRAM: - { - OUString aString( pInfo->GetBookmark()); - sal_Int32 nPos = aString.lastIndexOf( sal_Unicode('#') ); - if( nPos >= 0 ) - { - OUString aURL( aString.copy( 0, nPos+1 ) ); - aURL += getPageApiNameFromUiName( aString.copy( nPos+1 ) ); - aString = aURL; - } - pProperties->Name = maStrBookmark; - pProperties->Handle = -1; - pProperties->Value <<= aString; - pProperties->State = beans::PropertyState_DIRECT_VALUE; - } - break; - - case presentation::ClickAction_VANISH: - aAny <<= pInfo->meSecondEffect; - pProperties->Name = maStrEffect; - pProperties->Handle = -1; - pProperties->Value = aAny; - pProperties->State = beans::PropertyState_DIRECT_VALUE; - pProperties++; - - aAny <<= pInfo->meSecondSpeed; - pProperties->Name = maStrSpeed; - pProperties->Handle = -1; - pProperties->Value = aAny; - pProperties->State = beans::PropertyState_DIRECT_VALUE; - pProperties++; - - // NOTE: no break here!!! - - case presentation::ClickAction_SOUND: - if( eClickAction == presentation::ClickAction_SOUND || pInfo->mbSecondSoundOn ) - { - aAny <<= OUString( pInfo->GetBookmark()); - pProperties->Name = maStrSoundURL; - pProperties->Handle = -1; - pProperties->Value = aAny; - pProperties->State = beans::PropertyState_DIRECT_VALUE; - pProperties++; - - pProperties->Name = maStrPlayFull; - pProperties->Handle = -1; - pProperties->Value = ::cppu::bool2any(pInfo->mbSecondPlayFull); - pProperties->State = beans::PropertyState_DIRECT_VALUE; - } - break; - - case presentation::ClickAction_VERB: - aAny <<= (sal_Int32)pInfo->mnVerb; - pProperties->Name = maStrVerb; - pProperties->Handle = -1; - pProperties->Value = aAny; - pProperties->State = beans::PropertyState_DIRECT_VALUE; - break; - default: - break; - } - } - - aAny <<= aProperties; - return aAny; -} - -uno::Sequence< OUString > SAL_CALL SdUnoEventsAccess::getElementNames( ) - throw(uno::RuntimeException) -{ - uno::Sequence< OUString > aStr( &maStrOnClick, 1 ); - return aStr; -} - -sal_Bool SAL_CALL SdUnoEventsAccess::hasByName( const OUString& aName ) - throw(uno::RuntimeException) -{ - return aName == maStrOnClick; -} - -// XElementAccess -uno::Type SAL_CALL SdUnoEventsAccess::getElementType( ) - throw(uno::RuntimeException) -{ - return *SEQTYPE(::getCppuType((const uno::Sequence< beans::PropertyValue >*)0)); -} - -sal_Bool SAL_CALL SdUnoEventsAccess::hasElements( ) throw(uno::RuntimeException) -{ - return sal_True; -} - -// XServiceInfo -OUString SAL_CALL SdUnoEventsAccess::getImplementationName( ) - throw(uno::RuntimeException) -{ - return OUString( RTL_CONSTASCII_USTRINGPARAM( "SdUnoEventsAccess" ) ); -} - -sal_Bool SAL_CALL SdUnoEventsAccess::supportsService( const OUString& ServiceName ) - throw(uno::RuntimeException) -{ - return ServiceName == maStrServiceName; -} - -uno::Sequence< OUString > SAL_CALL SdUnoEventsAccess::getSupportedServiceNames( ) - throw(uno::RuntimeException) -{ - uno::Sequence< OUString > aStr( &maStrServiceName, 1 ); - return aStr; -} - -void SdXShape::modelChanged( SdrModel* pNewModel ) -{ - if( pNewModel ) - { - uno::Reference< uno::XInterface > xModel( pNewModel->getUnoModel() ); - mpModel = SdXImpressDocument::getImplementation( xModel ); - } - else - { - mpModel = 0; - } -} - -void SdXShape::pageChanged( SdrPage* ) -{ -} - -void SdXShape::objectChanged( SdrObject* ) -{ -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unoobj.hxx b/sd/source/ui/unoidl/unoobj.hxx deleted file mode 100644 index 809a98593..000000000 --- a/sd/source/ui/unoidl/unoobj.hxx +++ /dev/null @@ -1,141 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _UNOOBJ_HXX -#define _UNOOBJ_HXX - -#include <com/sun/star/beans/XPropertyState.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/drawing/XShape.hpp> -#include <com/sun/star/document/XEventsSupplier.hpp> -#include <com/sun/star/document/XEventsSupplier.hpp> -#include <com/sun/star/lang/XTypeProvider.hpp> -#include <svx/svdpool.hxx> -#include <svx/unomaster.hxx> - -#include <editeng/unoipset.hxx> - -#include <cppuhelper/implbase2.hxx> - -class SdrObject; -class SdXImpressDocument; -class SdAnimationInfo; - -class SdXShape : public SvxShapeMaster, - public ::com::sun::star::document::XEventsSupplier -{ - friend class SdUnoEventsAccess; - -private: - SvxShape* mpShape; - const SvxItemPropertySet* mpPropSet; - const SfxItemPropertyMapEntry* mpMap; - SdXImpressDocument* mpModel; - - void SetStyleSheet( const ::com::sun::star::uno::Any& rAny ) throw( ::com::sun::star::lang::IllegalArgumentException ); - ::com::sun::star::uno::Any GetStyleSheet() const throw( ::com::sun::star::beans::UnknownPropertyException ); - - // Intern - SdAnimationInfo* GetAnimationInfo( sal_Bool bCreate = sal_False ) const throw(); - sal_Bool IsPresObj() const throw(); - void SetPresObj( sal_Bool bPresObj ) throw(); - - sal_Bool IsEmptyPresObj() const throw(); - void SetEmptyPresObj( sal_Bool bEmpty ) throw(); - - sal_Bool IsMasterDepend() const throw(); - void SetMasterDepend( sal_Bool bDepend ) throw(); - - SdrObject* GetSdrObject() const throw(); - ::rtl::OUString GetPlaceholderText() const; - - com::sun::star::uno::Sequence< sal_Int8 >* mpImplementationId; - -public: - SdXShape(SvxShape* pShape, SdXImpressDocument* pModel) throw(); - virtual ~SdXShape() throw(); - - virtual sal_Bool queryAggregation( const com::sun::star::uno::Type & rType, com::sun::star::uno::Any& aAny ); - virtual void dispose(); - virtual void modelChanged( SdrModel* pNewModel ); - virtual void pageChanged( SdrPage* pNewPage ); - virtual void objectChanged( SdrObject* pNewObj ); - - // XInterface - virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL acquire() throw(); - virtual void SAL_CALL release() throw(); - - // XServiceInfo - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException); - - //XPropertySet - virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - - //XPropertyState - virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault( const ::rtl::OUString& aPropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - - // XTypeProvider - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException); - - // XEventsSupplier - virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameReplace > SAL_CALL getEvents( ) throw(::com::sun::star::uno::RuntimeException); - -private: - void setOldEffect( const com::sun::star::uno::Any& aValue ); - void setOldTextEffect( const com::sun::star::uno::Any& aValue ); - void setOldSpeed( const com::sun::star::uno::Any& aValue ); - void setOldDimColor( const com::sun::star::uno::Any& aValue ); - void setOldDimHide( const com::sun::star::uno::Any& aValue ); - void setOldDimPrevious( const com::sun::star::uno::Any& aValue ); - void setOldPresOrder( const com::sun::star::uno::Any& aValue ); - void updateOldSoundEffect( SdAnimationInfo* pInfo ); - - void getOldEffect( com::sun::star::uno::Any& rValue ) const; - void getOldTextEffect( com::sun::star::uno::Any& rValue ) const; - void getOldSpeed( com::sun::star::uno::Any& rValue ) const; - void getOldSoundFile( com::sun::star::uno::Any& rValue ) const; - void getOldSoundOn( com::sun::star::uno::Any& rValue ) const; - void getOldDimColor( com::sun::star::uno::Any& rValue ) const; - void getOldDimHide( com::sun::star::uno::Any& rValue ) const; - void getOldDimPrev( com::sun::star::uno::Any& rValue ) const; - void getOldPresOrder( com::sun::star::uno::Any& rValue ) const; -}; - -struct SvEventDescription; -const SvEventDescription* ImplGetSupportedMacroItems(); - -#endif - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unopage.cxx b/sd/source/ui/unoidl/unopage.cxx deleted file mode 100644 index 487401c76..000000000 --- a/sd/source/ui/unoidl/unopage.cxx +++ /dev/null @@ -1,3145 +0,0 @@ - /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" -#include <com/sun/star/lang/DisposedException.hpp> -#include <com/sun/star/presentation/ClickAction.hpp> -#include <com/sun/star/presentation/FadeEffect.hpp> -#include <com/sun/star/presentation/AnimationEffect.hpp> -#include <com/sun/star/presentation/PresentationRange.hpp> -#include <com/sun/star/presentation/AnimationSpeed.hpp> -#include <com/sun/star/view/PaperOrientation.hpp> -#include <com/sun/star/animations/AnimationNodeType.hpp> -#include <com/sun/star/presentation/EffectNodeType.hpp> -#include <com/sun/star/lang/DisposedException.hpp> -#include <comphelper/processfactory.hxx> -#include <comphelper/servicehelper.hxx> -#include <rtl/ustrbuf.hxx> -#include <vcl/bitmapex.hxx> -#include <vcl/metaact.hxx> -#include <toolkit/unohlp.hxx> -#include <vcl/svapp.hxx> -#include <vcl/settings.hxx> -#include <unomodel.hxx> -#include <unopage.hxx> -#include <svx/svxids.hrc> -#include <svl/itemset.hxx> -#include <svx/svdmodel.hxx> -#include <sdresid.hxx> -#include <glob.hrc> -#include <sdpage.hxx> -#include <unoprnms.hxx> -#include <sdattr.hxx> -#include <drawdoc.hxx> -#include <svx/unoshape.hxx> -#include <com/sun/star/style/XStyle.hpp> -#include <svx/svdorect.hxx> -#include <osl/mutex.hxx> -#include <svl/style.hxx> -#include <rtl/memory.h> -#include <comphelper/serviceinfohelper.hxx> - -#include <comphelper/extract.hxx> -#include <list> -#include <svx/svditer.hxx> -#include <svtools/wmf.hxx> -#include <svx/svdoole2.hxx> -#include <svx/svdpool.hxx> -#include <svx/svdview.hxx> -#include "View.hxx" -#include "DrawDocShell.hxx" -#include "ViewShell.hxx" -#include "DrawViewShell.hxx" -#include "unoobj.hxx" -#include "res_bmp.hrc" -#include "unokywds.hxx" -#include "unopback.hxx" -#include "unohelp.hxx" - -using ::com::sun::star::animations::XAnimationNode; -using ::com::sun::star::animations::XAnimationNodeSupplier; -using ::rtl::OUString; -using ::rtl::OUStringBuffer; - -using namespace ::osl; -using namespace ::com::sun::star; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::lang; -using namespace ::com::sun::star::container; -using namespace ::com::sun::star::drawing; -using namespace ::com::sun::star::office; - -namespace sd { -extern Reference< XAnnotation > createAnnotation( const Reference< XComponentContext >& xContext, SdPage* ); -extern Reference< XAnnotationEnumeration > createAnnotationEnumeration( const sd::AnnotationVector& ); -} - -/* this are the ids for page properties */ -enum WID_PAGE -{ - WID_PAGE_LEFT, WID_PAGE_RIGHT, WID_PAGE_TOP, WID_PAGE_BOTTOM, WID_PAGE_WIDTH, - WID_PAGE_HEIGHT, WID_PAGE_EFFECT, WID_PAGE_CHANGE, WID_PAGE_SPEED, WID_PAGE_NUMBER, - WID_PAGE_ORIENT, WID_PAGE_LAYOUT, WID_PAGE_DURATION, WID_PAGE_LDNAME, WID_PAGE_LDBITMAP, - WID_PAGE_BACK, WID_PAGE_PREVIEW, WID_PAGE_PREVIEWBITMAP, WID_PAGE_VISIBLE, WID_PAGE_SOUNDFILE, WID_PAGE_BACKFULL, - WID_PAGE_BACKVIS, WID_PAGE_BACKOBJVIS, WID_PAGE_USERATTRIBS, WID_PAGE_BOOKMARK, WID_PAGE_ISDARK, - WID_PAGE_HEADERVISIBLE, WID_PAGE_HEADERTEXT, WID_PAGE_FOOTERVISIBLE, WID_PAGE_FOOTERTEXT, - WID_PAGE_PAGENUMBERVISIBLE, WID_PAGE_DATETIMEVISIBLE, WID_PAGE_DATETIMEFIXED, - WID_PAGE_DATETIMETEXT, WID_PAGE_DATETIMEFORMAT, WID_TRANSITION_TYPE, WID_TRANSITION_SUBTYPE, - WID_TRANSITION_DIRECTION, WID_TRANSITION_FADE_COLOR, WID_TRANSITION_DURATION, WID_LOOP_SOUND, - WID_NAVORDER -}; - -#ifndef SEQTYPE - #if defined(__SUNPRO_CC) && (__SUNPRO_CC == 0x500) - #define SEQTYPE(x) (new ::com::sun::star::uno::Type( x )) - #else - #define SEQTYPE(x) &(x) - #endif -#endif - -static sal_Char sEmptyPageName[sizeof("page")] = "page"; - -/** this function stores the property maps for draw pages in impress and draw */ -const SvxItemPropertySet* ImplGetDrawPagePropertySet( sal_Bool bImpress, PageKind ePageKind ) -{ - static const SfxItemPropertyMapEntry aDrawPagePropertyMap_Impl[] = - { - { MAP_CHAR_LEN(UNO_NAME_PAGE_BACKGROUND), WID_PAGE_BACK, &ITYPE( beans::XPropertySet ), beans::PropertyAttribute::MAYBEVOID,0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_BOTTOM), WID_PAGE_BOTTOM, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_LEFT), WID_PAGE_LEFT, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_RIGHT), WID_PAGE_RIGHT, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_TOP), WID_PAGE_TOP, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_CHANGE), WID_PAGE_CHANGE, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_DURATION), WID_PAGE_DURATION, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_EFFECT), WID_PAGE_EFFECT, &::getCppuType((const presentation::FadeEffect*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_HEIGHT), WID_PAGE_HEIGHT, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_LAYOUT), WID_PAGE_LAYOUT, &::getCppuType((const sal_Int16*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYBITMAP), WID_PAGE_LDBITMAP, &ITYPE( awt::XBitmap), beans::PropertyAttribute::READONLY, 0}, - { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYNAME), WID_PAGE_LDNAME, &::getCppuType((const OUString*)0), beans::PropertyAttribute::READONLY, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_NUMBER), WID_PAGE_NUMBER, &::getCppuType((const sal_Int16*)0), beans::PropertyAttribute::READONLY, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_ORIENTATION), WID_PAGE_ORIENT, &::getCppuType((const view::PaperOrientation*)0),0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_SPEED), WID_PAGE_SPEED, &::getCppuType((const presentation::AnimationSpeed*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_WIDTH), WID_PAGE_WIDTH, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_PREVIEW), WID_PAGE_PREVIEW, SEQTYPE(::getCppuType((::com::sun::star::uno::Sequence<sal_Int8>*)0)), ::com::sun::star::beans::PropertyAttribute::READONLY, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_PREVIEWBITMAP), WID_PAGE_PREVIEWBITMAP, SEQTYPE(::getCppuType((::com::sun::star::uno::Sequence<sal_Int8>*)0)), ::com::sun::star::beans::PropertyAttribute::READONLY, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_VISIBLE), WID_PAGE_VISIBLE, &::getBooleanCppuType(), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_OBJ_SOUNDFILE), WID_PAGE_SOUNDFILE, &::getCppuType((const Any*)0), 0, 0}, - { MAP_CHAR_LEN(sUNO_Prop_IsBackgroundVisible), WID_PAGE_BACKVIS, &::getBooleanCppuType(), 0, 0}, - { MAP_CHAR_LEN(sUNO_Prop_IsBackgroundObjectsVisible), WID_PAGE_BACKOBJVIS, &::getBooleanCppuType(), 0, 0}, - { MAP_CHAR_LEN(sUNO_Prop_UserDefinedAttributes),WID_PAGE_USERATTRIBS, &::getCppuType((const Reference< ::com::sun::star::container::XNameContainer >*)0) , 0, 0}, - { MAP_CHAR_LEN(sUNO_Prop_BookmarkURL), WID_PAGE_BOOKMARK, &::getCppuType((const OUString*)0), 0, 0}, - { MAP_CHAR_LEN("IsBackgroundDark" ), WID_PAGE_ISDARK, &::getBooleanCppuType(), beans::PropertyAttribute::READONLY, 0}, - { MAP_CHAR_LEN("IsFooterVisible"), WID_PAGE_FOOTERVISIBLE, &::getBooleanCppuType(), 0, 0}, - { MAP_CHAR_LEN("FooterText"), WID_PAGE_FOOTERTEXT, &::getCppuType((const OUString*)0), 0, 0}, - { MAP_CHAR_LEN("IsPageNumberVisible"), WID_PAGE_PAGENUMBERVISIBLE, &::getBooleanCppuType(), 0, 0}, - { MAP_CHAR_LEN("IsDateTimeVisible"), WID_PAGE_DATETIMEVISIBLE, &::getBooleanCppuType(), 0, 0}, - { MAP_CHAR_LEN("IsDateTimeFixed"), WID_PAGE_DATETIMEFIXED, &::getBooleanCppuType(), 0, 0}, - { MAP_CHAR_LEN("DateTimeText"), WID_PAGE_DATETIMETEXT, &::getCppuType((const OUString*)0), 0, 0}, - { MAP_CHAR_LEN("DateTimeFormat"), WID_PAGE_DATETIMEFORMAT, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN("TransitionType"), WID_TRANSITION_TYPE, &::getCppuType((const sal_Int16*)0), 0, 0}, - { MAP_CHAR_LEN("TransitionSubtype"), WID_TRANSITION_SUBTYPE, &::getCppuType((const sal_Int16*)0), 0, 0}, - { MAP_CHAR_LEN("TransitionDirection"), WID_TRANSITION_DIRECTION, &::getCppuType((const sal_Bool*)0), 0, 0}, - { MAP_CHAR_LEN("TransitionFadeColor"), WID_TRANSITION_FADE_COLOR, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN("TransitionDuration"), WID_TRANSITION_DURATION, &::getCppuType((const double*)0), 0, 0}, - { MAP_CHAR_LEN("LoopSound"), WID_LOOP_SOUND, &::getBooleanCppuType(), 0, 0}, - { MAP_CHAR_LEN("NavigationOrder"), WID_NAVORDER, &::com::sun::star::container::XIndexAccess::static_type(),0, 0}, - {0,0,0,0,0,0} - }; - -#define DRAW_PAGE_NOTES_PROPERTIES \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_BOTTOM), WID_PAGE_BOTTOM, &::getCppuType((const sal_Int32*)0), 0, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_LEFT), WID_PAGE_LEFT, &::getCppuType((const sal_Int32*)0), 0, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_RIGHT), WID_PAGE_RIGHT, &::getCppuType((const sal_Int32*)0), 0, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_TOP), WID_PAGE_TOP, &::getCppuType((const sal_Int32*)0), 0, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_HEIGHT), WID_PAGE_HEIGHT, &::getCppuType((const sal_Int32*)0), 0, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_LAYOUT), WID_PAGE_LAYOUT, &::getCppuType((const sal_Int16*)0), 0, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYBITMAP), WID_PAGE_LDBITMAP, &ITYPE( awt::XBitmap), beans::PropertyAttribute::READONLY, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYNAME), WID_PAGE_LDNAME, &::getCppuType((const OUString*)0), beans::PropertyAttribute::READONLY, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_NUMBER), WID_PAGE_NUMBER, &::getCppuType((const sal_Int16*)0), beans::PropertyAttribute::READONLY, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_ORIENTATION), WID_PAGE_ORIENT, &::getCppuType((const view::PaperOrientation*)0),0, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_WIDTH), WID_PAGE_WIDTH, &::getCppuType((const sal_Int32*)0), 0, 0}, \ - { MAP_CHAR_LEN(sUNO_Prop_UserDefinedAttributes),WID_PAGE_USERATTRIBS, &::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >*)0) , 0, 0},\ - { MAP_CHAR_LEN("IsHeaderVisible"), WID_PAGE_HEADERVISIBLE, &::getBooleanCppuType(), 0, 0}, \ - { MAP_CHAR_LEN("HeaderText"), WID_PAGE_HEADERTEXT, &::getCppuType((const OUString*)0), 0, 0}, \ - { MAP_CHAR_LEN("IsBackgroundDark" ), WID_PAGE_ISDARK, &::getBooleanCppuType(), beans::PropertyAttribute::READONLY, 0}, \ - { MAP_CHAR_LEN("IsFooterVisible"), WID_PAGE_FOOTERVISIBLE, &::getBooleanCppuType(), 0, 0}, \ - { MAP_CHAR_LEN("FooterText"), WID_PAGE_FOOTERTEXT, &::getCppuType((const OUString*)0), 0, 0}, \ - { MAP_CHAR_LEN("IsPageNumberVisible"), WID_PAGE_PAGENUMBERVISIBLE, &::getBooleanCppuType(), 0, 0}, \ - { MAP_CHAR_LEN("IsDateTimeVisible"), WID_PAGE_DATETIMEVISIBLE, &::getBooleanCppuType(), 0, 0}, \ - { MAP_CHAR_LEN("IsDateTimeFixed"), WID_PAGE_DATETIMEFIXED, &::getBooleanCppuType(), 0, 0}, \ - { MAP_CHAR_LEN("DateTimeText"), WID_PAGE_DATETIMETEXT, &::getCppuType((const OUString*)0), 0, 0}, \ - { MAP_CHAR_LEN("DateTimeFormat"), WID_PAGE_DATETIMEFORMAT, &::getCppuType((const sal_Int32*)0), 0, 0}, \ - { MAP_CHAR_LEN("NavigationOrder"), WID_NAVORDER, &::com::sun::star::container::XIndexAccess::static_type(),0, 0}, \ - {0,0,0,0,0,0} - - static const SfxItemPropertyMapEntry aDrawPageNotesHandoutPropertyMap_Impl[] = - { - // this must be the first two entries so they can be excluded for PK_STANDARD - { MAP_CHAR_LEN(UNO_NAME_PAGE_BACKGROUND), WID_PAGE_BACK, &ITYPE( beans::XPropertySet ), beans::PropertyAttribute::MAYBEVOID,0}, - DRAW_PAGE_NOTES_PROPERTIES - }; - static const SfxItemPropertyMapEntry aDrawPageNotesHandoutPropertyNoBackMap_Impl[] = - { - DRAW_PAGE_NOTES_PROPERTIES - }; - -#define GRAPHIC_PAGE_PROPERTIES \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_BOTTOM), WID_PAGE_BOTTOM, &::getCppuType((const sal_Int32*)0), 0, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_LEFT), WID_PAGE_LEFT, &::getCppuType((const sal_Int32*)0), 0, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_RIGHT), WID_PAGE_RIGHT, &::getCppuType((const sal_Int32*)0), 0, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_TOP), WID_PAGE_TOP, &::getCppuType((const sal_Int32*)0), 0, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_HEIGHT), WID_PAGE_HEIGHT, &::getCppuType((const sal_Int32*)0), 0, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYBITMAP), WID_PAGE_LDBITMAP, &ITYPE(awt::XBitmap), beans::PropertyAttribute::READONLY, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYNAME), WID_PAGE_LDNAME, &::getCppuType((const OUString*)0), beans::PropertyAttribute::READONLY, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_NUMBER), WID_PAGE_NUMBER, &::getCppuType((const sal_Int16*)0), beans::PropertyAttribute::READONLY, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_ORIENTATION), WID_PAGE_ORIENT, &::getCppuType((const view::PaperOrientation*)0),0, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_WIDTH), WID_PAGE_WIDTH, &::getCppuType((const sal_Int32*)0), 0, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_PREVIEW), WID_PAGE_PREVIEW, SEQTYPE(::getCppuType((::com::sun::star::uno::Sequence<sal_Int8>*)0)), ::com::sun::star::beans::PropertyAttribute::READONLY, 0}, \ - { MAP_CHAR_LEN(UNO_NAME_PAGE_PREVIEWBITMAP), WID_PAGE_PREVIEWBITMAP, SEQTYPE(::getCppuType((::com::sun::star::uno::Sequence<sal_Int8>*)0)), ::com::sun::star::beans::PropertyAttribute::READONLY, 0},\ - { MAP_CHAR_LEN(sUNO_Prop_UserDefinedAttributes),WID_PAGE_USERATTRIBS, &::getCppuType((const Reference< ::com::sun::star::container::XNameContainer >*)0) , 0, 0}, \ - { MAP_CHAR_LEN(sUNO_Prop_BookmarkURL), WID_PAGE_BOOKMARK, &::getCppuType((const OUString*)0), 0, 0}, \ - { MAP_CHAR_LEN("IsBackgroundDark" ), WID_PAGE_ISDARK, &::getBooleanCppuType(), beans::PropertyAttribute::READONLY, 0}, \ - { MAP_CHAR_LEN("NavigationOrder"), WID_NAVORDER, &::com::sun::star::container::XIndexAccess::static_type(),0, 0}, \ - {0,0,0,0,0,0} - - static const SfxItemPropertyMapEntry aGraphicPagePropertyMap_Impl[] = - { - { MAP_CHAR_LEN(UNO_NAME_PAGE_BACKGROUND), WID_PAGE_BACK, &ITYPE( beans::XPropertySet), beans::PropertyAttribute::MAYBEVOID,0}, - GRAPHIC_PAGE_PROPERTIES - }; - static const SfxItemPropertyMapEntry aGraphicPagePropertyNoBackMap_Impl[] = - { - GRAPHIC_PAGE_PROPERTIES - }; - - bool bWithoutBackground = ePageKind != PK_STANDARD && ePageKind != PK_HANDOUT; - const SvxItemPropertySet* pRet = 0; - if( bImpress ) - { - if( ePageKind == PK_STANDARD ) - { - //PK_STANDARD always has a background property - static SvxItemPropertySet aDrawPagePropertySet_Impl( aDrawPagePropertyMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() ); - pRet = &aDrawPagePropertySet_Impl; - } - else - { - if(bWithoutBackground) - { - static SvxItemPropertySet aDrawPageNotesHandoutPropertyNoBackSet_Impl( aDrawPageNotesHandoutPropertyNoBackMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() ); - pRet = &aDrawPageNotesHandoutPropertyNoBackSet_Impl; - } - else - { - static SvxItemPropertySet aDrawPageNotesHandoutPropertySet_Impl( aDrawPageNotesHandoutPropertyMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() ); - pRet = &aDrawPageNotesHandoutPropertySet_Impl; - } - } - } - else - { - if(bWithoutBackground) - { - static SvxItemPropertySet aGraphicPagePropertyNoBackSet_Impl( aGraphicPagePropertyNoBackMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() ); - pRet = &aGraphicPagePropertyNoBackSet_Impl; - } - else - { - static SvxItemPropertySet aGraphicPagePropertySet_Impl( aGraphicPagePropertyMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() ); - pRet = &aGraphicPagePropertySet_Impl; - } - } - return pRet; -} - -/** this function stores the property map for master pages in impress and draw */ -const SvxItemPropertySet* ImplGetMasterPagePropertySet( PageKind ePageKind ) -{ - static const SfxItemPropertyMapEntry aMasterPagePropertyMap_Impl[] = - { - { MAP_CHAR_LEN(UNO_NAME_PAGE_BACKGROUND), WID_PAGE_BACK, &ITYPE(beans::XPropertySet), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_BOTTOM), WID_PAGE_BOTTOM, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_LEFT), WID_PAGE_LEFT, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_RIGHT), WID_PAGE_RIGHT, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_TOP), WID_PAGE_TOP, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_HEIGHT), WID_PAGE_HEIGHT, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYBITMAP), WID_PAGE_LDBITMAP, &ITYPE(awt::XBitmap), beans::PropertyAttribute::READONLY, 0}, - { MAP_CHAR_LEN(UNO_NAME_LINKDISPLAYNAME), WID_PAGE_LDNAME, &::getCppuType((const OUString*)0), beans::PropertyAttribute::READONLY, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_NUMBER), WID_PAGE_NUMBER, &::getCppuType((const sal_Int16*)0), beans::PropertyAttribute::READONLY, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_ORIENTATION), WID_PAGE_ORIENT, &::getCppuType((const view::PaperOrientation*)0),0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_WIDTH), WID_PAGE_WIDTH, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN("BackgroundFullSize"), WID_PAGE_BACKFULL, &::getBooleanCppuType(), 0, 0}, - { MAP_CHAR_LEN(sUNO_Prop_UserDefinedAttributes),WID_PAGE_USERATTRIBS, &::getCppuType((const Reference< ::com::sun::star::container::XNameContainer >*)0) , 0, 0}, - { MAP_CHAR_LEN("IsBackgroundDark" ), WID_PAGE_ISDARK, &::getBooleanCppuType(), beans::PropertyAttribute::READONLY, 0}, - {0,0,0,0,0,0} - }; - - static const SfxItemPropertyMapEntry aHandoutMasterPagePropertyMap_Impl[] = - { - { MAP_CHAR_LEN(UNO_NAME_PAGE_BOTTOM), WID_PAGE_BOTTOM, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_LEFT), WID_PAGE_LEFT, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_RIGHT), WID_PAGE_RIGHT, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_TOP), WID_PAGE_TOP, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_HEIGHT), WID_PAGE_HEIGHT, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_ORIENTATION), WID_PAGE_ORIENT, &::getCppuType((const view::PaperOrientation*)0),0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_NUMBER), WID_PAGE_NUMBER, &::getCppuType((const sal_Int16*)0), beans::PropertyAttribute::READONLY, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_WIDTH), WID_PAGE_WIDTH, &::getCppuType((const sal_Int32*)0), 0, 0}, - { MAP_CHAR_LEN(UNO_NAME_PAGE_LAYOUT), WID_PAGE_LAYOUT, &::getCppuType((const sal_Int16*)0), 0, 0}, - { MAP_CHAR_LEN(sUNO_Prop_UserDefinedAttributes),WID_PAGE_USERATTRIBS, &::getCppuType((const Reference< ::com::sun::star::container::XNameContainer >*)0) , 0, 0}, - { MAP_CHAR_LEN("IsBackgroundDark" ), WID_PAGE_ISDARK, &::getBooleanCppuType(), beans::PropertyAttribute::READONLY, 0}, - { MAP_CHAR_LEN("IsHeaderVisible"), WID_PAGE_HEADERVISIBLE, &::getBooleanCppuType(), 0, 0}, - { MAP_CHAR_LEN("HeaderText"), WID_PAGE_HEADERTEXT, &::getCppuType((const OUString*)0), 0, 0}, - { MAP_CHAR_LEN("IsFooterVisible"), WID_PAGE_FOOTERVISIBLE, &::getBooleanCppuType(), 0, 0}, - { MAP_CHAR_LEN("FooterText"), WID_PAGE_FOOTERTEXT, &::getCppuType((const OUString*)0), 0, 0}, - { MAP_CHAR_LEN("IsPageNumberVisible"), WID_PAGE_PAGENUMBERVISIBLE, &::getBooleanCppuType(), 0, 0}, - { MAP_CHAR_LEN("IsDateTimeVisible"), WID_PAGE_DATETIMEVISIBLE, &::getBooleanCppuType(), 0, 0}, - { MAP_CHAR_LEN("IsDateTimeFixed"), WID_PAGE_DATETIMEFIXED, &::getBooleanCppuType(), 0, 0}, - { MAP_CHAR_LEN("DateTimeText"), WID_PAGE_DATETIMETEXT, &::getCppuType((const OUString*)0), 0, 0}, - { MAP_CHAR_LEN("DateTimeFormat"), WID_PAGE_DATETIMEFORMAT, &::getCppuType((const sal_Int32*)0), 0, 0}, - {0,0,0,0,0,0} - }; - - const SvxItemPropertySet* pRet = 0; - if( ePageKind == PK_HANDOUT ) - { - static SvxItemPropertySet aHandoutMasterPagePropertySet_Impl( aHandoutMasterPagePropertyMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() ); - pRet = &aHandoutMasterPagePropertySet_Impl; - } - else - { - static SvxItemPropertySet aMasterPagePropertySet_Impl( aMasterPagePropertyMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() ); - pRet = &aMasterPagePropertySet_Impl; - } - return pRet; -} - -namespace -{ - class theSdGenericDrawPageUnoTunnelId : public rtl::Static< UnoTunnelIdInit, theSdGenericDrawPageUnoTunnelId> {}; -} - -const ::com::sun::star::uno::Sequence< sal_Int8 > & SdGenericDrawPage::getUnoTunnelId() throw() -{ - return theSdGenericDrawPageUnoTunnelId::get().getSeq(); -} - -sal_Int64 SAL_CALL SdGenericDrawPage::getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& rId ) throw(::com::sun::star::uno::RuntimeException) -{ - if( rId.getLength() == 16 && 0 == rtl_compareMemory( getUnoTunnelId().getConstArray(), - rId.getConstArray(), 16 ) ) - { - return sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_IntPtr>(this)); - } - else - { - return SvxFmDrawPage::getSomething( rId ); - } -} - -SdGenericDrawPage::SdGenericDrawPage( SdXImpressDocument* _pModel, SdPage* pInPage, const SvxItemPropertySet* _pSet ) throw() -: SvxFmDrawPage( (SdrPage*) pInPage ), - SdUnoSearchReplaceShape(this), - mpModel ( _pModel ), - mpSdrModel(0), - mnTempPageNumber(0), - mpPropSet ( _pSet ), - mbIsImpressDocument(false) -{ - mpSdrModel = SvxFmDrawPage::mpModel; - if( mpModel ) - mbIsImpressDocument = mpModel->IsImpressDocument() ? true : false; - -} - -SdGenericDrawPage::~SdGenericDrawPage() throw() -{ -} - -void SdGenericDrawPage::throwIfDisposed() const throw (::com::sun::star::uno::RuntimeException ) -{ - if( (SvxFmDrawPage::mpModel == 0) || (mpModel == 0) || (SvxFmDrawPage::mpPage == 0) ) - throw lang::DisposedException(); -} - -SdXImpressDocument* SdGenericDrawPage::GetModel() const -{ - if( mpSdrModel != SvxFmDrawPage::mpModel ) - { - const_cast< SdGenericDrawPage* >(this)->mpSdrModel = SvxFmDrawPage::mpModel; - if( mpSdrModel ) - { - uno::Reference< uno::XInterface > xModel( SvxFmDrawPage::mpModel->getUnoModel() ); - const_cast< SdGenericDrawPage*>(this)->mpModel = SdXImpressDocument::getImplementation( xModel ); - if( mpModel ) - const_cast< SdGenericDrawPage*>(this)->mbIsImpressDocument = mpModel->IsImpressDocument() ? true : false; - } - else - { - const_cast< SdGenericDrawPage* >(this)->mpModel = 0; - } - } - - return mpModel; -} - -// this is called whenever a SdrObject must be created for a empty api shape wrapper -SdrObject * SdGenericDrawPage::_CreateSdrObject( const Reference< drawing::XShape >& xShape ) throw() -{ - if( NULL == SvxFmDrawPage::mpPage || !xShape.is() ) - return NULL; - - String aType( xShape->getShapeType() ); - const String aPrefix( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.") ); - if( aType.CompareTo( aPrefix, aPrefix.Len() ) != 0 ) - { - SdrObject* pObj = SvxFmDrawPage::_CreateSdrObject( xShape ); - if( pObj && ( (pObj->GetObjInventor() != SdrInventor) || (pObj->GetObjIdentifier() != OBJ_PAGE) ) ) - { - SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel(); - if( pDoc ) - pObj->NbcSetStyleSheet( pDoc->GetDefaultStyleSheet(), sal_True ); - } - return pObj; - } - - aType = aType.Copy( aPrefix.Len() ); - - PresObjKind eObjKind = PRESOBJ_NONE; - - if( aType.EqualsAscii( "TitleTextShape" ) ) - { - eObjKind = PRESOBJ_TITLE; - } - else if( aType.EqualsAscii( "OutlinerShape" ) ) - { - eObjKind = PRESOBJ_OUTLINE; - } - else if( aType.EqualsAscii( "SubtitleShape" ) ) - { - eObjKind = PRESOBJ_TEXT; - } - else if( aType.EqualsAscii( "OLE2Shape" ) ) - { - eObjKind = PRESOBJ_OBJECT; - } - else if( aType.EqualsAscii( "ChartShape" ) ) - { - eObjKind = PRESOBJ_CHART; - } - else if( aType.EqualsAscii( "CalcShape" ) ) - { - eObjKind = PRESOBJ_CALC; - } - else if( aType.EqualsAscii( "TableShape" ) ) - { - eObjKind = PRESOBJ_TABLE; - } - else if( aType.EqualsAscii( "GraphicObjectShape" ) ) - { - eObjKind = PRESOBJ_GRAPHIC; - } - else if( aType.EqualsAscii( "OrgChartShape" ) ) - { - eObjKind = PRESOBJ_ORGCHART; - } - else if( aType.EqualsAscii( "PageShape" ) ) - { - if( GetPage()->GetPageKind() == PK_NOTES && GetPage()->IsMasterPage() ) - eObjKind = PRESOBJ_TITLE; - else - eObjKind = PRESOBJ_PAGE; - } - else if( aType.EqualsAscii( "NotesShape" ) ) - { - eObjKind = PRESOBJ_NOTES; - } - else if( aType.EqualsAscii( "HandoutShape" ) ) - { - eObjKind = PRESOBJ_HANDOUT; - } - else if( aType.EqualsAscii( "FooterShape" ) ) - { - eObjKind = PRESOBJ_FOOTER; - } - else if( aType.EqualsAscii( "HeaderShape" ) ) - { - eObjKind = PRESOBJ_HEADER; - } - else if( aType.EqualsAscii( "SlideNumberShape" ) ) - { - eObjKind = PRESOBJ_SLIDENUMBER; - } - else if( aType.EqualsAscii( "DateTimeShape" ) ) - { - eObjKind = PRESOBJ_DATETIME; - } - else if( aType.EqualsAscii( "MediaShape" ) ) - { - eObjKind = PRESOBJ_MEDIA; - } - - Rectangle aRect( eObjKind == PRESOBJ_TITLE ? GetPage()->GetTitleRect() : GetPage()->GetLayoutRect() ); - - const awt::Point aPos( aRect.Left(), aRect.Top() ); - xShape->setPosition( aPos ); - - const awt::Size aSize( aRect.GetWidth(), aRect.GetHeight() ); - xShape->setSize( aSize ); - - SdrObject *pPresObj = 0; - if( (eObjKind == PRESOBJ_TABLE) || (eObjKind == PRESOBJ_MEDIA) ) - { - pPresObj = SvxFmDrawPage::_CreateSdrObject( xShape ); - if( pPresObj ) - { - SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel(); - if( pDoc ) - pPresObj->NbcSetStyleSheet( pDoc->GetDefaultStyleSheet(), sal_True ); - GetPage()->InsertPresObj( pPresObj, eObjKind ); - } - } - else - { - pPresObj = GetPage()->CreatePresObj( eObjKind, sal_False, aRect, sal_True ); - } - - if( pPresObj ) - pPresObj->SetUserCall( GetPage() ); - - return pPresObj; -} - -// XInterface -Any SAL_CALL SdGenericDrawPage::queryInterface( const uno::Type & rType ) - throw(uno::RuntimeException) -{ - Any aAny; - - QUERYINT( beans::XPropertySet ); - else QUERYINT( container::XNamed ); - else QUERYINT( util::XReplaceable ); - else QUERYINT( util::XSearchable ); - else QUERYINT( document::XLinkTargetSupplier ); - else QUERYINT( drawing::XShapeCombiner ); - else QUERYINT( drawing::XShapeBinder ); - else QUERYINT( beans::XMultiPropertySet ); - else if( rType == ITYPE( office::XAnnotationAccess ) ) - { - return Any( Reference< office::XAnnotationAccess >( this ) ); - } - else if( rType == ITYPE( XAnimationNodeSupplier ) ) - { - if( mbIsImpressDocument ) - { - const PageKind ePageKind = GetPage() ? GetPage()->GetPageKind() : PK_STANDARD; - - if( ePageKind == PK_STANDARD ) - return makeAny( Reference< XAnimationNodeSupplier >( this ) ); - } - } - else - return SvxDrawPage::queryInterface( rType ); - - return aAny; -} - -// XPropertySet -Reference< beans::XPropertySetInfo > SAL_CALL SdGenericDrawPage::getPropertySetInfo() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - throwIfDisposed(); - return mpPropSet->getPropertySetInfo(); -} - -void SAL_CALL SdGenericDrawPage::setPropertyValue( const OUString& aPropertyName, const Any& aValue ) - throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - const SfxItemPropertySimpleEntry* pEntry = mpPropSet->getPropertyMapEntry(aPropertyName); - - switch( pEntry ? pEntry->nWID : -1 ) - { - case WID_NAVORDER: - setNavigationOrder( aValue ); - break; - case WID_PAGE_LEFT: - case WID_PAGE_RIGHT: - case WID_PAGE_TOP: - case WID_PAGE_BOTTOM: - case WID_PAGE_LAYOUT: - case WID_PAGE_DURATION: - case WID_PAGE_CHANGE: - { - sal_Int32 nValue = 0; - if(!(aValue >>= nValue)) - throw lang::IllegalArgumentException(); - - switch( pEntry->nWID ) - { - case WID_PAGE_LEFT: - SetLftBorder(nValue); - break; - case WID_PAGE_RIGHT: - SetRgtBorder( nValue ); - break; - case WID_PAGE_TOP: - SetUppBorder( nValue ); - break; - case WID_PAGE_BOTTOM: - SetLwrBorder( nValue ); - break; - case WID_PAGE_CHANGE: - GetPage()->SetPresChange( (PresChange)nValue ); - break; - case WID_PAGE_LAYOUT: - GetPage()->SetAutoLayout( (AutoLayout)nValue, sal_True ); - break; - case WID_PAGE_DURATION: - GetPage()->SetTime((sal_uInt32)nValue); - break; - } - break; - } - case WID_PAGE_WIDTH: - { - sal_Int32 nWidth = 0; - if(!(aValue >>= nWidth)) - throw lang::IllegalArgumentException(); - - SetWidth( nWidth ); - break; - } - case WID_PAGE_HEIGHT: - { - sal_Int32 nHeight = 0; - if(!(aValue >>= nHeight)) - throw lang::IllegalArgumentException(); - - SetHeight( nHeight ); - break; - } - case WID_PAGE_ORIENT: - { - sal_Int32 nEnum = 0; - if(!::cppu::enum2int( nEnum, aValue )) - throw lang::IllegalArgumentException(); - - Orientation eOri = (((view::PaperOrientation)nEnum) == view::PaperOrientation_PORTRAIT)?ORIENTATION_PORTRAIT:ORIENTATION_LANDSCAPE; - - if( eOri != GetPage()->GetOrientation() ) - { - SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel(); - const PageKind ePageKind = GetPage()->GetPageKind(); - - sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind); - for (i = 0; i < nPageCnt; i++) - { - SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind); - pPage->SetOrientation( eOri ); - } - - nPageCnt = pDoc->GetSdPageCount(ePageKind); - - for (i = 0; i < nPageCnt; i++) - { - SdPage* pPage = pDoc->GetSdPage(i, ePageKind); - pPage->SetOrientation( eOri ); - } - } - break; - } - case WID_PAGE_EFFECT: - { - sal_Int32 nEnum = 0; - if(!::cppu::enum2int( nEnum, aValue )) - throw lang::IllegalArgumentException(); - - GetPage()->SetFadeEffect( (presentation::FadeEffect)nEnum ); - break; - } - case WID_PAGE_BACK: - setBackground( aValue ); - break; - case WID_PAGE_SPEED: - { - sal_Int32 nEnum = 0; - if(!::cppu::enum2int( nEnum, aValue )) - throw lang::IllegalArgumentException(); - - GetPage()->setTransitionDuration( nEnum == 0 ? 3.0 : (nEnum == 1 ? 2.0 : 1.0 ) ); - break; - } - case WID_PAGE_VISIBLE : - { - sal_Bool bVisible = sal_False; - if( ! ( aValue >>= bVisible ) ) - throw lang::IllegalArgumentException(); - GetPage()->SetExcluded( bVisible == sal_False ); - break; - } - case WID_PAGE_SOUNDFILE : - { - OUString aURL; - if( aValue >>= aURL ) - { - GetPage()->SetSoundFile( aURL ); - GetPage()->SetSound( aURL.getLength() != 0 ? sal_True : sal_False ); - break; - } - else - { - sal_Bool bStopSound = sal_False; - if( aValue >>= bStopSound ) - { - GetPage()->SetStopSound( bStopSound ? true : false ); - break; - } - } - - - throw lang::IllegalArgumentException(); - } - case WID_LOOP_SOUND: - { - sal_Bool bLoop = sal_False; - if( ! (aValue >>= bLoop) ) - throw lang::IllegalArgumentException(); - - GetPage()->SetLoopSound( bLoop ? true : false ); - break; - } - case WID_PAGE_BACKFULL: - { - sal_Bool bFullSize = sal_False; - if( ! ( aValue >>= bFullSize ) ) - throw lang::IllegalArgumentException(); - GetPage()->SetBackgroundFullSize( bFullSize ); - break; - } - case WID_PAGE_BACKVIS: - { - sal_Bool bVisible = sal_False; - if( ! ( aValue >>= bVisible ) ) - throw lang::IllegalArgumentException(); - - SdrPage* pPage = GetPage(); - if( pPage ) - { - SdDrawDocument* pDoc = (SdDrawDocument*)pPage->GetModel(); - if( pDoc->GetMasterPageCount() ) - { - SdrLayerAdmin& rLayerAdmin = pDoc->GetLayerAdmin(); - SetOfByte aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers(); - aVisibleLayers.Set(rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), sal_False), bVisible); - pPage->TRG_SetMasterPageVisibleLayers(aVisibleLayers); - } - } - break; - } - case WID_PAGE_BACKOBJVIS: - { - sal_Bool bVisible = sal_False; - if( ! ( aValue >>= bVisible ) ) - throw lang::IllegalArgumentException(); - - SdrPage* pPage = GetPage(); - if( pPage ) - { - SdDrawDocument* pDoc = (SdDrawDocument*)pPage->GetModel(); - if( pDoc->GetMasterPageCount() ) - { - SdrLayerAdmin& rLayerAdmin = pDoc->GetLayerAdmin(); - SetOfByte aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers(); - aVisibleLayers.Set(rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), sal_False), bVisible); - pPage->TRG_SetMasterPageVisibleLayers(aVisibleLayers); - } - } - - break; - } - case WID_PAGE_USERATTRIBS: - { - if( !GetPage()->setAlienAttributes( aValue ) ) - throw lang::IllegalArgumentException(); - break; - } - case WID_PAGE_BOOKMARK: - { - OUString aBookmarkURL; - if( ! ( aValue >>= aBookmarkURL ) ) - throw lang::IllegalArgumentException(); - - setBookmarkURL( aBookmarkURL ); - break; - } - - case WID_PAGE_HEADERVISIBLE: - case WID_PAGE_HEADERTEXT: - case WID_PAGE_FOOTERVISIBLE: - case WID_PAGE_FOOTERTEXT: - case WID_PAGE_PAGENUMBERVISIBLE: - case WID_PAGE_DATETIMEVISIBLE: - case WID_PAGE_DATETIMEFIXED: - case WID_PAGE_DATETIMETEXT: - case WID_PAGE_DATETIMEFORMAT: - { - sd::HeaderFooterSettings aHeaderFooterSettings( GetPage()->getHeaderFooterSettings() ); - - switch( pEntry->nWID ) - { - case WID_PAGE_HEADERVISIBLE: - { - sal_Bool bVisible = sal_False; - if( ! ( aValue >>= bVisible ) ) - throw lang::IllegalArgumentException(); - - aHeaderFooterSettings.mbHeaderVisible = bVisible; - break; - } - case WID_PAGE_HEADERTEXT: - { - OUString aText; - if( ! ( aValue >>= aText ) ) - throw lang::IllegalArgumentException(); - - aHeaderFooterSettings.maHeaderText = aText; - break; - } - case WID_PAGE_FOOTERVISIBLE: - { - sal_Bool bVisible = sal_False; - if( ! ( aValue >>= bVisible ) ) - throw lang::IllegalArgumentException(); - - aHeaderFooterSettings.mbFooterVisible = bVisible; - break; - } - case WID_PAGE_FOOTERTEXT: - { - OUString aText; - if( ! ( aValue >>= aText ) ) - throw lang::IllegalArgumentException(); - - aHeaderFooterSettings.maFooterText = aText; - break; - } - case WID_PAGE_PAGENUMBERVISIBLE: - { - sal_Bool bVisible = sal_False; - if( ! ( aValue >>= bVisible ) ) - throw lang::IllegalArgumentException(); - - aHeaderFooterSettings.mbSlideNumberVisible = bVisible; - break; - } - case WID_PAGE_DATETIMEVISIBLE: - { - sal_Bool bVisible = sal_False; - if( ! ( aValue >>= bVisible ) ) - throw lang::IllegalArgumentException(); - - aHeaderFooterSettings.mbDateTimeVisible = bVisible; - break; - } - case WID_PAGE_DATETIMEFIXED: - { - sal_Bool bVisible = sal_False; - if( ! ( aValue >>= bVisible ) ) - throw lang::IllegalArgumentException(); - - aHeaderFooterSettings.mbDateTimeIsFixed = bVisible; - break; - } - case WID_PAGE_DATETIMETEXT: - { - OUString aText; - if( ! ( aValue >>= aText ) ) - throw lang::IllegalArgumentException(); - - aHeaderFooterSettings.maDateTimeText = aText; - break; - } - case WID_PAGE_DATETIMEFORMAT: - { - sal_Int32 nValue = 0; - if( ! ( aValue >>= nValue ) ) - throw lang::IllegalArgumentException(); - - aHeaderFooterSettings.meDateTimeFormat = nValue; - break; - } - } - - if( !(aHeaderFooterSettings == GetPage()->getHeaderFooterSettings()) ) - GetPage()->setHeaderFooterSettings( aHeaderFooterSettings ); - - break; - } - - case WID_PAGE_NUMBER: - if( (GetPage()->GetPageKind() == PK_HANDOUT) && !GetPage()->IsMasterPage() ) - { - if( !(aValue >>= mnTempPageNumber) ) - throw lang::IllegalArgumentException(); - - break; - } - throw beans::PropertyVetoException(); - - case WID_PAGE_LDBITMAP: - case WID_PAGE_LDNAME: - case WID_PAGE_ISDARK: - throw beans::PropertyVetoException(); - - case WID_TRANSITION_TYPE: - { - sal_Int16 nValue = 0; - if( ! ( aValue >>= nValue ) ) - throw lang::IllegalArgumentException(); - - GetPage()->setTransitionType( nValue ); - break; - } - - case WID_TRANSITION_SUBTYPE: - { - sal_Int16 nValue = 0; - if( ! ( aValue >>= nValue ) ) - throw lang::IllegalArgumentException(); - - GetPage()->setTransitionSubtype( nValue ); - break; - } - - case WID_TRANSITION_DIRECTION: - { - sal_Bool bValue = sal_False; - if( ! ( aValue >>= bValue ) ) - throw lang::IllegalArgumentException(); - - GetPage()->setTransitionDirection( bValue ); - break; - } - - case WID_TRANSITION_FADE_COLOR: - { - sal_Int32 nValue = 0; - if( ! ( aValue >>= nValue ) ) - throw lang::IllegalArgumentException(); - - GetPage()->setTransitionFadeColor( nValue ); - break; - } - - case WID_TRANSITION_DURATION: - { - double fValue = 0.0; - if( ! ( aValue >>= fValue ) ) - throw lang::IllegalArgumentException(); - - GetPage()->setTransitionDuration( fValue ); - break; - } - - default: - throw beans::UnknownPropertyException(); - } - - GetModel()->SetModified(); -} - -Any SAL_CALL SdGenericDrawPage::getPropertyValue( const OUString& PropertyName ) - throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - uno::Any aAny; - - const SfxItemPropertySimpleEntry* pEntry = mpPropSet->getPropertyMapEntry(PropertyName); - - switch( pEntry ? pEntry->nWID : -1 ) - { - case WID_NAVORDER: - aAny = getNavigationOrder(); - break; - case WID_PAGE_LEFT: - aAny <<= (sal_Int32)( GetPage()->GetLftBorder() ); - break; - case WID_PAGE_RIGHT: - aAny <<= (sal_Int32)( GetPage()->GetRgtBorder() ); - break; - case WID_PAGE_TOP: - aAny <<= (sal_Int32)( GetPage()->GetUppBorder() ); - break; - case WID_PAGE_BOTTOM: - aAny <<= (sal_Int32)( GetPage()->GetLwrBorder() ); - break; - case WID_PAGE_WIDTH: - aAny <<= (sal_Int32)( GetPage()->GetSize().getWidth() ); - break; - case WID_PAGE_HEIGHT: - aAny <<= (sal_Int32)( GetPage()->GetSize().getHeight() ); - break; - case WID_PAGE_ORIENT: - aAny = ::cppu::int2enum( (sal_Int32)((GetPage()->GetOrientation() == ORIENTATION_PORTRAIT)? view::PaperOrientation_PORTRAIT: view::PaperOrientation_LANDSCAPE), ::getCppuType((const view::PaperOrientation*)0) ); - break; - case WID_PAGE_EFFECT: - aAny = ::cppu::int2enum( (sal_Int32)GetPage()->GetFadeEffect(), ::getCppuType((const presentation::FadeEffect*)0) ); - break; - case WID_PAGE_CHANGE: - aAny <<= (sal_Int32)( GetPage()->GetPresChange() ); - break; - case WID_PAGE_SPEED: - { - const double fDuration = GetPage()->getTransitionDuration(); - aAny = ::cppu::int2enum( fDuration < 2.0 ? 2 : (fDuration > 2.0 ? 0 : 1), ::getCppuType((const presentation::AnimationSpeed*)0) ); - } - break; - case WID_PAGE_LAYOUT: - aAny <<= (sal_Int16)( GetPage()->GetAutoLayout() ); - break; - case WID_PAGE_NUMBER: - { - const sal_uInt16 nPageNumber(GetPage()->GetPageNum()); - - if(nPageNumber > 0) - { - // for all other pages calculate the number - aAny <<= (sal_Int16)((sal_uInt16)((nPageNumber-1)>>1) + 1); - } - else - { - aAny <<= mnTempPageNumber; - } - } - break; - case WID_PAGE_DURATION: - aAny <<= (sal_Int32)(GetPage()->GetTime()); - break; - case WID_PAGE_LDNAME: - { - const OUString aName( GetPage()->GetName() ); - aAny <<= aName; - break; - } - case WID_PAGE_LDBITMAP: - { - Reference< awt::XBitmap > xBitmap( - VCLUnoHelper::CreateBitmap( BitmapEx( SdResId( BMP_PAGE ) ) ) ); - aAny <<= xBitmap; - } - break; - case WID_PAGE_BACK: - getBackground( aAny ); - break; - case WID_PAGE_PREVIEW : - { - SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel(); - if ( pDoc ) - { - ::sd::DrawDocShell* pDocShell = pDoc->GetDocSh(); - if ( pDocShell ) - { - sal_uInt16 nPgNum = 0; - sal_uInt16 nPageCount = pDoc->GetSdPageCount( PK_STANDARD ); - sal_uInt16 nPageNumber = (sal_uInt16)( ( GetPage()->GetPageNum() - 1 ) >> 1 ); - while( nPgNum < nPageCount ) - { - pDoc->SetSelected( pDoc->GetSdPage( nPgNum, PK_STANDARD ), nPgNum == nPageNumber ); - nPgNum++; - } - ::boost::shared_ptr<GDIMetaFile> pMetaFile = - pDocShell->GetPreviewMetaFile(); - if ( pMetaFile ) - { - Point aPoint; - Size aSize( GetPage()->GetSize() ); - pMetaFile->AddAction( (MetaAction*) new MetaFillColorAction( COL_WHITE, sal_True ), 0 ); - pMetaFile->AddAction( (MetaAction*) new MetaRectAction( Rectangle( aPoint, aSize ) ), 1 ); - pMetaFile->SetPrefMapMode( MAP_100TH_MM ); - pMetaFile->SetPrefSize( aSize ); - - SvMemoryStream aDestStrm( 65535, 65535 ); - ConvertGDIMetaFileToWMF( *pMetaFile, aDestStrm, NULL, sal_False ); - Sequence<sal_Int8> aSeq( (sal_Int8*)aDestStrm.GetData(), aDestStrm.Tell() ); - aAny <<= aSeq; - } - } - } - } - break; - - case WID_PAGE_PREVIEWBITMAP : - { - SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel(); - if ( pDoc ) - { - ::sd::DrawDocShell* pDocShell = pDoc->GetDocSh(); - if ( pDocShell ) - { - sal_uInt16 nPgNum = 0; - sal_uInt16 nPageCount = pDoc->GetSdPageCount( PK_STANDARD ); - sal_uInt16 nPageNumber = (sal_uInt16)( ( GetPage()->GetPageNum() - 1 ) >> 1 ); - while( nPgNum < nPageCount ) - { - pDoc->SetSelected( pDoc->GetSdPage( nPgNum, PK_STANDARD ), nPgNum == nPageNumber ); - nPgNum++; - } - ::boost::shared_ptr<GDIMetaFile> pMetaFile = - pDocShell->GetPreviewMetaFile(); - BitmapEx aBitmap; - if ( pMetaFile && pMetaFile->CreateThumbnail( 160, /* magic value taken from GraphicHelper::getThumbnailFormatFromGDI_Impl() */ - aBitmap ) ) - { - SvMemoryStream aMemStream; - aBitmap.GetBitmap().Write( aMemStream, sal_False, sal_False ); - uno::Sequence<sal_Int8> aSeq( (sal_Int8*)aMemStream.GetData(), aMemStream.Tell() ); - aAny <<= aSeq; - } - } - } - } - break; - - case WID_PAGE_VISIBLE : - { - sal_Bool bVisible = GetPage()->IsExcluded() == sal_False; - aAny <<= Any( &bVisible, ::getBooleanCppuType() ); - break; - } - - case WID_PAGE_SOUNDFILE : - { - if( GetPage()->IsStopSound() ) - { - aAny <<= sal_True; - } - else - { - OUString aURL; - if( GetPage()->IsSoundOn() ) - aURL = GetPage()->GetSoundFile(); - aAny <<= aURL; - } - break; - } - case WID_LOOP_SOUND: - { - aAny <<= (sal_Bool)GetPage()->IsLoopSound(); - break; - } - case WID_PAGE_BACKFULL: - { - sal_Bool bFullSize = GetPage()->IsBackgroundFullSize(); - aAny = Any( &bFullSize, ::getBooleanCppuType() ); - break; - } - case WID_PAGE_BACKVIS: - { - SdrPage* pPage = GetPage(); - if( pPage ) - { - SdDrawDocument* pDoc = (SdDrawDocument*)pPage->GetModel(); - if( pDoc->GetMasterPageCount() ) - { - SdrLayerAdmin& rLayerAdmin = pDoc->GetLayerAdmin(); - SetOfByte aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers(); - aAny <<= (sal_Bool)aVisibleLayers.IsSet(rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRND)), sal_False)); - } - else - { - aAny <<= (sal_Bool)sal_False; - } - } - break; - } - case WID_PAGE_BACKOBJVIS: - { - SdrPage* pPage = GetPage(); - if( pPage ) - { - SdDrawDocument* pDoc = (SdDrawDocument*)pPage->GetModel(); - if( pDoc->GetMasterPageCount() ) - { - SdrLayerAdmin& rLayerAdmin = pDoc->GetLayerAdmin(); - SetOfByte aVisibleLayers = pPage->TRG_GetMasterPageVisibleLayers(); - aAny <<= (sal_Bool)aVisibleLayers.IsSet(rLayerAdmin.GetLayerID(String(SdResId(STR_LAYER_BCKGRNDOBJ)), sal_False)); - } - else - { - aAny <<= (sal_Bool)sal_False; - } - } - break; - } - case WID_PAGE_USERATTRIBS: - { - GetPage()->getAlienAttributes( aAny ); - break; - } - case WID_PAGE_BOOKMARK: - { - aAny <<= getBookmarkURL(); - break; - } - case WID_PAGE_ISDARK: - { - aAny <<= (sal_Bool)GetPage()->GetPageBackgroundColor().IsDark(); - break; - } - case WID_PAGE_HEADERVISIBLE: - aAny <<= (sal_Bool)GetPage()->getHeaderFooterSettings().mbHeaderVisible; - break; - case WID_PAGE_HEADERTEXT: - { - const OUString aText( GetPage()->getHeaderFooterSettings().maHeaderText ); - aAny <<= aText; - } - break; - case WID_PAGE_FOOTERVISIBLE: - aAny <<= (sal_Bool)GetPage()->getHeaderFooterSettings().mbFooterVisible; - break; - case WID_PAGE_FOOTERTEXT: - { - const OUString aText( GetPage()->getHeaderFooterSettings().maFooterText ); - aAny <<= aText; - } - break; - case WID_PAGE_PAGENUMBERVISIBLE: - aAny <<= (sal_Bool)GetPage()->getHeaderFooterSettings().mbSlideNumberVisible; - break; - case WID_PAGE_DATETIMEVISIBLE: - aAny <<= (sal_Bool)GetPage()->getHeaderFooterSettings().mbDateTimeVisible; - break; - case WID_PAGE_DATETIMEFIXED: - aAny <<= (sal_Bool)GetPage()->getHeaderFooterSettings().mbDateTimeIsFixed; - break; - case WID_PAGE_DATETIMETEXT: - { - const OUString aText( GetPage()->getHeaderFooterSettings().maDateTimeText ); - aAny <<= aText; - } - break; - case WID_PAGE_DATETIMEFORMAT: - aAny <<= (sal_Int32)GetPage()->getHeaderFooterSettings().meDateTimeFormat; - break; - - case WID_TRANSITION_TYPE: - aAny <<= GetPage()->getTransitionType(); - break; - - case WID_TRANSITION_SUBTYPE: - aAny <<= GetPage()->getTransitionSubtype(); - break; - - case WID_TRANSITION_DIRECTION: - aAny <<= GetPage()->getTransitionDirection(); - break; - - case WID_TRANSITION_FADE_COLOR: - aAny <<= GetPage()->getTransitionFadeColor(); - break; - - case WID_TRANSITION_DURATION: - aAny <<= GetPage()->getTransitionDuration(); - break; - - default: - throw beans::UnknownPropertyException(); - } - return aAny; -} - -void SAL_CALL SdGenericDrawPage::addPropertyChangeListener( const OUString& , const Reference< beans::XPropertyChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {} -void SAL_CALL SdGenericDrawPage::removePropertyChangeListener( const OUString& , const Reference< beans::XPropertyChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {} -void SAL_CALL SdGenericDrawPage::addVetoableChangeListener( const OUString& , const Reference< beans::XVetoableChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {} -void SAL_CALL SdGenericDrawPage::removeVetoableChangeListener( const OUString& , const Reference< beans::XVetoableChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {} - -// XMultiPropertySet -void SAL_CALL SdGenericDrawPage::setPropertyValues( const Sequence< OUString >& aPropertyNames, const Sequence< Any >& aValues ) throw (beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, RuntimeException ) -{ - if( aPropertyNames.getLength() != aValues.getLength() ) - throw lang::IllegalArgumentException(); - - const OUString* pNames = aPropertyNames.getConstArray(); - const Any* pValues = aValues.getConstArray(); - sal_uInt32 nCount = aValues.getLength(); - while( nCount-- ) - { - try - { - setPropertyValue( *pNames++, *pValues++ ); - } - catch( beans::UnknownPropertyException& ) - { - // ignore for multi property set - // todo: optimize this! - } - } -} - -Sequence< Any > SAL_CALL SdGenericDrawPage::getPropertyValues( const Sequence< OUString >& aPropertyNames ) throw (RuntimeException) -{ - const OUString* pNames = aPropertyNames.getConstArray(); - sal_uInt32 nCount = aPropertyNames.getLength(); - Sequence< Any > aValues( nCount ); - Any* pValues = aValues.getArray(); - while( nCount-- ) - { - Any aValue; - try - { - aValue = getPropertyValue( *pNames++ ); - } - catch( beans::UnknownPropertyException& ) - { - // ignore for multi property set - // todo: optimize this! - } - *pValues++ = aValue; - } - return aValues; -} - -void SAL_CALL SdGenericDrawPage::addPropertiesChangeListener( const Sequence< OUString >& , const Reference< beans::XPropertiesChangeListener >& ) throw (RuntimeException) -{ -} - -void SAL_CALL SdGenericDrawPage::removePropertiesChangeListener( const Reference< beans::XPropertiesChangeListener >& ) throw (RuntimeException) -{ -} - -void SAL_CALL SdGenericDrawPage::firePropertiesChangeEvent( const Sequence< OUString >& , const Reference< beans::XPropertiesChangeListener >& ) throw (RuntimeException) -{ -} - -Reference< drawing::XShape > SdGenericDrawPage::_CreateShape( SdrObject *pObj ) const throw() -{ - DBG_ASSERT( GetPage(), "SdGenericDrawPage::_CreateShape(), can't create shape for disposed page!" ); - DBG_ASSERT( pObj, "SdGenericDrawPage::_CreateShape(), invalid call with pObj == 0!" ); - - if( GetPage() && pObj ) - { - PresObjKind eKind = GetPage()->GetPresObjKind(pObj); - - SvxShape* pShape = NULL; - - if(pObj->GetObjInventor() == SdrInventor) - { - sal_uInt32 nInventor = pObj->GetObjIdentifier(); - switch( nInventor ) - { - case OBJ_TITLETEXT: - pShape = new SvxShapeText( pObj ); - if( GetPage()->GetPageKind() == PK_NOTES && GetPage()->IsMasterPage() ) - { - // fake a empty PageShape if its a title shape on the master page - pShape->SetShapeType(OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.PageShape"))); - } - else - { - pShape->SetShapeType(OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.TitleTextShape"))); - } - eKind = PRESOBJ_NONE; - break; - case OBJ_OUTLINETEXT: - pShape = new SvxShapeText( pObj ); - pShape->SetShapeType(OUString( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.OutlinerShape"))); - eKind = PRESOBJ_NONE; - break; - } - } - - Reference< drawing::XShape > xShape( pShape ); - - if(!xShape.is()) - xShape = SvxFmDrawPage::_CreateShape( pObj ); - - - if( eKind != PRESOBJ_NONE ) - { - String aShapeType( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.presentation.")); - - switch( eKind ) - { - case PRESOBJ_TITLE: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("TitleTextShape") ); - break; - case PRESOBJ_OUTLINE: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("OutlinerShape") ); - break; - case PRESOBJ_TEXT: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("SubtitleShape") ); - break; - case PRESOBJ_GRAPHIC: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("GraphicObjectShape") ); - break; - case PRESOBJ_OBJECT: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("OLE2Shape") ); - break; - case PRESOBJ_CHART: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("ChartShape") ); - break; - case PRESOBJ_ORGCHART: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("OrgChartShape") ); - break; - case PRESOBJ_CALC: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("CalcShape") ); - break; - case PRESOBJ_TABLE: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("TableShape") ); - break; - case PRESOBJ_MEDIA: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("MediaShape") ); - break; - case PRESOBJ_PAGE: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("PageShape") ); - break; - case PRESOBJ_HANDOUT: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("HandoutShape") ); - break; - case PRESOBJ_NOTES: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("NotesShape") ); - break; - case PRESOBJ_FOOTER: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("FooterShape") ); - break; - case PRESOBJ_HEADER: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("HeaderShape") ); - break; - case PRESOBJ_SLIDENUMBER: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("SlideNumberShape") ); - break; - case PRESOBJ_DATETIME: - aShapeType += String( RTL_CONSTASCII_USTRINGPARAM("DateTimeShape") ); - break; - case PRESOBJ_NONE: - case PRESOBJ_IMAGE: - case PRESOBJ_MAX: - break; - } - - if( !pShape ) - pShape = SvxShape::getImplementation( xShape ); - - if( pShape ) - pShape->SetShapeType( aShapeType ); - } - - // SdXShape aggregiert SvxShape - new SdXShape( SvxShape::getImplementation( xShape ), GetModel() ); - return xShape; - } - else - { - return SvxFmDrawPage::_CreateShape( pObj ); - } - -} - -//---------------------------------------------------------------------- - -// XServiceInfo -Sequence< OUString > SAL_CALL SdGenericDrawPage::getSupportedServiceNames() - throw(uno::RuntimeException) -{ - Sequence< OUString > aSeq( SvxFmDrawPage::getSupportedServiceNames() ); - comphelper::ServiceInfoHelper::addToSequence( aSeq, 3, "com.sun.star.drawing.GenericDrawPage", - "com.sun.star.document.LinkTarget", - "com.sun.star.document.LinkTargetSupplier"); - return aSeq; -} - -//---------------------------------------------------------------------- - -// XLinkTargetSupplier -Reference< container::XNameAccess > SAL_CALL SdGenericDrawPage::getLinks( ) - throw(uno::RuntimeException) -{ - return new SdPageLinkTargets( (SdGenericDrawPage*)this ); -} - -//---------------------------------------------------------------------- - -void SdGenericDrawPage::setBackground( const Any& ) throw(lang::IllegalArgumentException) -{ - OSL_FAIL( "Don't call me, I'm useless!" ); -} - -//---------------------------------------------------------------------- - -void SdGenericDrawPage::getBackground( Any& ) throw() -{ - OSL_FAIL( "Don't call me, I'm useless!" ); -} - -//---------------------------------------------------------------------- - -OUString SdGenericDrawPage::getBookmarkURL() const -{ - OUStringBuffer aRet; - if( SvxFmDrawPage::mpPage ) - { - OUString aFileName( static_cast<SdPage*>(SvxFmDrawPage::mpPage)->GetFileName() ); - if( aFileName.getLength() ) - { - const OUString aBookmarkName( SdDrawPage::getPageApiNameFromUiName( static_cast<SdPage*>(SvxFmDrawPage::mpPage)->GetBookmarkName() ) ); - aRet.append( aFileName ); - aRet.append( (sal_Unicode)'#' ); - aRet.append( aBookmarkName ); - } - } - - return aRet.makeStringAndClear(); -} - -//---------------------------------------------------------------------- -void SdGenericDrawPage::setBookmarkURL( rtl::OUString& rURL ) -{ - if( SvxFmDrawPage::mpPage ) - { - sal_Int32 nIndex = rURL.indexOf( (sal_Unicode)'#' ); - if( nIndex != -1 ) - { - const String aFileName( rURL.copy( 0, nIndex ) ); - const String aBookmarkName( SdDrawPage::getUiNameFromPageApiName( rURL.copy( nIndex+1 ) ) ); - - if( aFileName.Len() && aBookmarkName.Len() ) - { - static_cast<SdPage*>(SvxFmDrawPage::mpPage)->DisconnectLink(); - static_cast<SdPage*>(SvxFmDrawPage::mpPage)->SetFileName( aFileName ); - static_cast<SdPage*>(SvxFmDrawPage::mpPage)->SetBookmarkName( aBookmarkName ); - static_cast<SdPage*>(SvxFmDrawPage::mpPage)->ConnectLink(); - } - } - } -} - -//---------------------------------------------------------------------- -Reference< drawing::XShape > SAL_CALL SdGenericDrawPage::combine( const Reference< drawing::XShapes >& xShapes ) - throw( uno::RuntimeException ) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - DBG_ASSERT(SvxFmDrawPage::mpPage,"SdrPage ist NULL! [CL]"); - DBG_ASSERT(mpView, "SdrView ist NULL! [CL]"); - - Reference< drawing::XShape > xShape; - if(mpView==NULL||!xShapes.is()||GetPage()==NULL) - return xShape; - - SdrPageView* pPageView = mpView->ShowSdrPage( GetPage() ); - - _SelectObjectsInView( xShapes, pPageView ); - - mpView->CombineMarkedObjects( sal_False ); - - mpView->AdjustMarkHdl(); - const SdrMarkList& rMarkList = mpView->GetMarkedObjectList(); - if( rMarkList.GetMarkCount() == 1 ) - { - SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj(); - if( pObj ) - xShape = Reference< drawing::XShape >::query( pObj->getUnoShape() ); - } - - mpView->HideSdrPage(); - - GetModel()->SetModified(); - - return xShape; -} - -//---------------------------------------------------------------------- -void SAL_CALL SdGenericDrawPage::split( const Reference< drawing::XShape >& xGroup ) - throw( uno::RuntimeException ) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - if(mpView==NULL||!xGroup.is()||GetPage()==NULL) - return; - - SdrPageView* pPageView = mpView->ShowSdrPage( GetPage() ); - _SelectObjectInView( xGroup, pPageView ); - mpView->DismantleMarkedObjects( sal_False ); - mpView->HideSdrPage(); - - GetModel()->SetModified(); -} - -//---------------------------------------------------------------------- -Reference< drawing::XShape > SAL_CALL SdGenericDrawPage::bind( const Reference< drawing::XShapes >& xShapes ) - throw( uno::RuntimeException ) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - uno::Reference< drawing::XShape > xShape; - if(mpView==NULL||!xShapes.is()||GetPage()==NULL) - return xShape; - - SdrPageView* pPageView = mpView->ShowSdrPage( GetPage() ); - - _SelectObjectsInView( xShapes, pPageView ); - - mpView->CombineMarkedObjects( sal_True ); - - mpView->AdjustMarkHdl(); - const SdrMarkList& rMarkList = mpView->GetMarkedObjectList(); - if( rMarkList.GetMarkCount() == 1 ) - { - SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj(); - if( pObj ) - xShape = Reference< drawing::XShape >::query( pObj->getUnoShape() ); - } - - mpView->HideSdrPage(); - - GetModel()->SetModified(); - - return xShape; -} - -//---------------------------------------------------------------------- -void SAL_CALL SdGenericDrawPage::unbind( const Reference< drawing::XShape >& xShape ) - throw( uno::RuntimeException ) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - if(mpView==NULL||!xShape.is()||GetPage()==NULL) - return; - - SdrPageView* pPageView = mpView->ShowSdrPage( GetPage() ); - _SelectObjectInView( xShape, pPageView ); - mpView->DismantleMarkedObjects( sal_True ); - mpView->HideSdrPage(); - - GetModel()->SetModified(); -} - -void SdGenericDrawPage::SetLftBorder( sal_Int32 nValue ) -{ - if( nValue != GetPage()->GetLftBorder() ) - { - SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel(); - const PageKind ePageKind = GetPage()->GetPageKind(); - - sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind); - for (i = 0; i < nPageCnt; i++) - { - SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind); - pPage->SetLftBorder( nValue ); - } - - nPageCnt = pDoc->GetSdPageCount(ePageKind); - - for (i = 0; i < nPageCnt; i++) - { - SdPage* pPage = pDoc->GetSdPage(i, ePageKind); - pPage->SetLftBorder( nValue ); - } - } -} - -void SdGenericDrawPage::SetRgtBorder( sal_Int32 nValue ) -{ - if( nValue != GetPage()->GetRgtBorder() ) - { - SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel(); - const PageKind ePageKind = GetPage()->GetPageKind(); - - sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind); - for (i = 0; i < nPageCnt; i++) - { - SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind); - pPage->SetRgtBorder( nValue ); - } - - nPageCnt = pDoc->GetSdPageCount(ePageKind); - - for (i = 0; i < nPageCnt; i++) - { - SdPage* pPage = pDoc->GetSdPage(i, ePageKind); - pPage->SetRgtBorder( nValue ); - } - } -} - -void SdGenericDrawPage::SetUppBorder( sal_Int32 nValue ) -{ - if( nValue != GetPage()->GetUppBorder() ) - { - SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel(); - const PageKind ePageKind = GetPage()->GetPageKind(); - - sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind); - for (i = 0; i < nPageCnt; i++) - { - SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind); - pPage->SetUppBorder( nValue ); - } - - nPageCnt = pDoc->GetSdPageCount(ePageKind); - - for (i = 0; i < nPageCnt; i++) - { - SdPage* pPage = pDoc->GetSdPage(i, ePageKind); - pPage->SetUppBorder( nValue ); - } - } -} - -void SdGenericDrawPage::SetLwrBorder( sal_Int32 nValue ) -{ - if( nValue != GetPage()->GetLwrBorder() ) - { - SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel(); - const PageKind ePageKind = GetPage()->GetPageKind(); - - sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind); - for (i = 0; i < nPageCnt; i++) - { - SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind); - pPage->SetLwrBorder( nValue ); - } - - nPageCnt = pDoc->GetSdPageCount(ePageKind); - - for (i = 0; i < nPageCnt; i++) - { - SdPage* pPage = pDoc->GetSdPage(i, ePageKind); - pPage->SetLwrBorder( nValue ); - } - } -} - -static void refreshpage( SdDrawDocument* pDoc, const PageKind ePageKind ) -{ - ::sd::DrawDocShell* pDocShell = pDoc->GetDocSh(); - if ( pDocShell ) - { - ::sd::ViewShell* pViewSh = pDocShell->GetViewShell(); - - if( pViewSh ) - { - if( pViewSh->ISA(::sd::DrawViewShell ) ) - static_cast< ::sd::DrawViewShell*>(pViewSh)->ResetActualPage(); - - Size aPageSize = pDoc->GetSdPage(0, ePageKind)->GetSize(); - const long nWidth = aPageSize.Width(); - const long nHeight = aPageSize.Height(); - - Point aPageOrg = Point(nWidth, nHeight / 2); - Size aViewSize = Size(nWidth * 3, nHeight * 2); - - pDoc->SetMaxObjSize(aViewSize); - - pViewSh->InitWindows(aPageOrg, aViewSize, Point(-1, -1), sal_True); - - pViewSh->UpdateScrollBars(); - } - } -} - -void SdGenericDrawPage::SetWidth( sal_Int32 nWidth ) -{ - Size aSize( GetPage()->GetSize() ); - if( aSize.getWidth() != nWidth ) - { - aSize.setWidth( nWidth ); - - SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel(); - const PageKind ePageKind = GetPage()->GetPageKind(); - - sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind); - for (i = 0; i < nPageCnt; i++) - { - SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind); - pPage->SetSize(aSize); - } - - nPageCnt = pDoc->GetSdPageCount(ePageKind); - - for (i = 0; i < nPageCnt; i++) - { - SdPage* pPage = pDoc->GetSdPage(i, ePageKind); - pPage->SetSize(aSize); - } - - refreshpage( pDoc, ePageKind ); - } -} - -void SdGenericDrawPage::SetHeight( sal_Int32 nHeight ) -{ - Size aSize( GetPage()->GetSize() ); - if( aSize.getHeight() != nHeight ) - { - aSize.setHeight( nHeight ); - - SdDrawDocument* pDoc = (SdDrawDocument*)GetPage()->GetModel(); - const PageKind ePageKind = GetPage()->GetPageKind(); - - sal_uInt16 i, nPageCnt = pDoc->GetMasterSdPageCount(ePageKind); - for (i = 0; i < nPageCnt; i++) - { - SdPage* pPage = pDoc->GetMasterSdPage(i, ePageKind); - pPage->SetSize(aSize); - } - - nPageCnt = pDoc->GetSdPageCount(ePageKind); - - for (i = 0; i < nPageCnt; i++) - { - SdPage* pPage = pDoc->GetSdPage(i, ePageKind); - pPage->SetSize(aSize); - } - - refreshpage( pDoc, ePageKind ); - } -} - -// XInterface -void SdGenericDrawPage::release() throw() -{ - - OWeakAggObject::release(); -} - -// XComponent -void SdGenericDrawPage::disposing() throw() -{ - mpModel = 0; - SvxFmDrawPage::disposing(); -} - -// XAnimationNodeSupplier -Reference< XAnimationNode > SAL_CALL SdGenericDrawPage::getAnimationNode() throw (uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - SdPage *pSdPage = static_cast<SdPage*>(SvxFmDrawPage::mpPage); - - - return pSdPage->getAnimationNode(); -} - -//======================================================================== -// SdPageLinkTargets -//======================================================================== - -SdPageLinkTargets::SdPageLinkTargets( SdGenericDrawPage* pUnoPage ) throw() -{ - mxPage = pUnoPage; - mpUnoPage = pUnoPage; -} - -SdPageLinkTargets::~SdPageLinkTargets() throw() -{ -} - - // XElementAccess -uno::Type SAL_CALL SdPageLinkTargets::getElementType() - throw(uno::RuntimeException) -{ - return ITYPE(beans::XPropertySet); -} - -sal_Bool SAL_CALL SdPageLinkTargets::hasElements() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - SdPage* pPage = mpUnoPage->GetPage(); - if( pPage != NULL ) - { - SdrObjListIter aIter( *pPage, IM_DEEPWITHGROUPS ); - - while( aIter.IsMore() ) - { - SdrObject* pObj = aIter.Next(); - String aStr( pObj->GetName() ); - if( !aStr.Len() && pObj->ISA( SdrOle2Obj ) ) - aStr = static_cast< const SdrOle2Obj* >( pObj )->GetPersistName(); - if( aStr.Len() ) - return sal_True; - } - } - - return sal_False; -} - -// container::XNameAccess - -// XNameAccess -Any SAL_CALL SdPageLinkTargets::getByName( const OUString& aName ) - throw(container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - SdPage* pPage = mpUnoPage->GetPage(); - if( pPage != NULL ) - { - SdrObject* pObj = FindObject( aName ); - if( pObj ) - { - Reference< beans::XPropertySet > aRef( pObj->getUnoShape(), uno::UNO_QUERY ); - return makeAny( aRef ); - } - } - - throw container::NoSuchElementException(); -} - -Sequence< OUString > SAL_CALL SdPageLinkTargets::getElementNames() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - sal_uInt32 nObjCount = 0; - - SdPage* pPage = mpUnoPage->GetPage(); - if( pPage != NULL ) - { - SdrObjListIter aIter( *pPage, IM_DEEPWITHGROUPS ); - while( aIter.IsMore() ) - { - SdrObject* pObj = aIter.Next(); - String aStr( pObj->GetName() ); - if( !aStr.Len() && pObj->ISA( SdrOle2Obj ) ) - aStr = static_cast< const SdrOle2Obj* >( pObj )->GetPersistName(); - if( aStr.Len() ) - nObjCount++; - } - } - - Sequence< OUString > aSeq( nObjCount ); - if( nObjCount > 0 ) - { - OUString* pStr = aSeq.getArray(); - - SdrObjListIter aIter( *pPage, IM_DEEPWITHGROUPS ); - while( aIter.IsMore() ) - { - SdrObject* pObj = aIter.Next(); - String aStr( pObj->GetName() ); - if( !aStr.Len() && pObj->ISA( SdrOle2Obj ) ) - aStr = static_cast< const SdrOle2Obj* >( pObj )->GetPersistName(); - if( aStr.Len() ) - *pStr++ = aStr; - } - } - - return aSeq; -} - -sal_Bool SAL_CALL SdPageLinkTargets::hasByName( const OUString& aName ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - return FindObject( aName ) != NULL; -} - -SdrObject* SdPageLinkTargets::FindObject( const String& rName ) const throw() -{ - SdPage* pPage = mpUnoPage->GetPage(); - if( pPage == NULL ) - return NULL; - - SdrObjListIter aIter( *pPage, IM_DEEPWITHGROUPS ); - - while( aIter.IsMore() ) - { - SdrObject* pObj = aIter.Next(); - String aStr( pObj->GetName() ); - if( !aStr.Len() && pObj->ISA( SdrOle2Obj ) ) - aStr = static_cast< const SdrOle2Obj* >( pObj )->GetPersistName(); - if( aStr.Len() && (aStr == rName) ) - return pObj; - } - - return NULL; -} - -// XServiceInfo -OUString SAL_CALL SdPageLinkTargets::getImplementationName() - throw(uno::RuntimeException) -{ - return OUString( RTL_CONSTASCII_USTRINGPARAM("SdPageLinkTargets") ); -} - -sal_Bool SAL_CALL SdPageLinkTargets::supportsService( const OUString& ServiceName ) - throw(uno::RuntimeException) -{ - return comphelper::ServiceInfoHelper::supportsService( ServiceName, getSupportedServiceNames() ); -} - -Sequence< OUString > SAL_CALL SdPageLinkTargets::getSupportedServiceNames() - throw(uno::RuntimeException) -{ - const OUString aSN( RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.LinkTargets") ); - Sequence< OUString > aSeq( &aSN, 1); - return aSeq; -} - -//======================================================================== -// SdDrawPage -//======================================================================== - -SdDrawPage::SdDrawPage( SdXImpressDocument* pModel, SdPage* pPage ) throw() -: SdGenericDrawPage( pModel, pPage, ImplGetDrawPagePropertySet( pModel->IsImpressDocument(), pPage->GetPageKind() ) ) -{ -} - -SdDrawPage::~SdDrawPage() throw() -{ -} - -// XInterface -Any SAL_CALL SdDrawPage::queryInterface( const uno::Type & rType ) - throw(uno::RuntimeException) -{ - if( rType == ITYPE( drawing::XMasterPageTarget ) ) - { - return makeAny( Reference< drawing::XMasterPageTarget >( this ) ); - } - else - { - if( mbIsImpressDocument ) - { - const PageKind ePageKind = GetPage() ? GetPage()->GetPageKind() : PK_STANDARD; - - if( ePageKind != PK_HANDOUT && rType == ITYPE( presentation::XPresentationPage ) ) - { - return makeAny( Reference< presentation::XPresentationPage >( this ) ); - } - } - } - - return SdGenericDrawPage::queryInterface( rType ); -} - -void SAL_CALL SdDrawPage::acquire() throw() -{ - SvxDrawPage::acquire(); -} - -void SAL_CALL SdDrawPage::release() throw() -{ - SvxDrawPage::release(); -} - -UNO3_GETIMPLEMENTATION2_IMPL( SdDrawPage, SdGenericDrawPage ); - -// XTypeProvider -Sequence< uno::Type > SAL_CALL SdDrawPage::getTypes() throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - if( maTypeSequence.getLength() == 0 ) - { - const PageKind ePageKind = GetPage() ? GetPage()->GetPageKind() : PK_STANDARD; - sal_Bool bPresPage = mbIsImpressDocument && ePageKind != PK_HANDOUT; - - // Collect the types of this class. - ::std::vector<uno::Type> aTypes; - aTypes.reserve(13); - aTypes.push_back(ITYPE(drawing::XDrawPage)); - aTypes.push_back(ITYPE(beans::XPropertySet)); - aTypes.push_back(ITYPE(container::XNamed)); - aTypes.push_back(ITYPE(drawing::XMasterPageTarget)); - aTypes.push_back(ITYPE(lang::XServiceInfo)); - aTypes.push_back(ITYPE(util::XReplaceable)); - aTypes.push_back(ITYPE(document::XLinkTargetSupplier)); - aTypes.push_back(ITYPE( drawing::XShapeCombiner )); - aTypes.push_back(ITYPE( drawing::XShapeBinder )); - aTypes.push_back(ITYPE( office::XAnnotationAccess )); - aTypes.push_back(ITYPE( beans::XMultiPropertySet )); - if( bPresPage ) - aTypes.push_back(ITYPE(presentation::XPresentationPage)); - if( bPresPage && ePageKind == PK_STANDARD ) - aTypes.push_back(ITYPE(XAnimationNodeSupplier)); - - // Get types of base class. - const Sequence< uno::Type > aBaseTypes( SdGenericDrawPage::getTypes() ); - const sal_Int32 nBaseTypes = aBaseTypes.getLength(); - const uno::Type* pBaseTypes = aBaseTypes.getConstArray(); - - // Join those types in a sequence. - maTypeSequence.realloc(aTypes.size() + nBaseTypes); - uno::Type* pTypes = maTypeSequence.getArray(); - ::std::vector<uno::Type>::const_iterator iType; - for (iType=aTypes.begin(); iType!=aTypes.end(); ++iType) - *pTypes++ = *iType; - for( sal_Int32 nType = 0; nType < nBaseTypes; nType++ ) - *pTypes++ = *pBaseTypes++; - } - - return maTypeSequence; -} - -namespace -{ - class theSdDrawPageImplementationId : public rtl::Static< UnoTunnelIdInit, theSdDrawPageImplementationId > {}; -} - -Sequence< sal_Int8 > SAL_CALL SdDrawPage::getImplementationId() throw(uno::RuntimeException) -{ - return theSdDrawPageImplementationId::get().getSeq(); -} - -OUString SdDrawPage::getPageApiName( SdPage* pPage ) -{ - return ::getPageApiName( pPage ); -} - -OUString getPageApiName( SdPage* pPage ) -{ - OUString aPageName; - - if(pPage) - { - aPageName = pPage->GetRealName(); - - if( aPageName.getLength() == 0 ) - { - OUStringBuffer sBuffer; - sBuffer.appendAscii( RTL_CONSTASCII_STRINGPARAM( sEmptyPageName ) ); - const sal_Int32 nPageNum = ( ( pPage->GetPageNum() - 1 ) >> 1 ) + 1; - sBuffer.append( nPageNum ); - aPageName = sBuffer.makeStringAndClear(); - } - } - - return aPageName; -} - - -OUString getPageApiNameFromUiName( const String& rUIName ) -{ - OUString aApiName; - - String aDefPageName(SdResId(STR_PAGE)); - aDefPageName += sal_Unicode( ' ' ); - - if( rUIName.Equals( aDefPageName, 0, aDefPageName.Len() ) ) - { - aApiName = OUString( RTL_CONSTASCII_USTRINGPARAM( sEmptyPageName ) ); - aApiName += rUIName.Copy( aDefPageName.Len() ); - } - else - { - aApiName = rUIName; - } - - return aApiName; -} - -OUString SdDrawPage::getPageApiNameFromUiName( const String& rUIName ) -{ - return ::getPageApiNameFromUiName( rUIName ); -} - -String getUiNameFromPageApiNameImpl( const OUString& rApiName ) -{ - const String aDefPageName(RTL_CONSTASCII_USTRINGPARAM( sEmptyPageName )); - if( rApiName.compareTo( aDefPageName, aDefPageName.Len() ) == 0 ) - { - OUString aNumber( rApiName.copy( sizeof( sEmptyPageName ) - 1 ) ); - - // create the page number - sal_Int32 nPageNumber = aNumber.toInt32(); - - // check if there are non number characters in the number part - const sal_Int32 nChars = aNumber.getLength(); - const sal_Unicode* pString = aNumber.getStr(); - sal_Int32 nChar; - for( nChar = 0; nChar < nChars; nChar++, pString++ ) - { - if((*pString < sal_Unicode('0')) || (*pString > sal_Unicode('9'))) - { - // found a non number character, so this is not the default - // name for this page - nPageNumber = -1; - break; - } - } - - if( nPageNumber != -1) - { - OUStringBuffer sBuffer; - sBuffer.append( String(SdResId(STR_PAGE)) ); - sBuffer.append( sal_Unicode( ' ' ) ); - sBuffer.append( aNumber ); - return sBuffer.makeStringAndClear(); - } - } - - return rApiName; -} - -String SdDrawPage::getUiNameFromPageApiName( const OUString& rApiName ) -{ - return getUiNameFromPageApiNameImpl( rApiName ); -} - -// XServiceInfo -OUString SAL_CALL SdDrawPage::getImplementationName() throw(uno::RuntimeException) -{ - return OUString( RTL_CONSTASCII_USTRINGPARAM("SdDrawPage") ); -} - -Sequence< OUString > SAL_CALL SdDrawPage::getSupportedServiceNames() throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - Sequence< OUString > aSeq( SdGenericDrawPage::getSupportedServiceNames() ); - comphelper::ServiceInfoHelper::addToSequence( aSeq, 1, "com.sun.star.drawing.DrawPage" ); - - if( mbIsImpressDocument ) - comphelper::ServiceInfoHelper::addToSequence( aSeq, 1, "com.sun.star.presentation.DrawPage" ); - - return aSeq; -} - -sal_Bool SAL_CALL SdDrawPage::supportsService( const OUString& ServiceName ) - throw(uno::RuntimeException) -{ - return SdGenericDrawPage::supportsService( ServiceName ); -} - -// XNamed -void SAL_CALL SdDrawPage::setName( const OUString& rName ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - DBG_ASSERT( GetPage() && !GetPage()->IsMasterPage(), "Don't call base implementation for masterpages!" ); - - OUString aName( rName ); - - if(GetPage() && GetPage()->GetPageKind() != PK_NOTES) - { - // check if this is the default 'page1234' name - if(aName.compareToAscii( sEmptyPageName, sizeof( sEmptyPageName ) - 1 ) == 0) - { - // ok, it maybe is, first get the number part after 'page' - OUString aNumber( aName.copy( sizeof( sEmptyPageName ) - 1 ) ); - - // create the page number - sal_Int32 nPageNumber = aNumber.toInt32(); - - // check if there are non number characters in the number part - const sal_Int32 nChars = aNumber.getLength(); - const sal_Unicode* pString = aNumber.getStr(); - sal_Int32 nChar; - for( nChar = 0; nChar < nChars; nChar++, pString++ ) - { - if((*pString < '0') || (*pString > '9')) - { - // found a non number character, so this is not the default - // name for this page - nPageNumber = -1; - break; - } - } - - if( nPageNumber == ( ( GetPage()->GetPageNum() - 1 ) >> 1 ) + 1 ) - aName = OUString(); - } - else - { - String aDefaultPageName( SdResId(STR_PAGE) ); - aDefaultPageName += sal_Unicode( ' ' ); - if( aName.compareTo( aDefaultPageName, aDefaultPageName.Len() ) == 0 ) - aName = OUString(); - } - - GetPage()->SetName( aName ); - - sal_uInt16 nNotesPageNum = (GetPage()->GetPageNum()-1)>>1; - if( GetModel()->GetDoc()->GetSdPageCount( PK_NOTES ) > nNotesPageNum ) - { - SdPage* pNotesPage = GetModel()->GetDoc()->GetSdPage( nNotesPageNum, PK_NOTES ); - if( pNotesPage ) - pNotesPage->SetName(aName); - } - - // fake a mode change to repaint the page tab bar - ::sd::DrawDocShell* pDocSh = GetModel()->GetDocShell(); - ::sd::ViewShell* pViewSh = pDocSh ? pDocSh->GetViewShell() : NULL; - if( pViewSh && pViewSh->ISA(::sd::DrawViewShell)) - { - ::sd::DrawViewShell* pDrawViewSh = static_cast< - ::sd::DrawViewShell*>(pViewSh); - - EditMode eMode = pDrawViewSh->GetEditMode(); - if( eMode == EM_PAGE ) - { - sal_Bool bLayer = pDrawViewSh->IsLayerModeActive(); - - pDrawViewSh->ChangeEditMode( eMode, !bLayer ); - pDrawViewSh->ChangeEditMode( eMode, bLayer ); - } - } - - GetModel()->SetModified(); - } -} - -OUString SAL_CALL SdDrawPage::getName() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - return getPageApiName( GetPage() ); -} - -// XMasterPageTarget -Reference< drawing::XDrawPage > SAL_CALL SdDrawPage::getMasterPage( ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - if(GetPage()) - { - Reference< drawing::XDrawPages > xPages( GetModel()->getMasterPages() ); - Reference< drawing::XDrawPage > xPage; - - if(SvxFmDrawPage::mpPage->TRG_HasMasterPage()) - { - SdrPage& rMasterPage = SvxFmDrawPage::mpPage->TRG_GetMasterPage(); - xPage = uno::Reference< drawing::XDrawPage >( rMasterPage.getUnoPage(), uno::UNO_QUERY ); - } - - return xPage; - } - return NULL; -} - -void SAL_CALL SdDrawPage::setMasterPage( const Reference< drawing::XDrawPage >& xMasterPage ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - if(SvxFmDrawPage::mpPage) - { - SdMasterPage* pMasterPage = SdMasterPage::getImplementation( xMasterPage ); - if( pMasterPage && pMasterPage->isValid() ) - { - SvxFmDrawPage::mpPage->TRG_ClearMasterPage(); - - SdPage* pSdPage = (SdPage*) pMasterPage->GetSdrPage(); - SvxFmDrawPage::mpPage->TRG_SetMasterPage(*pSdPage); - - SvxFmDrawPage::mpPage->SetBorder(pSdPage->GetLftBorder(),pSdPage->GetUppBorder(), - pSdPage->GetRgtBorder(),pSdPage->GetLwrBorder() ); - - SvxFmDrawPage::mpPage->SetSize( pSdPage->GetSize() ); - SvxFmDrawPage::mpPage->SetOrientation( pSdPage->GetOrientation() ); - ((SdPage*)SvxFmDrawPage::mpPage)->SetLayoutName( ( (SdPage*)pSdPage )->GetLayoutName() ); - - // set notes master also - SdPage* pNotesPage = GetModel()->GetDoc()->GetSdPage( (SvxFmDrawPage::mpPage->GetPageNum()-1)>>1, PK_NOTES ); - - pNotesPage->TRG_ClearMasterPage(); - sal_uInt16 nNum = (SvxFmDrawPage::mpPage->TRG_GetMasterPage()).GetPageNum() + 1; - pNotesPage->TRG_SetMasterPage(*SvxFmDrawPage::mpPage->GetModel()->GetMasterPage(nNum)); - pNotesPage->SetLayoutName( ( (SdPage*)pSdPage )->GetLayoutName() ); - - GetModel()->SetModified(); - } - - } -} - -// XPresentationPage -Reference< drawing::XDrawPage > SAL_CALL SdDrawPage::getNotesPage() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - if(SvxFmDrawPage::mpPage && GetModel()->GetDoc() && SvxFmDrawPage::mpPage->GetPageNum() ) - { - SdPage* pNotesPage = GetModel()->GetDoc()->GetSdPage( (SvxFmDrawPage::mpPage->GetPageNum()-1)>>1, PK_NOTES ); - if( pNotesPage ) - { - Reference< drawing::XDrawPage > xPage( pNotesPage->getUnoPage(), uno::UNO_QUERY ); - return xPage; - } - } - return NULL; -} - - -// XIndexAccess -sal_Int32 SAL_CALL SdDrawPage::getCount() - throw(uno::RuntimeException) -{ - return SdGenericDrawPage::getCount(); -} - -Any SAL_CALL SdDrawPage::getByIndex( sal_Int32 Index ) - throw(lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) -{ - return SdGenericDrawPage::getByIndex( Index ); -} - -// XElementAccess -uno::Type SAL_CALL SdDrawPage::getElementType() - throw(uno::RuntimeException) -{ - return SdGenericDrawPage::getElementType(); -} - -sal_Bool SAL_CALL SdDrawPage::hasElements() - throw(uno::RuntimeException) -{ - return SdGenericDrawPage::hasElements(); -} - -// XShapes -void SAL_CALL SdDrawPage::add( const Reference< drawing::XShape >& xShape ) throw(uno::RuntimeException) -{ - SdGenericDrawPage::add( xShape ); -} - -void SAL_CALL SdDrawPage::remove( const Reference< drawing::XShape >& xShape ) throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - SvxShape* pShape = SvxShape::getImplementation( xShape ); - if( pShape ) - { - SdrObject* pObj = pShape->GetSdrObject(); - if( pObj ) - { - GetPage()->RemovePresObj(pObj); - pObj->SetUserCall(NULL); - } - } - - SdGenericDrawPage::remove( xShape ); -} - -void SdDrawPage::setBackground( const Any& rValue ) - throw( lang::IllegalArgumentException ) -{ - Reference< beans::XPropertySet > xSet; - - if( !(rValue >>= xSet) && !rValue.hasValue() ) - throw lang::IllegalArgumentException(); - - if( !xSet.is() ) - { - // the easy case, no background set. Set XFILL_NONE to represent this - GetPage()->getSdrPageProperties().PutItem(XFillStyleItem(XFILL_NONE)); - return; - } - - // is it our own implementation? - SdUnoPageBackground* pBack = SdUnoPageBackground::getImplementation( xSet ); - - SfxItemSet aSet( GetModel()->GetDoc()->GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST ); - - if( pBack ) - { - pBack->fillItemSet( (SdDrawDocument*)GetPage()->GetModel(), aSet ); - } - else - { - SdUnoPageBackground* pBackground = new SdUnoPageBackground(); - - Reference< beans::XPropertySetInfo > xSetInfo( xSet->getPropertySetInfo() ); - Reference< beans::XPropertySet > xDestSet( (beans::XPropertySet*)pBackground ); - Reference< beans::XPropertySetInfo > xDestSetInfo( xDestSet->getPropertySetInfo() ); - - Sequence< beans::Property > aProperties( xDestSetInfo->getProperties() ); - sal_Int32 nCount = aProperties.getLength(); - beans::Property* pProp = aProperties.getArray(); - - while( nCount-- ) - { - const OUString aPropName( pProp->Name ); - if( xSetInfo->hasPropertyByName( aPropName ) ) - xDestSet->setPropertyValue( aPropName, - xSet->getPropertyValue( aPropName ) ); - - pProp++; - } - - pBackground->fillItemSet( (SdDrawDocument*)GetPage()->GetModel(), aSet ); - } - - if( aSet.Count() == 0 ) - { - // no background fill, represent by setting XFILL_NONE - GetPage()->getSdrPageProperties().PutItem(XFillStyleItem(XFILL_NONE)); - } - else - { - // background fill, set at page (not sure if ClearItem is needed) - GetPage()->getSdrPageProperties().ClearItem(); - GetPage()->getSdrPageProperties().PutItemSet(aSet); - } - - // repaint only - SvxFmDrawPage::mpPage->ActionChanged(); -} - -// XAnnotationAccess: -Reference< XAnnotation > SAL_CALL SdGenericDrawPage::createAndInsertAnnotation() throw (RuntimeException) -{ - if( !GetPage() ) - throw DisposedException(); - - Reference< XAnnotation > xRet; - GetPage()->createAnnotation(xRet); - return xRet; -} - -void SAL_CALL SdGenericDrawPage::removeAnnotation(const Reference< XAnnotation > & annotation) throw (RuntimeException, IllegalArgumentException) -{ - GetPage()->removeAnnotation(annotation); -} - -Reference< XAnnotationEnumeration > SAL_CALL SdGenericDrawPage::createAnnotationEnumeration() throw (RuntimeException) -{ - return ::sd::createAnnotationEnumeration( GetPage()->getAnnotations() ); -} - -void SdDrawPage::getBackground( Any& rValue ) throw() -{ - const SfxItemSet& rFillAttributes = GetPage()->getSdrPageProperties().GetItemSet(); - - if(XFILL_NONE == ((const XFillStyleItem&)rFillAttributes.Get(XATTR_FILLSTYLE)).GetValue()) - { - // no fill set (switched off by XFILL_NONE), clear rValue to represent this - rValue.clear(); - } - else - { - // there is a fill set, export to rValue - Reference< beans::XPropertySet > xSet(new SdUnoPageBackground( - GetModel()->GetDoc(), - &GetPage()->getSdrPageProperties().GetItemSet())); - rValue <<= xSet; - } -} - -void SdGenericDrawPage::setNavigationOrder( const Any& rValue ) -{ - Reference< XIndexAccess > xIA( rValue, UNO_QUERY ); - if( xIA.is() ) - { - if( dynamic_cast< SdDrawPage* >( xIA.get() ) == this ) - { - if( GetPage()->HasObjectNavigationOrder() ) - GetPage()->ClearObjectNavigationOrder(); - - return; - } - else if( xIA->getCount() == static_cast< sal_Int32 >( GetPage()->GetObjCount() ) ) - { - GetPage()->SetNavigationOrder(xIA); - return; - } - } - throw IllegalArgumentException(); -} - -class NavigationOrderAccess : public ::cppu::WeakImplHelper1< XIndexAccess > -{ -public: - NavigationOrderAccess( SdrPage* pPage ); - - // XIndexAccess - virtual sal_Int32 SAL_CALL getCount( ) throw (RuntimeException); - virtual Any SAL_CALL getByIndex( sal_Int32 Index ) throw (IndexOutOfBoundsException, WrappedTargetException, RuntimeException); - - // XElementAccess - virtual Type SAL_CALL getElementType( ) throw (RuntimeException); - virtual sal_Bool SAL_CALL hasElements( ) throw (RuntimeException); - -private: - std::vector< Reference< XShape > > maShapes; -}; - -NavigationOrderAccess::NavigationOrderAccess( SdrPage* pPage ) -: maShapes( static_cast< sal_uInt32 >( pPage ? pPage->GetObjCount() : 0 ) ) -{ - if( pPage ) - { - sal_uInt32 nIndex; - const sal_uInt32 nCount = static_cast< sal_uInt32 >( pPage->GetObjCount() ); - for( nIndex = 0; nIndex < nCount; ++nIndex ) - { - SdrObject* pObj = pPage->GetObj( nIndex ); - sal_uInt32 nNavPos = pObj->GetNavigationPosition(); - DBG_ASSERT( !maShapes[nNavPos].is(), "sd::NavigationOrderAccess::NavigationOrderAccess(), duplicate navigation positions from core!" ); - maShapes[nNavPos] = Reference< XShape >( pObj->getUnoShape(), UNO_QUERY ); - } - } -} - -// XIndexAccess -sal_Int32 SAL_CALL NavigationOrderAccess::getCount( ) throw (RuntimeException) -{ - return static_cast< sal_Int32 >( maShapes.size() ); -} - -Any SAL_CALL NavigationOrderAccess::getByIndex( sal_Int32 Index ) throw (IndexOutOfBoundsException, WrappedTargetException, RuntimeException) -{ - if( (Index < 0) || (Index > getCount()) ) - throw IndexOutOfBoundsException(); - - return Any( maShapes[Index] ); -} - -// XElementAccess -Type SAL_CALL NavigationOrderAccess::getElementType( ) throw (RuntimeException) -{ - return XShape::static_type(); -} - -sal_Bool SAL_CALL NavigationOrderAccess::hasElements( ) throw (RuntimeException) -{ - return maShapes.empty() ? sal_False : sal_True; -} - -Any SdGenericDrawPage::getNavigationOrder() -{ - if( GetPage()->HasObjectNavigationOrder() ) - { - return Any( Reference< XIndexAccess >( new NavigationOrderAccess( GetPage() ) ) ); - } - else - { - return Any( Reference< XIndexAccess >( this ) ); - } -} - -//======================================================================== -// class SdMasterPage -//======================================================================== - -SdMasterPage::SdMasterPage( SdXImpressDocument* pModel, SdPage* pPage ) throw() -: SdGenericDrawPage( pModel, pPage, ImplGetMasterPagePropertySet( pPage ? pPage->GetPageKind() : PK_STANDARD ) ) -{ -} - -SdMasterPage::~SdMasterPage() throw() -{ -} - -// XInterface -Any SAL_CALL SdMasterPage::queryInterface( const uno::Type & rType ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - uno::Any aAny; - - if( rType == ITYPE( container::XIndexAccess ) ) - aAny <<= Reference< container::XIndexAccess >((presentation::XPresentationPage*)(this)); - else if( rType == ITYPE( container::XElementAccess ) ) - aAny <<= Reference< container::XElementAccess >((presentation::XPresentationPage*)(this)); - else if( rType == ITYPE( container::XNamed ) ) - aAny <<= Reference< container::XNamed >(this); - else if( rType == ITYPE( presentation::XPresentationPage ) && - ( mbIsImpressDocument && - GetPage() && GetPage()->GetPageKind() != PK_HANDOUT) ) - aAny <<= Reference< presentation::XPresentationPage >( this ); - else - return SdGenericDrawPage::queryInterface( rType ); - - return aAny; -} - -void SAL_CALL SdMasterPage::acquire() throw() -{ - SvxDrawPage::acquire(); -} - -void SAL_CALL SdMasterPage::release() throw() -{ - SvxDrawPage::release(); -} - -UNO3_GETIMPLEMENTATION2_IMPL( SdMasterPage, SdGenericDrawPage ); - -// XTypeProvider -Sequence< uno::Type > SAL_CALL SdMasterPage::getTypes() throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - if( maTypeSequence.getLength() == 0 ) - { - const PageKind ePageKind = GetPage() ? GetPage()->GetPageKind() : PK_STANDARD; - sal_Bool bPresPage = mbIsImpressDocument && SvxFmDrawPage::mpPage && ePageKind != PK_HANDOUT; - - // Collect the types of this class. - ::std::vector<uno::Type> aTypes; - aTypes.reserve(12); - aTypes.push_back(ITYPE(drawing::XDrawPage)); - aTypes.push_back(ITYPE(beans::XPropertySet)); - aTypes.push_back(ITYPE(container::XNamed)); - aTypes.push_back(ITYPE(lang::XServiceInfo)); - aTypes.push_back(ITYPE(util::XReplaceable)); - aTypes.push_back(ITYPE(document::XLinkTargetSupplier)); - aTypes.push_back(ITYPE( drawing::XShapeCombiner )); - aTypes.push_back(ITYPE( drawing::XShapeBinder )); - aTypes.push_back(ITYPE( office::XAnnotationAccess )); - aTypes.push_back(ITYPE( beans::XMultiPropertySet )); - if( bPresPage ) - aTypes.push_back(ITYPE(presentation::XPresentationPage)); - if( bPresPage && ePageKind == PK_STANDARD ) - aTypes.push_back(ITYPE(XAnimationNodeSupplier)); - - // Get types of base class. - const Sequence< uno::Type > aBaseTypes( SdGenericDrawPage::getTypes() ); - const sal_Int32 nBaseTypes = aBaseTypes.getLength(); - const uno::Type* pBaseTypes = aBaseTypes.getConstArray(); - - // Join those types in a sequence. - maTypeSequence.realloc(aTypes.size() + nBaseTypes); - uno::Type* pTypes = maTypeSequence.getArray(); - ::std::vector<uno::Type>::const_iterator iType; - for (iType=aTypes.begin(); iType!=aTypes.end(); ++iType) - *pTypes++ = *iType; - for( sal_Int32 nType = 0; nType < nBaseTypes; nType++ ) - *pTypes++ = *pBaseTypes++; - } - - return maTypeSequence; -} - -namespace -{ - class theSdMasterPageImplementationId : public rtl::Static< UnoTunnelIdInit, theSdMasterPageImplementationId > {}; -} - -Sequence< sal_Int8 > SAL_CALL SdMasterPage::getImplementationId() throw(uno::RuntimeException) -{ - return theSdMasterPageImplementationId::get().getSeq(); -} - -// XServiceInfo -OUString SAL_CALL SdMasterPage::getImplementationName() throw(uno::RuntimeException) -{ - return OUString( RTL_CONSTASCII_USTRINGPARAM("SdMasterPage") ); -} - -Sequence< OUString > SAL_CALL SdMasterPage::getSupportedServiceNames() throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - Sequence< OUString > aSeq( SdGenericDrawPage::getSupportedServiceNames() ); - comphelper::ServiceInfoHelper::addToSequence( aSeq, 1, "com.sun.star.drawing.MasterPage" ); - - if( SvxFmDrawPage::mpPage && ((SdPage*)SvxFmDrawPage::mpPage)->GetPageKind() == PK_HANDOUT ) - comphelper::ServiceInfoHelper::addToSequence( aSeq, 1, "com.sun.star.presentation.HandoutMasterPage" ); - - return aSeq; -} - -sal_Bool SAL_CALL SdMasterPage::supportsService( const OUString& ServiceName ) - throw(uno::RuntimeException) -{ - return SdGenericDrawPage::supportsService( ServiceName ); -} - -// XElementAccess -sal_Bool SAL_CALL SdMasterPage::hasElements() throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - if( SvxFmDrawPage::mpPage == NULL ) - return sal_False; - - return SvxFmDrawPage::mpPage->GetObjCount() > 0; -} - -uno::Type SAL_CALL SdMasterPage::getElementType() - throw(uno::RuntimeException) -{ - return SdGenericDrawPage::getElementType(); -} - -// XIndexAccess -sal_Int32 SAL_CALL SdMasterPage::getCount() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - return SdGenericDrawPage::getCount(); -} - -Any SAL_CALL SdMasterPage::getByIndex( sal_Int32 Index ) - throw(lang::IndexOutOfBoundsException, lang::WrappedTargetException, uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - return SdGenericDrawPage::getByIndex(Index); -} - -// intern -void SdMasterPage::setBackground( const Any& rValue ) - throw( lang::IllegalArgumentException ) -{ - // we need at least an beans::XPropertySet - Reference< beans::XPropertySet > xInputSet( rValue, UNO_QUERY ); - if( !xInputSet.is() ) - throw lang::IllegalArgumentException(); - - try - { - if( GetModel() && mbIsImpressDocument ) - { - Reference< container::XNameAccess > xFamilies( GetModel()->getStyleFamilies(), UNO_QUERY_THROW ); - Reference< container::XNameAccess > xFamily( xFamilies->getByName( getName() ), UNO_QUERY_THROW ) ; - if( xFamily.is() ) - { - OUString aStyleName( OUString::createFromAscii(sUNO_PseudoSheet_Background) ); - - Reference< beans::XPropertySet > xStyleSet( xFamily->getByName( aStyleName ), UNO_QUERY_THROW ); - - Reference< beans::XPropertySetInfo > xSetInfo( xInputSet->getPropertySetInfo(), UNO_QUERY_THROW ); - Reference< beans::XPropertyState > xSetStates( xInputSet, UNO_QUERY ); - - PropertyEntryVector_t aBackgroundProperties = ImplGetPageBackgroundPropertySet()->getPropertyMap()->getPropertyEntries(); - PropertyEntryVector_t::const_iterator aIt = aBackgroundProperties.begin(); - while( aIt != aBackgroundProperties.end() ) - { - if( xSetInfo->hasPropertyByName( aIt->sName ) ) - { - if( !xSetStates.is() || xSetStates->getPropertyState( aIt->sName ) == beans::PropertyState_DIRECT_VALUE ) - xStyleSet->setPropertyValue( aIt->sName, xInputSet->getPropertyValue( aIt->sName ) ); - else - xSetStates->setPropertyToDefault( aIt->sName ); - } - - ++aIt; - } - } - } - else - { - // first fill an item set - // is it our own implementation? - SdUnoPageBackground* pBack = SdUnoPageBackground::getImplementation( xInputSet ); - - SfxItemSet aSet( GetModel()->GetDoc()->GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST ); - - if( pBack ) - { - pBack->fillItemSet( (SdDrawDocument*)GetPage()->GetModel(), aSet ); - } - else - { - SdUnoPageBackground* pBackground = new SdUnoPageBackground(); - - Reference< beans::XPropertySetInfo > xInputSetInfo( xInputSet->getPropertySetInfo(), UNO_QUERY_THROW ); - Reference< beans::XPropertySet > xDestSet( (beans::XPropertySet*)pBackground ); - Reference< beans::XPropertySetInfo > xDestSetInfo( xDestSet->getPropertySetInfo(), UNO_QUERY_THROW ); - - uno::Sequence< beans::Property> aProperties( xDestSetInfo->getProperties() ); - sal_Int32 nCount = aProperties.getLength(); - beans::Property* pProp = aProperties.getArray(); - - while( nCount-- ) - { - const OUString aPropName( pProp->Name ); - if( xInputSetInfo->hasPropertyByName( aPropName ) ) - xDestSet->setPropertyValue( aPropName, xInputSet->getPropertyValue( aPropName ) ); - - pProp++; - } - - pBackground->fillItemSet( (SdDrawDocument*)SvxFmDrawPage::mpPage->GetModel(), aSet ); - } - - // if we find the background style, copy the set to the background - SdDrawDocument* pDoc = (SdDrawDocument*)SvxFmDrawPage::mpPage->GetModel(); - SfxStyleSheetBasePool* pSSPool = (SfxStyleSheetBasePool*)pDoc->GetStyleSheetPool(); - if(pSSPool) - { - String aLayoutName( static_cast< SdPage* >( SvxFmDrawPage::mpPage )->GetLayoutName() ); - aLayoutName.Erase(aLayoutName.Search(String(RTL_CONSTASCII_USTRINGPARAM(SD_LT_SEPARATOR)))+4); - aLayoutName += String(SdResId(STR_LAYOUT_BACKGROUND)); - SfxStyleSheetBase* pStyleSheet = pSSPool->Find( aLayoutName, SD_STYLE_FAMILY_MASTERPAGE ); - - if( pStyleSheet ) - { - pStyleSheet->GetItemSet().Put( aSet ); - - // repaint only - SvxFmDrawPage::mpPage->ActionChanged(); - return; - } - } - - // if no background style is available, set at page directly. This - // is an error and should NOT happen (and will be asserted from the SdrPage) - GetPage()->getSdrPageProperties().PutItemSet(aSet); - } - } - catch( Exception& ) - { - OSL_FAIL("sd::SdMasterPage::setBackground(), exception caught!"); - } -} - -void SdMasterPage::getBackground( Any& rValue ) throw() -{ - if( GetModel() ) try - { - if( mbIsImpressDocument ) - { - Reference< container::XNameAccess > xFamilies( GetModel()->getStyleFamilies(), UNO_QUERY_THROW ); - Reference< container::XNameAccess > xFamily( xFamilies->getByName( getName() ), UNO_QUERY_THROW ); - - const OUString aStyleName( OUString::createFromAscii(sUNO_PseudoSheet_Background) ); - rValue <<= Reference< beans::XPropertySet >( xFamily->getByName( aStyleName ), UNO_QUERY_THROW ); - } - else - { - SdDrawDocument* pDoc = (SdDrawDocument*)SvxFmDrawPage::mpPage->GetModel(); - SfxStyleSheetBasePool* pSSPool = (SfxStyleSheetBasePool*)pDoc->GetStyleSheetPool(); - if(pSSPool) - { - String aLayoutName( static_cast< SdPage* >(SvxFmDrawPage::mpPage)->GetLayoutName() ); - aLayoutName.Erase( aLayoutName.Search(String(RTL_CONSTASCII_USTRINGPARAM(SD_LT_SEPARATOR)))+4); - aLayoutName += String(SdResId(STR_LAYOUT_BACKGROUND)); - SfxStyleSheetBase* pStyleSheet = pSSPool->Find( aLayoutName, SD_STYLE_FAMILY_MASTERPAGE ); - - if( pStyleSheet ) - { - SfxItemSet aStyleSet( pStyleSheet->GetItemSet()); - if( aStyleSet.Count() ) - { - rValue <<= Reference< beans::XPropertySet >( new SdUnoPageBackground( pDoc, &aStyleSet ) ); - return; - } - } - } - - // No style found, use fill attributes from page background. This - // should NOT happen and is an error - const SfxItemSet& rFallbackItemSet(SvxFmDrawPage::mpPage->getSdrPageProperties().GetItemSet()); - - if(XFILL_NONE == ((const XFillStyleItem&)rFallbackItemSet.Get(XATTR_FILLSTYLE)).GetValue()) - { - rValue <<= Reference< beans::XPropertySet >( - new SdUnoPageBackground(GetModel()->GetDoc(), &rFallbackItemSet)); - } - else - { - rValue.clear(); - } - } - } - catch( Exception& ) - { - rValue.clear(); - OSL_FAIL("sd::SdMasterPage::getBackground(), exception caught!"); - } -} - -// XNamed -void SAL_CALL SdMasterPage::setName( const OUString& aName ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - if(SvxFmDrawPage::mpPage && GetPage()->GetPageKind() != PK_NOTES) - { - String aNewName( aName ); - GetPage()->SetName( aNewName ); - - if(GetModel()->GetDoc()) - GetModel()->GetDoc()->RenameLayoutTemplate(GetPage()->GetLayoutName(), aNewName); - - // fake a mode change to repaint the page tab bar - ::sd::DrawDocShell* pDocSh = GetModel()->GetDocShell(); - ::sd::ViewShell* pViewSh = pDocSh ? pDocSh->GetViewShell() : NULL; - if( pViewSh && pViewSh->ISA(::sd::DrawViewShell ) ) - { - ::sd::DrawViewShell* pDrawViewSh = - static_cast< ::sd::DrawViewShell*>(pViewSh); - - EditMode eMode = pDrawViewSh->GetEditMode(); - if( eMode == EM_MASTERPAGE ) - { - sal_Bool bLayer = pDrawViewSh->IsLayerModeActive(); - - pDrawViewSh->ChangeEditMode( eMode, !bLayer ); - pDrawViewSh->ChangeEditMode( eMode, bLayer ); - } - } - - GetModel()->SetModified(); - } -} - -OUString SAL_CALL SdMasterPage::getName( ) - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - if(SvxFmDrawPage::mpPage) - { - String aLayoutName( GetPage()->GetLayoutName() ); - aLayoutName = aLayoutName.Erase(aLayoutName.Search( String( RTL_CONSTASCII_USTRINGPARAM((SD_LT_SEPARATOR))))); - - return aLayoutName; - } - - return OUString(); -} - -// XPresentationPage -Reference< drawing::XDrawPage > SAL_CALL SdMasterPage::getNotesPage() - throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - if(SvxFmDrawPage::mpPage && GetModel()->GetDoc() ) - { - SdPage* pNotesPage = GetModel()->GetDoc()->GetMasterSdPage( (SvxFmDrawPage::mpPage->GetPageNum()-1)>>1, PK_NOTES ); - if( pNotesPage ) - { - Reference< drawing::XDrawPage > xPage( pNotesPage->getUnoPage(), uno::UNO_QUERY ); - return xPage; - } - } - return NULL; -} - -// XShapes -void SAL_CALL SdMasterPage::add( const Reference< drawing::XShape >& xShape ) throw(uno::RuntimeException) -{ - SdGenericDrawPage::add( xShape ); -} - -void SAL_CALL SdMasterPage::remove( const Reference< drawing::XShape >& xShape ) throw(uno::RuntimeException) -{ - ::SolarMutexGuard aGuard; - - throwIfDisposed(); - - SvxShape* pShape = SvxShape::getImplementation( xShape ); - if( pShape ) - { - SdrObject* pObj = pShape->GetSdrObject(); - if( pObj ) - { - if( GetPage()->IsPresObj( pObj ) ) - GetPage()->RemovePresObj(pObj); - } - } - - SdGenericDrawPage::remove( xShape ); -} - - -Reference< uno::XInterface > createUnoPageImpl( SdPage* pPage ) -{ - Reference< uno::XInterface > xPage; - - if( pPage && pPage->GetModel() ) - { - SdXImpressDocument* pModel = SdXImpressDocument::getImplementation( pPage->GetModel()->getUnoModel() ); - if( pModel ) - { - if( pPage->IsMasterPage() ) - { - xPage = (::cppu::OWeakObject*)new SdMasterPage( pModel, pPage ); - } - else - { - xPage = (::cppu::OWeakObject*)new SdDrawPage( pModel, pPage ); - } - } - } - - return xPage; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unopage.hxx b/sd/source/ui/unoidl/unopage.hxx deleted file mode 100644 index a203bf708..000000000 --- a/sd/source/ui/unoidl/unopage.hxx +++ /dev/null @@ -1,316 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _SD_UNOPAGE_HXX -#define _SD_UNOPAGE_HXX - -#include <com/sun/star/document/XLinkTargetSupplier.hpp> -#include <com/sun/star/container/XIndexAccess.hpp> -#include <com/sun/star/container/XNamed.hpp> -#include <com/sun/star/drawing/XMasterPageTarget.hpp> -#include <com/sun/star/presentation/XPresentationPage.hpp> -#include <com/sun/star/animations/XAnimationNodeSupplier.hpp> -#include <com/sun/star/beans/XMultiPropertySet.hpp> -#include <com/sun/star/office/XAnnotationAccess.hpp> - -#include <svl/itemprop.hxx> - -#include <svx/unopage.hxx> -#include <svx/fmdpage.hxx> -#include <svx/svdpool.hxx> - -#include <comphelper/servicehelper.hxx> - -#include "unosrch.hxx" - -class SdPage; -class SvxShape; -class SdrObject; -struct SfxItemPropertySimpleEntry; - -/*********************************************************************** -* * -***********************************************************************/ -class SdGenericDrawPage : public SvxFmDrawPage, - public SdUnoSearchReplaceShape, - public ::com::sun::star::drawing::XShapeCombiner, - public ::com::sun::star::drawing::XShapeBinder, - public ::com::sun::star::container::XNamed, - public ::com::sun::star::beans::XPropertySet, - public ::com::sun::star::beans::XMultiPropertySet, - public ::com::sun::star::animations::XAnimationNodeSupplier, - public ::com::sun::star::office::XAnnotationAccess, - public ::com::sun::star::document::XLinkTargetSupplier -{ -private: - SdXImpressDocument* mpModel; - SdrModel* mpSdrModel; - sal_Int16 mnTempPageNumber; // for printing handouts - -protected: - friend class SdXImpressDocument; - - const SvxItemPropertySet* mpPropSet; - - virtual void setBackground( const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::lang::IllegalArgumentException); - virtual void getBackground( ::com::sun::star::uno::Any& rValue ) throw(); - - rtl::OUString getBookmarkURL() const; - void setBookmarkURL( rtl::OUString& rURL ); - - void SetLftBorder( sal_Int32 nValue ); - void SetRgtBorder( sal_Int32 nValue ); - void SetUppBorder( sal_Int32 nValue ); - void SetLwrBorder( sal_Int32 nValue ); - - void SetWidth( sal_Int32 nWidth ); - void SetHeight( sal_Int32 nHeight ); - - bool mbIsImpressDocument; - - virtual void disposing() throw(); - - ::com::sun::star::uno::Any getNavigationOrder(); - void setNavigationOrder( const ::com::sun::star::uno::Any& rValue ); - - void throwIfDisposed() const throw (::com::sun::star::uno::RuntimeException ); - -public: - SdGenericDrawPage( SdXImpressDocument* pModel, SdPage* pInPage, const SvxItemPropertySet* pSet ) throw(); - virtual ~SdGenericDrawPage() throw(); - - // intern - sal_Bool isValid() { return (SvxDrawPage::mpPage != NULL) && (mpModel != NULL); } - - SdPage* GetPage() const { return (SdPage*)SvxDrawPage::mpPage; } - SdXImpressDocument* GetModel() const; - - static const ::com::sun::star::uno::Sequence< sal_Int8 > & getUnoTunnelId() throw(); - virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException); - - // this is called whenever a SdrObject must be created for a empty api shape wrapper - virtual SdrObject *_CreateSdrObject( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(); - - // SvxFmDrawPage - virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > _CreateShape( SdrObject *pObj ) const throw (); - - // XInterface - virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL release() throw(); - - // XShapeCombiner - virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > SAL_CALL combine( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xShapes ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL split( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xGroup ) throw(::com::sun::star::uno::RuntimeException); - - // XShapeBinder - virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > SAL_CALL bind( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xShapes ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL unbind( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(::com::sun::star::uno::RuntimeException); - - // XPropertySet - virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - - // XMultiPropertySet - virtual void SAL_CALL setPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aValues ) throw (::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > SAL_CALL getPropertyValues( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addPropertiesChangeListener( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removePropertiesChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL firePropertiesChangeEvent( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); - - // XLinkTargetSupplier - virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getLinks( ) throw(::com::sun::star::uno::RuntimeException); - - // XServiceInfo - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException); - - // XAnimationNodeSupplier - virtual ::com::sun::star::uno::Reference< ::com::sun::star::animations::XAnimationNode > SAL_CALL getAnimationNode( ) throw (::com::sun::star::uno::RuntimeException); - - // XAnnotationAccess: - virtual ::com::sun::star::uno::Reference< ::com::sun::star::office::XAnnotation > SAL_CALL createAndInsertAnnotation() throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removeAnnotation(const ::com::sun::star::uno::Reference< ::com::sun::star::office::XAnnotation > & annotation) throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException); - virtual ::com::sun::star::uno::Reference< ::com::sun::star::office::XAnnotationEnumeration > SAL_CALL createAnnotationEnumeration() throw (::com::sun::star::uno::RuntimeException); -}; - -/*********************************************************************** -* * -***********************************************************************/ - -class SdDrawPage : public ::com::sun::star::drawing::XMasterPageTarget, - public ::com::sun::star::presentation::XPresentationPage, - public SdGenericDrawPage -{ -private: - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > maTypeSequence; - -protected: - virtual void setBackground( const ::com::sun::star::uno::Any& rValue ) throw(::com::sun::star::lang::IllegalArgumentException); - virtual void getBackground( ::com::sun::star::uno::Any& rValue ) throw(); -public: - SdDrawPage( SdXImpressDocument* pModel, SdPage* pInPage ) throw(); - virtual ~SdDrawPage() throw(); - - UNO3_GETIMPLEMENTATION_DECL( SdDrawPage ) - - static ::rtl::OUString getPageApiName( SdPage* pPage ); - static ::rtl::OUString getPageApiNameFromUiName( const String& rUIName ); - static String getUiNameFromPageApiName( const ::rtl::OUString& rApiName ); - - // XInterface - virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL acquire() throw(); - virtual void SAL_CALL release() throw(); - - // XTypeProvider - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw(::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException); - - // XServiceInfo - virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException); - - // XMasterPageTarget - virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > SAL_CALL getMasterPage( ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setMasterPage( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >& xMasterPage ) throw(::com::sun::star::uno::RuntimeException); - - // XPresentationPage - virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > SAL_CALL getNotesPage( ) throw(::com::sun::star::uno::RuntimeException); - - // XNamed - virtual ::rtl::OUString SAL_CALL getName( ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setName( const ::rtl::OUString& aName ) throw(::com::sun::star::uno::RuntimeException); - - // XIndexAccess - virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException) ; - virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - - // XElementAccess - virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); - - // XShapes - virtual void SAL_CALL add( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL remove( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(::com::sun::star::uno::RuntimeException); -}; - -/*********************************************************************** -* * -***********************************************************************/ - -class SdMasterPage : public ::com::sun::star::presentation::XPresentationPage, - public SdGenericDrawPage -{ -private: - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > maTypeSequence; -protected: - virtual void setBackground( const ::com::sun::star::uno::Any& rValue ) throw( ::com::sun::star::lang::IllegalArgumentException ); - virtual void getBackground( ::com::sun::star::uno::Any& rValue ) throw(); - -public: - SdMasterPage( SdXImpressDocument* pModel, SdPage* pInPage ) throw(); - virtual ~SdMasterPage() throw(); - - UNO3_GETIMPLEMENTATION_DECL(SdMasterPage) - - // XInterface - virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL acquire() throw(); - virtual void SAL_CALL release() throw(); - - // XTypeProvider - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw(::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw(::com::sun::star::uno::RuntimeException); - - // XServiceInfo - virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException); - - // XIndexAccess - virtual sal_Int32 SAL_CALL getCount() throw(::com::sun::star::uno::RuntimeException) ; - virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 Index ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - - // XElementAccess - virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); - - // XPresentationPage - virtual ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > SAL_CALL getNotesPage( ) throw(::com::sun::star::uno::RuntimeException); - - // XNamed - virtual ::rtl::OUString SAL_CALL getName( ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setName( const ::rtl::OUString& aName ) throw(::com::sun::star::uno::RuntimeException); - - // XShapes - virtual void SAL_CALL add( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL remove( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ) throw(::com::sun::star::uno::RuntimeException); -}; - - -/*********************************************************************** -* * -***********************************************************************/ -#include <cppuhelper/implbase2.hxx> - -class SdPageLinkTargets : public ::cppu::WeakImplHelper2< ::com::sun::star::container::XNameAccess, - ::com::sun::star::lang::XServiceInfo > -{ -private: - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage > mxPage; - SdGenericDrawPage* mpUnoPage; - -public: - SdPageLinkTargets( SdGenericDrawPage* pUnoPage ) throw(); - virtual ~SdPageLinkTargets() throw(); - - // intern - SdrObject* FindObject( const String& rName ) const throw(); - - // XServiceInfo - virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException); - - // XNameAccess - virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw(::com::sun::star::uno::RuntimeException); - - // XElementAccess - virtual ::com::sun::star::uno::Type SAL_CALL getElementType() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL hasElements() throw(::com::sun::star::uno::RuntimeException); -}; - -#endif // _SD_UNOPAGE_HXX - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unopback.cxx b/sd/source/ui/unoidl/unopback.cxx deleted file mode 100644 index 63420744e..000000000 --- a/sd/source/ui/unoidl/unopback.cxx +++ /dev/null @@ -1,463 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" -#include <com/sun/star/drawing/BitmapMode.hpp> -#include <osl/mutex.hxx> -#include <vcl/svapp.hxx> -#include <svl/itemset.hxx> -#include <svx/svdpool.hxx> -#include <comphelper/extract.hxx> -#include <rtl/memory.h> -#include <svx/xflbstit.hxx> -#include <svx/xflbmtit.hxx> -#include <svx/svdobj.hxx> -#include <svx/unoprov.hxx> -#include <svx/unoshape.hxx> -#include <comphelper/serviceinfohelper.hxx> - -#include "unopback.hxx" -#include "unohelp.hxx" -#include "drawdoc.hxx" -#include "unokywds.hxx" - -using namespace ::rtl; -using namespace ::com::sun::star; - -const SvxItemPropertySet* ImplGetPageBackgroundPropertySet() -{ - static const SfxItemPropertyMapEntry aPageBackgroundPropertyMap_Impl[] = - { - FILL_PROPERTIES - {0,0,0,0,0,0} - }; - - static SvxItemPropertySet aPageBackgroundPropertySet_Impl( aPageBackgroundPropertyMap_Impl, SdrObject::GetGlobalDrawObjectItemPool() ); - return &aPageBackgroundPropertySet_Impl; -} - -UNO3_GETIMPLEMENTATION_IMPL( SdUnoPageBackground ); - -SdUnoPageBackground::SdUnoPageBackground( - SdDrawDocument* pDoc /* = NULL */, - const SfxItemSet* pSet /* = NULL */) throw() -: mpPropSet(ImplGetPageBackgroundPropertySet()), - mpSet(NULL), - mpDoc(pDoc) -{ - if( pDoc ) - { - StartListening( *pDoc ); - mpSet = new SfxItemSet( pDoc->GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST ); - - if( pSet ) - mpSet->Put(*pSet); - } -} - -SdUnoPageBackground::~SdUnoPageBackground() throw() -{ - if( mpDoc ) - EndListening( *mpDoc ); - - if( mpSet ) - delete mpSet; -} - -void SdUnoPageBackground::Notify( SfxBroadcaster&, const SfxHint& rHint ) -{ - const SdrHint* pSdrHint = PTR_CAST( SdrHint, &rHint ); - - if( pSdrHint ) - { - // delete item set if document is dying because then the pool - // will also die - if( pSdrHint->GetKind() == HINT_MODELCLEARED ) - { - delete mpSet; - mpSet = NULL; - mpDoc = NULL; - } - } - -} - -void SdUnoPageBackground::fillItemSet( SdDrawDocument* pDoc, SfxItemSet& rSet ) throw() -{ - rSet.ClearItem(); - - if( mpSet == NULL ) - { - StartListening( *pDoc ); - mpDoc = pDoc; - - mpSet = new SfxItemSet( *rSet.GetPool(), XATTR_FILL_FIRST, XATTR_FILL_LAST ); - - if( mpPropSet->AreThereOwnUsrAnys() ) - { - uno::Any* pAny; - PropertyEntryVector_t aProperties = mpPropSet->getPropertyMap()->getPropertyEntries(); - PropertyEntryVector_t::const_iterator aIt = aProperties.begin(); - - while( aIt != aProperties.end() ) - { - pAny = mpPropSet->GetUsrAnyForID( aIt->nWID ); - if( pAny ) - { - OUString aPropertyName( aIt->sName ); - switch( aIt->nWID ) - { - case XATTR_FILLFLOATTRANSPARENCE : - case XATTR_FILLGRADIENT : - { - if ( ( pAny->getValueType() == ::getCppuType((const ::com::sun::star::awt::Gradient*)0) ) - && ( aIt->nMemberId == MID_FILLGRADIENT ) ) - { - setPropertyValue( aPropertyName, *pAny ); - } - else if ( ( pAny->getValueType() == ::getCppuType((const ::rtl::OUString*)0) ) && - ( aIt->nMemberId == MID_NAME ) ) - { - setPropertyValue( aPropertyName, *pAny ); - } - } - break; - case XATTR_FILLHATCH : - { - if ( ( pAny->getValueType() == ::getCppuType((const ::com::sun::star::drawing::Hatch*)0) ) - && ( aIt->nMemberId == MID_FILLHATCH ) ) - { - setPropertyValue( aPropertyName, *pAny ); - } - else if ( ( pAny->getValueType() == ::getCppuType((const ::rtl::OUString*)0) ) && - ( aIt->nMemberId == MID_NAME ) ) - { - setPropertyValue( aPropertyName, *pAny ); - } - } - break; - case XATTR_FILLBITMAP : - { - if ( ( ( pAny->getValueType() == ::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XBitmap >*)0) ) || - ( pAny->getValueType() == ::getCppuType((const ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic >*)0) ) ) && - ( aIt->nMemberId == MID_BITMAP ) ) - { - setPropertyValue( aPropertyName, *pAny ); - } - else if ( ( pAny->getValueType() == ::getCppuType((const ::rtl::OUString*)0) ) && - ( ( aIt->nMemberId == MID_NAME ) || ( aIt->nMemberId == MID_GRAFURL ) ) ) - { - setPropertyValue( aPropertyName, *pAny ); - } - } - break; - - default: - setPropertyValue( aPropertyName, *pAny ); - } - } - ++aIt; - } - } - } - - rSet.Put( *mpSet ); -} - -// XServiceInfo -OUString SAL_CALL SdUnoPageBackground::getImplementationName() - throw(uno::RuntimeException) -{ - return OUString::createFromAscii( sUNO_SdUnoPageBackground ); -} - -sal_Bool SAL_CALL SdUnoPageBackground::supportsService( const OUString& ServiceName ) - throw(uno::RuntimeException) -{ - return comphelper::ServiceInfoHelper::supportsService( ServiceName, getSupportedServiceNames() ); -} - -uno::Sequence< OUString > SAL_CALL SdUnoPageBackground::getSupportedServiceNames() - throw(uno::RuntimeException) -{ - uno::Sequence< OUString > aNameSequence( 2 ); - OUString* pStrings = aNameSequence.getArray(); - - *pStrings++ = OUString( RTL_CONSTASCII_USTRINGPARAM( sUNO_Service_PageBackground ) ); - *pStrings = OUString( RTL_CONSTASCII_USTRINGPARAM( sUNO_Service_FillProperties ) ); - - return aNameSequence; -} - -// XPropertySet -uno::Reference< beans::XPropertySetInfo > SAL_CALL SdUnoPageBackground::getPropertySetInfo() - throw(uno::RuntimeException) -{ - return mpPropSet->getPropertySetInfo(); -} - -void SAL_CALL SdUnoPageBackground::setPropertyValue( const OUString& aPropertyName, const uno::Any& aValue ) - throw(beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - const SfxItemPropertySimpleEntry* pEntry = getPropertyMapEntry( aPropertyName ); - - if( pEntry == NULL ) - { - throw beans::UnknownPropertyException(); - } - else - { - if( mpSet ) - { - if( pEntry->nWID == OWN_ATTR_FILLBMP_MODE ) - { - drawing::BitmapMode eMode; - if( aValue >>= eMode ) - { - mpSet->Put( XFillBmpStretchItem( eMode == drawing::BitmapMode_STRETCH ) ); - mpSet->Put( XFillBmpTileItem( eMode == drawing::BitmapMode_REPEAT ) ); - return; - } - throw lang::IllegalArgumentException(); - } - - SfxItemPool& rPool = *mpSet->GetPool(); - SfxItemSet aSet( rPool, pEntry->nWID, pEntry->nWID); - aSet.Put( *mpSet ); - - if( !aSet.Count() ) - aSet.Put( rPool.GetDefaultItem( pEntry->nWID ) ); - - if( pEntry->nMemberId == MID_NAME && ( pEntry->nWID == XATTR_FILLBITMAP || pEntry->nWID == XATTR_FILLGRADIENT || pEntry->nWID == XATTR_FILLHATCH || pEntry->nWID == XATTR_FILLFLOATTRANSPARENCE ) ) - { - OUString aName; - if(!(aValue >>= aName )) - throw lang::IllegalArgumentException(); - - SvxShape::SetFillAttribute( pEntry->nWID, aName, aSet ); - } - else - { - SvxItemPropertySet_setPropertyValue( *mpPropSet, pEntry, aValue, aSet ); - } - - mpSet->Put( aSet ); - } - else - { - if(pEntry && pEntry->nWID) - mpPropSet->setPropertyValue( pEntry, aValue ); - } - } -} - -uno::Any SAL_CALL SdUnoPageBackground::getPropertyValue( const OUString& PropertyName ) - throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - uno::Any aAny; - const SfxItemPropertySimpleEntry* pEntry = getPropertyMapEntry(PropertyName); - - if( pEntry == NULL ) - { - throw beans::UnknownPropertyException(); - } - else - { - if( mpSet ) - { - if( pEntry->nWID == OWN_ATTR_FILLBMP_MODE ) - { - XFillBmpStretchItem* pStretchItem = (XFillBmpStretchItem*)mpSet->GetItem(XATTR_FILLBMP_STRETCH); - XFillBmpTileItem* pTileItem = (XFillBmpTileItem*)mpSet->GetItem(XATTR_FILLBMP_TILE); - - if( pStretchItem && pTileItem ) - { - if( pTileItem->GetValue() ) - aAny <<= drawing::BitmapMode_REPEAT; - else if( pStretchItem->GetValue() ) - aAny <<= drawing::BitmapMode_STRETCH; - else - aAny <<= drawing::BitmapMode_NO_REPEAT; - } - } - else - { - SfxItemPool& rPool = *mpSet->GetPool(); - SfxItemSet aSet( rPool, pEntry->nWID, pEntry->nWID); - aSet.Put( *mpSet ); - - if( !aSet.Count() ) - aSet.Put( rPool.GetDefaultItem( pEntry->nWID ) ); - - // Hole Wert aus ItemSet - aAny = SvxItemPropertySet_getPropertyValue( *mpPropSet, pEntry, aSet ); - } - } - else - { - if(pEntry && pEntry->nWID) - aAny = mpPropSet->getPropertyValue( pEntry ); - } - } - return aAny; -} - -void SAL_CALL SdUnoPageBackground::addPropertyChangeListener( const OUString& , const uno::Reference< beans::XPropertyChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {} -void SAL_CALL SdUnoPageBackground::removePropertyChangeListener( const OUString& , const uno::Reference< beans::XPropertyChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {} -void SAL_CALL SdUnoPageBackground::addVetoableChangeListener( const OUString& , const uno::Reference< beans::XVetoableChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {} -void SAL_CALL SdUnoPageBackground::removeVetoableChangeListener( const OUString& , const uno::Reference< beans::XVetoableChangeListener >& ) throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) {} - -// XPropertyState -beans::PropertyState SAL_CALL SdUnoPageBackground::getPropertyState( const OUString& PropertyName ) - throw(beans::UnknownPropertyException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - const SfxItemPropertySimpleEntry* pEntry = getPropertyMapEntry(PropertyName); - - if( pEntry == NULL ) - throw beans::UnknownPropertyException(); - - if( mpSet ) - { - if( pEntry->nWID == OWN_ATTR_FILLBMP_MODE ) - { - if( mpSet->GetItemState( XATTR_FILLBMP_STRETCH, false ) == SFX_ITEM_SET || - mpSet->GetItemState( XATTR_FILLBMP_TILE, false ) == SFX_ITEM_SET ) - { - return beans::PropertyState_DIRECT_VALUE; - } - else - { - return beans::PropertyState_AMBIGUOUS_VALUE; - } - } - - switch( mpSet->GetItemState( pEntry->nWID, sal_False ) ) - { - case SFX_ITEM_READONLY: - case SFX_ITEM_SET: - return beans::PropertyState_DIRECT_VALUE; - case SFX_ITEM_DEFAULT: - return beans::PropertyState_DEFAULT_VALUE; - default: -// case SFX_ITEM_DONTCARE: -// case SFX_ITEM_DISABLED: - return beans::PropertyState_AMBIGUOUS_VALUE; - } - } - else - { - if( NULL == mpPropSet->GetUsrAnyForID(pEntry->nWID) ) - return beans::PropertyState_DEFAULT_VALUE; - else - return beans::PropertyState_DIRECT_VALUE; - } -} - -uno::Sequence< beans::PropertyState > SAL_CALL SdUnoPageBackground::getPropertyStates( const uno::Sequence< OUString >& aPropertyName ) - throw(beans::UnknownPropertyException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - sal_Int32 nCount = aPropertyName.getLength(); - const OUString* pNames = aPropertyName.getConstArray(); - - uno::Sequence< beans::PropertyState > aPropertyStateSequence( nCount ); - beans::PropertyState* pState = aPropertyStateSequence.getArray(); - - while( nCount-- ) - *pState++ = getPropertyState( *pNames++ ); - - return aPropertyStateSequence; -} - -void SAL_CALL SdUnoPageBackground::setPropertyToDefault( const OUString& PropertyName ) - throw(beans::UnknownPropertyException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - const SfxItemPropertySimpleEntry* pEntry = getPropertyMapEntry(PropertyName); - - if( pEntry == NULL ) - throw beans::UnknownPropertyException(); - - if( mpSet ) - { - if( pEntry->nWID == OWN_ATTR_FILLBMP_MODE ) - { - mpSet->ClearItem( XATTR_FILLBMP_STRETCH ); - mpSet->ClearItem( XATTR_FILLBMP_TILE ); - } - else - { - mpSet->ClearItem( pEntry->nWID ); - } - } -} - -uno::Any SAL_CALL SdUnoPageBackground::getPropertyDefault( const OUString& aPropertyName ) - throw(beans::UnknownPropertyException, lang::WrappedTargetException, uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - const SfxItemPropertySimpleEntry* pEntry = getPropertyMapEntry(aPropertyName); - if( pEntry == NULL || mpSet == NULL ) - throw beans::UnknownPropertyException(); - - uno::Any aAny; - if( mpSet ) - { - if( pEntry->nWID == OWN_ATTR_FILLBMP_MODE ) - { - aAny <<= drawing::BitmapMode_REPEAT; - } - else - { - SfxItemPool& rPool = *mpSet->GetPool(); - SfxItemSet aSet( rPool, pEntry->nWID, pEntry->nWID); - aSet.Put( rPool.GetDefaultItem( pEntry->nWID ) ); - - aAny = SvxItemPropertySet_getPropertyValue( *mpPropSet, pEntry, aSet ); - } - } - return aAny; -} - -/** this is used because our property map is not sorted yet */ -const SfxItemPropertySimpleEntry* SdUnoPageBackground::getPropertyMapEntry( const OUString& rPropertyName ) const throw() -{ - return mpPropSet->getPropertyMap()->getByName(rPropertyName); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unopback.hxx b/sd/source/ui/unoidl/unopback.hxx deleted file mode 100644 index 569af0a37..000000000 --- a/sd/source/ui/unoidl/unopback.hxx +++ /dev/null @@ -1,94 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -#ifndef _SD_UNOPBACK_HXX -#define _SD_UNOPBACK_HXX - -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/beans/XPropertyState.hpp> -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/lang/XUnoTunnel.hpp> - -#include <svx/unoshprp.hxx> -#include <editeng/unoipset.hxx> - -#include <comphelper/servicehelper.hxx> - -#include <cppuhelper/implbase4.hxx> - -const SvxItemPropertySet* ImplGetPageBackgroundPropertySet(); -class SdDrawDocument; -class SfxItemSet; - -class SdUnoPageBackground : public ::cppu::WeakImplHelper4< - ::com::sun::star::beans::XPropertySet, - ::com::sun::star::lang::XServiceInfo, - ::com::sun::star::beans::XPropertyState, - ::com::sun::star::lang::XUnoTunnel>, - public SfxListener -{ -protected: - const SvxItemPropertySet* mpPropSet; - SfxItemSet* mpSet; - SdrModel* mpDoc; - - const SfxItemPropertySimpleEntry* getPropertyMapEntry( const ::rtl::OUString& rPropertyName ) const throw(); -public: - SdUnoPageBackground( SdDrawDocument* pDoc = NULL, const SfxItemSet* pSet = NULL) throw(); - ~SdUnoPageBackground() throw(); - - // internal - void fillItemSet( SdDrawDocument* pDoc, SfxItemSet& rSet ) throw(); - virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ); - - // uno helper - UNO3_GETIMPLEMENTATION_DECL( SdUnoPageBackground ) - - // XServiceInfo - virtual ::rtl::OUString SAL_CALL getImplementationName() throw(::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames() throw(::com::sun::star::uno::RuntimeException); - - // XPropertySet - virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw(::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addPropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& xListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removePropertyChangeListener( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL addVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL removeVetoableChangeListener( const ::rtl::OUString& PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& aListener ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); - - // XPropertyState - virtual ::com::sun::star::beans::PropertyState SAL_CALL getPropertyState( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyState > SAL_CALL getPropertyStates( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aPropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL setPropertyToDefault( const ::rtl::OUString& PropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::uno::Any SAL_CALL getPropertyDefault( const ::rtl::OUString& aPropertyName ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException); -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unopool.cxx b/sd/source/ui/unoidl/unopool.cxx deleted file mode 100644 index d3c4fdf2e..000000000 --- a/sd/source/ui/unoidl/unopool.cxx +++ /dev/null @@ -1,102 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" -#include <i18npool/mslangid.hxx> -#include <comphelper/propertysetinfo.hxx> -#include <editeng/eeitem.hxx> -#include <svx/unopool.hxx> - -#include "drawdoc.hxx" - -using namespace ::com::sun::star; -using namespace ::rtl; -using namespace ::cppu; -using namespace ::comphelper; - -LanguageType SdUnoGetLanguage( const lang::Locale& rLocale ) -{ - // empty language -> LANGUAGE_SYSTEM - if ( rLocale.Language.getLength() == 0 ) - return LANGUAGE_SYSTEM; - - LanguageType eRet = MsLangId::convertLocaleToLanguage( rLocale ); - if ( eRet == LANGUAGE_NONE ) - eRet = LANGUAGE_SYSTEM; //! or throw an exception? - - return eRet; -} - -class SdUnoDrawPool : public SvxUnoDrawPool -{ -public: - SdUnoDrawPool( SdDrawDocument* pModel ) throw(); - virtual ~SdUnoDrawPool() throw(); - -protected: - virtual void putAny( SfxItemPool* pPool, const PropertyMapEntry* pEntry, const uno::Any& rValue ) throw( beans::UnknownPropertyException, lang::IllegalArgumentException); - -private: - SdDrawDocument* mpDrawModel; -}; - -SdUnoDrawPool::SdUnoDrawPool( SdDrawDocument* pModel ) throw() -: SvxUnoDrawPool( pModel ), mpDrawModel( pModel ) -{ -} - -SdUnoDrawPool::~SdUnoDrawPool() throw() -{ -} - -void SdUnoDrawPool::putAny( SfxItemPool* pPool, const comphelper::PropertyMapEntry* pEntry, const uno::Any& rValue ) - throw(beans::UnknownPropertyException, lang::IllegalArgumentException) -{ - switch( pEntry->mnHandle ) - { - case EE_CHAR_LANGUAGE: - case EE_CHAR_LANGUAGE_CJK: - case EE_CHAR_LANGUAGE_CTL: - { - lang::Locale aLocale; - if( rValue >>= aLocale ) - mpDrawModel->SetLanguage( - SdUnoGetLanguage( aLocale ), - (const sal_uInt16)pEntry->mnHandle ); - } - } - SvxUnoDrawPool::putAny( pPool, pEntry, rValue ); -} - -uno::Reference< uno::XInterface > SdUnoCreatePool( SdDrawDocument* pDrawModel ) -{ - return (uno::XAggregation*)new SdUnoDrawPool( pDrawModel ); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unosrch.cxx b/sd/source/ui/unoidl/unosrch.cxx deleted file mode 100644 index 58b8f2259..000000000 --- a/sd/source/ui/unoidl/unosrch.cxx +++ /dev/null @@ -1,878 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" -#include <vcl/svapp.hxx> -#include <osl/mutex.hxx> - -#include <svx/unoshape.hxx> -#include <svx/svdpool.hxx> -#include <svx/unoprov.hxx> -#include <editeng/unotext.hxx> - -#include <comphelper/extract.hxx> -#include <rtl/memory.h> - -#include "unohelp.hxx" -#include "unoprnms.hxx" -#include "unosrch.hxx" - -using namespace ::rtl; -using namespace ::com::sun::star; - -#define WID_SEARCH_BACKWARDS 0 -#define WID_SEARCH_CASE 1 -#define WID_SEARCH_WORDS 2 - -const SfxItemPropertyMapEntry* ImplGetSearchPropertyMap() -{ - static const SfxItemPropertyMapEntry aSearchPropertyMap_Impl[] = - { - { MAP_CHAR_LEN(UNO_NAME_SEARCH_BACKWARDS), WID_SEARCH_BACKWARDS, &::getBooleanCppuType(), 0, 0 }, - { MAP_CHAR_LEN(UNO_NAME_SEARCH_CASE), WID_SEARCH_CASE, &::getBooleanCppuType(), 0, 0 }, - { MAP_CHAR_LEN(UNO_NAME_SEARCH_WORDS), WID_SEARCH_WORDS, &::getBooleanCppuType(), 0, 0 }, - { 0,0,0,0,0,0} - }; - - return aSearchPropertyMap_Impl; -} - -class SearchContext_impl -{ - uno::Reference< drawing::XShapes > mxShapes; - sal_Int32 mnIndex; - SearchContext_impl* mpParent; - -public: - SearchContext_impl( uno::Reference< drawing::XShapes > xShapes, SearchContext_impl* pParent = NULL ) - : mxShapes( xShapes ), mnIndex( -1 ), mpParent( pParent ) {} - - - uno::Reference< drawing::XShape > firstShape() - { - mnIndex = -1; - return nextShape(); - } - - uno::Reference< drawing::XShape > nextShape() - { - uno::Reference< drawing::XShape > xShape; - mnIndex++; - if( mxShapes.is() && mxShapes->getCount() > mnIndex ) - { - mxShapes->getByIndex( mnIndex ) >>= xShape; - } - return xShape; - } - - SearchContext_impl* getParent() const { return mpParent; } -}; - -/* ================================================================= */ -/** this class implements a search or replace operation on a given - page or a given sdrobj - */ - -SdUnoSearchReplaceShape::SdUnoSearchReplaceShape( drawing::XDrawPage* pPage ) throw() -{ - mpPage = pPage; -} - -SdUnoSearchReplaceShape::~SdUnoSearchReplaceShape() throw() -{ -} - -// util::XReplaceable -uno::Reference< util::XReplaceDescriptor > SAL_CALL SdUnoSearchReplaceShape::createReplaceDescriptor() - throw( uno::RuntimeException ) -{ - return new SdUnoSearchReplaceDescriptor(sal_True); -} - -sal_Int32 SAL_CALL SdUnoSearchReplaceShape::replaceAll( const uno::Reference< util::XSearchDescriptor >& xDesc ) - throw( uno::RuntimeException ) -{ - SdUnoSearchReplaceDescriptor* pDescr = SdUnoSearchReplaceDescriptor::getImplementation( xDesc ); - if( pDescr == NULL ) - return 0; - - sal_Int32 nFound = 0; - - uno::Reference< drawing::XShapes > xShapes; - uno::Reference< drawing::XShape > xShape; - - SearchContext_impl* pContext = NULL; - if(mpPage) - { - uno::Reference< drawing::XDrawPage > xPage( mpPage ); - - xPage->queryInterface( ITYPE( drawing::XShapes ) ) >>= xShapes; - - if( xShapes.is() && (xShapes->getCount() > 0) ) - { - pContext = new SearchContext_impl( xShapes ); - xShape = pContext->firstShape(); - } - else - { - xShapes = NULL; - } - } - else - { - xShape = mpShape; - } - - while( xShape.is() ) - { - // replace in xShape - uno::Reference< text::XText > xText(xShape, uno::UNO_QUERY); - uno::Reference< text::XTextRange > xRange(xText, uno::UNO_QUERY); - uno::Reference< text::XTextRange > xFound; - - while( xRange.is() ) - { - xFound = Search( xRange, pDescr ); - if( !xFound.is() ) - break; - - xFound->setString( pDescr->getReplaceString() ); - xRange = xFound->getEnd(); - nFound++; - } - // done with xShape -> get next shape - - // test if its a group - uno::Reference< drawing::XShapes > xGroupShape( xShape, uno::UNO_QUERY ); - if( xGroupShape.is() && ( xGroupShape->getCount() > 0 ) ) - { - pContext = new SearchContext_impl( xGroupShape, pContext ); - xShape = pContext->firstShape(); - } - else - { - if( pContext ) - xShape = pContext->nextShape(); - else - xShape = NULL; - } - - // test parent contexts for next shape if none - // is found in the current context - while( pContext && !xShape.is() ) - { - if( pContext->getParent() ) - { - SearchContext_impl* pOldContext = pContext; - pContext = pContext->getParent(); - delete pOldContext; - xShape = pContext->nextShape(); - } - else - { - delete pContext; - pContext = NULL; - xShape = NULL; - } - } - } - - return nFound; -} - -// XSearchable -uno::Reference< ::com::sun::star::util::XSearchDescriptor > SAL_CALL SdUnoSearchReplaceShape::createSearchDescriptor( ) - throw(::com::sun::star::uno::RuntimeException) -{ - return new SdUnoSearchReplaceDescriptor(sal_False); -} - -uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL SdUnoSearchReplaceShape::findAll( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor >& xDesc ) - throw(::com::sun::star::uno::RuntimeException) -{ - SdUnoSearchReplaceDescriptor* pDescr = SdUnoSearchReplaceDescriptor::getImplementation( xDesc ); - if( pDescr == NULL ) - return uno::Reference< container::XIndexAccess > (); - - - sal_Int32 nSequence = 32; - sal_Int32 nFound = 0; - - uno::Sequence < uno::Reference< uno::XInterface > > aSeq( nSequence ); - - uno::Reference< uno::XInterface > * pArray = aSeq.getArray(); - - uno::Reference< drawing::XShapes > xShapes; - uno::Reference< drawing::XShape > xShape; - - SearchContext_impl* pContext = NULL; - if(mpPage) - { - uno::Reference< drawing::XDrawPage > xPage( mpPage ); - xPage->queryInterface( ITYPE( drawing::XShapes ) ) >>= xShapes; - - if( xShapes.is() && xShapes->getCount() > 0 ) - { - pContext = new SearchContext_impl( xShapes ); - xShape = pContext->firstShape(); - } - else - { - xShapes = NULL; - } - } - else - { - xShape = mpShape; - } - while( xShape.is() ) - { - // find in xShape - uno::Reference< text::XText > xText(xShape, uno::UNO_QUERY); - uno::Reference< text::XTextRange > xRange(xText, uno::UNO_QUERY); - uno::Reference< text::XTextRange > xFound; - - while( xRange.is() ) - { - xFound = Search( xRange, pDescr ); - if( !xFound.is() ) - break; - - if( nFound >= nSequence ) - { - nSequence += 32; - aSeq.realloc( nSequence ); - pArray = aSeq.getArray(); - } - - pArray[nFound++] = xFound; - - xRange = xFound->getEnd(); - } - // done with shape -> get next shape - - // test if its a group - uno::Reference< drawing::XShapes > xGroupShape; - uno::Any aAny( xShape->queryInterface( ITYPE( drawing::XShapes ))); - - if( (aAny >>= xGroupShape ) && xGroupShape->getCount() > 0 ) - { - pContext = new SearchContext_impl( xGroupShape, pContext ); - xShape = pContext->firstShape(); - } - else - { - if( pContext ) - xShape = pContext->nextShape(); - else - xShape = NULL; - } - - // test parent contexts for next shape if none - // is found in the current context - while( pContext && !xShape.is() ) - { - if( pContext->getParent() ) - { - SearchContext_impl* pOldContext = pContext; - pContext = pContext->getParent(); - delete pOldContext; - xShape = pContext->nextShape(); - } - else - { - delete pContext; - pContext = NULL; - xShape = NULL; - } - } - } - - if( nFound != nSequence ) - aSeq.realloc( nFound ); - - return (container::XIndexAccess*)new SdUnoFindAllAccess( aSeq ); -} - -uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL SdUnoSearchReplaceShape::findFirst( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor >& xDesc ) - throw(::com::sun::star::uno::RuntimeException) -{ - uno::Reference< text::XTextRange > xRange( GetCurrentShape(), uno::UNO_QUERY ); - if( xRange.is() ) - return findNext( xRange, xDesc ); - - return uno::Reference< uno::XInterface > (); -} - -uno::Reference< drawing::XShape > SdUnoSearchReplaceShape::GetCurrentShape() const throw() -{ - uno::Reference< drawing::XShape > xShape; - - if( mpPage ) - { - uno::Reference< drawing::XDrawPage > xPage( mpPage ); - uno::Reference< container::XIndexAccess > xShapes( xPage, uno::UNO_QUERY ); - if( xShapes.is() ) - { - if(xShapes->getCount() > 0) - { - xShapes->getByIndex(0) >>= xShape; - } - } - } - else if( mpShape ) - { - xShape = mpShape; - } - - return xShape; - -} - -uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL SdUnoSearchReplaceShape::findNext( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xStartAt, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XSearchDescriptor >& xDesc ) - throw(::com::sun::star::uno::RuntimeException) -{ - SdUnoSearchReplaceDescriptor* pDescr = SdUnoSearchReplaceDescriptor::getImplementation( xDesc ); - - uno::Reference< uno::XInterface > xFound; - - uno::Reference< text::XTextRange > xRange( xStartAt, uno::UNO_QUERY ); - if(pDescr && xRange.is() ) - { - - uno::Reference< text::XTextRange > xCurrentRange( xStartAt, uno::UNO_QUERY ); - - uno::Reference< drawing::XShape > xCurrentShape( GetShape( xCurrentRange ) ); - - while(!xFound.is() && xRange.is()) - { - xFound = Search( xRange, pDescr ); - if(!xFound.is()) - { - // we need a new starting range now - xRange = NULL; - - if(mpPage) - { - uno::Reference< drawing::XDrawPage > xPage( mpPage ); - - // we do a page wide search, so skip to the next shape here - uno::Reference< container::XIndexAccess > xShapes( xPage, uno::UNO_QUERY ); - - // get next shape on our page - if( xShapes.is() ) - { - uno::Reference< drawing::XShape > xFound2( GetNextShape( xShapes, xCurrentShape ) ); - if( xFound2.is() && (xFound2.get() != xCurrentShape.get()) ) - xCurrentShape = xFound2; - else - xCurrentShape = NULL; - - xCurrentShape->queryInterface( ITYPE( text::XTextRange ) ) >>= xRange; - if(!(xCurrentShape.is() && (xRange.is()))) - xRange = NULL; - } - } - else - { - // we search only in this shape, so end search if we have - // not found anything - } - } - } - } - return xFound; -} - -/** this method returns the shape that follows xCurrentShape in the shape collection xShapes. - It steps recursive into groupshapes and returns the xCurrentShape if it is the last - shape in this collection */ -uno::Reference< drawing::XShape > SdUnoSearchReplaceShape::GetNextShape( uno::Reference< container::XIndexAccess > xShapes, uno::Reference< drawing::XShape > xCurrentShape ) throw() -{ - uno::Reference< drawing::XShape > xFound; - uno::Any aAny; - - if(xShapes.is() && xCurrentShape.is()) - { - const sal_Int32 nCount = xShapes->getCount(); - for( sal_Int32 i = 0; i < nCount; i++ ) - { - uno::Reference< drawing::XShape > xSearchShape; - xShapes->getByIndex(i) >>= xSearchShape; - - if( xSearchShape.is() ) - { - uno::Reference< container::XIndexAccess > xGroup( xSearchShape, uno::UNO_QUERY ); - - if( xCurrentShape.get() == xSearchShape.get() ) - { - if( xGroup.is() && xGroup->getCount() > 0 ) - { - xGroup->getByIndex( 0 ) >>= xFound; - } - else - { - i++; - if( i < nCount ) - xShapes->getByIndex( i ) >>= xFound; - else - xFound = xCurrentShape; - } - - break; - } - else if( xGroup.is() ) - { - xFound = GetNextShape( xGroup, xCurrentShape ); - if( xFound.is() ) - { - if( xFound.get() == xCurrentShape.get() ) - { - // the current shape was found at the end of the group - i++; - if( i < nCount ) - { - xShapes->getByIndex(i) >>= xFound; - } - } - break; - } - } - } - } - } - - return xFound; -} - -uno::Reference< text::XTextRange > SdUnoSearchReplaceShape::Search( uno::Reference< text::XTextRange > xText, SdUnoSearchReplaceDescriptor* pDescr ) throw() -{ - if(!xText.is()) - return uno::Reference< text::XTextRange > (); - - uno::Reference< text::XText > xParent( xText->getText() ); - - if( !xParent.is() ) - { - uno::Any aAny( xText->queryInterface( ITYPE( text::XText )) ); - aAny >>= xParent; - } - - const OUString aText( xParent->getString() ); - - const sal_Int32 nTextLen = aText.getLength(); - - sal_Int32* pConvertPos = new sal_Int32[nTextLen+2]; - sal_Int32* pConvertPara = new sal_Int32[nTextLen+2]; - - int ndbg = 0; - const sal_Unicode* pText = aText.getStr(); - - sal_Int32* pPos = pConvertPos; - sal_Int32* pPara = pConvertPara; - - sal_Int32 nLastPos = 0, nLastPara = 0; - - uno::Reference< container::XEnumerationAccess > xEnumAccess( xParent, uno::UNO_QUERY ); - - // first we fill the arrys with the position and paragraph for every character - // inside the text - if( xEnumAccess.is() ) - { - uno::Reference< container::XEnumeration > xParaEnum( xEnumAccess->createEnumeration() ); - - while(xParaEnum->hasMoreElements()) - { - uno::Reference< text::XTextContent > xParagraph( xParaEnum->nextElement(), uno::UNO_QUERY ); - if( xParagraph.is() ) - xEnumAccess.query( xParagraph ); - else - xEnumAccess.clear(); - - if( xEnumAccess.is() ) - { - uno::Reference< container::XEnumeration > xPortionEnum( xEnumAccess->createEnumeration() ); - if( xPortionEnum.is() ) - { - while(xPortionEnum->hasMoreElements()) - { - uno::Reference< text::XTextRange > xPortion( xPortionEnum->nextElement(), uno::UNO_QUERY ); - if( xPortion.is() ) - { - const OUString aPortion( xPortion->getString() ); - const sal_Int32 nLen = aPortion.getLength(); - - ESelection aStartSel( GetSelection( xPortion->getStart() ) ); - ESelection aEndSel( GetSelection( xPortion->getEnd() ) ); - - // special case for empty portions with content or length one portions with content (fields) - if( (aStartSel.nStartPos == aEndSel.nStartPos) || ( (aStartSel.nStartPos == (aEndSel.nStartPos - 1)) && (nLen > 1) ) ) - { - for( sal_Int32 i = 0; i < nLen; i++ ) - { - if( ndbg < (nTextLen+2) ) - { - *pPos++ = aStartSel.nStartPos; - *pPara++ = aStartSel.nStartPara; - - ndbg += 1; - pText++; - } - else - { - OSL_FAIL( "array overflow while searching" ); - } - } - - nLastPos = aStartSel.nStartPos; - } - // normal case - else - { - for( sal_Int32 i = 0; i < nLen; i++ ) - { - if( ndbg < (nTextLen+2) ) - { - *pPos++ = aStartSel.nStartPos++; - *pPara++ = aStartSel.nStartPara; - - ndbg += 1; - pText++; - } - else - { - OSL_FAIL( "array overflow while searching" ); - } - } - - nLastPos = aStartSel.nStartPos - 1; - DBG_ASSERT( aEndSel.nStartPos == aStartSel.nStartPos, "Search is not working" ); - } - nLastPara = aStartSel.nStartPara; - } - } - } - } - - if( ndbg < (nTextLen+2) ) - { - *pPos++ = nLastPos + 1; - *pPara++ = nLastPara; - - ndbg += 1; - pText++; - } - else - { - OSL_FAIL( "array overflow while searching" ); - } - } - } - - uno::Reference< text::XText > xFound; - ESelection aSel; - - uno::Reference< text::XTextRange > xRangeRef( xText, uno::UNO_QUERY ); - if( xRangeRef.is() ) - aSel = GetSelection( xRangeRef ); - - sal_Int32 nStartPos; - sal_Int32 nEndPos = 0; - for( nStartPos = 0; nStartPos < nTextLen; nStartPos++ ) - { - if( pConvertPara[nStartPos] == aSel.nStartPara && pConvertPos[nStartPos] == aSel.nStartPos ) - break; - } - - if( Search( aText, nStartPos, nEndPos, pDescr ) ) - { - if( nStartPos <= nTextLen && nEndPos <= nTextLen ) - { - ESelection aSelection( (sal_uInt16)pConvertPara[nStartPos], (sal_uInt16)pConvertPos[nStartPos], - (sal_uInt16)pConvertPara[nEndPos], (sal_uInt16)pConvertPos[nEndPos] ); - SvxUnoTextRange *pRange; - - SvxUnoTextBase* pParent = SvxUnoTextBase::getImplementation( xParent ); - - if(pParent) - { - pRange = new SvxUnoTextRange( *pParent ); - xFound = (text::XText*)pRange; - pRange->SetSelection(aSelection); - - } - } - else - { - OSL_FAIL("Array overflow while searching!"); - } - } - - delete[] pConvertPos; - delete[] pConvertPara; - - return uno::Reference< text::XTextRange > ( xFound, uno::UNO_QUERY ); -} - -sal_Bool SdUnoSearchReplaceShape::Search( const OUString& rText, sal_Int32& nStartPos, sal_Int32& nEndPos, SdUnoSearchReplaceDescriptor* pDescr ) throw() -{ - OUString aSearchStr( pDescr->getSearchString() ); - OUString aText( rText ); - - if( !pDescr->IsCaseSensitive() ) - { - aText.toAsciiLowerCase(); - aSearchStr.toAsciiLowerCase(); - } - - sal_Int32 nFound = aText.indexOf( aSearchStr, nStartPos ); - if( nFound != -1 ) - { - nStartPos = nFound; - nEndPos = nFound + aSearchStr.getLength(); - - if(pDescr->IsWords()) - { - if( (nStartPos > 0 && aText.getStr()[nStartPos-1] > ' ') || - (nEndPos < aText.getLength() && aText.getStr()[nEndPos] > ' ') ) - { - nStartPos++; - return Search( aText, nStartPos, nEndPos, pDescr ); - } - } - - return sal_True; - } - else - return sal_False; -} - -ESelection SdUnoSearchReplaceShape::GetSelection( uno::Reference< text::XTextRange > xTextRange ) throw() -{ - ESelection aSel; - SvxUnoTextRangeBase* pRange = SvxUnoTextRangeBase::getImplementation( xTextRange ); - - if(pRange) - aSel = pRange->GetSelection(); - - return aSel; -} - -uno::Reference< drawing::XShape > SdUnoSearchReplaceShape::GetShape( uno::Reference< text::XTextRange > xTextRange ) throw() -{ - uno::Reference< drawing::XShape > xShape; - - if(xTextRange.is()) - { - uno::Reference< text::XText > xText( xTextRange->getText() ); - - if(xText.is()) - { - do - { - xText->queryInterface( ITYPE( drawing::XShape )) >>= xShape; - if(!xShape.is()) - { - uno::Reference< text::XText > xParent( xText->getText() ); - if(!xParent.is() || xText.get() == xParent.get()) - return xShape; - - xText = xParent; - } - } while( !xShape.is() ); - } - } - - return xShape; -} - -/* ================================================================= */ -/** this class holds the parameters and status of a search or replace - operation performed by class SdUnoSearchReplaceShape - */ - -UNO3_GETIMPLEMENTATION_IMPL( SdUnoSearchReplaceDescriptor ); - -SdUnoSearchReplaceDescriptor::SdUnoSearchReplaceDescriptor( sal_Bool bReplace ) throw() -{ - mpPropSet = new SvxItemPropertySet(ImplGetSearchPropertyMap(), SdrObject::GetGlobalDrawObjectItemPool()); - - mbBackwards = sal_False; - mbCaseSensitive = sal_False; - mbWords = sal_False; - - mbReplace = bReplace; -} - -SdUnoSearchReplaceDescriptor::~SdUnoSearchReplaceDescriptor() throw() -{ - delete mpPropSet; -} - -// XSearchDescriptor -OUString SAL_CALL SdUnoSearchReplaceDescriptor::getSearchString() - throw(::com::sun::star::uno::RuntimeException) -{ - return maSearchStr; -} - -void SAL_CALL SdUnoSearchReplaceDescriptor::setSearchString( const OUString& aString ) - throw(::com::sun::star::uno::RuntimeException) -{ - maSearchStr = aString; -} - -// XReplaceDescriptor -OUString SAL_CALL SdUnoSearchReplaceDescriptor::getReplaceString() - throw(::com::sun::star::uno::RuntimeException) -{ - return maReplaceStr; -} - -void SAL_CALL SdUnoSearchReplaceDescriptor::setReplaceString( const ::rtl::OUString& aReplaceString ) - throw(::com::sun::star::uno::RuntimeException) -{ - maReplaceStr = aReplaceString; -} - -// XPropertySet -uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL SdUnoSearchReplaceDescriptor::getPropertySetInfo() - throw(::com::sun::star::uno::RuntimeException) -{ - SolarMutexGuard aGuard; - return mpPropSet->getPropertySetInfo(); -} - -void SAL_CALL SdUnoSearchReplaceDescriptor::setPropertyValue( const ::rtl::OUString& aPropertyName, const ::com::sun::star::uno::Any& aValue ) - throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - const SfxItemPropertySimpleEntry* pEntry = mpPropSet->getPropertyMapEntry(aPropertyName); - - sal_Bool bOk = sal_False; - - switch( pEntry ? pEntry->nWID : -1 ) - { - case WID_SEARCH_BACKWARDS: - bOk = (aValue >>= mbBackwards); - break; - case WID_SEARCH_CASE: - bOk = (aValue >>= mbCaseSensitive); - break; - case WID_SEARCH_WORDS: - bOk = (aValue >>= mbWords); - break; - default: - throw beans::UnknownPropertyException(); - } - - if( !bOk ) - throw lang::IllegalArgumentException(); -} - -uno::Any SAL_CALL SdUnoSearchReplaceDescriptor::getPropertyValue( const ::rtl::OUString& PropertyName ) - throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) -{ - SolarMutexGuard aGuard; - - uno::Any aAny; - - const SfxItemPropertySimpleEntry* pEntry = mpPropSet->getPropertyMapEntry(PropertyName); - - switch( pEntry ? pEntry->nWID : -1 ) - { - case WID_SEARCH_BACKWARDS: - aAny <<= (sal_Bool)mbBackwards; - break; - case WID_SEARCH_CASE: - aAny <<= (sal_Bool)mbCaseSensitive; - break; - case WID_SEARCH_WORDS: - aAny <<= (sal_Bool)mbWords; - break; - default: - throw beans::UnknownPropertyException(); - } - - return aAny; -} - -void SAL_CALL SdUnoSearchReplaceDescriptor::addPropertyChangeListener( const ::rtl::OUString& , const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) {} -void SAL_CALL SdUnoSearchReplaceDescriptor::removePropertyChangeListener( const ::rtl::OUString& , const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener >& ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) {} -void SAL_CALL SdUnoSearchReplaceDescriptor::addVetoableChangeListener( const ::rtl::OUString& , const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) {} -void SAL_CALL SdUnoSearchReplaceDescriptor::removeVetoableChangeListener( const ::rtl::OUString& , const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener >& ) throw(::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) {} - - -/* ================================================================= */ - -SdUnoFindAllAccess::SdUnoFindAllAccess( uno::Sequence< uno::Reference< uno::XInterface > >& rSequence ) throw() -:maSequence( rSequence ) -{ -} - -SdUnoFindAllAccess::~SdUnoFindAllAccess() throw() -{ -} - -// XElementAccess -uno::Type SAL_CALL SdUnoFindAllAccess::getElementType() - throw(::com::sun::star::uno::RuntimeException) -{ - return ITYPE( text::XTextRange ); -} - -sal_Bool SAL_CALL SdUnoFindAllAccess::hasElements() - throw(::com::sun::star::uno::RuntimeException) -{ - return maSequence.getLength() > 0; -} - -// XIndexAccess -sal_Int32 SAL_CALL SdUnoFindAllAccess::getCount() - throw(::com::sun::star::uno::RuntimeException) -{ - return maSequence.getLength(); -} - -uno::Any SAL_CALL SdUnoFindAllAccess::getByIndex( sal_Int32 Index ) - throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException) -{ - uno::Any aAny; - - if( Index < 0 || Index >= getCount() ) - throw lang::IndexOutOfBoundsException(); - - const uno::Reference< uno::XInterface > *pRefs = maSequence.getConstArray(); - if(pRefs) - aAny <<= pRefs[ Index ]; - return aAny; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unowcntr.cxx b/sd/source/ui/unoidl/unowcntr.cxx deleted file mode 100644 index 8973c670a..000000000 --- a/sd/source/ui/unoidl/unowcntr.cxx +++ /dev/null @@ -1,117 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_sd.hxx" -#include <com/sun/star/lang/XComponent.hpp> - -#include <unowcntr.hxx> - -using namespace ::rtl; -using namespace ::com::sun::star; - -SvUnoWeakContainer::SvUnoWeakContainer() throw() -{ -} - -SvUnoWeakContainer::~SvUnoWeakContainer() throw() -{ - for ( WeakRefList::iterator it = maList.begin(); it != maList.end(); ++it ) - delete *it; - maList.clear(); -} - -/** inserts the given ref into this container */ -void SvUnoWeakContainer::insert( uno::WeakReference< uno::XInterface > xRef ) throw() -{ - for ( WeakRefList::iterator it = maList.begin(); it != maList.end(); ) - { - uno::WeakReference< uno::XInterface >* pRef = *it; - uno::Reference< uno::XInterface > xTestRef( *pRef ); - if ( !xTestRef.is() ) - { - delete pRef; - it = maList.erase( it ); - } - else - { - if ( *pRef == xRef ) - return; - ++it; - } - } - maList.push_back( new uno::WeakReference< uno::XInterface >( xRef ) ); -} - -/** searches the container for a ref that returns true on the given - search function -*/ -sal_Bool SvUnoWeakContainer::findRef( - uno::WeakReference< uno::XInterface >& rRef, - void* pSearchData, - weakref_searchfunc pSearchFunc -) -{ - for ( WeakRefList::iterator it = maList.begin(); it != maList.end(); ) - { - uno::WeakReference< uno::XInterface >* pRef = *it; - uno::Reference< uno::XInterface > xTestRef( *pRef ); - if ( !xTestRef.is() ) - { - delete pRef; - it = maList.erase( it ); - } - else - { - if( (*pSearchFunc)( *pRef, pSearchData ) ) - { - rRef = *pRef; - return sal_True; - } - ++it; - } - } - return sal_False; -} - -void SvUnoWeakContainer::dispose() -{ - for ( WeakRefList::iterator it = maList.begin(); it != maList.end(); ++it ) - { - uno::WeakReference< uno::XInterface >* pRef = *it; - uno::Reference< uno::XInterface > xTestRef( *pRef ); - if ( xTestRef.is() ) - { - uno::Reference< lang::XComponent > xComp( xTestRef, uno::UNO_QUERY ); - if( xComp.is() ) - xComp->dispose(); - } - } -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sd/source/ui/unoidl/unowcntr.hxx b/sd/source/ui/unoidl/unowcntr.hxx deleted file mode 100644 index 26d1ad4e5..000000000 --- a/sd/source/ui/unoidl/unowcntr.hxx +++ /dev/null @@ -1,61 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _SV_UNOWCNTR_HXX_ -#define _SV_UNOWCNTR_HXX_ - -#include <cppuhelper/weakref.hxx> -#include <list> - -typedef sal_Bool (*weakref_searchfunc)( ::com::sun::star::uno::WeakReference< ::com::sun::star::uno::XInterface > xRef, void* pSearchData ); - -typedef ::std::list< ::com::sun::star::uno::WeakReference< ::com::sun::star::uno::XInterface >* > WeakRefList; - -class SvUnoWeakContainer -{ -private: - WeakRefList maList; - -public: - SvUnoWeakContainer() throw(); - ~SvUnoWeakContainer() throw(); - - /** inserts the given ref into this container */ - void insert( ::com::sun::star::uno::WeakReference< ::com::sun::star::uno::XInterface > xRef ) throw(); - - /** searches the container for a ref that returns true on the given - search function - */ - sal_Bool findRef( ::com::sun::star::uno::WeakReference< ::com::sun::star::uno::XInterface >& rRef, void* pSearchData, weakref_searchfunc pSearchFunc ); - - void dispose(); -}; - -#endif // _SV_UNOWCNTR_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |