summaryrefslogtreecommitdiff
path: root/framework/source/classes
diff options
context:
space:
mode:
Diffstat (limited to 'framework/source/classes')
-rw-r--r--framework/source/classes/actiontriggercontainer.cxx203
-rw-r--r--framework/source/classes/actiontriggerpropertyset.cxx478
-rw-r--r--framework/source/classes/actiontriggerseparatorpropertyset.cxx349
-rw-r--r--framework/source/classes/addonmenu.cxx456
-rw-r--r--framework/source/classes/addonsoptions.cxx1858
-rw-r--r--framework/source/classes/bmkmenu.cxx254
-rw-r--r--framework/source/classes/converter.cxx316
-rw-r--r--framework/source/classes/framelistanalyzer.cxx302
-rw-r--r--framework/source/classes/fwkresid.cxx65
-rw-r--r--framework/source/classes/fwktabwindow.cxx6
-rw-r--r--framework/source/classes/imagewrapper.cxx120
-rw-r--r--framework/source/classes/makefile.mk69
-rw-r--r--framework/source/classes/menuextensionsupplier.cxx64
-rw-r--r--framework/source/classes/menumanager.cxx10
-rw-r--r--framework/source/classes/propertysethelper.cxx450
-rw-r--r--framework/source/classes/protocolhandlercache.cxx361
-rw-r--r--framework/source/classes/rootactiontriggercontainer.cxx379
-rw-r--r--framework/source/classes/sfxhelperfunctions.cxx181
18 files changed, 8 insertions, 5913 deletions
diff --git a/framework/source/classes/actiontriggercontainer.cxx b/framework/source/classes/actiontriggercontainer.cxx
deleted file mode 100644
index ea549fd3fda8..000000000000
--- a/framework/source/classes/actiontriggercontainer.cxx
+++ /dev/null
@@ -1,203 +0,0 @@
-/*************************************************************************
- *
- * 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_framework.hxx"
-#include <classes/actiontriggercontainer.hxx>
-#include <cppuhelper/typeprovider.hxx>
-
-#include <classes/actiontriggerpropertyset.hxx>
-#include <classes/actiontriggerseparatorpropertyset.hxx>
-
-using namespace cppu;
-using namespace com::sun::star::uno;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::container;
-
-namespace framework
-{
-
-ActionTriggerContainer::ActionTriggerContainer( const Reference< XMultiServiceFactory >& rServiceManager ) :
- PropertySetContainer( rServiceManager )
-{
-}
-
-
-ActionTriggerContainer::~ActionTriggerContainer()
-{
-}
-
-// XInterface
-Any SAL_CALL ActionTriggerContainer::queryInterface( const Type& aType )
-throw ( RuntimeException )
-{
- Any a = ::cppu::queryInterface(
- aType ,
- SAL_STATIC_CAST( XMultiServiceFactory*, this ),
- SAL_STATIC_CAST( XServiceInfo* , this ));
-
- if( a.hasValue() )
- {
- return a;
- }
-
- return PropertySetContainer::queryInterface( aType );
-}
-
-void ActionTriggerContainer::acquire() throw()
-{
- PropertySetContainer::acquire();
-}
-
-void ActionTriggerContainer::release() throw()
-{
- PropertySetContainer::release();
-}
-
-
-// XMultiServiceFactory
-Reference< XInterface > SAL_CALL ActionTriggerContainer::createInstance( const ::rtl::OUString& aServiceSpecifier )
-throw ( ::com::sun::star::uno::Exception, RuntimeException)
-{
- if ( aServiceSpecifier.equalsAscii( SERVICENAME_ACTIONTRIGGER ))
- return (OWeakObject *)( new ActionTriggerPropertySet( m_xServiceManager ));
- else if ( aServiceSpecifier.equalsAscii( SERVICENAME_ACTIONTRIGGERCONTAINER ))
- return (OWeakObject *)( new ActionTriggerContainer( m_xServiceManager ));
- else if ( aServiceSpecifier.equalsAscii( SERVICENAME_ACTIONTRIGGERSEPARATOR ))
- return (OWeakObject *)( new ActionTriggerSeparatorPropertySet( m_xServiceManager ));
- else
- throw com::sun::star::uno::RuntimeException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Unknown service specifier!" )), (OWeakObject *)this );
-}
-
-
-Reference< XInterface > SAL_CALL ActionTriggerContainer::createInstanceWithArguments( const ::rtl::OUString& ServiceSpecifier, const Sequence< Any >& /*Arguments*/ )
-throw ( Exception, RuntimeException)
-{
- return createInstance( ServiceSpecifier );
-}
-
-
-Sequence< ::rtl::OUString > SAL_CALL ActionTriggerContainer::getAvailableServiceNames()
-throw ( RuntimeException )
-{
- Sequence< ::rtl::OUString > aSeq( 3 );
-
- aSeq[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICENAME_ACTIONTRIGGER ));
- aSeq[1] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICENAME_ACTIONTRIGGERCONTAINER ));
- aSeq[2] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICENAME_ACTIONTRIGGERSEPARATOR ));
-
- return aSeq;
-}
-
-// XServiceInfo
-::rtl::OUString SAL_CALL ActionTriggerContainer::getImplementationName()
-throw ( RuntimeException )
-{
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( IMPLEMENTATIONNAME_ACTIONTRIGGERCONTAINER ));
-}
-
-sal_Bool SAL_CALL ActionTriggerContainer::supportsService( const ::rtl::OUString& ServiceName )
-throw ( RuntimeException )
-{
- if ( ServiceName.equalsAscii( SERVICENAME_ACTIONTRIGGERCONTAINER ))
- return sal_True;
-
- return sal_False;
-}
-
-Sequence< ::rtl::OUString > SAL_CALL ActionTriggerContainer::getSupportedServiceNames()
-throw ( RuntimeException )
-{
- Sequence< ::rtl::OUString > seqServiceNames( 1 );
-
- seqServiceNames[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICENAME_ACTIONTRIGGERCONTAINER ));
- return seqServiceNames;
-}
-
-// XTypeProvider
-Sequence< Type > SAL_CALL ActionTriggerContainer::getTypes() throw ( RuntimeException )
-{
- // Optimize this method !
- // We initialize a static variable only one time. And we don't must use a mutex at every call!
- // For the first call; pTypeCollection is NULL - for the second call pTypeCollection is different from NULL!
- static ::cppu::OTypeCollection* pTypeCollection = NULL ;
-
- if ( pTypeCollection == NULL )
- {
- // Ready for multithreading; get global mutex for first call of this method only! see before
- osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ;
-
- // Control these pointer again ... it can be, that another instance will be faster then these!
- if ( pTypeCollection == NULL )
- {
- // Create a static typecollection ...
- static ::cppu::OTypeCollection aTypeCollection(
- ::getCppuType(( const Reference< XMultiServiceFactory >*)NULL ) ,
- ::getCppuType(( const Reference< XIndexContainer >*)NULL ) ,
- ::getCppuType(( const Reference< XIndexAccess >*)NULL ) ,
- ::getCppuType(( const Reference< XIndexReplace >*)NULL ) ,
- ::getCppuType(( const Reference< XServiceInfo >*)NULL ) ,
- ::getCppuType(( const Reference< XTypeProvider >*)NULL ) ) ;
-
- // ... and set his address to static pointer!
- pTypeCollection = &aTypeCollection ;
- }
- }
-
- return pTypeCollection->getTypes() ;
-}
-
-Sequence< sal_Int8 > SAL_CALL ActionTriggerContainer::getImplementationId() throw ( RuntimeException )
-{
- // Create one Id for all instances of this class.
- // Use ethernet address to do this! (sal_True)
-
- // Optimize this method
- // We initialize a static variable only one time. And we don't must use a mutex at every call!
- // For the first call; pID is NULL - for the second call pID is different from NULL!
- static ::cppu::OImplementationId* pID = NULL ;
-
- if ( pID == NULL )
- {
- // Ready for multithreading; get global mutex for first call of this method only! see before
- osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ;
-
- // Control these pointer again ... it can be, that another instance will be faster then these!
- if ( pID == NULL )
- {
- // Create a new static ID ...
- static ::cppu::OImplementationId aID( sal_False ) ;
- // ... and set his address to static pointer!
- pID = &aID ;
- }
- }
-
- return pID->getImplementationId() ;
-}
-
-}
-
diff --git a/framework/source/classes/actiontriggerpropertyset.cxx b/framework/source/classes/actiontriggerpropertyset.cxx
deleted file mode 100644
index e72efe6e7cba..000000000000
--- a/framework/source/classes/actiontriggerpropertyset.cxx
+++ /dev/null
@@ -1,478 +0,0 @@
-/*************************************************************************
- *
- * 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_framework.hxx"
-
-#include <classes/actiontriggerpropertyset.hxx>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <cppuhelper/proptypehlp.hxx>
-#include <cppuhelper/typeprovider.hxx>
-#include <vcl/svapp.hxx>
-
-
-using namespace cppu;
-using namespace com::sun::star::uno;
-using namespace com::sun::star::beans;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::awt;
-
-// Handles for properties
-// (PLEASE SORT THIS FIELD, IF YOU ADD NEW PROPERTIES!)
-// We use an enum to define these handles, to use all numbers from 0 to nn and
-// if you add someone, you don't must control this!
-// But don't forget to change values of follow defines, if you do something with this enum!
-enum EPROPERTIES
-{
- HANDLE_COMMANDURL,
- HANDLE_HELPURL,
- HANDLE_IMAGE,
- HANDLE_SUBCONTAINER,
- HANDLE_TEXT,
- PROPERTYCOUNT
-};
-
-namespace framework
-{
-
-ActionTriggerPropertySet::ActionTriggerPropertySet( const Reference< XMultiServiceFactory >& /*xServiceManager*/ )
- : ThreadHelpBase ( &Application::GetSolarMutex() )
- , OBroadcastHelper ( m_aLock.getShareableOslMutex() )
- , OPropertySetHelper ( *SAL_STATIC_CAST( OBroadcastHelper *, this ))
- , OWeakObject ()
- , m_xBitmap ( 0 )
- , m_xActionTriggerContainer( 0 )
-{
-}
-
-ActionTriggerPropertySet::~ActionTriggerPropertySet()
-{
-}
-
-// XInterface
-Any SAL_CALL ActionTriggerPropertySet::queryInterface( const Type& aType )
-throw ( RuntimeException )
-{
- Any a = ::cppu::queryInterface(
- aType ,
- SAL_STATIC_CAST( XServiceInfo*, this ));
-
- if( a.hasValue() )
- return a;
- else
- {
- a = OPropertySetHelper::queryInterface( aType );
-
- if( a.hasValue() )
- return a;
- }
-
- return OWeakObject::queryInterface( aType );
-}
-
-void SAL_CALL ActionTriggerPropertySet::acquire() throw ()
-{
- OWeakObject::acquire();
-}
-
-void SAL_CALL ActionTriggerPropertySet::release() throw ()
-{
- OWeakObject::release();
-}
-
-
-// XServiceInfo
-::rtl::OUString SAL_CALL ActionTriggerPropertySet::getImplementationName()
-throw ( RuntimeException )
-{
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( IMPLEMENTATIONNAME_ACTIONTRIGGER ));
-}
-
-sal_Bool SAL_CALL ActionTriggerPropertySet::supportsService( const ::rtl::OUString& ServiceName )
-throw ( RuntimeException )
-{
- if ( ServiceName.equalsAscii( SERVICENAME_ACTIONTRIGGER ))
- return sal_True;
-
- return sal_False;
-}
-
-Sequence< ::rtl::OUString > SAL_CALL ActionTriggerPropertySet::getSupportedServiceNames()
-throw ( RuntimeException )
-{
- Sequence< ::rtl::OUString > seqServiceNames( 1 );
- seqServiceNames[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICENAME_ACTIONTRIGGER ));
- return seqServiceNames;
-}
-
-// XTypeProvider
-Sequence< Type > SAL_CALL ActionTriggerPropertySet::getTypes() throw ( RuntimeException )
-{
- // Optimize this method !
- // We initialize a static variable only one time. And we don't must use a mutex at every call!
- // For the first call; pTypeCollection is NULL - for the second call pTypeCollection is different from NULL!
- static ::cppu::OTypeCollection* pTypeCollection = NULL ;
-
- if ( pTypeCollection == NULL )
- {
- // Ready for multithreading; get global mutex for first call of this method only! see before
- osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ;
-
- // Control these pointer again ... it can be, that another instance will be faster then these!
- if ( pTypeCollection == NULL )
- {
- // Create a static typecollection ...
- static ::cppu::OTypeCollection aTypeCollection(
- ::getCppuType(( const Reference< XPropertySet >*)NULL ) ,
- ::getCppuType(( const Reference< XFastPropertySet >*)NULL ) ,
- ::getCppuType(( const Reference< XMultiPropertySet >*)NULL ) ,
- ::getCppuType(( const Reference< XServiceInfo >*)NULL ) ,
- ::getCppuType(( const Reference< XTypeProvider >*)NULL ) ) ;
-
- // ... and set his address to static pointer!
- pTypeCollection = &aTypeCollection ;
- }
- }
-
- return pTypeCollection->getTypes() ;
-}
-
-Sequence< sal_Int8 > SAL_CALL ActionTriggerPropertySet::getImplementationId() throw ( RuntimeException )
-{
- // Create one Id for all instances of this class.
- // Use ethernet address to do this! (sal_True)
-
- // Optimize this method
- // We initialize a static variable only one time. And we don't must use a mutex at every call!
- // For the first call; pID is NULL - for the second call pID is different from NULL!
- static ::cppu::OImplementationId* pID = NULL ;
-
- if ( pID == NULL )
- {
- // Ready for multithreading; get global mutex for first call of this method only! see before
- osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ;
-
- // Control these pointer again ... it can be, that another instance will be faster then these!
- if ( pID == NULL )
- {
- // Create a new static ID ...
- static ::cppu::OImplementationId aID( sal_False ) ;
- // ... and set his address to static pointer!
- pID = &aID ;
- }
- }
-
- return pID->getImplementationId() ;
-}
-
-//---------------------------------------------------------------------------------------------------------
-// OPropertySetHelper implementation
-//---------------------------------------------------------------------------------------------------------
-
-sal_Bool SAL_CALL ActionTriggerPropertySet::convertFastPropertyValue(
- Any& aConvertedValue,
- Any& aOldValue,
- sal_Int32 nHandle,
- const Any& aValue )
-throw( IllegalArgumentException )
-{
- // Check, if value of property will changed in method "setFastPropertyValue_NoBroadcast()".
- // Return TRUE, if changed - else return FALSE.
- // Attention: Method "impl_tryToChangeProperty()" can throw the IllegalArgumentException !!!
- // Initialize return value with FALSE !!!
- // (Handle can be invalid)
- sal_Bool bReturn = sal_False;
-
- switch( nHandle )
- {
- case HANDLE_COMMANDURL:
- bReturn = impl_tryToChangeProperty( m_aCommandURL, aValue, aOldValue, aConvertedValue );
- break;
-
- case HANDLE_HELPURL:
- bReturn = impl_tryToChangeProperty( m_aHelpURL, aValue, aOldValue, aConvertedValue ) ;
- break;
-
- case HANDLE_IMAGE:
- bReturn = impl_tryToChangeProperty( m_xBitmap, aValue, aOldValue, aConvertedValue ) ;
- break;
-
- case HANDLE_SUBCONTAINER:
- bReturn = impl_tryToChangeProperty( m_xActionTriggerContainer, aValue, aOldValue, aConvertedValue );
- break;
-
- case HANDLE_TEXT:
- bReturn = impl_tryToChangeProperty( m_aText, aValue, aOldValue, aConvertedValue ) ;
- break;
- }
-
- // Return state of operation.
- return bReturn;
-}
-
-
-void SAL_CALL ActionTriggerPropertySet::setFastPropertyValue_NoBroadcast(
- sal_Int32 nHandle, const Any& aValue )
-throw( Exception )
-{
- ::osl::MutexGuard aGuard( LockHelper::getGlobalLock().getShareableOslMutex() );
-
- // Search for right handle ... and try to set property value.
- switch( nHandle )
- {
- case HANDLE_COMMANDURL:
- aValue >>= m_aCommandURL;
- break;
-
- case HANDLE_HELPURL:
- aValue >>= m_aHelpURL;
- break;
-
- case HANDLE_IMAGE:
- aValue >>= m_xBitmap;
- break;
-
- case HANDLE_SUBCONTAINER:
- aValue >>= m_xActionTriggerContainer;
- break;
-
- case HANDLE_TEXT:
- aValue >>= m_aText;
- break;
- }
-}
-
-void SAL_CALL ActionTriggerPropertySet::getFastPropertyValue(
- Any& aValue, sal_Int32 nHandle ) const
-{
- ::osl::MutexGuard aGuard( LockHelper::getGlobalLock().getShareableOslMutex() );
-
- // Search for right handle ... and try to get property value.
- switch( nHandle )
- {
- case HANDLE_COMMANDURL:
- aValue <<= m_aCommandURL;
- break;
-
- case HANDLE_HELPURL:
- aValue <<= m_aHelpURL;
- break;
-
- case HANDLE_IMAGE:
- aValue <<= m_xBitmap;
- break;
-
- case HANDLE_SUBCONTAINER:
- aValue <<= m_xActionTriggerContainer;
- break;
-
- case HANDLE_TEXT:
- aValue <<= m_aText;
- break;
- }
-}
-
-::cppu::IPropertyArrayHelper& SAL_CALL ActionTriggerPropertySet::getInfoHelper()
-{
- // Optimize this method !
- // We initialize a static variable only one time. And we don't must use a mutex at every call!
- // For the first call; pInfoHelper is NULL - for the second call pInfoHelper is different from NULL!
- static OPropertyArrayHelper* pInfoHelper = NULL;
-
- if( pInfoHelper == NULL )
- {
- // Ready for multithreading
- ::osl::MutexGuard aGuard( LockHelper::getGlobalLock().getShareableOslMutex() );
- // Control this pointer again, another instance can be faster then these!
- if( pInfoHelper == NULL )
- {
- // Define static member to give structure of properties to baseclass "OPropertySetHelper".
- // "impl_getStaticPropertyDescriptor" is a non exported and static funtion, who will define a static propertytable.
- // "sal_True" say: Table is sorted by name.
- static OPropertyArrayHelper aInfoHelper( impl_getStaticPropertyDescriptor(), sal_True );
- pInfoHelper = &aInfoHelper;
- }
- }
-
- return (*pInfoHelper);
-}
-
-Reference< XPropertySetInfo > SAL_CALL ActionTriggerPropertySet::getPropertySetInfo()
-throw ( RuntimeException )
-{
- // Optimize this method !
- // We initialize a static variable only one time. And we don't must use a mutex at every call!
- // For the first call; pInfo is NULL - for the second call pInfo is different from NULL!
- static Reference< XPropertySetInfo >* pInfo = NULL ;
-
- if( pInfo == NULL )
- {
- // Ready for multithreading
- ::osl::MutexGuard aGuard( LockHelper::getGlobalLock().getShareableOslMutex() );
- // Control this pointer again, another instance can be faster then these!
- if( pInfo == NULL )
- {
- // Create structure of propertysetinfo for baseclass "OPropertySetHelper".
- // (Use method "getInfoHelper()".)
- static Reference< XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
- pInfo = &xInfo;
- }
- }
-
- return (*pInfo);
-}
-
-const Sequence< Property > ActionTriggerPropertySet::impl_getStaticPropertyDescriptor()
-{
- static const Property pActionTriggerPropertys[] =
- {
- Property( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CommandURL" )), HANDLE_COMMANDURL , ::getCppuType((::rtl::OUString*)0) , PropertyAttribute::TRANSIENT ),
- Property( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "HelpURL" )), HANDLE_HELPURL , ::getCppuType((::rtl::OUString*)0) , PropertyAttribute::TRANSIENT ),
- Property( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Image" )), HANDLE_IMAGE , ::getCppuType((Reference<XBitmap>*)0) , PropertyAttribute::TRANSIENT ),
- Property( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "SubContainer" )), HANDLE_SUBCONTAINER , ::getCppuType((::rtl::OUString*)0) , PropertyAttribute::TRANSIENT ),
- Property( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Text" )), HANDLE_TEXT , ::getCppuType((Reference<XInterface>*)0) , PropertyAttribute::TRANSIENT )
- };
-
- // Use it to initialize sequence!
- static const Sequence< Property > seqActionTriggerPropertyDescriptor( pActionTriggerPropertys, PROPERTYCOUNT );
-
- // Return static "PropertyDescriptor"
- return seqActionTriggerPropertyDescriptor ;
-}
-
-
-//******************************************************************************************************************************
-// private method
-//******************************************************************************************************************************
-sal_Bool ActionTriggerPropertySet::impl_tryToChangeProperty(
- const ::rtl::OUString& sCurrentValue ,
- const Any& aNewValue ,
- Any& aOldValue ,
- Any& aConvertedValue )
-throw( IllegalArgumentException )
-{
- // Set default return value if method failed.
- sal_Bool bReturn = sal_False;
- // Get new value from any.
- // IllegalArgumentException() can be thrown!
- ::rtl::OUString sValue ;
- convertPropertyValue( sValue, aNewValue );
-
- // If value change ...
- if( sValue != sCurrentValue )
- {
- // ... set information of change.
- aOldValue <<= sCurrentValue ;
- aConvertedValue <<= sValue ;
- // Return OK - "value will be change ..."
- bReturn = sal_True;
- }
- else
- {
- // ... clear information of return parameter!
- aOldValue.clear () ;
- aConvertedValue.clear () ;
- // Return NOTHING - "value will not be change ..."
- bReturn = sal_False;
- }
-
- return bReturn;
-}
-
-
-sal_Bool ActionTriggerPropertySet::impl_tryToChangeProperty(
- const Reference< XBitmap > aCurrentValue ,
- const Any& aNewValue ,
- Any& aOldValue ,
- Any& aConvertedValue )
-throw( IllegalArgumentException )
-{
- // Set default return value if method failed.
- sal_Bool bReturn = sal_False;
- // Get new value from any.
- // IllegalArgumentException() can be thrown!
- Reference< XBitmap > aValue ;
- convertPropertyValue( aValue, aNewValue );
-
- // If value change ...
- if( aValue != aCurrentValue )
- {
- // ... set information of change.
- aOldValue <<= aCurrentValue ;
- aConvertedValue <<= aValue ;
- // Return OK - "value will be change ..."
- bReturn = sal_True;
- }
- else
- {
- // ... clear information of return parameter!
- aOldValue.clear () ;
- aConvertedValue.clear () ;
- // Return NOTHING - "value will not be change ..."
- bReturn = sal_False;
- }
-
- return bReturn;
-}
-
-sal_Bool ActionTriggerPropertySet::impl_tryToChangeProperty(
- const Reference< XInterface > aCurrentValue ,
- const Any& aNewValue ,
- Any& aOldValue ,
- Any& aConvertedValue )
-throw( IllegalArgumentException )
-{
- // Set default return value if method failed.
- sal_Bool bReturn = sal_False;
- // Get new value from any.
- // IllegalArgumentException() can be thrown!
- Reference< XInterface > aValue ;
- convertPropertyValue( aValue, aNewValue );
-
- // If value change ...
- if( aValue != aCurrentValue )
- {
- // ... set information of change.
- aOldValue <<= aCurrentValue ;
- aConvertedValue <<= aValue ;
- // Return OK - "value will be change ..."
- bReturn = sal_True;
- }
- else
- {
- // ... clear information of return parameter!
- aOldValue.clear () ;
- aConvertedValue.clear () ;
- // Return NOTHING - "value will not be change ..."
- bReturn = sal_False;
- }
-
- return bReturn;
-}
-
-}
-
diff --git a/framework/source/classes/actiontriggerseparatorpropertyset.cxx b/framework/source/classes/actiontriggerseparatorpropertyset.cxx
deleted file mode 100644
index f68c293fcef4..000000000000
--- a/framework/source/classes/actiontriggerseparatorpropertyset.cxx
+++ /dev/null
@@ -1,349 +0,0 @@
-/*************************************************************************
- *
- * 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_framework.hxx"
-
-#include <classes/actiontriggerseparatorpropertyset.hxx>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <cppuhelper/proptypehlp.hxx>
-#include <cppuhelper/typeprovider.hxx>
-#include <vcl/svapp.hxx>
-
-
-using namespace cppu;
-using namespace com::sun::star::uno;
-using namespace com::sun::star::beans;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::awt;
-
-// Handles for properties
-// (PLEASE SORT THIS FIELD, IF YOU ADD NEW PROPERTIES!)
-// We use an enum to define these handles, to use all numbers from 0 to nn and
-// if you add someone, you don't must control this!
-// But don't forget to change values of follow defines, if you do something with this enum!
-enum EPROPERTIES
-{
- HANDLE_TYPE,
- PROPERTYCOUNT
-};
-
-namespace framework
-{
-
-ActionTriggerSeparatorPropertySet::ActionTriggerSeparatorPropertySet( const Reference< XMultiServiceFactory >& /*ServiceManager*/ )
- : ThreadHelpBase ( &Application::GetSolarMutex() )
- , OBroadcastHelper ( m_aLock.getShareableOslMutex() )
- , OPropertySetHelper ( *SAL_STATIC_CAST( OBroadcastHelper *, this ) )
- , OWeakObject ( )
- , m_nSeparatorType( 0 )
-{
-}
-
-ActionTriggerSeparatorPropertySet::~ActionTriggerSeparatorPropertySet()
-{
-}
-
-// XInterface
-Any SAL_CALL ActionTriggerSeparatorPropertySet::queryInterface( const Type& aType )
-throw ( RuntimeException )
-{
- Any a = ::cppu::queryInterface(
- aType ,
- SAL_STATIC_CAST( XServiceInfo*, this ));
-
- if( a.hasValue() )
- return a;
- else
- {
- a = OPropertySetHelper::queryInterface( aType );
-
- if( a.hasValue() )
- return a;
- }
-
- return OWeakObject::queryInterface( aType );
-}
-
-void ActionTriggerSeparatorPropertySet::acquire() throw()
-{
- OWeakObject::acquire();
-}
-
-void ActionTriggerSeparatorPropertySet::release() throw()
-{
- OWeakObject::release();
-}
-
-// XServiceInfo
-::rtl::OUString SAL_CALL ActionTriggerSeparatorPropertySet::getImplementationName()
-throw ( RuntimeException )
-{
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( IMPLEMENTATIONNAME_ACTIONTRIGGERSEPARATOR ));
-}
-
-sal_Bool SAL_CALL ActionTriggerSeparatorPropertySet::supportsService( const ::rtl::OUString& ServiceName )
-throw ( RuntimeException )
-{
- if ( ServiceName.equalsAscii( SERVICENAME_ACTIONTRIGGERSEPARATOR ))
- return sal_True;
-
- return sal_False;
-}
-
-Sequence< ::rtl::OUString > SAL_CALL ActionTriggerSeparatorPropertySet::getSupportedServiceNames()
-throw ( RuntimeException )
-{
- Sequence< ::rtl::OUString > seqServiceNames( 1 );
- seqServiceNames[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICENAME_ACTIONTRIGGERSEPARATOR ));
- return seqServiceNames;
-}
-
-// XTypeProvider
-Sequence< Type > SAL_CALL ActionTriggerSeparatorPropertySet::getTypes() throw ( RuntimeException )
-{
- // Optimize this method !
- // We initialize a static variable only one time. And we don't must use a mutex at every call!
- // For the first call; pTypeCollection is NULL - for the second call pTypeCollection is different from NULL!
- static ::cppu::OTypeCollection* pTypeCollection = NULL ;
-
- if ( pTypeCollection == NULL )
- {
- // Ready for multithreading; get global mutex for first call of this method only! see before
- osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ;
-
- // Control these pointer again ... it can be, that another instance will be faster then these!
- if ( pTypeCollection == NULL )
- {
- // Create a static typecollection ...
- static ::cppu::OTypeCollection aTypeCollection(
- ::getCppuType(( const Reference< XPropertySet >*)NULL ) ,
- ::getCppuType(( const Reference< XFastPropertySet >*)NULL ) ,
- ::getCppuType(( const Reference< XMultiPropertySet >*)NULL ) ,
- ::getCppuType(( const Reference< XServiceInfo >*)NULL ) ,
- ::getCppuType(( const Reference< XTypeProvider >*)NULL ) ) ;
-
- // ... and set his address to static pointer!
- pTypeCollection = &aTypeCollection ;
- }
- }
-
- return pTypeCollection->getTypes() ;
-}
-
-Sequence< sal_Int8 > SAL_CALL ActionTriggerSeparatorPropertySet::getImplementationId() throw ( RuntimeException )
-{
- // Create one Id for all instances of this class.
- // Use ethernet address to do this! (sal_True)
-
- // Optimize this method
- // We initialize a static variable only one time. And we don't must use a mutex at every call!
- // For the first call; pID is NULL - for the second call pID is different from NULL!
- static ::cppu::OImplementationId* pID = NULL ;
-
- if ( pID == NULL )
- {
- // Ready for multithreading; get global mutex for first call of this method only! see before
- osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ;
-
- // Control these pointer again ... it can be, that another instance will be faster then these!
- if ( pID == NULL )
- {
- // Create a new static ID ...
- static ::cppu::OImplementationId aID( sal_False ) ;
- // ... and set his address to static pointer!
- pID = &aID ;
- }
- }
-
- return pID->getImplementationId() ;
-}
-
-//---------------------------------------------------------------------------------------------------------
-// OPropertySetHelper implementation
-//---------------------------------------------------------------------------------------------------------
-
-sal_Bool SAL_CALL ActionTriggerSeparatorPropertySet::convertFastPropertyValue(
- Any& aConvertedValue,
- Any& aOldValue,
- sal_Int32 nHandle,
- const Any& aValue )
-throw( IllegalArgumentException )
-{
- // Check, if value of property will changed in method "setFastPropertyValue_NoBroadcast()".
- // Return TRUE, if changed - else return FALSE.
- // Attention: Method "impl_tryToChangeProperty()" can throw the IllegalArgumentException !!!
- // Initialize return value with FALSE !!!
- // (Handle can be invalid)
- sal_Bool bReturn = sal_False;
-
- switch( nHandle )
- {
- case HANDLE_TYPE:
- bReturn = impl_tryToChangeProperty( m_nSeparatorType, aValue, aOldValue, aConvertedValue );
- break;
- }
-
- // Return state of operation.
- return bReturn;
-}
-
-
-void SAL_CALL ActionTriggerSeparatorPropertySet::setFastPropertyValue_NoBroadcast(
- sal_Int32 nHandle, const Any& aValue )
-throw( Exception )
-{
- ::osl::MutexGuard aGuard( LockHelper::getGlobalLock().getShareableOslMutex() );
-
- // Search for right handle ... and try to set property value.
- switch( nHandle )
- {
- case HANDLE_TYPE:
- aValue >>= m_nSeparatorType;
- break;
- }
-}
-
-void SAL_CALL ActionTriggerSeparatorPropertySet::getFastPropertyValue(
- Any& aValue, sal_Int32 nHandle ) const
-{
- ::osl::MutexGuard aGuard( LockHelper::getGlobalLock().getShareableOslMutex() );
-
- // Search for right handle ... and try to get property value.
- switch( nHandle )
- {
- case HANDLE_TYPE:
- aValue <<= m_nSeparatorType;
- break;
- }
-}
-
-::cppu::IPropertyArrayHelper& SAL_CALL ActionTriggerSeparatorPropertySet::getInfoHelper()
-{
- // Optimize this method !
- // We initialize a static variable only one time. And we don't must use a mutex at every call!
- // For the first call; pInfoHelper is NULL - for the second call pInfoHelper is different from NULL!
- static OPropertyArrayHelper* pInfoHelper = NULL;
-
- if( pInfoHelper == NULL )
- {
- // Ready for multithreading
- ::osl::MutexGuard aGuard( LockHelper::getGlobalLock().getShareableOslMutex() );
- // Control this pointer again, another instance can be faster then these!
- if( pInfoHelper == NULL )
- {
- // Define static member to give structure of properties to baseclass "OPropertySetHelper".
- // "impl_getStaticPropertyDescriptor" is a non exported and static funtion, who will define a static propertytable.
- // "sal_True" say: Table is sorted by name.
- static OPropertyArrayHelper aInfoHelper( impl_getStaticPropertyDescriptor(), sal_True );
- pInfoHelper = &aInfoHelper;
- }
- }
-
- return (*pInfoHelper);
-}
-
-Reference< XPropertySetInfo > SAL_CALL ActionTriggerSeparatorPropertySet::getPropertySetInfo()
-throw ( RuntimeException )
-{
- // Optimize this method !
- // We initialize a static variable only one time. And we don't must use a mutex at every call!
- // For the first call; pInfo is NULL - for the second call pInfo is different from NULL!
- static Reference< XPropertySetInfo >* pInfo = NULL ;
-
- if( pInfo == NULL )
- {
- // Ready for multithreading
- ::osl::MutexGuard aGuard( LockHelper::getGlobalLock().getShareableOslMutex() );
- // Control this pointer again, another instance can be faster then these!
- if( pInfo == NULL )
- {
- // Create structure of propertysetinfo for baseclass "OPropertySetHelper".
- // (Use method "getInfoHelper()".)
- static Reference< XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
- pInfo = &xInfo;
- }
- }
-
- return (*pInfo);
-}
-
-const Sequence< Property > ActionTriggerSeparatorPropertySet::impl_getStaticPropertyDescriptor()
-{
- static const Property pActionTriggerPropertys[] =
- {
- Property( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "SeparatorType" )), HANDLE_TYPE, ::getCppuType((sal_Int16*)0), PropertyAttribute::TRANSIENT )
- };
-
- // Use it to initialize sequence!
- static const Sequence< Property > seqActionTriggerPropertyDescriptor( pActionTriggerPropertys, PROPERTYCOUNT );
-
- // Return static "PropertyDescriptor"
- return seqActionTriggerPropertyDescriptor ;
-}
-
-
-//******************************************************************************************************************************
-// private method
-//******************************************************************************************************************************
-sal_Bool ActionTriggerSeparatorPropertySet::impl_tryToChangeProperty(
- sal_Int16 aCurrentValue ,
- const Any& aNewValue ,
- Any& aOldValue ,
- Any& aConvertedValue )
-throw( IllegalArgumentException )
-{
- // Set default return value if method failed.
- sal_Bool bReturn = sal_False;
- // Get new value from any.
- // IllegalArgumentException() can be thrown!
- sal_Int16 aValue = 0;
- convertPropertyValue( aValue, aNewValue );
-
- // If value change ...
- if( aValue != aCurrentValue )
- {
- // ... set information of change.
- aOldValue <<= aCurrentValue ;
- aConvertedValue <<= aValue ;
- // Return OK - "value will be change ..."
- bReturn = sal_True;
- }
- else
- {
- // ... clear information of return parameter!
- aOldValue.clear () ;
- aConvertedValue.clear () ;
- // Return NOTHING - "value will not be change ..."
- bReturn = sal_False;
- }
-
- return bReturn;
-}
-
-}
-
diff --git a/framework/source/classes/addonmenu.cxx b/framework/source/classes/addonmenu.cxx
deleted file mode 100644
index 4961a8f7c1f2..000000000000
--- a/framework/source/classes/addonmenu.cxx
+++ /dev/null
@@ -1,456 +0,0 @@
-/*************************************************************************
- *
- * 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_framework.hxx"
-
-//_________________________________________________________________________________________________________________
-// my own includes
-//_________________________________________________________________________________________________________________
-#include "classes/addonmenu.hxx"
-#include "classes/addonsoptions.hxx"
-#include <general.h>
-#include <macros/debug/assertion.hxx>
-#include <helper/imageproducer.hxx>
-#include <xml/menuconfiguration.hxx>
-
-//_________________________________________________________________________________________________________________
-// interface includes
-//_________________________________________________________________________________________________________________
-#include <com/sun/star/uno/Reference.hxx>
-#include <com/sun/star/util/URL.hpp>
-#include <com/sun/star/util/XURLTransformer.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-
-//_________________________________________________________________________________________________________________
-// includes of other projects
-//_________________________________________________________________________________________________________________
-#include <tools/config.hxx>
-#include <vcl/svapp.hxx>
-#include <svtools/menuoptions.hxx>
-#include <svl/solar.hrc>
-//_________________________________________________________________________________________________________________
-// namespace
-//_________________________________________________________________________________________________________________
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::frame;
-using namespace ::com::sun::star::beans;
-
-// Please look at sfx2/inc/sfxsids.hrc the values are defined there. Due to build dependencies
-// we cannot include the header file.
-const USHORT SID_HELPMENU = (SID_SFX_START + 410);
-const USHORT SID_ONLINE_REGISTRATION = (SID_SFX_START + 1537);
-
-namespace framework
-{
-
-AddonMenu::AddonMenu( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame ) :
- m_xFrame( rFrame )
-{
-}
-
-AddonMenu::~AddonMenu()
-{
- for ( USHORT i = 0; i < GetItemCount(); i++ )
- {
- if ( GetItemType( i ) != MENUITEM_SEPARATOR )
- {
- // delete user attributes created with new!
- USHORT nId = GetItemId( i );
- MenuConfiguration::Attributes* pUserAttributes = (MenuConfiguration::Attributes*)GetUserValue( nId );
- delete pUserAttributes;
- delete GetPopupMenu( nId );
- }
- }
-}
-
-// ------------------------------------------------------------------------
-
-// ------------------------------------------------------------------------
-// Check if command URL string has the unique prefix to identify addon popup menus
-sal_Bool AddonPopupMenu::IsCommandURLPrefix( const ::rtl::OUString& aCmdURL )
-{
- const char aPrefixCharBuf[] = ADDONSPOPUPMENU_URL_PREFIX_STR;
-
- return aCmdURL.matchAsciiL( aPrefixCharBuf, sizeof( aPrefixCharBuf )-1, 0 );
-}
-
-AddonPopupMenu::AddonPopupMenu( const com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& rFrame ) :
- AddonMenu( rFrame )
-{
-}
-
-AddonPopupMenu::~AddonPopupMenu()
-{
-}
-
-// ------------------------------------------------------------------------
-
-static Reference< XModel > GetModelFromFrame( const Reference< XFrame >& rFrame )
-{
- // Query for the model to get check the context information
- Reference< XModel > xModel;
- if ( rFrame.is() )
- {
- Reference< XController > xController( rFrame->getController(), UNO_QUERY );
- if ( xController.is() )
- xModel = xController->getModel();
- }
-
- return xModel;
-}
-
-// ------------------------------------------------------------------------
-
-sal_Bool AddonMenuManager::HasAddonMenuElements()
-{
- return AddonsOptions().HasAddonsMenu();
-}
-
-sal_Bool AddonMenuManager::HasAddonHelpMenuElements()
-{
- return AddonsOptions().HasAddonsHelpMenu();
-}
-
-// Factory method to create different Add-On menu types
-PopupMenu* AddonMenuManager::CreatePopupMenuType( MenuType eMenuType, const Reference< XFrame >& rFrame )
-{
- if ( eMenuType == ADDON_MENU )
- return new AddonMenu( rFrame );
- else if ( eMenuType == ADDON_POPUPMENU )
- return new AddonPopupMenu( rFrame );
- else
- return NULL;
-}
-
-// Create the Add-Ons menu
-AddonMenu* AddonMenuManager::CreateAddonMenu( const Reference< XFrame >& rFrame )
-{
- AddonsOptions aOptions;
- AddonMenu* pAddonMenu = NULL;
- USHORT nUniqueMenuId = ADDONMENU_ITEMID_START;
-
- const Sequence< Sequence< PropertyValue > >& rAddonMenuEntries = aOptions.GetAddonsMenu();
- if ( rAddonMenuEntries.getLength() > 0 )
- {
- pAddonMenu = (AddonMenu *)AddonMenuManager::CreatePopupMenuType( ADDON_MENU, rFrame );
- Reference< XModel > xModel = GetModelFromFrame( rFrame );
- AddonMenuManager::BuildMenu( pAddonMenu, ADDON_MENU, MENU_APPEND, nUniqueMenuId, rAddonMenuEntries, rFrame, xModel );
-
- // Don't return an empty Add-On menu
- if ( pAddonMenu->GetItemCount() == 0 )
- {
- delete pAddonMenu;
- pAddonMenu = NULL;
- }
- }
-
- return pAddonMenu;
-}
-
-// Returns the next insert position from nPos.
-USHORT AddonMenuManager::GetNextPos( USHORT nPos )
-{
- return ( nPos == MENU_APPEND ) ? MENU_APPEND : ( nPos+1 );
-}
-
-
-static USHORT FindMenuId( Menu* pMenu, const String aCommand )
-{
- USHORT nPos = 0;
- String aCmd;
- for ( nPos = 0; nPos < pMenu->GetItemCount(); nPos++ )
- {
- USHORT nId = pMenu->GetItemId( nPos );
- aCmd = pMenu->GetItemCommand( nId );
- if ( aCmd == aCommand )
- return nId;
- }
-
- return USHRT_MAX;
-}
-
-
-// Merge the Add-Ons help menu items into the given menu bar at a defined pos
-void AddonMenuManager::MergeAddonHelpMenu( const Reference< XFrame >& rFrame, MenuBar* pMergeMenuBar )
-{
- if ( pMergeMenuBar )
- {
- PopupMenu* pHelpMenu = pMergeMenuBar->GetPopupMenu( SID_HELPMENU );
- if ( !pHelpMenu )
- {
- USHORT nId = FindMenuId( pMergeMenuBar, String::CreateFromAscii( ".uno:HelpMenu" ));
- if ( nId != USHRT_MAX )
- pHelpMenu = pMergeMenuBar->GetPopupMenu( nId );
- }
-
- if ( pHelpMenu )
- {
- static const char REFERENCECOMMAND_AFTER[] = ".uno:OnlineRegistrationDlg";
- static const char REFERENCECOMMAND_BEFORE[] = ".uno:About";
-
- // Add-Ons help menu items should be inserted after the "registration" menu item
- bool bAddAfter = true;
- USHORT nItemCount = pHelpMenu->GetItemCount();
- USHORT nRegPos = pHelpMenu->GetItemPos( SID_ONLINE_REGISTRATION );
- USHORT nInsPos = nRegPos;
- USHORT nInsSepAfterPos = MENU_APPEND;
- USHORT nUniqueMenuId = ADDONMENU_ITEMID_START;
- AddonsOptions aOptions;
-
- if ( nRegPos == USHRT_MAX )
- {
- // try to detect the online registration dialog menu item with the command URL
- USHORT nId = FindMenuId( pHelpMenu, String::CreateFromAscii( REFERENCECOMMAND_AFTER ));
- nRegPos = pHelpMenu->GetItemPos( nId );
- nInsPos = nRegPos;
- }
-
- if ( nRegPos == USHRT_MAX )
- {
- // second try:
- // try to detect the about menu item with the command URL
- USHORT nId = FindMenuId( pHelpMenu, String::CreateFromAscii( REFERENCECOMMAND_BEFORE ));
- nRegPos = pHelpMenu->GetItemPos( nId );
- nInsPos = nRegPos;
- bAddAfter = false;
- }
-
- Sequence< Sequence< PropertyValue > > aAddonSubMenu;
- const Sequence< Sequence< PropertyValue > >& rAddonHelpMenuEntries = aOptions.GetAddonsHelpMenu();
-
- nInsPos = bAddAfter ? AddonMenuManager::GetNextPos( nInsPos ) : nInsPos;
- if ( nInsPos < nItemCount && pHelpMenu->GetItemType( nInsPos ) != MENUITEM_SEPARATOR )
- nInsSepAfterPos = nInsPos;
-
- Reference< XModel > xModel = GetModelFromFrame( rFrame );
- AddonMenuManager::BuildMenu( pHelpMenu, ADDON_MENU, nInsPos, nUniqueMenuId, rAddonHelpMenuEntries, rFrame, xModel );
-
- if ( pHelpMenu->GetItemCount() > nItemCount )
- {
- if ( nInsSepAfterPos < MENU_APPEND )
- {
- nInsSepAfterPos += ( pHelpMenu->GetItemCount() - nItemCount );
- if ( pHelpMenu->GetItemType( nInsSepAfterPos ) != MENUITEM_SEPARATOR )
- pHelpMenu->InsertSeparator( nInsSepAfterPos );
- }
- if ( nRegPos < MENU_APPEND )
- pHelpMenu->InsertSeparator( nRegPos+1 );
- else
- pHelpMenu->InsertSeparator( nItemCount );
- }
- }
- }
-}
-
-// Merge the addon popup menus into the given menu bar at the provided pos.
-void AddonMenuManager::MergeAddonPopupMenus( const Reference< XFrame >& rFrame,
- const Reference< XModel >& rModel,
- USHORT nMergeAtPos,
- MenuBar* pMergeMenuBar )
-{
- if ( pMergeMenuBar )
- {
- AddonsOptions aAddonsOptions;
- USHORT nInsertPos = nMergeAtPos;
-
- ::rtl::OUString aTitle;
- ::rtl::OUString aURL;
- ::rtl::OUString aTarget;
- ::rtl::OUString aImageId;
- ::rtl::OUString aContext;
- Sequence< Sequence< PropertyValue > > aAddonSubMenu;
- USHORT nUniqueMenuId = ADDONMENU_ITEMID_START;
-
- const Sequence< Sequence< PropertyValue > >& rAddonMenuEntries = aAddonsOptions.GetAddonsMenuBarPart();
- for ( sal_Int32 i = 0; i < rAddonMenuEntries.getLength(); i++ )
- {
- AddonMenuManager::GetMenuEntry( rAddonMenuEntries[i],
- aTitle,
- aURL,
- aTarget,
- aImageId,
- aContext,
- aAddonSubMenu );
- if ( aTitle.getLength() > 0 &&
- aURL.getLength() > 0 &&
- aAddonSubMenu.getLength() > 0 &&
- AddonMenuManager::IsCorrectContext( rModel, aContext ))
- {
- USHORT nId = nUniqueMenuId++;
- AddonPopupMenu* pAddonPopupMenu = (AddonPopupMenu *)AddonMenuManager::CreatePopupMenuType( ADDON_POPUPMENU, rFrame );
-
- AddonMenuManager::BuildMenu( pAddonPopupMenu, ADDON_MENU, MENU_APPEND, nUniqueMenuId, aAddonSubMenu, rFrame, rModel );
-
- if ( pAddonPopupMenu->GetItemCount() > 0 )
- {
- pAddonPopupMenu->SetCommandURL( aURL );
- pMergeMenuBar->InsertItem( nId, aTitle, 0, nInsertPos++ );
- pMergeMenuBar->SetPopupMenu( nId, pAddonPopupMenu );
-
- // Store the command URL into the VCL menu bar for later identification
- pMergeMenuBar->SetItemCommand( nId, aURL );
- }
- else
- delete pAddonPopupMenu;
- }
- }
- }
-}
-
-// Insert the menu and sub menu entries into pCurrentMenu with the aAddonMenuDefinition provided
-void AddonMenuManager::BuildMenu( PopupMenu* pCurrentMenu,
- MenuType nSubMenuType,
- USHORT nInsPos,
- USHORT& nUniqueMenuId,
- Sequence< Sequence< PropertyValue > > aAddonMenuDefinition,
- const Reference< XFrame >& rFrame,
- const Reference< XModel >& rModel )
-{
- Sequence< Sequence< PropertyValue > > aAddonSubMenu;
- BOOL bInsertSeparator = FALSE;
- UINT32 i = 0;
- UINT32 nElements = 0;
- UINT32 nCount = aAddonMenuDefinition.getLength();
- AddonsOptions aAddonsOptions;
-
- ::rtl::OUString aTitle;
- ::rtl::OUString aURL;
- ::rtl::OUString aTarget;
- ::rtl::OUString aImageId;
- ::rtl::OUString aContext;
-
- for ( i = 0; i < nCount; ++i )
- {
- GetMenuEntry( aAddonMenuDefinition[i], aTitle, aURL, aTarget, aImageId, aContext, aAddonSubMenu );
-
- if ( !IsCorrectContext( rModel, aContext ) || ( !aTitle.getLength() && !aURL.getLength() ))
- continue;
-
- if ( aURL == ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "private:separator" )))
- bInsertSeparator = TRUE;
- else
- {
- PopupMenu* pSubMenu = NULL;
- if ( aAddonSubMenu.getLength() > 0 )
- {
- pSubMenu = AddonMenuManager::CreatePopupMenuType( nSubMenuType, rFrame );
- AddonMenuManager::BuildMenu( pSubMenu, nSubMenuType, MENU_APPEND, nUniqueMenuId, aAddonSubMenu, rFrame, rModel );
-
- // Don't create a menu item for an empty sub menu
- if ( pSubMenu->GetItemCount() == 0 )
- {
- delete pSubMenu;
- pSubMenu = NULL;
- continue;
- }
- }
-
- if ( bInsertSeparator && nElements > 0 )
- {
- // Insert a separator only when we insert a new element afterwards and we
- // have already one before us
- nElements = 0;
- bInsertSeparator = FALSE;
- pCurrentMenu->InsertSeparator( nInsPos );
- nInsPos = AddonMenuManager::GetNextPos( nInsPos );
- }
-
- USHORT nId = nUniqueMenuId++;
- pCurrentMenu->InsertItem( nId, aTitle, 0, nInsPos );
- nInsPos = AddonMenuManager::GetNextPos( nInsPos );
-
- ++nElements;
-
- // Store values from configuration to the New and Wizard menu entries to enable
- // sfx2 based code to support high contrast mode correctly!
- pCurrentMenu->SetUserValue( nId, ULONG( new MenuConfiguration::Attributes( aTarget, aImageId )) );
- pCurrentMenu->SetItemCommand( nId, aURL );
-
- if ( pSubMenu )
- pCurrentMenu->SetPopupMenu( nId, pSubMenu );
- }
- }
-}
-
-// Retrieve the menu entry property values from a sequence
-void AddonMenuManager::GetMenuEntry( const Sequence< PropertyValue >& rAddonMenuEntry,
- ::rtl::OUString& rTitle,
- ::rtl::OUString& rURL,
- ::rtl::OUString& rTarget,
- ::rtl::OUString& rImageId,
- ::rtl::OUString& rContext,
- Sequence< Sequence< PropertyValue > >& rAddonSubMenu )
-{
- // Reset submenu parameter
- rAddonSubMenu = Sequence< Sequence< PropertyValue > >();
-
- for ( int i = 0; i < rAddonMenuEntry.getLength(); i++ )
- {
- ::rtl::OUString aMenuEntryPropName = rAddonMenuEntry[i].Name;
- if ( aMenuEntryPropName == ADDONSMENUITEM_PROPERTYNAME_URL )
- rAddonMenuEntry[i].Value >>= rURL;
- else if ( aMenuEntryPropName == ADDONSMENUITEM_PROPERTYNAME_TITLE )
- rAddonMenuEntry[i].Value >>= rTitle;
- else if ( aMenuEntryPropName == ADDONSMENUITEM_PROPERTYNAME_TARGET )
- rAddonMenuEntry[i].Value >>= rTarget;
- else if ( aMenuEntryPropName == ADDONSMENUITEM_PROPERTYNAME_IMAGEIDENTIFIER )
- rAddonMenuEntry[i].Value >>= rImageId;
- else if ( aMenuEntryPropName == ADDONSMENUITEM_PROPERTYNAME_SUBMENU )
- rAddonMenuEntry[i].Value >>= rAddonSubMenu;
- else if ( aMenuEntryPropName == ADDONSMENUITEM_PROPERTYNAME_CONTEXT )
- rAddonMenuEntry[i].Value >>= rContext;
- }
-}
-
-// Check if the context string matches the provided xModel context
-sal_Bool AddonMenuManager::IsCorrectContext( const Reference< XModel >& rModel, const ::rtl::OUString& aContext )
-{
- if ( rModel.is() )
- {
- Reference< com::sun::star::lang::XServiceInfo > xServiceInfo( rModel, UNO_QUERY );
- if ( xServiceInfo.is() )
- {
- sal_Int32 nIndex = 0;
- do
- {
- ::rtl::OUString aToken = aContext.getToken( 0, ',', nIndex );
-
- if ( xServiceInfo->supportsService( aToken ))
- return sal_True;
- }
- while ( nIndex >= 0 );
- }
- }
-
- return ( aContext.getLength() == 0 );
-}
-
-}
-
diff --git a/framework/source/classes/addonsoptions.cxx b/framework/source/classes/addonsoptions.cxx
deleted file mode 100644
index 9bdaeb7dfda3..000000000000
--- a/framework/source/classes/addonsoptions.cxx
+++ /dev/null
@@ -1,1858 +0,0 @@
-/*************************************************************************
- *
- * 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_framework.hxx"
-
-//_________________________________________________________________________________________________________________
-// includes
-//_________________________________________________________________________________________________________________
-#include <classes/addonsoptions.hxx>
-#include <unotools/configmgr.hxx>
-#include <unotools/configitem.hxx>
-#include <unotools/ucbstreamhelper.hxx>
-#include <tools/debug.hxx>
-#include <tools/stream.hxx>
-#include <tools/color.hxx>
-#include <com/sun/star/uno/Any.hxx>
-#include <com/sun/star/uno/Sequence.hxx>
-#include "com/sun/star/util/XMacroExpander.hpp"
-#include "com/sun/star/uno/XComponentContext.hpp"
-#include "com/sun/star/beans/XPropertySet.hpp"
-#include <rtl/ustrbuf.hxx>
-#include <rtl/uri.hxx>
-#include <comphelper/processfactory.hxx>
-#include <vcl/graph.hxx>
-#include <svtools/filter.hxx>
-
-#include <hash_map>
-#include <algorithm>
-#include <vector>
-
-//_________________________________________________________________________________________________________________
-// namespaces
-//_________________________________________________________________________________________________________________
-
-using namespace ::std ;
-using namespace ::utl ;
-using namespace ::osl ;
-using namespace ::com::sun::star::uno ;
-using namespace ::com::sun::star::beans ;
-using namespace ::com::sun::star::lang ;
-
-//_________________________________________________________________________________________________________________
-// const
-//_________________________________________________________________________________________________________________
-
-#define ROOTNODE_ADDONMENU ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Addons" ))
-#define PATHDELIMITER ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/" ))
-#define TOOLBARITEMS ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ToolBarItems" ))
-#define SEPARATOR_URL_STR "private:separator"
-#define SEPARATOR_URL_LEN 17
-#define SEPARATOR_URL ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SEPARATOR_URL_STR ))
-
-#define PROPERTYNAME_URL ADDONSMENUITEM_PROPERTYNAME_URL
-#define PROPERTYNAME_TITLE ADDONSMENUITEM_PROPERTYNAME_TITLE
-#define PROPERTYNAME_TARGET ADDONSMENUITEM_PROPERTYNAME_TARGET
-#define PROPERTYNAME_IMAGEIDENTIFIER ADDONSMENUITEM_PROPERTYNAME_IMAGEIDENTIFIER
-#define PROPERTYNAME_CONTEXT ADDONSMENUITEM_PROPERTYNAME_CONTEXT
-#define PROPERTYNAME_SUBMENU ADDONSMENUITEM_PROPERTYNAME_SUBMENU
-#define PROPERTYNAME_CONTROLTYPE ADDONSMENUITEM_PROPERTYNAME_CONTROLTYPE
-#define PROPERTYNAME_WIDTH ADDONSMENUITEM_PROPERTYNAME_WIDTH
-
-#define PROPERTYNAME_IMAGESMALL ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ImageSmall" ))
-#define PROPERTYNAME_IMAGEBIG ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ImageBig" ))
-#define PROPERTYNAME_IMAGESMALLHC ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ImageSmallHC" ))
-#define PROPERTYNAME_IMAGEBIGHC ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ImageBigHC" ))
-#define PROPERTYNAME_IMAGESMALL_URL ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ImageSmallURL" ))
-#define PROPERTYNAME_IMAGEBIG_URL ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ImageBigURL" ))
-#define PROPERTYNAME_IMAGESMALLHC_URL ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ImageSmallHCURL" ))
-#define PROPERTYNAME_IMAGEBIGHC_URL ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ImageBigHCURL" ))
-
-#define IMAGES_NODENAME ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("UserDefinedImages" ))
-#define PRIVATE_IMAGE_URL ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("private:image/" ))
-
-#define PROPERTYNAME_MERGEMENU_MERGEPOINT ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergePoint" ))
-#define PROPERTYNAME_MERGEMENU_MERGECOMMAND ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeCommand" ))
-#define PROPERTYNAME_MERGEMENU_MERGECOMMANDPARAMETER ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeCommandParameter" ))
-#define PROPERTYNAME_MERGEMENU_MERGEFALLBACK ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeFallback" ))
-#define PROPERTYNAME_MERGEMENU_MERGECONTEXT ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeContext" ))
-#define PROPERTYNAME_MERGEMENU_MENUITEMS ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MenuItems" ))
-#define MERGEMENU_MERGEPOINT_SEPARATOR '\\'
-
-#define PROPERTYNAME_MERGETOOLBAR_TOOLBAR ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeToolBar" ))
-#define PROPERTYNAME_MERGETOOLBAR_MERGEPOINT ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergePoint" ))
-#define PROPERTYNAME_MERGETOOLBAR_MERGECOMMAND ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeCommand" ))
-#define PROPERTYNAME_MERGETOOLBAR_MERGECOMMANDPARAMETER ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeCommandParameter" ))
-#define PROPERTYNAME_MERGETOOLBAR_MERGEFALLBACK ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeFallback" ))
-#define PROPERTYNAME_MERGETOOLBAR_MERGECONTEXT ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeContext" ))
-#define PROPERTYNAME_MERGETOOLBAR_TOOLBARITEMS ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ToolBarItems" ))
-
-// The following order is mandatory. Please add properties at the end!
-#define INDEX_URL 0
-#define INDEX_TITLE 1
-#define INDEX_IMAGEIDENTIFIER 2
-#define INDEX_TARGET 3
-#define INDEX_CONTEXT 4
-#define INDEX_SUBMENU 5
-#define INDEX_CONTROLTYPE 6
-#define INDEX_WIDTH 7
-#define PROPERTYCOUNT_INDEX 8
-
-// The following order is mandatory. Please add properties at the end!
-#define PROPERTYCOUNT_MENUITEM 6
-#define OFFSET_MENUITEM_URL 0
-#define OFFSET_MENUITEM_TITLE 1
-#define OFFSET_MENUITEM_IMAGEIDENTIFIER 2
-#define OFFSET_MENUITEM_TARGET 3
-#define OFFSET_MENUITEM_CONTEXT 4
-#define OFFSET_MENUITEM_SUBMENU 5
-
-// The following order is mandatory. Please add properties at the end!
-#define PROPERTYCOUNT_POPUPMENU 4
-#define OFFSET_POPUPMENU_TITLE 0
-#define OFFSET_POPUPMENU_CONTEXT 1
-#define OFFSET_POPUPMENU_SUBMENU 2
-#define OFFSET_POPUPMENU_URL 3 // Used for property set
-
-// The following order is mandatory. Please add properties at the end!
-#define PROPERTYCOUNT_TOOLBARITEM 7
-#define OFFSET_TOOLBARITEM_URL 0
-#define OFFSET_TOOLBARITEM_TITLE 1
-#define OFFSET_TOOLBARITEM_IMAGEIDENTIFIER 2
-#define OFFSET_TOOLBARITEM_TARGET 3
-#define OFFSET_TOOLBARITEM_CONTEXT 4
-#define OFFSET_TOOLBARITEM_CONTROLTYPE 5
-#define OFFSET_TOOLBARITEM_WIDTH 6
-
-// The following order is mandatory. Please add properties at the end!
-#define PROPERTYCOUNT_IMAGES 8
-#define PROPERTYCOUNT_EMBEDDED_IMAGES 4
-#define OFFSET_IMAGES_SMALL 0
-#define OFFSET_IMAGES_BIG 1
-#define OFFSET_IMAGES_SMALLHC 2
-#define OFFSET_IMAGES_BIGHC 3
-#define OFFSET_IMAGES_SMALL_URL 4
-#define OFFSET_IMAGES_BIG_URL 5
-#define OFFSET_IMAGES_SMALLHC_URL 6
-#define OFFSET_IMAGES_BIGHC_URL 7
-
-#define PROPERTYCOUNT_MERGE_MENUBAR 6
-#define OFFSET_MERGEMENU_MERGEPOINT 0
-#define OFFSET_MERGEMENU_MERGECOMMAND 1
-#define OFFSET_MERGEMENU_MERGECOMMANDPARAMETER 2
-#define OFFSET_MERGEMENU_MERGEFALLBACK 3
-#define OFFSET_MERGEMENU_MERGECONTEXT 4
-#define OFFSET_MERGEMENU_MENUITEMS 5
-
-#define PROPERTYCOUNT_MERGE_TOOLBAR 7
-#define OFFSET_MERGETOOLBAR_TOOLBAR 0
-#define OFFSET_MERGETOOLBAR_MERGEPOINT 1
-#define OFFSET_MERGETOOLBAR_MERGECOMMAND 2
-#define OFFSET_MERGETOOLBAR_MERGECOMMANDPARAMETER 3
-#define OFFSET_MERGETOOLBAR_MERGEFALLBACK 4
-#define OFFSET_MERGETOOLBAR_MERGECONTEXT 5
-#define OFFSET_MERGETOOLBAR_TOOLBARITEMS 6
-
-#define EXPAND_PROTOCOL "vnd.sun.star.expand:"
-
-const Size aImageSizeSmall( 16, 16 );
-const Size aImageSizeBig( 26, 26 );
-
-//_________________________________________________________________________________________________________________
-// private declarations!
-//_________________________________________________________________________________________________________________
-
-/*-****************************************************************************************************************
- @descr struct to hold information about one menu entry.
-****************************************************************************************************************-*/
-
-namespace framework
-{
-
-class AddonsOptions_Impl : public ConfigItem
-{
- //-------------------------------------------------------------------------------------------------------------
- // public methods
- //-------------------------------------------------------------------------------------------------------------
-
- public:
- //---------------------------------------------------------------------------------------------------------
- // constructor / destructor
- //---------------------------------------------------------------------------------------------------------
-
- AddonsOptions_Impl();
- ~AddonsOptions_Impl();
-
- //---------------------------------------------------------------------------------------------------------
- // overloaded methods of baseclass
- //---------------------------------------------------------------------------------------------------------
-
- /*-****************************************************************************************************//**
- @short called for notify of configmanager
- @descr These method is called from the ConfigManager before application ends or from the
- PropertyChangeListener if the sub tree broadcasts changes. You must update your
- internal values.
-
- @seealso baseclass ConfigItem
-
- @param "lPropertyNames" is the list of properties which should be updated.
- @return -
-
- @onerror -
- *//*-*****************************************************************************************************/
-
- virtual void Notify( const Sequence< ::rtl::OUString >& lPropertyNames );
-
- /*-****************************************************************************************************//**
- @short write changes to configuration
- @descr These method writes the changed values into the sub tree
- and should always called in our destructor to guarantee consistency of config data.
-
- @seealso baseclass ConfigItem
-
- @param -
- @return -
-
- @onerror -
- *//*-*****************************************************************************************************/
-
- virtual void Commit();
-
- //---------------------------------------------------------------------------------------------------------
- // public interface
- //---------------------------------------------------------------------------------------------------------
-
- /*-****************************************************************************************************//**
- @short base implementation of public interface for "SvtDynamicMenuOptions"!
- @descr These class is used as static member of "SvtDynamicMenuOptions" ...
- => The code exist only for one time and isn't duplicated for every instance!
-
- @seealso -
-
- @param -
- @return -
-
- @onerror -
- *//*-*****************************************************************************************************/
-
- sal_Bool HasAddonsMenu () const ;
- sal_Bool HasAddonsHelpMenu () const ;
- sal_Int32 GetAddonsToolBarCount() const ;
- const Sequence< Sequence< PropertyValue > >& GetAddonsMenu () const ;
- const Sequence< Sequence< PropertyValue > >& GetAddonsMenuBarPart () const ;
- const Sequence< Sequence< PropertyValue > >& GetAddonsToolBarPart ( sal_uInt32 nIndex ) const ;
- const ::rtl::OUString GetAddonsToolbarResourceName( sal_uInt32 nIndex ) const;
- const Sequence< Sequence< PropertyValue > >& GetAddonsHelpMenu () const ;
- Image GetImageFromURL( const rtl::OUString& aURL, sal_Bool bBig, sal_Bool bHiContrast, sal_Bool bNoScale ) const;
- const MergeMenuInstructionContainer& GetMergeMenuInstructions() const;
- bool GetMergeToolbarInstructions( const ::rtl::OUString& rToolbarName, MergeToolbarInstructionContainer& rToolbarInstructions ) const;
-
- void ReadConfigurationData();
-
- //-------------------------------------------------------------------------------------------------------------
- // private methods
- //-------------------------------------------------------------------------------------------------------------
-
- private:
- struct OUStringHashCode
- {
- size_t operator()( const ::rtl::OUString& sString ) const
- {
- return sString.hashCode();
- }
- };
-
- struct ImageEntry
- {
- Image aImageSmall;
- Image aImageBig;
- Image aImageSmallHC;
- Image aImageBigHC;
-
- Image aImageSmallNoScale;
- Image aImageBigNoScale;
- Image aImageSmallHCNoScale;
- Image aImageBigHCNoScale;
- };
-
- typedef std::hash_map< ::rtl::OUString, ImageEntry, OUStringHashCode, ::std::equal_to< ::rtl::OUString > > ImageManager;
- typedef std::hash_map< ::rtl::OUString, sal_uInt32, OUStringHashCode, ::std::equal_to< ::rtl::OUString > > StringToIndexMap;
- typedef std::vector< Sequence< Sequence< PropertyValue > > > AddonToolBars;
- typedef ::std::hash_map< ::rtl::OUString, MergeToolbarInstructionContainer, OUStringHashCode, ::std::equal_to< ::rtl::OUString > > ToolbarMergingInstructions;
-
- enum ImageSize
- {
- IMGSIZE_SMALL,
- IMGSIZE_BIG
- };
-
- /*-****************************************************************************************************//**
- @short return list of key names of our configuration management which represent oue module tree
- @descr These methods return the current list of key names! We need it to get needed values from our
- configuration management!
-
- @seealso -
-
- @param "nCount" , returns count of menu entries for "new"
- @return A list of configuration key names is returned.
-
- @onerror -
- *//*-*****************************************************************************************************/
-
- sal_Bool ReadAddonMenuSet( Sequence< Sequence< PropertyValue > >& aAddonMenuSeq );
- sal_Bool ReadOfficeMenuBarSet( Sequence< Sequence< PropertyValue > >& aAddonOfficeMenuBarSeq );
- sal_Bool ReadOfficeToolBarSet( AddonToolBars& rAddonOfficeToolBars, std::vector< rtl::OUString >& rAddonOfficeToolBarResNames );
- sal_Bool ReadToolBarItemSet( const rtl::OUString rToolBarItemSetNodeName, Sequence< Sequence< PropertyValue > >& aAddonOfficeToolBarSeq );
- sal_Bool ReadOfficeHelpSet( Sequence< Sequence< PropertyValue > >& aAddonOfficeHelpMenuSeq );
- sal_Bool ReadImages( ImageManager& aImageManager );
- sal_Bool ReadMenuMergeInstructions( MergeMenuInstructionContainer& rContainer );
- sal_Bool ReadToolbarMergeInstructions( ToolbarMergingInstructions& rToolbarMergeMap );
-
- sal_Bool ReadMergeMenuData( const ::rtl::OUString& aMergeAddonInstructionBase, Sequence< Sequence< PropertyValue > >& rMergeMenu );
- sal_Bool ReadMergeToolbarData( const ::rtl::OUString& aMergeAddonInstructionBase, Sequence< Sequence< PropertyValue > >& rMergeToolbarItems );
- sal_Bool ReadMenuItem( const ::rtl::OUString& aMenuItemNodeName, Sequence< PropertyValue >& aMenuItem, sal_Bool bIgnoreSubMenu = sal_False );
- sal_Bool ReadPopupMenu( const ::rtl::OUString& aPopupMenuNodeName, Sequence< PropertyValue >& aPopupMenu );
- sal_Bool AppendPopupMenu( Sequence< PropertyValue >& aTargetPopupMenu, const Sequence< PropertyValue >& rSourcePopupMenu );
- sal_Bool ReadToolBarItem( const ::rtl::OUString& aToolBarItemNodeName, Sequence< PropertyValue >& aToolBarItem );
- sal_Bool ReadImagesItem( const ::rtl::OUString& aImagesItemNodeName, Sequence< PropertyValue >& aImagesItem );
- ImageEntry* ReadImageData( const ::rtl::OUString& aImagesNodeName );
- void ReadAndAssociateImages( const ::rtl::OUString& aURL, const ::rtl::OUString& aImageId );
- void ReadImageFromURL( ImageSize nImageSize, const ::rtl::OUString& aURL, Image& aImage, Image& aNoScaleImage );
- sal_Bool HasAssociatedImages( const ::rtl::OUString& aURL );
- void SubstituteVariables( ::rtl::OUString& aURL );
-
- sal_Bool ReadSubMenuEntries( const Sequence< ::rtl::OUString >& aSubMenuNodeNames, Sequence< Sequence< PropertyValue > >& rSubMenu );
- void InsertToolBarSeparator( Sequence< Sequence< PropertyValue > >& rAddonOfficeToolBarSeq );
- ::rtl::OUString GeneratePrefixURL();
-
- Sequence< ::rtl::OUString > GetPropertyNamesMergeMenuInstruction( const ::rtl::OUString& aPropertyRootName ) const;
- Sequence< ::rtl::OUString > GetPropertyNamesMenuItem( const ::rtl::OUString& aPropertyRootNode ) const;
- Sequence< ::rtl::OUString > GetPropertyNamesPopupMenu( const ::rtl::OUString& aPropertyRootNode ) const;
- Sequence< ::rtl::OUString > GetPropertyNamesToolBarItem( const ::rtl::OUString& aPropertyRootNode ) const;
- Sequence< ::rtl::OUString > GetPropertyNamesImages( const ::rtl::OUString& aPropertyRootNode ) const;
- sal_Bool CreateImageFromSequence( Image& rImage, sal_Bool bBig, Sequence< sal_Int8 >& rBitmapDataSeq ) const;
-
- //-------------------------------------------------------------------------------------------------------------
- // private member
- //-------------------------------------------------------------------------------------------------------------
-
- private:
- ImageEntry* ReadOptionalImageData( const ::rtl::OUString& aMenuNodeName );
-
- sal_Int32 m_nRootAddonPopupMenuId;
- ::rtl::OUString m_aPropNames[PROPERTYCOUNT_INDEX];
- ::rtl::OUString m_aPropImagesNames[PROPERTYCOUNT_IMAGES];
- ::rtl::OUString m_aPropMergeMenuNames[PROPERTYCOUNT_MERGE_MENUBAR];
- ::rtl::OUString m_aPropMergeToolbarNames[PROPERTYCOUNT_MERGE_TOOLBAR];
- ::rtl::OUString m_aEmpty;
- ::rtl::OUString m_aPathDelimiter;
- ::rtl::OUString m_aSeparator;
- ::rtl::OUString m_aRootAddonPopupMenuURLPrexfix;
- ::rtl::OUString m_aPrivateImageURL;
- Sequence< Sequence< PropertyValue > > m_aCachedMenuProperties;
- Sequence< Sequence< PropertyValue > > m_aCachedMenuBarPartProperties;
- AddonToolBars m_aCachedToolBarPartProperties;
- std::vector< rtl::OUString > m_aCachedToolBarPartResourceNames;
- Sequence< Sequence< PropertyValue > > m_aCachedHelpMenuProperties;
- Reference< com::sun::star::util::XMacroExpander > m_xMacroExpander;
- ImageManager m_aImageManager;
- Sequence< Sequence< PropertyValue > > m_aEmptyAddonToolBar;
- MergeMenuInstructionContainer m_aCachedMergeMenuInsContainer;
- ToolbarMergingInstructions m_aCachedToolbarMergingInstructions;
-};
-
-//_________________________________________________________________________________________________________________
-// definitions
-//_________________________________________________________________________________________________________________
-
-//*****************************************************************************************************************
-// constructor
-//*****************************************************************************************************************
-AddonsOptions_Impl::AddonsOptions_Impl()
- // Init baseclasses first
- : ConfigItem( ROOTNODE_ADDONMENU ),
- m_nRootAddonPopupMenuId( 0 ),
- m_aPathDelimiter( PATHDELIMITER ),
- m_aSeparator( SEPARATOR_URL ),
- m_aRootAddonPopupMenuURLPrexfix( ADDONSPOPUPMENU_URL_PREFIX ),
- m_aPrivateImageURL( PRIVATE_IMAGE_URL )
-{
- // initialize array with fixed property names
- m_aPropNames[ INDEX_URL ] = PROPERTYNAME_URL;
- m_aPropNames[ INDEX_TITLE ] = PROPERTYNAME_TITLE;
- m_aPropNames[ INDEX_TARGET ] = PROPERTYNAME_TARGET;
- m_aPropNames[ INDEX_IMAGEIDENTIFIER ] = PROPERTYNAME_IMAGEIDENTIFIER;
- m_aPropNames[ INDEX_CONTEXT ] = PROPERTYNAME_CONTEXT;
- m_aPropNames[ INDEX_SUBMENU ] = PROPERTYNAME_SUBMENU; // Submenu set!
- m_aPropNames[ INDEX_CONTROLTYPE ] = PROPERTYNAME_CONTROLTYPE;
- m_aPropNames[ INDEX_WIDTH ] = PROPERTYNAME_WIDTH;
-
- // initialize array with fixed images property names
- m_aPropImagesNames[ OFFSET_IMAGES_SMALL ] = PROPERTYNAME_IMAGESMALL;
- m_aPropImagesNames[ OFFSET_IMAGES_BIG ] = PROPERTYNAME_IMAGEBIG;
- m_aPropImagesNames[ OFFSET_IMAGES_SMALLHC ] = PROPERTYNAME_IMAGESMALLHC;
- m_aPropImagesNames[ OFFSET_IMAGES_BIGHC ] = PROPERTYNAME_IMAGEBIGHC;
- m_aPropImagesNames[ OFFSET_IMAGES_SMALL_URL ] = PROPERTYNAME_IMAGESMALL_URL;
- m_aPropImagesNames[ OFFSET_IMAGES_BIG_URL ] = PROPERTYNAME_IMAGEBIG_URL;
- m_aPropImagesNames[ OFFSET_IMAGES_SMALLHC_URL ] = PROPERTYNAME_IMAGESMALLHC_URL;
- m_aPropImagesNames[ OFFSET_IMAGES_BIGHC_URL ] = PROPERTYNAME_IMAGEBIGHC_URL;
-
- // initialize array with fixed merge menu property names
- m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MERGEPOINT ] = PROPERTYNAME_MERGEMENU_MERGEPOINT;
- m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MERGECOMMAND ] = PROPERTYNAME_MERGEMENU_MERGECOMMAND;
- m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MERGECOMMANDPARAMETER ] = PROPERTYNAME_MERGEMENU_MERGECOMMANDPARAMETER;
- m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MERGEFALLBACK ] = PROPERTYNAME_MERGEMENU_MERGEFALLBACK;
- m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MERGECONTEXT ] = PROPERTYNAME_MERGEMENU_MERGECONTEXT;
- m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MENUITEMS ] = PROPERTYNAME_MERGEMENU_MENUITEMS;
-
- m_aPropMergeToolbarNames[ OFFSET_MERGETOOLBAR_TOOLBAR ] = PROPERTYNAME_MERGETOOLBAR_TOOLBAR;
- m_aPropMergeToolbarNames[ OFFSET_MERGETOOLBAR_MERGEPOINT ] = PROPERTYNAME_MERGETOOLBAR_MERGEPOINT;
- m_aPropMergeToolbarNames[ OFFSET_MERGETOOLBAR_MERGECOMMAND ] = PROPERTYNAME_MERGETOOLBAR_MERGECOMMAND;
- m_aPropMergeToolbarNames[ OFFSET_MERGETOOLBAR_MERGECOMMANDPARAMETER ] = PROPERTYNAME_MERGETOOLBAR_MERGECOMMANDPARAMETER;
- m_aPropMergeToolbarNames[ OFFSET_MERGETOOLBAR_MERGEFALLBACK ] = PROPERTYNAME_MERGETOOLBAR_MERGEFALLBACK;
- m_aPropMergeToolbarNames[ OFFSET_MERGETOOLBAR_MERGECONTEXT ] = PROPERTYNAME_MERGETOOLBAR_MERGECONTEXT;
- m_aPropMergeToolbarNames[ OFFSET_MERGETOOLBAR_TOOLBARITEMS ] = PROPERTYNAME_MERGETOOLBAR_TOOLBARITEMS;
-
- Reference< XComponentContext > xContext;
- Reference< com::sun::star::beans::XPropertySet > xProps( ::comphelper::getProcessServiceFactory(), UNO_QUERY );
- xProps->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DefaultContext" ))) >>= xContext;
- if ( xContext.is() )
- {
- m_xMacroExpander = Reference< com::sun::star::util::XMacroExpander >( xContext->getValueByName(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "/singletons/com.sun.star.util.theMacroExpander"))),
- UNO_QUERY );
- }
-
- ReadConfigurationData();
-
- // Enable notification mechanism of ouer baseclass.
- // We need it to get information about changes outside these class on ouer used configuration keys!
- Sequence< rtl::OUString > aNotifySeq( 1 );
- aNotifySeq[0] = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "AddonUI" ));
- EnableNotification( aNotifySeq );
-}
-
-//*****************************************************************************************************************
-// destructor
-//*****************************************************************************************************************
-AddonsOptions_Impl::~AddonsOptions_Impl()
-{
- // We must save our current values .. if user forget it!
- if( IsModified() == sal_True )
- {
- Commit();
- }
-}
-
-void AddonsOptions_Impl::ReadConfigurationData()
-{
- // reset members to be read again from configuration
- m_aCachedMenuProperties = Sequence< Sequence< PropertyValue > >();
- m_aCachedMenuBarPartProperties = Sequence< Sequence< PropertyValue > >();
- m_aCachedToolBarPartProperties = AddonToolBars();
- m_aCachedHelpMenuProperties = Sequence< Sequence< PropertyValue > >();
- m_aCachedToolBarPartResourceNames.clear();
- m_aImageManager = ImageManager();
-
- ReadAddonMenuSet( m_aCachedMenuProperties );
- ReadOfficeMenuBarSet( m_aCachedMenuBarPartProperties );
- ReadOfficeToolBarSet( m_aCachedToolBarPartProperties, m_aCachedToolBarPartResourceNames );
- ReadOfficeHelpSet( m_aCachedHelpMenuProperties );
- ReadImages( m_aImageManager );
-
- m_aCachedMergeMenuInsContainer.clear();
- m_aCachedToolbarMergingInstructions.clear();
-
- ReadMenuMergeInstructions( m_aCachedMergeMenuInsContainer );
- ReadToolbarMergeInstructions( m_aCachedToolbarMergingInstructions );
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-void AddonsOptions_Impl::Notify( const Sequence< ::rtl::OUString >& /*lPropertyNames*/ )
-{
- Application::PostUserEvent( STATIC_LINK( 0, AddonsOptions, Notify ) );
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-void AddonsOptions_Impl::Commit()
-{
- DBG_ERROR( "AddonsOptions_Impl::Commit()\nNot implemented yet!\n" );
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::HasAddonsMenu() const
-{
- return ( m_aCachedMenuProperties.getLength() > 0 );
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::HasAddonsHelpMenu () const
-{
- return ( m_aCachedHelpMenuProperties.getLength() > 0 );
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-sal_Int32 AddonsOptions_Impl::GetAddonsToolBarCount() const
-{
- return m_aCachedToolBarPartProperties.size();
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-const Sequence< Sequence< PropertyValue > >& AddonsOptions_Impl::GetAddonsMenu() const
-{
- return m_aCachedMenuProperties;
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-const Sequence< Sequence< PropertyValue > >& AddonsOptions_Impl::GetAddonsMenuBarPart() const
-{
- return m_aCachedMenuBarPartProperties;
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-const Sequence< Sequence< PropertyValue > >& AddonsOptions_Impl::GetAddonsToolBarPart( sal_uInt32 nIndex ) const
-{
- if ( /*nIndex >= 0 &&*/ nIndex < m_aCachedToolBarPartProperties.size() )
- return m_aCachedToolBarPartProperties[nIndex];
- else
- return m_aEmptyAddonToolBar;
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-const ::rtl::OUString AddonsOptions_Impl::GetAddonsToolbarResourceName( sal_uInt32 nIndex ) const
-{
- if ( nIndex < m_aCachedToolBarPartResourceNames.size() )
- return m_aCachedToolBarPartResourceNames[nIndex];
- else
- return rtl::OUString();
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-const Sequence< Sequence< PropertyValue > >& AddonsOptions_Impl::GetAddonsHelpMenu () const
-{
- return m_aCachedHelpMenuProperties;
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-const MergeMenuInstructionContainer& AddonsOptions_Impl::GetMergeMenuInstructions() const
-{
- return m_aCachedMergeMenuInsContainer;
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-bool AddonsOptions_Impl::GetMergeToolbarInstructions(
- const ::rtl::OUString& rToolbarName,
- MergeToolbarInstructionContainer& rToolbarInstructions ) const
-{
- ToolbarMergingInstructions::const_iterator pIter = m_aCachedToolbarMergingInstructions.find( rToolbarName );
- if ( pIter != m_aCachedToolbarMergingInstructions.end() )
- {
- rToolbarInstructions = pIter->second;
- return true;
- }
- else
- return false;
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-Image AddonsOptions_Impl::GetImageFromURL( const rtl::OUString& aURL, sal_Bool bBig, sal_Bool bHiContrast, sal_Bool bNoScale ) const
-{
- Image aImage;
-
- ImageManager::const_iterator pIter = m_aImageManager.find( aURL );
- if ( pIter != m_aImageManager.end() )
- {
- if ( !bHiContrast )
- {
- if ( bNoScale )
- aImage = ( bBig ? pIter->second.aImageBigNoScale : pIter->second.aImageSmallNoScale );
- if ( !aImage )
- aImage = ( bBig ? pIter->second.aImageBig : pIter->second.aImageSmall );
- }
- else
- {
- if ( bNoScale )
- aImage = ( bBig ? pIter->second.aImageBigHCNoScale : pIter->second.aImageSmallHCNoScale );
- if ( !aImage )
- aImage = ( bBig ? pIter->second.aImageBigHC : pIter->second.aImageSmallHC );
- }
- }
-
- return aImage;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::ReadAddonMenuSet( Sequence< Sequence< PropertyValue > >& rAddonMenuSeq )
-{
- // Read the AddonMenu set and fill property sequences
- ::rtl::OUString aAddonMenuNodeName( RTL_CONSTASCII_USTRINGPARAM( "AddonUI/AddonMenu" ));
- Sequence< ::rtl::OUString > aAddonMenuNodeSeq = GetNodeNames( aAddonMenuNodeName );
- ::rtl::OUString aAddonMenuItemNode( aAddonMenuNodeName + m_aPathDelimiter );
-
- sal_uInt32 nCount = aAddonMenuNodeSeq.getLength();
- sal_uInt32 nIndex = 0;
- Sequence< PropertyValue > aMenuItem( PROPERTYCOUNT_MENUITEM );
-
- // Init the property value sequence
- aMenuItem[ OFFSET_MENUITEM_URL ].Name = m_aPropNames[ INDEX_URL ];
- aMenuItem[ OFFSET_MENUITEM_TITLE ].Name = m_aPropNames[ INDEX_TITLE ];
- aMenuItem[ OFFSET_MENUITEM_TARGET ].Name = m_aPropNames[ INDEX_TARGET ];
- aMenuItem[ OFFSET_MENUITEM_IMAGEIDENTIFIER ].Name = m_aPropNames[ INDEX_IMAGEIDENTIFIER];
- aMenuItem[ OFFSET_MENUITEM_CONTEXT ].Name = m_aPropNames[ INDEX_CONTEXT ];
- aMenuItem[ OFFSET_MENUITEM_SUBMENU ].Name = m_aPropNames[ INDEX_SUBMENU ]; // Submenu set!
-
- for ( sal_uInt32 n = 0; n < nCount; n++ )
- {
- ::rtl::OUString aRootMenuItemNode( aAddonMenuItemNode + aAddonMenuNodeSeq[n] );
-
- // Read the MenuItem
- if ( ReadMenuItem( aRootMenuItemNode, aMenuItem ) )
- {
- // Successfully read a menu item, append to our list
- sal_uInt32 nMenuItemCount = rAddonMenuSeq.getLength() + 1;
- rAddonMenuSeq.realloc( nMenuItemCount );
- rAddonMenuSeq[nIndex++] = aMenuItem;
- }
- }
-
- return ( rAddonMenuSeq.getLength() > 0 );
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::ReadOfficeHelpSet( Sequence< Sequence< PropertyValue > >& rAddonOfficeHelpMenuSeq )
-{
- // Read the AddonMenu set and fill property sequences
- ::rtl::OUString aAddonHelpMenuNodeName( RTL_CONSTASCII_USTRINGPARAM( "AddonUI/OfficeHelp" ));
- Sequence< ::rtl::OUString > aAddonHelpMenuNodeSeq = GetNodeNames( aAddonHelpMenuNodeName );
- ::rtl::OUString aAddonHelpMenuItemNode( aAddonHelpMenuNodeName + m_aPathDelimiter );
-
- sal_uInt32 nCount = aAddonHelpMenuNodeSeq.getLength();
- sal_uInt32 nIndex = 0;
- Sequence< PropertyValue > aMenuItem( PROPERTYCOUNT_MENUITEM );
-
- // Init the property value sequence
- aMenuItem[ OFFSET_MENUITEM_URL ].Name = m_aPropNames[ INDEX_URL ];
- aMenuItem[ OFFSET_MENUITEM_TITLE ].Name = m_aPropNames[ INDEX_TITLE ];
- aMenuItem[ OFFSET_MENUITEM_TARGET ].Name = m_aPropNames[ INDEX_TARGET ];
- aMenuItem[ OFFSET_MENUITEM_IMAGEIDENTIFIER ].Name = m_aPropNames[ INDEX_IMAGEIDENTIFIER];
- aMenuItem[ OFFSET_MENUITEM_CONTEXT ].Name = m_aPropNames[ INDEX_CONTEXT ];
- aMenuItem[ OFFSET_MENUITEM_SUBMENU ].Name = m_aPropNames[ INDEX_SUBMENU ]; // Submenu set!
-
- for ( sal_uInt32 n = 0; n < nCount; n++ )
- {
- ::rtl::OUString aRootMenuItemNode( aAddonHelpMenuItemNode + aAddonHelpMenuNodeSeq[n] );
-
- // Read the MenuItem
- if ( ReadMenuItem( aRootMenuItemNode, aMenuItem, sal_True ) )
- {
- // Successfully read a menu item, append to our list
- sal_uInt32 nMenuItemCount = rAddonOfficeHelpMenuSeq.getLength() + 1;
- rAddonOfficeHelpMenuSeq.realloc( nMenuItemCount );
- rAddonOfficeHelpMenuSeq[nIndex++] = aMenuItem;
- }
- }
-
- return ( rAddonOfficeHelpMenuSeq.getLength() > 0 );
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::ReadOfficeMenuBarSet( Sequence< Sequence< PropertyValue > >& rAddonOfficeMenuBarSeq )
-{
- // Read the OfficeMenuBar set and fill property sequences
- ::rtl::OUString aAddonMenuBarNodeName( RTL_CONSTASCII_USTRINGPARAM( "AddonUI/OfficeMenuBar" ));
- Sequence< ::rtl::OUString > aAddonMenuBarNodeSeq = GetNodeNames( aAddonMenuBarNodeName );
- ::rtl::OUString aAddonMenuBarNode( aAddonMenuBarNodeName + m_aPathDelimiter );
-
- sal_uInt32 nCount = aAddonMenuBarNodeSeq.getLength();
- sal_uInt32 nIndex = 0;
- Sequence< PropertyValue > aPopupMenu( PROPERTYCOUNT_POPUPMENU );
-
- // Init the property value sequence
- aPopupMenu[ OFFSET_POPUPMENU_TITLE ].Name = m_aPropNames[ INDEX_TITLE ];
- aPopupMenu[ OFFSET_POPUPMENU_CONTEXT ].Name = m_aPropNames[ INDEX_CONTEXT];
- aPopupMenu[ OFFSET_POPUPMENU_SUBMENU ].Name = m_aPropNames[ INDEX_SUBMENU];
- aPopupMenu[ OFFSET_POPUPMENU_URL ].Name = m_aPropNames[ INDEX_URL ];
-
- StringToIndexMap aTitleToIndexMap;
-
- for ( sal_uInt32 n = 0; n < nCount; n++ )
- {
- ::rtl::OUString aPopupMenuNode( aAddonMenuBarNode + aAddonMenuBarNodeSeq[n] );
-
- // Read the MenuItem
- if ( ReadPopupMenu( aPopupMenuNode, aPopupMenu ) )
- {
- // Successfully read a popup menu, append to our list
- ::rtl::OUString aPopupTitle;
- if ( aPopupMenu[OFFSET_POPUPMENU_TITLE].Value >>= aPopupTitle )
- {
- StringToIndexMap::const_iterator pIter = aTitleToIndexMap.find( aPopupTitle );
- if ( pIter != aTitleToIndexMap.end() )
- {
- // title already there => concat both popup menus
- Sequence< PropertyValue >& rOldPopupMenu = rAddonOfficeMenuBarSeq[pIter->second];
- AppendPopupMenu( rOldPopupMenu, aPopupMenu );
- }
- else
- {
- // not found
- sal_uInt32 nMenuItemCount = rAddonOfficeMenuBarSeq.getLength() + 1;
- rAddonOfficeMenuBarSeq.realloc( nMenuItemCount );
- rAddonOfficeMenuBarSeq[nIndex] = aPopupMenu;
- aTitleToIndexMap.insert( StringToIndexMap::value_type( aPopupTitle, nIndex ));
- ++nIndex;
- }
- }
- }
- }
-
- return ( rAddonOfficeMenuBarSeq.getLength() > 0 );
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::ReadOfficeToolBarSet( AddonToolBars& rAddonOfficeToolBars, std::vector< rtl::OUString >& rAddonOfficeToolBarResNames )
-{
- // Read the OfficeToolBar set and fill property sequences
- ::rtl::OUString aAddonToolBarNodeName( RTL_CONSTASCII_USTRINGPARAM( "AddonUI/OfficeToolBar" ));
- Sequence< ::rtl::OUString > aAddonToolBarNodeSeq = GetNodeNames( aAddonToolBarNodeName );
- ::rtl::OUString aAddonToolBarNode( aAddonToolBarNodeName + m_aPathDelimiter );
-
- sal_uInt32 nCount = aAddonToolBarNodeSeq.getLength();
-
- for ( sal_uInt32 n = 0; n < nCount; n++ )
- {
- ::rtl::OUString aToolBarItemNode( aAddonToolBarNode + aAddonToolBarNodeSeq[n] );
- rAddonOfficeToolBarResNames.push_back( aAddonToolBarNodeSeq[n] );
- rAddonOfficeToolBars.push_back( m_aEmptyAddonToolBar );
- ReadToolBarItemSet( aToolBarItemNode, rAddonOfficeToolBars[n] );
- }
-
- return ( !rAddonOfficeToolBars.empty() );
-}
-
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::ReadToolBarItemSet( const rtl::OUString rToolBarItemSetNodeName, Sequence< Sequence< PropertyValue > >& rAddonOfficeToolBarSeq )
-{
- sal_Bool bInsertSeparator = sal_False;
- sal_uInt32 nToolBarItemCount = rAddonOfficeToolBarSeq.getLength();
- ::rtl::OUString aAddonToolBarItemSetNode( rToolBarItemSetNodeName + m_aPathDelimiter );
- Sequence< ::rtl::OUString > aAddonToolBarItemSetNodeSeq = GetNodeNames( rToolBarItemSetNodeName );
- Sequence< PropertyValue > aToolBarItem( PROPERTYCOUNT_TOOLBARITEM );
-
- // Init the property value sequence
- aToolBarItem[ OFFSET_TOOLBARITEM_URL ].Name = m_aPropNames[ INDEX_URL ];
- aToolBarItem[ OFFSET_TOOLBARITEM_TITLE ].Name = m_aPropNames[ INDEX_TITLE ];
- aToolBarItem[ OFFSET_TOOLBARITEM_IMAGEIDENTIFIER ].Name = m_aPropNames[ INDEX_IMAGEIDENTIFIER];
- aToolBarItem[ OFFSET_TOOLBARITEM_TARGET ].Name = m_aPropNames[ INDEX_TARGET ];
- aToolBarItem[ OFFSET_TOOLBARITEM_CONTEXT ].Name = m_aPropNames[ INDEX_CONTEXT ];
- aToolBarItem[ OFFSET_TOOLBARITEM_CONTROLTYPE ].Name = m_aPropNames[ INDEX_CONTROLTYPE ];
- aToolBarItem[ OFFSET_TOOLBARITEM_WIDTH ].Name = m_aPropNames[ INDEX_WIDTH ];
-
- sal_uInt32 nCount = aAddonToolBarItemSetNodeSeq.getLength();
- for ( sal_uInt32 n = 0; n < nCount; n++ )
- {
- ::rtl::OUString aToolBarItemNode( aAddonToolBarItemSetNode + aAddonToolBarItemSetNodeSeq[n] );
-
- // Read the ToolBarItem
- if ( ReadToolBarItem( aToolBarItemNode, aToolBarItem ) )
- {
- if ( bInsertSeparator )
- {
- bInsertSeparator = sal_False;
- InsertToolBarSeparator( rAddonOfficeToolBarSeq );
- }
-
- // Successfully read a toolbar item, append to our list
- sal_uInt32 nAddonCount = rAddonOfficeToolBarSeq.getLength();
- rAddonOfficeToolBarSeq.realloc( nAddonCount+1 );
- rAddonOfficeToolBarSeq[nAddonCount] = aToolBarItem;
- }
- }
-
- return ( (sal_uInt32)rAddonOfficeToolBarSeq.getLength() > nToolBarItemCount );
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-void AddonsOptions_Impl::InsertToolBarSeparator( Sequence< Sequence< PropertyValue > >& rAddonOfficeToolBarSeq )
-{
- Sequence< PropertyValue > aToolBarItem( PROPERTYCOUNT_TOOLBARITEM );
-
- aToolBarItem[ OFFSET_TOOLBARITEM_URL ].Name = m_aPropNames[ INDEX_URL ];
- aToolBarItem[ OFFSET_TOOLBARITEM_TITLE ].Name = m_aPropNames[ INDEX_TITLE ];
- aToolBarItem[ OFFSET_TOOLBARITEM_IMAGEIDENTIFIER ].Name = m_aPropNames[ INDEX_IMAGEIDENTIFIER];
- aToolBarItem[ OFFSET_TOOLBARITEM_TARGET ].Name = m_aPropNames[ INDEX_TARGET ];
- aToolBarItem[ OFFSET_TOOLBARITEM_CONTEXT ].Name = m_aPropNames[ INDEX_CONTEXT ];
-
- aToolBarItem[ OFFSET_TOOLBARITEM_URL ].Value <<= SEPARATOR_URL;
- aToolBarItem[ OFFSET_TOOLBARITEM_TITLE ].Value <<= m_aEmpty;
- aToolBarItem[ OFFSET_TOOLBARITEM_TARGET ].Value <<= m_aEmpty;
- aToolBarItem[ OFFSET_TOOLBARITEM_IMAGEIDENTIFIER ].Value <<= m_aEmpty;
- aToolBarItem[ OFFSET_TOOLBARITEM_CONTEXT ].Value <<= m_aEmpty;
-
- sal_uInt32 nToolBarItemCount = rAddonOfficeToolBarSeq.getLength();
- rAddonOfficeToolBarSeq.realloc( nToolBarItemCount+1 );
- rAddonOfficeToolBarSeq[nToolBarItemCount] = aToolBarItem;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::ReadImages( ImageManager& aImageManager )
-{
- // Read the user-defined Images set and fill image manager
- ::rtl::OUString aAddonImagesNodeName( RTL_CONSTASCII_USTRINGPARAM( "AddonUI/Images" ));
- Sequence< ::rtl::OUString > aAddonImagesNodeSeq = GetNodeNames( aAddonImagesNodeName );
- ::rtl::OUString aAddonImagesNode( aAddonImagesNodeName + m_aPathDelimiter );
-
- sal_uInt32 nCount = aAddonImagesNodeSeq.getLength();
-
- // Init the property value sequence
- Sequence< ::rtl::OUString > aAddonImageItemNodePropNames( 1 );
- ::rtl::OUString aURL;
-
- for ( sal_uInt32 n = 0; n < nCount; n++ )
- {
- ::rtl::OUString aImagesItemNode( aAddonImagesNode + aAddonImagesNodeSeq[n] );
-
- // Create sequence for data access
- ::rtl::OUStringBuffer aBuffer( aImagesItemNode );
- aBuffer.append( m_aPathDelimiter );
- aBuffer.append( m_aPropNames[ OFFSET_MENUITEM_URL ] );
- aAddonImageItemNodePropNames[0] = aBuffer.makeStringAndClear();
-
- Sequence< Any > aAddonImageItemNodeValues = GetProperties( aAddonImageItemNodePropNames );
-
- // An user-defined image entry must have an URL. As "ImageIdentifier" has a higher priority
- // we also check if we already have an images association.
- if (( aAddonImageItemNodeValues[0] >>= aURL ) &&
- aURL.getLength() > 0 &&
- !HasAssociatedImages( aURL ))
- {
- ::rtl::OUStringBuffer aBuf( aImagesItemNode );
- aBuf.append( m_aPathDelimiter );
- aBuf.append( IMAGES_NODENAME );
- aBuf.append( m_aPathDelimiter );
- ::rtl::OUString aImagesUserDefinedItemNode = aBuf.makeStringAndClear();
-
- // Read a user-defined images data
- ImageEntry* pImageEntry = ReadImageData( aImagesUserDefinedItemNode );
- if ( pImageEntry )
- {
- // Successfully read a user-defined images item, put it into our image manager
- aImageManager.insert( ImageManager::value_type( aURL, *pImageEntry ));
- delete pImageEntry; // We have the ownership of the pointer
- }
- }
- }
-
- return sal_True;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-
-::rtl::OUString AddonsOptions_Impl::GeneratePrefixURL()
-{
- // Create an unique prefixed Add-On popup menu URL so it can be identified later as a runtime popup menu.
- // They use a different image manager, so they must be identified by the sfx2/framework code.
- ::rtl::OUString aPopupMenuURL;
- ::rtl::OUStringBuffer aBuf( m_aRootAddonPopupMenuURLPrexfix.getLength() + 3 );
- aBuf.append( m_aRootAddonPopupMenuURLPrexfix );
- aBuf.append( ::rtl::OUString::valueOf( ++m_nRootAddonPopupMenuId ));
- aPopupMenuURL = aBuf.makeStringAndClear();
- return aPopupMenuURL;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-
-sal_Bool AddonsOptions_Impl::ReadMenuMergeInstructions( MergeMenuInstructionContainer& aContainer )
-{
- const ::rtl::OUString aMenuMergeRootName( RTL_CONSTASCII_USTRINGPARAM( "AddonUI/OfficeMenuBarMerging/" ));
-
- Sequence< ::rtl::OUString > aAddonMergeNodesSeq = GetNodeNames( aMenuMergeRootName );
- ::rtl::OUString aAddonMergeNode( aMenuMergeRootName );
-
- sal_uInt32 nCount = aAddonMergeNodesSeq.getLength();
-
- // Init the property value sequence
- Sequence< ::rtl::OUString > aNodePropNames( 5 );
- ::rtl::OUString aURL;
-
- for ( sal_uInt32 i = 0; i < nCount; i++ )
- {
- ::rtl::OUString aMergeAddonInstructions( aAddonMergeNode + aAddonMergeNodesSeq[i] );
-
- Sequence< ::rtl::OUString > aAddonInstMergeNodesSeq = GetNodeNames( aMergeAddonInstructions );
- sal_uInt32 nCountAddons = aAddonInstMergeNodesSeq.getLength();
-
- for ( sal_uInt32 j = 0; j < nCountAddons; j++ )
- {
- ::rtl::OUStringBuffer aMergeAddonInstructionBase( aMergeAddonInstructions );
- aMergeAddonInstructionBase.append( m_aPathDelimiter );
- aMergeAddonInstructionBase.append( aAddonInstMergeNodesSeq[j] );
- aMergeAddonInstructionBase.append( m_aPathDelimiter );
-
- // Create sequence for data access
- ::rtl::OUStringBuffer aBuffer( aMergeAddonInstructionBase );
- aBuffer.append( m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MERGEPOINT ] );
- aNodePropNames[0] = aBuffer.makeStringAndClear();
-
- aBuffer = aMergeAddonInstructionBase;
- aBuffer.append( m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MERGECOMMAND ] );
- aNodePropNames[1] = aBuffer.makeStringAndClear();
-
- aBuffer = aMergeAddonInstructionBase;
- aBuffer.append( m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MERGECOMMANDPARAMETER ] );
- aNodePropNames[2] = aBuffer.makeStringAndClear();
-
- aBuffer = aMergeAddonInstructionBase;
- aBuffer.append( m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MERGEFALLBACK ] );
- aNodePropNames[3] = aBuffer.makeStringAndClear();
-
- aBuffer = aMergeAddonInstructionBase;
- aBuffer.append( m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MERGECONTEXT ] );
- aNodePropNames[4] = aBuffer.makeStringAndClear();
-
- Sequence< Any > aNodePropValues = GetProperties( aNodePropNames );
-
- MergeMenuInstruction aMergeMenuInstruction;
- aNodePropValues[0] >>= aMergeMenuInstruction.aMergePoint;
- aNodePropValues[1] >>= aMergeMenuInstruction.aMergeCommand;
- aNodePropValues[2] >>= aMergeMenuInstruction.aMergeCommandParameter;
- aNodePropValues[3] >>= aMergeMenuInstruction.aMergeFallback;
- aNodePropValues[4] >>= aMergeMenuInstruction.aMergeContext;
-
- ::rtl::OUString aMergeMenuBase = aMergeAddonInstructionBase.makeStringAndClear();
- ReadMergeMenuData( aMergeMenuBase, aMergeMenuInstruction.aMergeMenu );
-
- aContainer.push_back( aMergeMenuInstruction );
- }
- }
-
- return sal_True;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::ReadMergeMenuData( const ::rtl::OUString& aMergeAddonInstructionBase, Sequence< Sequence< PropertyValue > >& rMergeMenu )
-{
- ::rtl::OUString aMergeMenuBaseNode( aMergeAddonInstructionBase+m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MENUITEMS ] );
-
- Sequence< ::rtl::OUString > aSubMenuNodeNames = GetNodeNames( aMergeMenuBaseNode );
- aMergeMenuBaseNode += m_aPathDelimiter;
-
- // extend the node names to have full path strings
- for ( sal_uInt32 i = 0; i < (sal_uInt32)aSubMenuNodeNames.getLength(); i++ )
- aSubMenuNodeNames[i] = ::rtl::OUString( aMergeMenuBaseNode + aSubMenuNodeNames[i] );
-
- return ReadSubMenuEntries( aSubMenuNodeNames, rMergeMenu );
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::ReadToolbarMergeInstructions( ToolbarMergingInstructions& rCachedToolbarMergingInstructions )
-{
- const ::rtl::OUString aToolbarMergeRootName( RTL_CONSTASCII_USTRINGPARAM( "AddonUI/OfficeToolbarMerging/" ));
-
- Sequence< ::rtl::OUString > aAddonMergeNodesSeq = GetNodeNames( aToolbarMergeRootName );
- ::rtl::OUString aAddonMergeNode( aToolbarMergeRootName );
-
- sal_uInt32 nCount = aAddonMergeNodesSeq.getLength();
-
- // Init the property value sequence
- Sequence< ::rtl::OUString > aNodePropNames( 6 );
- ::rtl::OUString aURL;
-
- for ( sal_uInt32 i = 0; i < nCount; i++ )
- {
- ::rtl::OUString aMergeAddonInstructions( aAddonMergeNode + aAddonMergeNodesSeq[i] );
-
- Sequence< ::rtl::OUString > aAddonInstMergeNodesSeq = GetNodeNames( aMergeAddonInstructions );
- sal_uInt32 nCountAddons = aAddonInstMergeNodesSeq.getLength();
-
- for ( sal_uInt32 j = 0; j < nCountAddons; j++ )
- {
- ::rtl::OUStringBuffer aMergeAddonInstructionBase( aMergeAddonInstructions );
- aMergeAddonInstructionBase.append( m_aPathDelimiter );
- aMergeAddonInstructionBase.append( aAddonInstMergeNodesSeq[j] );
- aMergeAddonInstructionBase.append( m_aPathDelimiter );
-
- // Create sequence for data access
- ::rtl::OUStringBuffer aBuffer( aMergeAddonInstructionBase );
- aBuffer.append( m_aPropMergeToolbarNames[ OFFSET_MERGETOOLBAR_TOOLBAR ] );
- aNodePropNames[0] = aBuffer.makeStringAndClear();
-
- aBuffer = aMergeAddonInstructionBase;
- aBuffer.append( m_aPropMergeToolbarNames[ OFFSET_MERGETOOLBAR_MERGEPOINT ] );
- aNodePropNames[1] = aBuffer.makeStringAndClear();
-
- aBuffer = aMergeAddonInstructionBase;
- aBuffer.append( m_aPropMergeToolbarNames[ OFFSET_MERGETOOLBAR_MERGECOMMAND ] );
- aNodePropNames[2] = aBuffer.makeStringAndClear();
-
- aBuffer = aMergeAddonInstructionBase;
- aBuffer.append( m_aPropMergeToolbarNames[ OFFSET_MERGETOOLBAR_MERGECOMMANDPARAMETER ] );
- aNodePropNames[3] = aBuffer.makeStringAndClear();
-
- aBuffer = aMergeAddonInstructionBase;
- aBuffer.append( m_aPropMergeToolbarNames[ OFFSET_MERGETOOLBAR_MERGEFALLBACK ] );
- aNodePropNames[4] = aBuffer.makeStringAndClear();
-
- aBuffer = aMergeAddonInstructionBase;
- aBuffer.append( m_aPropMergeToolbarNames[ OFFSET_MERGETOOLBAR_MERGECONTEXT ] );
- aNodePropNames[5] = aBuffer.makeStringAndClear();
-
- Sequence< Any > aNodePropValues = GetProperties( aNodePropNames );
-
- MergeToolbarInstruction aMergeToolbarInstruction;
- aNodePropValues[0] >>= aMergeToolbarInstruction.aMergeToolbar;
- aNodePropValues[1] >>= aMergeToolbarInstruction.aMergePoint;
- aNodePropValues[2] >>= aMergeToolbarInstruction.aMergeCommand;
- aNodePropValues[3] >>= aMergeToolbarInstruction.aMergeCommandParameter;
- aNodePropValues[4] >>= aMergeToolbarInstruction.aMergeFallback;
- aNodePropValues[5] >>= aMergeToolbarInstruction.aMergeContext;
-
- ReadMergeToolbarData( aMergeAddonInstructionBase.makeStringAndClear(),
- aMergeToolbarInstruction.aMergeToolbarItems );
-
- MergeToolbarInstructionContainer& rVector = rCachedToolbarMergingInstructions[ aMergeToolbarInstruction.aMergeToolbar ];
- rVector.push_back( aMergeToolbarInstruction );
- }
- }
-
- return sal_True;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::ReadMergeToolbarData( const ::rtl::OUString& aMergeAddonInstructionBase, Sequence< Sequence< PropertyValue > >& rMergeToolbarItems )
-{
- ::rtl::OUStringBuffer aBuffer( aMergeAddonInstructionBase );
- aBuffer.append( m_aPropMergeToolbarNames[ OFFSET_MERGETOOLBAR_TOOLBARITEMS ] );
-
- ::rtl::OUString aMergeToolbarBaseNode = aBuffer.makeStringAndClear();
-
- return ReadToolBarItemSet( aMergeToolbarBaseNode, rMergeToolbarItems );
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::ReadMenuItem( const ::rtl::OUString& aMenuNodeName, Sequence< PropertyValue >& aMenuItem, sal_Bool bIgnoreSubMenu )
-{
- sal_Bool bResult = sal_False;
- ::rtl::OUString aStrValue;
- ::rtl::OUString aAddonMenuItemTreeNode( aMenuNodeName + m_aPathDelimiter );
- Sequence< Any > aMenuItemNodePropValues;
-
- aMenuItemNodePropValues = GetProperties( GetPropertyNamesMenuItem( aAddonMenuItemTreeNode ) );
- if (( aMenuItemNodePropValues[ OFFSET_MENUITEM_TITLE ] >>= aStrValue ) && aStrValue.getLength() > 0 )
- {
- aMenuItem[ OFFSET_MENUITEM_TITLE ].Value <<= aStrValue;
-
- ::rtl::OUString aRootSubMenuName( aAddonMenuItemTreeNode + m_aPropNames[ INDEX_SUBMENU ] );
- Sequence< ::rtl::OUString > aRootSubMenuNodeNames = GetNodeNames( aRootSubMenuName );
- if ( aRootSubMenuNodeNames.getLength() > 0 && !bIgnoreSubMenu )
- {
- // Set a unique prefixed Add-On popup menu URL so it can be identified later
- ::rtl::OUString aPopupMenuURL = GeneratePrefixURL();
- ::rtl::OUString aPopupMenuImageId;
-
- aMenuItemNodePropValues[ OFFSET_MENUITEM_IMAGEIDENTIFIER ] >>= aPopupMenuImageId;
- ReadAndAssociateImages( aPopupMenuURL, aPopupMenuImageId );
-
- // A popup menu must have a title and can have a URL and ImageIdentifier
- // Set the other property values to empty
- aMenuItem[ OFFSET_MENUITEM_URL ].Value <<= aPopupMenuURL;
- aMenuItem[ OFFSET_MENUITEM_TARGET ].Value <<= m_aEmpty;
- aMenuItem[ OFFSET_MENUITEM_IMAGEIDENTIFIER ].Value <<= aPopupMenuImageId;
- aMenuItem[ OFFSET_MENUITEM_CONTEXT ].Value <<= aMenuItemNodePropValues[ OFFSET_MENUITEM_CONTEXT ];
-
- // Continue to read the sub menu nodes
- Sequence< Sequence< PropertyValue > > aSubMenuSeq;
- ::rtl::OUString aSubMenuRootNodeName( aRootSubMenuName + m_aPathDelimiter );
- for ( sal_uInt32 n = 0; n < (sal_uInt32)aRootSubMenuNodeNames.getLength(); n++ )
- aRootSubMenuNodeNames[n] = ::rtl::OUString( aSubMenuRootNodeName + aRootSubMenuNodeNames[n] );
- ReadSubMenuEntries( aRootSubMenuNodeNames, aSubMenuSeq );
- aMenuItem[ OFFSET_MENUITEM_SUBMENU ].Value <<= aSubMenuSeq;
- bResult = sal_True;
- }
- else if (( aMenuItemNodePropValues[ OFFSET_MENUITEM_URL ] >>= aStrValue ) && aStrValue.getLength() > 0 )
- {
- // A simple menu item => read the other properties;
- ::rtl::OUString aMenuImageId;
-
- aMenuItemNodePropValues[ OFFSET_MENUITEM_IMAGEIDENTIFIER ] >>= aMenuImageId;
- ReadAndAssociateImages( aStrValue, aMenuImageId );
-
- aMenuItem[ OFFSET_MENUITEM_URL ].Value <<= aStrValue;
- aMenuItem[ OFFSET_MENUITEM_TARGET ].Value <<= aMenuItemNodePropValues[ OFFSET_MENUITEM_TARGET ];
- aMenuItem[ OFFSET_MENUITEM_IMAGEIDENTIFIER ].Value <<= aMenuImageId;
- aMenuItem[ OFFSET_MENUITEM_CONTEXT ].Value <<= aMenuItemNodePropValues[ OFFSET_MENUITEM_CONTEXT ];
- aMenuItem[ OFFSET_MENUITEM_SUBMENU ].Value <<= Sequence< Sequence< PropertyValue > >(); // Submenu set!
-
- bResult = sal_True;
- }
- }
- else if (( aMenuItemNodePropValues[ OFFSET_MENUITEM_URL ] >>= aStrValue ) &&
- aStrValue.equalsAsciiL( SEPARATOR_URL_STR, SEPARATOR_URL_LEN ))
- {
- // Separator
- aMenuItem[ OFFSET_MENUITEM_URL ].Value <<= aStrValue;
- aMenuItem[ OFFSET_MENUITEM_TARGET ].Value <<= m_aEmpty;
- aMenuItem[ OFFSET_MENUITEM_IMAGEIDENTIFIER ].Value <<= m_aEmpty;
- aMenuItem[ OFFSET_MENUITEM_CONTEXT ].Value <<= m_aEmpty;
- aMenuItem[ OFFSET_MENUITEM_SUBMENU ].Value <<= Sequence< Sequence< PropertyValue > >(); // Submenu set!
- bResult = sal_True;
- }
-
- return bResult;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::ReadPopupMenu( const ::rtl::OUString& aPopupMenuNodeName, Sequence< PropertyValue >& aPopupMenu )
-{
- sal_Bool bResult = sal_False;
- ::rtl::OUString aStrValue;
- ::rtl::OUString aAddonPopupMenuTreeNode( aPopupMenuNodeName + m_aPathDelimiter );
- Sequence< Any > aPopupMenuNodePropValues;
-
- aPopupMenuNodePropValues = GetProperties( GetPropertyNamesPopupMenu( aAddonPopupMenuTreeNode ) );
- if (( aPopupMenuNodePropValues[ OFFSET_POPUPMENU_TITLE ] >>= aStrValue ) &&
- aStrValue.getLength() > 0 )
- {
- aPopupMenu[ OFFSET_POPUPMENU_TITLE ].Value <<= aStrValue;
-
- ::rtl::OUString aRootSubMenuName( aAddonPopupMenuTreeNode + m_aPropNames[ INDEX_SUBMENU ] );
- Sequence< ::rtl::OUString > aRootSubMenuNodeNames = GetNodeNames( aRootSubMenuName );
- if ( aRootSubMenuNodeNames.getLength() > 0 )
- {
- // A top-level popup menu needs a title
- // Set a unique prefixed Add-On popup menu URL so it can be identified later
- ::rtl::OUString aPopupMenuURL = GeneratePrefixURL();
-
- aPopupMenu[ OFFSET_POPUPMENU_URL ].Value <<= aPopupMenuURL;
- aPopupMenu[ OFFSET_POPUPMENU_CONTEXT ].Value <<= aPopupMenuNodePropValues[ OFFSET_POPUPMENU_CONTEXT ];
-
- // Continue to read the sub menu nodes
- Sequence< Sequence< PropertyValue > > aSubMenuSeq;
- ::rtl::OUString aSubMenuRootNodeName( aRootSubMenuName + m_aPathDelimiter );
- for ( sal_uInt32 n = 0; n < (sal_uInt32)aRootSubMenuNodeNames.getLength(); n++ )
- aRootSubMenuNodeNames[n] = ::rtl::OUString( aSubMenuRootNodeName + aRootSubMenuNodeNames[n] );
- ReadSubMenuEntries( aRootSubMenuNodeNames, aSubMenuSeq );
- aPopupMenu[ OFFSET_POPUPMENU_SUBMENU ].Value <<= aSubMenuSeq;
- bResult = sal_True;
- }
- }
-
- return bResult;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::AppendPopupMenu( Sequence< PropertyValue >& rTargetPopupMenu, const Sequence< PropertyValue >& rSourcePopupMenu )
-{
- Sequence< Sequence< PropertyValue > > aTargetSubMenuSeq;
- Sequence< Sequence< PropertyValue > > aSourceSubMenuSeq;
-
- if (( rTargetPopupMenu[ OFFSET_POPUPMENU_SUBMENU ].Value >>= aTargetSubMenuSeq ) &&
- ( rSourcePopupMenu[ OFFSET_POPUPMENU_SUBMENU ].Value >>= aSourceSubMenuSeq ))
- {
- sal_uInt32 nIndex = aTargetSubMenuSeq.getLength();
- aTargetSubMenuSeq.realloc( nIndex + aSourceSubMenuSeq.getLength() );
- for ( sal_uInt32 i = 0; i < sal_uInt32( aSourceSubMenuSeq.getLength() ); i++ )
- aTargetSubMenuSeq[nIndex++] = aSourceSubMenuSeq[i];
- rTargetPopupMenu[ OFFSET_POPUPMENU_SUBMENU ].Value <<= aTargetSubMenuSeq;
- }
-
- return sal_True;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::ReadToolBarItem( const ::rtl::OUString& aToolBarItemNodeName, Sequence< PropertyValue >& aToolBarItem )
-{
- sal_Bool bResult = sal_False;
- ::rtl::OUString aTitle;
- ::rtl::OUString aURL;
- ::rtl::OUString aAddonToolBarItemTreeNode( aToolBarItemNodeName + m_aPathDelimiter );
- Sequence< Any > aToolBarItemNodePropValues;
-
- aToolBarItemNodePropValues = GetProperties( GetPropertyNamesToolBarItem( aAddonToolBarItemTreeNode ) );
-
- // A toolbar item must have a command URL
- if (( aToolBarItemNodePropValues[ OFFSET_TOOLBARITEM_URL ] >>= aURL ) && aURL.getLength() > 0 )
- {
- if ( aURL.equals( SEPARATOR_URL ))
- {
- // A speparator toolbar item only needs a URL
- aToolBarItem[ OFFSET_TOOLBARITEM_URL ].Value <<= aURL;
- aToolBarItem[ OFFSET_TOOLBARITEM_TITLE ].Value <<= m_aEmpty;
- aToolBarItem[ OFFSET_TOOLBARITEM_TARGET ].Value <<= m_aEmpty;
- aToolBarItem[ OFFSET_TOOLBARITEM_IMAGEIDENTIFIER ].Value <<= m_aEmpty;
- aToolBarItem[ OFFSET_TOOLBARITEM_CONTEXT ].Value <<= m_aEmpty;
- aToolBarItem[ OFFSET_TOOLBARITEM_CONTROLTYPE ].Value <<= m_aEmpty;
- aToolBarItem[ OFFSET_TOOLBARITEM_WIDTH ].Value <<= sal_Int32( 0 );
-
- bResult = sal_True;
- }
- else if (( aToolBarItemNodePropValues[ OFFSET_TOOLBARITEM_TITLE ] >>= aTitle ) && aTitle.getLength() > 0 )
- {
- // A normal toolbar item must also have title => read the other properties;
- ::rtl::OUString aImageId;
-
- // Try to map a user-defined image URL to our internal private image URL
- aToolBarItemNodePropValues[ OFFSET_TOOLBARITEM_IMAGEIDENTIFIER ] >>= aImageId;
- ReadAndAssociateImages( aURL, aImageId );
-
- aToolBarItem[ OFFSET_TOOLBARITEM_URL ].Value <<= aURL;
- aToolBarItem[ OFFSET_TOOLBARITEM_TITLE ].Value <<= aTitle;
- aToolBarItem[ OFFSET_TOOLBARITEM_TARGET ].Value <<= aToolBarItemNodePropValues[ OFFSET_TOOLBARITEM_TARGET ];
- aToolBarItem[ OFFSET_TOOLBARITEM_IMAGEIDENTIFIER ].Value <<= aImageId;
- aToolBarItem[ OFFSET_TOOLBARITEM_CONTEXT ].Value <<= aToolBarItemNodePropValues[ OFFSET_TOOLBARITEM_CONTEXT ];
- aToolBarItem[ OFFSET_TOOLBARITEM_CONTROLTYPE ].Value <<= aToolBarItemNodePropValues[ OFFSET_TOOLBARITEM_CONTROLTYPE ];
-
- // Configuration uses hyper for long. Therefore transform into sal_Int32
- sal_Int64 nValue( 0 );
- aToolBarItemNodePropValues[ OFFSET_TOOLBARITEM_WIDTH ] >>= nValue;
- aToolBarItem[ OFFSET_TOOLBARITEM_WIDTH ].Value <<= sal_Int32( nValue );
-
- bResult = sal_True;
- }
- }
-
- return bResult;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::ReadSubMenuEntries( const Sequence< ::rtl::OUString >& aSubMenuNodeNames, Sequence< Sequence< PropertyValue > >& rSubMenuSeq )
-{
- Sequence< PropertyValue > aMenuItem( PROPERTYCOUNT_MENUITEM );
-
- // Init the property value sequence
- aMenuItem[ OFFSET_MENUITEM_URL ].Name = PROPERTYNAME_URL;
- aMenuItem[ OFFSET_MENUITEM_TITLE ].Name = PROPERTYNAME_TITLE;
- aMenuItem[ OFFSET_MENUITEM_TARGET ].Name = PROPERTYNAME_TARGET;
- aMenuItem[ OFFSET_MENUITEM_IMAGEIDENTIFIER ].Name = PROPERTYNAME_IMAGEIDENTIFIER;
- aMenuItem[ OFFSET_MENUITEM_CONTEXT ].Name = PROPERTYNAME_CONTEXT;
- aMenuItem[ OFFSET_MENUITEM_SUBMENU ].Name = PROPERTYNAME_SUBMENU; // Submenu set!
-
- sal_uInt32 nIndex = 0;
- sal_uInt32 nCount = aSubMenuNodeNames.getLength();
- for ( sal_uInt32 n = 0; n < nCount; n++ )
- {
- if ( ReadMenuItem( aSubMenuNodeNames[n], aMenuItem ))
- {
- sal_uInt32 nSubMenuCount = rSubMenuSeq.getLength() + 1;
- rSubMenuSeq.realloc( nSubMenuCount );
- rSubMenuSeq[nIndex++] = aMenuItem;
- }
- }
-
- return sal_True;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::HasAssociatedImages( const ::rtl::OUString& aURL )
-{
- ImageManager::const_iterator pIter = m_aImageManager.find( aURL );
- return ( pIter != m_aImageManager.end() );
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-void AddonsOptions_Impl::SubstituteVariables( ::rtl::OUString& aURL )
-{
- if (( aURL.compareToAscii( RTL_CONSTASCII_STRINGPARAM( EXPAND_PROTOCOL )) == 0 ) &&
- m_xMacroExpander.is() )
- {
- // cut protocol
- ::rtl::OUString macro( aURL.copy( sizeof ( EXPAND_PROTOCOL ) -1 ) );
- // decode uric class chars
- macro = ::rtl::Uri::decode(
- macro, rtl_UriDecodeWithCharset, RTL_TEXTENCODING_UTF8 );
- // expand macro string
- aURL = m_xMacroExpander->expandMacros( macro );
- }
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-void AddonsOptions_Impl::ReadImageFromURL( ImageSize nImageSize, const ::rtl::OUString& aImageURL, Image& aImage, Image& aImageNoScale )
-{
- SvStream* pStream = UcbStreamHelper::CreateStream( aImageURL, STREAM_STD_READ );
- if ( pStream && ( pStream->GetErrorCode() == 0 ))
- {
- // Use graphic class to also support more graphic formats (bmp,png,...)
- Graphic aGraphic;
-
- GraphicFilter* pGF = GraphicFilter::GetGraphicFilter();
- pGF->ImportGraphic( aGraphic, String(), *pStream, GRFILTER_FORMAT_DONTKNOW );
-
- BitmapEx aBitmapEx = aGraphic.GetBitmapEx();
-
- const Size aSize = ( nImageSize == IMGSIZE_SMALL ) ? aImageSizeSmall : aImageSizeBig; // Sizes used for menu/toolbox images
-
- Size aBmpSize = aBitmapEx.GetSizePixel();
- if ( aBmpSize.Width() > 0 && aBmpSize.Height() > 0 )
- {
- // Support non-transparent bitmaps to be downward compatible with OOo 1.1.x addons
- if( !aBitmapEx.IsTransparent() )
- aBitmapEx = BitmapEx( aBitmapEx.GetBitmap(), COL_LIGHTMAGENTA );
-
- // A non-scaled bitmap can have a flexible width, but must have a defined height!
- Size aNoScaleSize( aBmpSize.Width(), aSize.Height() );
- if ( aBmpSize != aNoScaleSize )
- {
- BitmapEx aNoScaleBmp( aBitmapEx );
- aNoScaleBmp.Scale( aNoScaleSize, BMP_SCALE_INTERPOLATE );
- }
- else
- aImageNoScale = Image( aBitmapEx );
-
- if ( aBmpSize != aSize )
- aBitmapEx.Scale( aSize, BMP_SCALE_INTERPOLATE );
-
- aImage = Image( aBitmapEx );
- }
- }
-
- delete pStream;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-void AddonsOptions_Impl::ReadAndAssociateImages( const ::rtl::OUString& aURL, const ::rtl::OUString& aImageId )
-{
- const int MAX_NUM_IMAGES = 4;
- const char* aExtArray[MAX_NUM_IMAGES] = { "_16", "_26", "_16h", "_26h" };
- const char* pBmpExt = ".bmp";
-
- if ( aImageId.getLength() == 0 )
- return;
-
- bool bImageFound = true;
- ImageEntry aImageEntry;
- ::rtl::OUString aImageURL( aImageId );
-
- SubstituteVariables( aImageURL );
-
- // Loop to create the four possible image names and try to read the bitmap files
- for ( int i = 0; i < MAX_NUM_IMAGES; i++ )
- {
- ::rtl::OUStringBuffer aFileURL( aImageURL );
- aFileURL.appendAscii( aExtArray[i] );
- aFileURL.appendAscii( pBmpExt );
-
- Image aImage;
- Image aImageNoScale;
- ReadImageFromURL( ((i==0)||(i==2)) ? IMGSIZE_SMALL : IMGSIZE_BIG, aFileURL.makeStringAndClear(), aImage, aImageNoScale );
- if ( !!aImage )
- {
- bImageFound = true;
- switch ( i )
- {
- case 0:
- aImageEntry.aImageSmall = aImage;
- aImageEntry.aImageSmallNoScale = aImageNoScale;
- break;
- case 1:
- aImageEntry.aImageBig = aImage;
- aImageEntry.aImageBigNoScale = aImageNoScale;
- break;
- case 2:
- aImageEntry.aImageSmallHC = aImage;
- aImageEntry.aImageSmallHCNoScale = aImageNoScale;
- break;
- case 3:
- aImageEntry.aImageBigHC = aImage;
- aImageEntry.aImageBigHCNoScale = aImageNoScale;
- break;
- }
- }
- }
-
- if ( bImageFound )
- m_aImageManager.insert( ImageManager::value_type( aURL, aImageEntry ));
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-AddonsOptions_Impl::ImageEntry* AddonsOptions_Impl::ReadImageData( const ::rtl::OUString& aImagesNodeName )
-{
- Sequence< ::rtl::OUString > aImageDataNodeNames = GetPropertyNamesImages( aImagesNodeName );
- Sequence< Any > aPropertyData;
- Sequence< sal_Int8 > aImageDataSeq;
- ::rtl::OUString aImageURL;
-
- ImageEntry* pEntry = NULL;
-
- // It is possible to use both forms (embedded image data and URLs to external bitmap files) at the
- // same time. Embedded image data has a higher priority.
- aPropertyData = GetProperties( aImageDataNodeNames );
- for ( int i = 0; i < PROPERTYCOUNT_IMAGES; i++ )
- {
- if ( i < PROPERTYCOUNT_EMBEDDED_IMAGES )
- {
- // Extract image data from the embedded hex binary sequence
- Image aImage;
- if (( aPropertyData[i] >>= aImageDataSeq ) &&
- aImageDataSeq.getLength() > 0 &&
- ( CreateImageFromSequence( aImage,
- (( i == OFFSET_IMAGES_BIG ) ||
- ( i == OFFSET_IMAGES_BIGHC )),
- aImageDataSeq )) )
- {
- if ( !pEntry )
- pEntry = new ImageEntry;
-
- if ( i == OFFSET_IMAGES_SMALL )
- pEntry->aImageSmall = aImage;
- else if ( i == OFFSET_IMAGES_BIG )
- pEntry->aImageBig = aImage;
- else if ( i == OFFSET_IMAGES_SMALLHC )
- pEntry->aImageSmallHC = aImage;
- else
- pEntry->aImageBigHC = aImage;
- }
- }
- else
- {
- // Retrieve image data from a external bitmap file. Make sure that embedded image data
- // has a higher priority.
- aPropertyData[i] >>= aImageURL;
-
- if ( aImageURL.getLength() > 0 )
- {
- Image aImage;
- Image aImageNoScale;
-
- SubstituteVariables( aImageURL );
- ReadImageFromURL( ((i==OFFSET_IMAGES_SMALL_URL)||(i==OFFSET_IMAGES_SMALLHC_URL)) ? IMGSIZE_SMALL : IMGSIZE_BIG,
- aImageURL, aImage, aImageNoScale );
- if ( !!aImage )
- {
- if ( !pEntry )
- pEntry = new ImageEntry;
-
- if ( i == OFFSET_IMAGES_SMALL_URL && !pEntry->aImageSmall )
- {
- pEntry->aImageSmall = aImage;
- pEntry->aImageSmallNoScale = aImageNoScale;
- }
- else if ( i == OFFSET_IMAGES_BIG_URL && !pEntry->aImageBig )
- {
- pEntry->aImageBig = aImage;
- pEntry->aImageBigNoScale = aImageNoScale;
- }
- else if ( i == OFFSET_IMAGES_SMALLHC_URL && !pEntry->aImageSmallHC )
- {
- pEntry->aImageSmallHC = aImage;
- pEntry->aImageSmallHCNoScale = aImageNoScale;
- }
- else if ( !pEntry->aImageBigHC )
- {
- pEntry->aImageBigHC = aImage;
- pEntry->aImageBigHCNoScale = aImageNoScale;
- }
- }
- }
- }
- }
-
- return pEntry;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::CreateImageFromSequence( Image& rImage, sal_Bool bBig, Sequence< sal_Int8 >& rBitmapDataSeq ) const
-{
- sal_Bool bResult = sal_False;
- Size aSize = bBig ? aImageSizeBig : aImageSizeSmall; // Sizes used for menu/toolbox images
-
- if ( rBitmapDataSeq.getLength() > 0 )
- {
- SvMemoryStream aMemStream( rBitmapDataSeq.getArray(), rBitmapDataSeq.getLength(), STREAM_STD_READ );
- BitmapEx aBitmapEx;
-
- aMemStream >> aBitmapEx;
-
- // Scale bitmap to fit the correct size for the menu/toolbar. Use best quality
- if ( aBitmapEx.GetSizePixel() != aSize )
- aBitmapEx.Scale( aSize, BMP_SCALE_INTERPOLATE );
-
- if( !aBitmapEx.IsTransparent() )
- {
- // Support non-transparent bitmaps to be downward compatible with OOo 1.1.x addons
- aBitmapEx = BitmapEx( aBitmapEx.GetBitmap(), COL_LIGHTMAGENTA );
- }
-
- rImage = Image( aBitmapEx );
- bResult = sal_True;
- }
-
- return bResult;
-}
-
-//*****************************************************************************************************************
-// private methods
-//*****************************************************************************************************************
-Sequence< ::rtl::OUString > AddonsOptions_Impl::GetPropertyNamesMergeMenuInstruction( const ::rtl::OUString& aPropertyRootNode ) const
-{
- Sequence< ::rtl::OUString > lResult( PROPERTYCOUNT_MERGE_MENUBAR );
-
- // Create property names dependent from the root node name
- lResult[ OFFSET_MERGEMENU_MERGEPOINT ] = ::rtl::OUString( aPropertyRootNode + m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MERGEPOINT ] );
- lResult[ OFFSET_MERGEMENU_MERGECOMMAND ] = ::rtl::OUString( aPropertyRootNode + m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MERGECOMMAND ] );
- lResult[ OFFSET_MERGEMENU_MERGECOMMANDPARAMETER ] = ::rtl::OUString( aPropertyRootNode + m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MERGECOMMANDPARAMETER ] );
- lResult[ OFFSET_MERGEMENU_MERGEFALLBACK ] = ::rtl::OUString( aPropertyRootNode + m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MERGEFALLBACK ] );
- lResult[ OFFSET_MERGEMENU_MERGECONTEXT ] = ::rtl::OUString( aPropertyRootNode + m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MERGECONTEXT ] );
- lResult[ OFFSET_MERGEMENU_MENUITEMS ] = ::rtl::OUString( aPropertyRootNode + m_aPropMergeMenuNames[ OFFSET_MERGEMENU_MENUITEMS ] );
-
- return lResult;
-}
-
-Sequence< ::rtl::OUString > AddonsOptions_Impl::GetPropertyNamesMenuItem( const ::rtl::OUString& aPropertyRootNode ) const
-{
- Sequence< ::rtl::OUString > lResult( PROPERTYCOUNT_MENUITEM );
-
- // Create property names dependent from the root node name
- lResult[OFFSET_MENUITEM_URL] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_URL ] );
- lResult[OFFSET_MENUITEM_TITLE] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_TITLE ] );
- lResult[OFFSET_MENUITEM_IMAGEIDENTIFIER] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_IMAGEIDENTIFIER ] );
- lResult[OFFSET_MENUITEM_TARGET] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_TARGET ] );
- lResult[OFFSET_MENUITEM_CONTEXT] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_CONTEXT ] );
- lResult[OFFSET_MENUITEM_SUBMENU] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_SUBMENU ] );
-
- return lResult;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-Sequence< ::rtl::OUString > AddonsOptions_Impl::GetPropertyNamesPopupMenu( const ::rtl::OUString& aPropertyRootNode ) const
-{
- // The URL is automatically set and not read from the configuration.
- Sequence< ::rtl::OUString > lResult( PROPERTYCOUNT_POPUPMENU-1 );
-
- // Create property names dependent from the root node name
- lResult[OFFSET_POPUPMENU_TITLE] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_TITLE ] );
- lResult[OFFSET_POPUPMENU_CONTEXT] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_CONTEXT ] );
- lResult[OFFSET_POPUPMENU_SUBMENU] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_SUBMENU ] );
-
- return lResult;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-Sequence< ::rtl::OUString > AddonsOptions_Impl::GetPropertyNamesToolBarItem( const ::rtl::OUString& aPropertyRootNode ) const
-{
- Sequence< ::rtl::OUString > lResult( PROPERTYCOUNT_TOOLBARITEM );
-
- // Create property names dependent from the root node name
- lResult[0] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_URL ] );
- lResult[1] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_TITLE ] );
- lResult[2] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_IMAGEIDENTIFIER] );
- lResult[3] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_TARGET ] );
- lResult[4] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_CONTEXT ] );
- lResult[5] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_CONTROLTYPE ] );
- lResult[6] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_WIDTH ] );
-
- return lResult;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-Sequence< ::rtl::OUString > AddonsOptions_Impl::GetPropertyNamesImages( const ::rtl::OUString& aPropertyRootNode ) const
-{
- Sequence< ::rtl::OUString > lResult( PROPERTYCOUNT_IMAGES );
-
- // Create property names dependent from the root node name
- lResult[0] = ::rtl::OUString( aPropertyRootNode + m_aPropImagesNames[ OFFSET_IMAGES_SMALL ] );
- lResult[1] = ::rtl::OUString( aPropertyRootNode + m_aPropImagesNames[ OFFSET_IMAGES_BIG ] );
- lResult[2] = ::rtl::OUString( aPropertyRootNode + m_aPropImagesNames[ OFFSET_IMAGES_SMALLHC ] );
- lResult[3] = ::rtl::OUString( aPropertyRootNode + m_aPropImagesNames[ OFFSET_IMAGES_BIGHC ] );
- lResult[4] = ::rtl::OUString( aPropertyRootNode + m_aPropImagesNames[ OFFSET_IMAGES_SMALL_URL ] );
- lResult[5] = ::rtl::OUString( aPropertyRootNode + m_aPropImagesNames[ OFFSET_IMAGES_BIG_URL ] );
- lResult[6] = ::rtl::OUString( aPropertyRootNode + m_aPropImagesNames[ OFFSET_IMAGES_SMALLHC_URL] );
- lResult[7] = ::rtl::OUString( aPropertyRootNode + m_aPropImagesNames[ OFFSET_IMAGES_BIGHC_URL ] );
-
- return lResult;
-}
-
-//*****************************************************************************************************************
-// initialize static member
-// DON'T DO IT IN YOUR HEADER!
-// see definition for further informations
-//*****************************************************************************************************************
-AddonsOptions_Impl* AddonsOptions::m_pDataContainer = NULL ;
-sal_Int32 AddonsOptions::m_nRefCount = 0 ;
-
-//*****************************************************************************************************************
-// constructor
-//*****************************************************************************************************************
-AddonsOptions::AddonsOptions()
-{
- // Global access, must be guarded (multithreading!).
- MutexGuard aGuard( GetOwnStaticMutex() );
- // Increase ouer refcount ...
- ++m_nRefCount;
- // ... and initialize ouer data container only if it not already exist!
- if( m_pDataContainer == NULL )
- {
- m_pDataContainer = new AddonsOptions_Impl;
- }
-}
-
-//*****************************************************************************************************************
-// destructor
-//*****************************************************************************************************************
-AddonsOptions::~AddonsOptions()
-{
- // Global access, must be guarded (multithreading!)
- MutexGuard aGuard( GetOwnStaticMutex() );
- // Decrease ouer refcount.
- --m_nRefCount;
- // If last instance was deleted ...
- // we must destroy ouer static data container!
- if( m_nRefCount <= 0 )
- {
- delete m_pDataContainer;
- m_pDataContainer = NULL;
- }
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-sal_Bool AddonsOptions::HasAddonsMenu() const
-{
- MutexGuard aGuard( GetOwnStaticMutex() );
- return m_pDataContainer->HasAddonsMenu();
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-
-sal_Bool AddonsOptions::HasAddonsHelpMenu() const
-{
- MutexGuard aGuard( GetOwnStaticMutex() );
- return m_pDataContainer->HasAddonsHelpMenu();
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-
-sal_Int32 AddonsOptions::GetAddonsToolBarCount() const
-{
- MutexGuard aGuard( GetOwnStaticMutex() );
- return m_pDataContainer->GetAddonsToolBarCount();
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-const Sequence< Sequence< PropertyValue > >& AddonsOptions::GetAddonsMenu() const
-{
- MutexGuard aGuard( GetOwnStaticMutex() );
- return m_pDataContainer->GetAddonsMenu();
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-const Sequence< Sequence< PropertyValue > >& AddonsOptions::GetAddonsMenuBarPart() const
-{
- MutexGuard aGuard( GetOwnStaticMutex() );
- return m_pDataContainer->GetAddonsMenuBarPart();
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-const Sequence< Sequence< PropertyValue > >& AddonsOptions::GetAddonsToolBarPart( sal_uInt32 nIndex ) const
-{
- MutexGuard aGuard( GetOwnStaticMutex() );
- return m_pDataContainer->GetAddonsToolBarPart( nIndex );
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-const ::rtl::OUString AddonsOptions::GetAddonsToolbarResourceName( sal_uInt32 nIndex ) const
-{
- MutexGuard aGuard( GetOwnStaticMutex() );
- return m_pDataContainer->GetAddonsToolbarResourceName( nIndex );
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-const Sequence< Sequence< PropertyValue > >& AddonsOptions::GetAddonsHelpMenu() const
-{
- MutexGuard aGuard( GetOwnStaticMutex() );
- return m_pDataContainer->GetAddonsHelpMenu();
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-const MergeMenuInstructionContainer& AddonsOptions::GetMergeMenuInstructions() const
-{
- MutexGuard aGuard( GetOwnStaticMutex() );
- return m_pDataContainer->GetMergeMenuInstructions();
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-bool AddonsOptions::GetMergeToolbarInstructions(
- const ::rtl::OUString& rToolbarName,
- MergeToolbarInstructionContainer& rToolbarInstructions ) const
-{
- MutexGuard aGuard( GetOwnStaticMutex() );
- return m_pDataContainer->GetMergeToolbarInstructions(
- rToolbarName, rToolbarInstructions );
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-Image AddonsOptions::GetImageFromURL( const rtl::OUString& aURL, sal_Bool bBig, sal_Bool bHiContrast, sal_Bool bNoScale ) const
-{
- MutexGuard aGuard( GetOwnStaticMutex() );
- return m_pDataContainer->GetImageFromURL( aURL, bBig, bHiContrast, bNoScale );
-}
-
-//*****************************************************************************************************************
-// public method
-//*****************************************************************************************************************
-Image AddonsOptions::GetImageFromURL( const rtl::OUString& aURL, sal_Bool bBig, sal_Bool bHiContrast ) const
-{
- return GetImageFromURL( aURL, bBig, bHiContrast, sal_False );
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-Mutex& AddonsOptions::GetOwnStaticMutex()
-{
- // Initialize static mutex only for one time!
- static Mutex* pMutex = NULL;
- // If these method first called (Mutex not already exist!) ...
- if( pMutex == NULL )
- {
- // ... we must create a new one. Protect follow code with the global mutex -
- // It must be - we create a static variable!
- MutexGuard aGuard( Mutex::getGlobalMutex() );
- // We must check our pointer again - because it can be that another instance of ouer class will be fastr then these!
- if( pMutex == NULL )
- {
- // Create the new mutex and set it for return on static variable.
- static Mutex aMutex;
- pMutex = &aMutex;
- }
- }
- // Return new created or already existing mutex object.
- return *pMutex;
-}
-
-//*****************************************************************************************************************
-// private method
-//*****************************************************************************************************************
-IMPL_STATIC_LINK_NOINSTANCE( AddonsOptions, Notify, void*, EMPTYARG )
-{
- MutexGuard aGuard( GetOwnStaticMutex() );
- m_pDataContainer->ReadConfigurationData();
- return 0;
-}
-
-}
-
diff --git a/framework/source/classes/bmkmenu.cxx b/framework/source/classes/bmkmenu.cxx
deleted file mode 100644
index aa2aef3b9d2b..000000000000
--- a/framework/source/classes/bmkmenu.cxx
+++ /dev/null
@@ -1,254 +0,0 @@
-/*************************************************************************
- *
- * 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_framework.hxx"
-
-//_________________________________________________________________________________________________________________
-// my own includes
-//_________________________________________________________________________________________________________________
-
-#include <limits.h>
-
-#include "classes/bmkmenu.hxx"
-#include <general.h>
-#include <macros/debug/assertion.hxx>
-#include <helper/imageproducer.hxx>
-#include <xml/menuconfiguration.hxx>
-
-//_________________________________________________________________________________________________________________
-// interface includes
-//_________________________________________________________________________________________________________________
-#include <com/sun/star/uno/Reference.h>
-#include <com/sun/star/util/URL.hpp>
-#include <com/sun/star/beans/PropertyValue.hpp>
-#ifndef _UNOTOOLS_PROCESSFACTORY_HXX
-#include <comphelper/processfactory.hxx>
-#endif
-#include <com/sun/star/util/XURLTransformer.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/util/DateTime.hpp>
-
-//_________________________________________________________________________________________________________________
-// includes of other projects
-//_________________________________________________________________________________________________________________
-#include <tools/config.hxx>
-#include <vcl/svapp.hxx>
-#include <unotools/dynamicmenuoptions.hxx>
-#include <svtools/menuoptions.hxx>
-#include <rtl/logfile.hxx>
-
-//_________________________________________________________________________________________________________________
-// namespace
-//_________________________________________________________________________________________________________________
-
-using namespace ::comphelper;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::frame;
-using namespace ::com::sun::star::beans;
-
-namespace framework
-{
-
-void GetMenuEntry(
- Sequence< PropertyValue >& aDynamicMenuEntry,
- ::rtl::OUString& rTitle,
- ::rtl::OUString& rURL,
- ::rtl::OUString& rFrame,
- ::rtl::OUString& rImageId );
-
-class BmkMenu_Impl
-{
- private:
- static USHORT m_nMID;
-
- public:
- BmkMenu* m_pRoot;
- BOOL m_bInitialized;
-
- BmkMenu_Impl( BmkMenu* pRoot );
- BmkMenu_Impl();
- ~BmkMenu_Impl();
-
- static USHORT GetMID();
-};
-
-USHORT BmkMenu_Impl::m_nMID = BMKMENU_ITEMID_START;
-
-BmkMenu_Impl::BmkMenu_Impl( BmkMenu* pRoot ) :
- m_pRoot(pRoot),
- m_bInitialized(FALSE)
-{
-}
-
-BmkMenu_Impl::BmkMenu_Impl() :
- m_pRoot(0),
- m_bInitialized(FALSE)
-{
-}
-
-BmkMenu_Impl::~BmkMenu_Impl()
-{
-}
-
-USHORT BmkMenu_Impl::GetMID()
-{
- m_nMID++;
- if( !m_nMID )
- m_nMID = BMKMENU_ITEMID_START;
- return m_nMID;
-}
-
-// ------------------------------------------------------------------------
-
-BmkMenu::BmkMenu( com::sun::star::uno::Reference< XFrame >& xFrame, BmkMenu::BmkMenuType nType, BmkMenu* pRoot )
- :AddonMenu(xFrame)
- ,m_nType( nType )
-{
- _pImp = new BmkMenu_Impl( pRoot );
- Initialize();
-}
-
-BmkMenu::BmkMenu( Reference< XFrame >& xFrame, BmkMenu::BmkMenuType nType )
- :AddonMenu(xFrame)
- ,m_nType( nType )
-{
- _pImp = new BmkMenu_Impl();
- Initialize();
-}
-
-BmkMenu::~BmkMenu()
-{
- delete _pImp;
-}
-
-void BmkMenu::Initialize()
-{
- RTL_LOGFILE_CONTEXT( aLog, "framework (cd100003) ::BmkMenu::Initialize" );
-
- if( _pImp->m_bInitialized )
- return;
-
- _pImp->m_bInitialized = TRUE;
-
- Sequence< Sequence< PropertyValue > > aDynamicMenuEntries;
-
- if ( m_nType == BmkMenu::BMK_NEWMENU )
- aDynamicMenuEntries = SvtDynamicMenuOptions().GetMenu( E_NEWMENU );
- else if ( m_nType == BmkMenu::BMK_WIZARDMENU )
- aDynamicMenuEntries = SvtDynamicMenuOptions().GetMenu( E_WIZARDMENU );
-
- const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings();
- BOOL bShowMenuImages = rSettings.GetUseImagesInMenus();
-
- ::rtl::OUString aTitle;
- ::rtl::OUString aURL;
- ::rtl::OUString aTargetFrame;
- ::rtl::OUString aImageId;
-
- BOOL bIsHiContrastMode = rSettings.GetHighContrastMode();
-
- UINT32 i, nCount = aDynamicMenuEntries.getLength();
- for ( i = 0; i < nCount; ++i )
- {
- GetMenuEntry( aDynamicMenuEntries[i], aTitle, aURL, aTargetFrame, aImageId );
-
- if ( !aTitle.getLength() && !aURL.getLength() )
- continue;
-
- if ( aURL == ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "private:separator" )))
- InsertSeparator();
- else
- {
- sal_Bool bImageSet = sal_False;
- USHORT nId = CreateMenuId();
-
- if ( bShowMenuImages )
- {
- if ( aImageId.getLength() > 0 )
- {
- Image aImage = GetImageFromURL( m_xFrame, aImageId, FALSE, bIsHiContrastMode );
- if ( !!aImage )
- {
- bImageSet = sal_True;
- InsertItem( nId, aTitle, aImage );
- }
- }
-
- if ( !bImageSet )
- {
- Image aImage = GetImageFromURL( m_xFrame, aURL, FALSE, bIsHiContrastMode );
- if ( !aImage )
- InsertItem( nId, aTitle );
- else
- InsertItem( nId, aTitle, aImage );
- }
- }
- else
- InsertItem( nId, aTitle );
-
- // Store values from configuration to the New and Wizard menu entries to enable
- // sfx2 based code to support high contrast mode correctly!
- MenuConfiguration::Attributes* pUserAttributes = new MenuConfiguration::Attributes( aTargetFrame, aImageId );
- SetUserValue( nId, (ULONG)pUserAttributes );
-
- SetItemCommand( nId, aURL );
- }
- }
-}
-
-USHORT BmkMenu::CreateMenuId()
-{
- return BmkMenu_Impl::GetMID();
-}
-
-void GetMenuEntry
-(
- Sequence< PropertyValue >& aDynamicMenuEntry,
- ::rtl::OUString& rTitle,
- ::rtl::OUString& rURL,
- ::rtl::OUString& rFrame,
- ::rtl::OUString& rImageId
-)
-{
- for ( int i = 0; i < aDynamicMenuEntry.getLength(); i++ )
- {
- if ( aDynamicMenuEntry[i].Name == DYNAMICMENU_PROPERTYNAME_URL )
- aDynamicMenuEntry[i].Value >>= rURL;
- else if ( aDynamicMenuEntry[i].Name == DYNAMICMENU_PROPERTYNAME_TITLE )
- aDynamicMenuEntry[i].Value >>= rTitle;
- else if ( aDynamicMenuEntry[i].Name == DYNAMICMENU_PROPERTYNAME_IMAGEIDENTIFIER )
- aDynamicMenuEntry[i].Value >>= rImageId;
- else if ( aDynamicMenuEntry[i].Name == DYNAMICMENU_PROPERTYNAME_TARGETNAME )
- aDynamicMenuEntry[i].Value >>= rFrame;
- }
-}
-
-}
-
diff --git a/framework/source/classes/converter.cxx b/framework/source/classes/converter.cxx
deleted file mode 100644
index d70b099c9e03..000000000000
--- a/framework/source/classes/converter.cxx
+++ /dev/null
@@ -1,316 +0,0 @@
-/*************************************************************************
- *
- * 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_framework.hxx"
-#include <classes/converter.hxx>
-#include <rtl/ustrbuf.hxx>
-
-namespace framework{
-
-//-----------------------------------------------------------------------------
-/**
- * pack every property item of source list into an any entry of destination list
- * Resulting list will have follow format then: "sequence< Any(PropertyValue) >".
- * If one item couldn't be converted it will be ignored - means target list can
- * be smaller then source list. Source list isn't changed anytime.
- *
- * algorithm:
- * (a) reserve enough space on destination list for all possible entries of
- * source list
- * (b) try to pack every property of source into an any of destination list
- * (b1) count successfully packed entries only
- * (c) use this count of packed entries to resize destination list
- * Because we getted enough space before - that will remove unused items
- * of destination list at the end of it only.
- */
-css::uno::Sequence< css::uno::Any > Converter::convert_seqProp2seqAny( const css::uno::Sequence< css::beans::PropertyValue >& lSource )
-{
- sal_Int32 nCount = lSource.getLength();
- css::uno::Sequence< css::uno::Any > lDestination(nCount);
-
- for (sal_Int32 nItem=0; nItem<nCount; ++nItem)
- lDestination[nItem]<<=lSource[nItem];
-
- return lDestination;
-}
-
-//-----------------------------------------------------------------------------
-/**
- * do the same like convert_seqProp2seqAny() before - but reverse.
- * It try to unpack PropertyValue items from given Any's.
- */
-css::uno::Sequence< css::beans::PropertyValue > Converter::convert_seqAny2seqProp( const css::uno::Sequence< css::uno::Any >& lSource )
-{
- sal_Int32 nCount = lSource.getLength();
- sal_Int32 nRealCount = 0;
- css::uno::Sequence< css::beans::PropertyValue > lDestination(nCount);
-
- for (sal_Int32 nItem=0; nItem<nCount; ++nItem)
- {
- if (lSource[nItem]>>=lDestination[nItem])
- ++nRealCount;
- }
-
- if (nRealCount!=nCount)
- lDestination.realloc(nRealCount);
-
- return lDestination;
-}
-
-//-----------------------------------------------------------------------------
-/**
- * converts a sequence of NamedValue to a sequence of PropertyValue.
- */
-css::uno::Sequence< css::beans::PropertyValue > Converter::convert_seqNamedVal2seqPropVal( const css::uno::Sequence< css::beans::NamedValue >& lSource )
-{
- sal_Int32 nCount = lSource.getLength();
- css::uno::Sequence< css::beans::PropertyValue > lDestination(nCount);
- for (sal_Int32 nItem=0; nItem<nCount; ++nItem)
- {
- lDestination[nItem].Name = lSource[nItem].Name ;
- lDestination[nItem].Value = lSource[nItem].Value;
- }
- return lDestination;
-}
-
-//-----------------------------------------------------------------------------
-/**
- * converts a sequence of PropertyValue to a sequence of NamedValue.
- */
-css::uno::Sequence< css::beans::NamedValue > Converter::convert_seqPropVal2seqNamedVal( const css::uno::Sequence< css::beans::PropertyValue >& lSource )
-{
- sal_Int32 nCount = lSource.getLength();
- css::uno::Sequence< css::beans::NamedValue > lDestination(nCount);
- for (sal_Int32 nItem=0; nItem<nCount; ++nItem)
- {
- lDestination[nItem].Name = lSource[nItem].Name ;
- lDestination[nItem].Value = lSource[nItem].Value;
- }
- return lDestination;
-}
-
-//-----------------------------------------------------------------------------
-/**
- * converts a sequence of unicode strings into a vector of such items
- */
-OUStringList Converter::convert_seqOUString2OUStringList( const css::uno::Sequence< ::rtl::OUString >& lSource )
-{
- OUStringList lDestination;
- sal_Int32 nCount = lSource.getLength();
-
- for (sal_Int32 nItem=0; nItem<nCount; ++nItem )
- {
- lDestination.push_back(lSource[nItem]);
- }
-
- return lDestination;
-}
-
-//-----------------------------------------------------------------------------
-/**
- * converts a vector of unicode strings into a sequence of such items
- */
-css::uno::Sequence< ::rtl::OUString > Converter::convert_OUStringList2seqOUString( const OUStringList& lSource )
-{
- css::uno::Sequence< ::rtl::OUString > lDestination(lSource.size());
- sal_uInt32 nItem = 0;
- for (OUStringList::const_iterator pIterator=lSource.begin(); pIterator!=lSource.end(); ++pIterator)
- {
- lDestination[nItem] = *pIterator;
- ++nItem;
- }
- return lDestination;
-}
-
-//-----------------------------------------------------------------------------
-/**
- * converts an unicode string hash to a sequence<PropertyValue>, where names and values match to key and values.
- */
-css::uno::Sequence< css::beans::PropertyValue > Converter::convert_OUStringHash2seqProp( const OUStringHash& lSource )
-{
- css::uno::Sequence< css::beans::PropertyValue > lDestination (lSource.size());
- css::beans::PropertyValue* pDestination = lDestination.getArray();
- sal_Int32 nItem = 0;
- for (OUStringHash::const_iterator pItem=lSource.begin(); pItem!=lSource.end(); ++pItem)
- {
- pDestination[nItem].Name = pItem->first ;
- pDestination[nItem].Value <<= pItem->second;
- ++nItem;
- }
- return lDestination;
-}
-
-//-----------------------------------------------------------------------------
-/**
- * converts a sequence<PropertyValue> to an unicode string hash, where keys and values match to names and values.
- */
-OUStringHash Converter::convert_seqProp2OUStringHash( const css::uno::Sequence< css::beans::PropertyValue >& lSource )
-{
- OUStringHash lDestination;
- sal_Int32 nCount = lSource.getLength();
- const css::beans::PropertyValue* pSource = lSource.getConstArray();
- for (sal_Int32 nItem=0; nItem<nCount; ++nItem)
- {
- pSource[nItem].Value >>= lDestination[pSource[nItem].Name];
- }
- return lDestination;
-}
-
-//-----------------------------------------------------------------------------
-/**
- @short convert timestamp from String to tools::DateTime notation
- @descr Format: "<day>.<month>.<year>/<hour>:<min>:<sec>"
- e.g. : "1.11.2001/13:45:16"
-
- @param sString
- timestamp in string notation
-
- @return timestamp in DateTime notation
- */
-DateTime Converter::convert_String2DateTime( /*IN*/ const ::rtl::OUString& sSource )
-{
- DateTime aStamp ;
- sal_Int32 nIndex = 0;
-
- sal_uInt16 nDay = (sal_uInt16)(sSource.getToken( 0, (sal_Unicode)'.', nIndex ).toInt32());
- if( nIndex>0 )
- {
- sal_uInt16 nMonth = (sal_uInt16)(sSource.getToken( 0, (sal_Unicode)'.', nIndex ).toInt32());
- if( nIndex>0 )
- {
- sal_uInt16 nYear = (sal_uInt16)(sSource.getToken( 0, (sal_Unicode)'/', nIndex ).toInt32());
- if( nIndex>0 )
- {
- sal_uInt32 nHour = sSource.getToken( 0, (sal_Unicode)':', nIndex ).toInt32();
- if( nIndex>0 )
- {
- sal_uInt32 nMin = sSource.getToken( 0, (sal_Unicode)':', nIndex ).toInt32();
- if( nIndex>0 && nIndex<sSource.getLength() )
- {
- sal_uInt32 nSec = sSource.copy( nIndex, sSource.getLength()-nIndex ).toInt32();
-
- Date aDate( nDay , nMonth, nYear );
- Time aTime( nHour, nMin , nSec );
- aStamp = DateTime( aDate, aTime );
- }
- }
- }
- }
- }
- return aStamp;
-}
-
-//-----------------------------------------------------------------------------
-/**
- @short convert timestamp from DateTime to String notation
- @descr Format: "<day>.<month>.<year>/<hour>:<min>:<sec>"
- e.g. : "1.11.2001/13:45:16"
-
- @param aStamp
- timestamp in DateTime notation
-
- @return timestamp in String notation
- */
-::rtl::OUString Converter::convert_DateTime2String( /*IN*/ const DateTime& aSource )
-{
- ::rtl::OUStringBuffer sBuffer(25);
-
- sBuffer.append( (sal_Int32)aSource.GetDay() );
- sBuffer.append( (sal_Unicode)'.' );
- sBuffer.append( (sal_Int32)aSource.GetMonth() );
- sBuffer.append( (sal_Unicode)'.' );
- sBuffer.append( (sal_Int32)aSource.GetYear() );
- sBuffer.append( (sal_Unicode)'/' );
- sBuffer.append( (sal_Int32)aSource.GetHour() );
- sBuffer.append( (sal_Unicode)':' );
- sBuffer.append( (sal_Int32)aSource.GetMin() );
- sBuffer.append( (sal_Unicode)':' );
- sBuffer.append( (sal_Int32)aSource.GetSec() );
-
- return sBuffer.makeStringAndClear();
-}
-
-::rtl::OUString Converter::convert_DateTime2ISO8601( const DateTime& aSource )
-{
- ::rtl::OUStringBuffer sBuffer(25);
-
- sal_Int32 nYear = aSource.GetYear();
- sal_Int32 nMonth = aSource.GetMonth();
- sal_Int32 nDay = aSource.GetDay();
-
- sal_Int32 nHour = aSource.GetHour();
- sal_Int32 nMin = aSource.GetMin();
- sal_Int32 nSec = aSource.GetSec();
-
- // write year formated as "YYYY"
- if (nYear<10)
- sBuffer.appendAscii("000");
- else
- if (nYear<100)
- sBuffer.appendAscii("00");
- else
- if (nYear<1000)
- sBuffer.appendAscii("0");
- sBuffer.append( (sal_Int32)nYear );
-
- sBuffer.appendAscii("-");
- // write month formated as "MM"
- if (nMonth<10)
- sBuffer.appendAscii("0");
- sBuffer.append( (sal_Int32)nMonth );
-
- sBuffer.appendAscii("-");
- // write day formated as "DD"
- if (nDay<10)
- sBuffer.appendAscii("0");
- sBuffer.append( (sal_Int32)nDay );
-
- sBuffer.appendAscii("T");
- // write hours formated as "hh"
- if (nHour<10)
- sBuffer.appendAscii("0");
- sBuffer.append( (sal_Int32)nHour );
-
- sBuffer.appendAscii(":");
- // write min formated as "mm"
- if (nMin<10)
- sBuffer.appendAscii("0");
- sBuffer.append( (sal_Int32)nMin );
-
- sBuffer.appendAscii(":");
- // write sec formated as "ss"
- if (nSec<10)
- sBuffer.appendAscii("0");
- sBuffer.append( (sal_Int32)nSec );
-
- sBuffer.appendAscii("Z");
-
- return sBuffer.makeStringAndClear();
-}
-
-} // namespace framework
diff --git a/framework/source/classes/framelistanalyzer.cxx b/framework/source/classes/framelistanalyzer.cxx
deleted file mode 100644
index 22f019e78df5..000000000000
--- a/framework/source/classes/framelistanalyzer.cxx
+++ /dev/null
@@ -1,302 +0,0 @@
-/*************************************************************************
- *
- * 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_framework.hxx"
-
-#include "classes/framelistanalyzer.hxx"
-
-//_______________________________________________
-// my own includes
-#include <threadhelp/writeguard.hxx>
-#include <threadhelp/readguard.hxx>
-#include <targets.h>
-#include <properties.h>
-#include <services.h>
-
-//_______________________________________________
-// interface includes
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/frame/XModuleManager.hpp>
-
-//_______________________________________________
-// includes of other projects
-#include <unotools/processfactory.hxx>
-#include <vcl/svapp.hxx>
-
-//_______________________________________________
-// namespace
-
-namespace framework{
-
-//_______________________________________________
-// non exported const
-
-//_______________________________________________
-// non exported definitions
-
-//_______________________________________________
-// declarations
-
-//_______________________________________________
-
-/**
- */
-
-FrameListAnalyzer::FrameListAnalyzer( const css::uno::Reference< css::frame::XFramesSupplier >& xSupplier ,
- const css::uno::Reference< css::frame::XFrame >& xReferenceFrame ,
- sal_uInt32 eDetectMode )
- : m_xSupplier (xSupplier )
- , m_xReferenceFrame(xReferenceFrame)
- , m_eDetectMode (eDetectMode )
-{
- impl_analyze();
-}
-
-//_______________________________________________
-
-/**
- */
-
-FrameListAnalyzer::~FrameListAnalyzer()
-{
-}
-
-//_______________________________________________
-
-/** returns an analyzed list of all currently opened (top!) frames inside the desktop tree.
-
- We try to get a snapshot of all opened frames, which are part of the desktop frame container.
- Of course we can't access frames, which stands outside of this tree.
- But it's neccessary to collect top frames here only. Otherwhise we interpret closing of last
- frame wrong. Further we analyze this list and split into different parts.
- E.g. for "CloseDoc" we must know, which frames of the given list referr to the same model.
- These frames must be closed then. But all other frames must be untouched.
- In case the request was "CloseWin" these splitted lists can be used too, to decide if the last window
- or document was closed. Then we have to initialize the backing window ...
- Last but not least we must know something about our special help frame. It must be handled
- seperatly. And last but not least - the backing component frame must be detected too.
-*/
-
-void FrameListAnalyzer::impl_analyze()
-{
- // reset all members to get a consistent state
- m_bReferenceIsHidden = sal_False;
- m_bReferenceIsHelp = sal_False;
- m_bReferenceIsBacking = sal_False;
- m_xHelp = css::uno::Reference< css::frame::XFrame >();
- m_xBackingComponent = css::uno::Reference< css::frame::XFrame >();
-
- // try to get the task container by using the given supplier
- css::uno::Reference< css::container::XIndexAccess > xFrameContainer(m_xSupplier->getFrames(), css::uno::UNO_QUERY);
-
- // All return list get an initial size to include all possible frames.
- // They will be packed at the end of this method ... using the actual step positions then.
- sal_Int32 nVisibleStep = 0;
- sal_Int32 nHiddenStep = 0;
- sal_Int32 nModelStep = 0;
- sal_Int32 nCount = xFrameContainer->getCount();
-
- m_lOtherVisibleFrames.realloc(nCount);
- m_lOtherHiddenFrames.realloc(nCount);
- m_lModelFrames.realloc(nCount);
-
- // ask for the model of the given reference frame.
- // It must be compared with the model of every frame of the container
- // to sort it into the list of frames with the same model.
- // Supress this step, if right detect mode isn't set.
- css::uno::Reference< css::frame::XModel > xReferenceModel;
- if ((m_eDetectMode & E_MODEL) == E_MODEL )
- {
- css::uno::Reference< css::frame::XController > xReferenceController;
- if (m_xReferenceFrame.is())
- xReferenceController = m_xReferenceFrame->getController();
- if (xReferenceController.is())
- xReferenceModel = xReferenceController->getModel();
- }
-
- // check, if the reference frame is in hidden mode.
- // But look, if this analyze step is realy needed.
- css::uno::Reference< css::beans::XPropertySet > xSet(m_xReferenceFrame, css::uno::UNO_QUERY);
- if (
- ((m_eDetectMode & E_HIDDEN) == E_HIDDEN) &&
- (xSet.is() )
- )
- {
- xSet->getPropertyValue(FRAME_PROPNAME_ISHIDDEN) >>= m_bReferenceIsHidden;
- }
-
- // check, if the reference frame includes the backing component.
- // But look, if this analyze step is realy needed.
- if ((m_eDetectMode & E_BACKINGCOMPONENT) == E_BACKINGCOMPONENT)
- {
- try
- {
- css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR = ::utl::getProcessServiceFactory();
- css::uno::Reference< css::frame::XModuleManager > xModuleMgr(xSMGR->createInstance(SERVICENAME_MODULEMANAGER), css::uno::UNO_QUERY_THROW);
- ::rtl::OUString sModule = xModuleMgr->identify(m_xReferenceFrame);
- m_bReferenceIsBacking = (sModule.equals(SERVICENAME_STARTMODULE));
- }
- catch(const css::uno::Exception&)
- {}
- }
-
- // check, if the reference frame includes the help module.
- // But look, if this analyze step is realy needed.
- if (
- ((m_eDetectMode & E_HELP) == E_HELP ) &&
- (m_xReferenceFrame.is() ) &&
- (m_xReferenceFrame->getName() == SPECIALTARGET_HELPTASK)
- )
- {
- m_bReferenceIsHelp = sal_True;
- }
-
- try
- {
- // Step over all frames of the desktop frame container and analyze it.
- for (sal_Int32 i=0; i<nCount; ++i)
- {
- // Ignore invalid items ... and of course the reference frame.
- // It will be a member of the given frame list too - but it was already
- // analyzed before!
- css::uno::Reference< css::frame::XFrame > xFrame;
- if (
- !(xFrameContainer->getByIndex(i) >>= xFrame) ||
- !(xFrame.is() ) ||
- (xFrame==m_xReferenceFrame )
- )
- continue;
-
- #ifdef ENABLE_WARNINGS
- if (
- ((m_eDetectMode & E_ZOMBIE) == E_ZOMBIE) &&
- (
- (!xFrame->getContainerWindow().is()) ||
- (!xFrame->getComponentWindow().is())
- )
- )
- {
- LOG_WARNING("FrameListAnalyzer::impl_analyze()", "ZOMBIE!")
- }
- #endif
-
- // -------------------------------------------------
- // a) Is it the special help task?
- // Return it seperated from any return list.
- if (
- ((m_eDetectMode & E_HELP) == E_HELP ) &&
- (xFrame->getName()==SPECIALTARGET_HELPTASK)
- )
- {
- m_xHelp = xFrame;
- continue;
- }
-
- // -------------------------------------------------
- // b) Or is includes this task the special backing component?
- // Return it seperated from any return list.
- // But check if the reference task itself is the backing frame.
- // Our user mst know it to decide right.
- if ((m_eDetectMode & E_BACKINGCOMPONENT) == E_BACKINGCOMPONENT)
- {
- try
- {
- css::uno::Reference< css::lang::XMultiServiceFactory > xSMGR = ::utl::getProcessServiceFactory();
- css::uno::Reference< css::frame::XModuleManager > xModuleMgr(xSMGR->createInstance(SERVICENAME_MODULEMANAGER), css::uno::UNO_QUERY);
- ::rtl::OUString sModule = xModuleMgr->identify(xFrame);
- if (sModule.equals(SERVICENAME_STARTMODULE))
- {
- m_xBackingComponent = xFrame;
- continue;
- }
- }
- catch(const css::uno::Exception&)
- {}
- }
-
- // -------------------------------------------------
- // c) Or is it the a task, which uses the specified model?
- // Add it to the list of "model frames".
- if ((m_eDetectMode & E_MODEL) == E_MODEL)
- {
- css::uno::Reference< css::frame::XController > xController = xFrame->getController();
- css::uno::Reference< css::frame::XModel > xModel ;
- if (xController.is())
- xModel = xController->getModel();
- if (xModel==xReferenceModel)
- {
- m_lModelFrames[nModelStep] = xFrame;
- ++nModelStep;
- continue;
- }
- }
-
- // -------------------------------------------------
- // d) Or is it the a task, which use another or no model at all?
- // Add it to the list of "other frames". But look for it's
- // visible state ... if it's allowed to do so.
- // -------------------------------------------------
- sal_Bool bHidden = sal_False;
- if ((m_eDetectMode & E_HIDDEN) == E_HIDDEN )
- {
- xSet = css::uno::Reference< css::beans::XPropertySet >(xFrame, css::uno::UNO_QUERY);
- if (xSet.is())
- {
- xSet->getPropertyValue(FRAME_PROPNAME_ISHIDDEN) >>= bHidden;
- }
- }
-
- if (bHidden)
- {
- m_lOtherHiddenFrames[nHiddenStep] = xFrame;
- ++nHiddenStep;
- }
- else
- {
- m_lOtherVisibleFrames[nVisibleStep] = xFrame;
- ++nVisibleStep;
- }
- }
- }
- catch(css::lang::IndexOutOfBoundsException)
- {
- // stop copying if index seams to be wrong.
- // This interface can't realy guarantee its count for multithreaded
- // environments. So it can occure!
- }
-
- // Pack both lists by using the actual step positions.
- // All empty or ignorable items should exist at the end of these lists
- // behind the position pointers. So they will be removed by a reallocation.
- m_lOtherVisibleFrames.realloc(nVisibleStep);
- m_lOtherHiddenFrames.realloc(nHiddenStep);
- m_lModelFrames.realloc(nModelStep);
-}
-
-} // namespace framework
diff --git a/framework/source/classes/fwkresid.cxx b/framework/source/classes/fwkresid.cxx
deleted file mode 100644
index 54b37da6dbf7..000000000000
--- a/framework/source/classes/fwkresid.cxx
+++ /dev/null
@@ -1,65 +0,0 @@
-/*************************************************************************
- *
- * 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_framework.hxx"
-
-#include "classes/fwkresid.hxx"
-#include <tools/string.hxx>
-#include <vos/mutex.hxx>
-#include <vcl/svapp.hxx>
-
-#include <rtl/strbuf.hxx>
-
-namespace framework
-{
-
-ResMgr* FwkResId::GetResManager()
-{
- static ResMgr* pResMgr = NULL;
-
- if ( !pResMgr )
- {
- rtl::OStringBuffer aBuf( 32 );
- aBuf.append( "fwe" );
-
- vos::OGuard aSolarGuard( Application::GetSolarMutex() );
- pResMgr = ResMgr::CreateResMgr( aBuf.getStr() );
- }
-
- return pResMgr;
-}
-
-// -----------------------------------------------------------------------
-
-FwkResId::FwkResId( USHORT nId ) :
- ResId( nId, *FwkResId::GetResManager() )
-{
-}
-
-}
-
diff --git a/framework/source/classes/fwktabwindow.cxx b/framework/source/classes/fwktabwindow.cxx
index aa550807460c..a441f251a592 100644
--- a/framework/source/classes/fwktabwindow.cxx
+++ b/framework/source/classes/fwktabwindow.cxx
@@ -30,7 +30,7 @@
#include <classes/fwktabwindow.hxx>
#include "framework.hrc"
-#include <classes/fwlresid.hxx>
+#include <classes/fwkresid.hxx>
#include <com/sun/star/awt/PosSize.hpp>
#include <com/sun/star/awt/XContainerWindowEventHandler.hpp>
@@ -205,9 +205,9 @@ void FwkTabPage::Resize()
FwkTabWindow::FwkTabWindow( Window* pParent ) :
- Window( pParent, FwlResId( WIN_TABWINDOW ) ),
+ Window( pParent, FwkResId( WIN_TABWINDOW ) ),
- m_aTabCtrl ( this, FwlResId( TC_TABCONTROL ) )
+ m_aTabCtrl ( this, FwkResId( TC_TABCONTROL ) )
{
uno::Reference < lang::XMultiServiceFactory > xFactory( ::comphelper::getProcessServiceFactory() );
m_xWinProvider = uno::Reference < awt::XContainerWindowProvider >(
diff --git a/framework/source/classes/imagewrapper.cxx b/framework/source/classes/imagewrapper.cxx
deleted file mode 100644
index 82a7f684413c..000000000000
--- a/framework/source/classes/imagewrapper.cxx
+++ /dev/null
@@ -1,120 +0,0 @@
-/*************************************************************************
- *
- * 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_framework.hxx"
-
-#include <classes/imagewrapper.hxx>
-#include <osl/mutex.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/bitmap.hxx>
-#include <vcl/bitmapex.hxx>
-#include <tools/stream.hxx>
-#include <cppuhelper/typeprovider.hxx>
-
-using namespace com::sun::star::lang;
-using namespace com::sun::star::uno;
-
-namespace framework
-{
-
-static Sequence< sal_Int8 > impl_getStaticIdentifier()
-{
- static sal_uInt8 pGUID[16] = { 0x46, 0xAD, 0x69, 0xFB, 0xA7, 0xBE, 0x44, 0x83, 0xB2, 0xA7, 0xB3, 0xEC, 0x59, 0x4A, 0xB7, 0x00 };
- static ::com::sun::star::uno::Sequence< sal_Int8 > seqID((sal_Int8*)pGUID,16) ;
- return seqID ;
-}
-
-
-ImageWrapper::ImageWrapper( const Image& aImage ) : ThreadHelpBase( &Application::GetSolarMutex() )
- , m_aImage( aImage )
-{
-}
-
-
-ImageWrapper::~ImageWrapper()
-{
-}
-
-
-Sequence< sal_Int8 > ImageWrapper::GetUnoTunnelId()
-{
- return impl_getStaticIdentifier();
-}
-
-// XBitmap
-com::sun::star::awt::Size SAL_CALL ImageWrapper::getSize() throw ( RuntimeException )
-{
- vos::OGuard aGuard( Application::GetSolarMutex() );
-
- BitmapEx aBitmapEx( m_aImage.GetBitmapEx() );
- Size aBitmapSize( aBitmapEx.GetSizePixel() );
-
- return com::sun::star::awt::Size( aBitmapSize.Width(), aBitmapSize.Height() );
-}
-
-Sequence< sal_Int8 > SAL_CALL ImageWrapper::getDIB() throw ( RuntimeException )
-{
- vos::OGuard aGuard( Application::GetSolarMutex() );
-
- SvMemoryStream aMem;
- aMem << m_aImage.GetBitmapEx().GetBitmap();
- return Sequence< sal_Int8 >( (sal_Int8*) aMem.GetData(), aMem.Tell() );
-}
-
-Sequence< sal_Int8 > SAL_CALL ImageWrapper::getMaskDIB() throw ( RuntimeException )
-{
- vos::OGuard aGuard( Application::GetSolarMutex() );
- BitmapEx aBmpEx( m_aImage.GetBitmapEx() );
-
- if ( aBmpEx.IsAlpha() )
- {
- SvMemoryStream aMem;
- aMem << aBmpEx.GetAlpha().GetBitmap();
- return Sequence< sal_Int8 >( (sal_Int8*) aMem.GetData(), aMem.Tell() );
- }
- else if ( aBmpEx.IsTransparent() )
- {
- SvMemoryStream aMem;
- aMem << aBmpEx.GetMask();
- return Sequence< sal_Int8 >( (sal_Int8*) aMem.GetData(), aMem.Tell() );
- }
-
- return Sequence< sal_Int8 >();
-}
-
-// XUnoTunnel
-sal_Int64 SAL_CALL ImageWrapper::getSomething( const Sequence< sal_Int8 >& aIdentifier ) throw ( RuntimeException )
-{
- if ( aIdentifier == impl_getStaticIdentifier() )
- return reinterpret_cast< sal_Int64 >( this );
- else
- return 0;
-}
-
-}
-
diff --git a/framework/source/classes/makefile.mk b/framework/source/classes/makefile.mk
deleted file mode 100644
index 22e8a6d540f0..000000000000
--- a/framework/source/classes/makefile.mk
+++ /dev/null
@@ -1,69 +0,0 @@
-#*************************************************************************
-#
-# 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.
-#
-#*************************************************************************
-PRJ=..$/..
-
-PRJNAME= framework
-TARGET= fwk_classes
-ENABLE_EXCEPTIONS= TRUE
-
-# --- Settings -----------------------------------------------------
-
-.INCLUDE : settings.mk
-
-# --- Generate -----------------------------------------------------
-
-SLOFILES= \
- $(SLO)$/propertysethelper.obj \
- $(SLO)$/framecontainer.obj \
- $(SLO)$/taskcreator.obj \
- $(SLO)$/menumanager.obj \
- $(SLO)$/bmkmenu.obj \
- $(SLO)$/droptargetlistener.obj \
- $(SLO)$/converter.obj \
- $(SLO)$/actiontriggerpropertyset.obj \
- $(SLO)$/actiontriggerseparatorpropertyset.obj \
- $(SLO)$/actiontriggercontainer.obj \
- $(SLO)$/imagewrapper.obj \
- $(SLO)$/rootactiontriggercontainer.obj \
- $(SLO)$/protocolhandlercache.obj \
- $(SLO)$/addonmenu.obj \
- $(SLO)$/addonsoptions.obj \
- $(SLO)$/fwkresid.obj \
- $(SLO)$/fwlresid.obj \
- $(SLO)$/framelistanalyzer.obj \
- $(SLO)$/sfxhelperfunctions.obj \
- $(SLO)$/menuextensionsupplier.obj \
- $(SLO)$/fwktabwindow.obj
-
-SRS1NAME=$(TARGET)
-SRC1FILES =\
- resource.src
-
-# --- Targets ------------------------------------------------------
-
-.INCLUDE : target.mk
-
diff --git a/framework/source/classes/menuextensionsupplier.cxx b/framework/source/classes/menuextensionsupplier.cxx
deleted file mode 100644
index 07991c61f90f..000000000000
--- a/framework/source/classes/menuextensionsupplier.cxx
+++ /dev/null
@@ -1,64 +0,0 @@
-/*************************************************************************
- *
- * 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_framework.hxx"
-#include <classes/menuextensionsupplier.hxx>
-#include <osl/mutex.hxx>
-
-static pfunc_setMenuExtensionSupplier pMenuExtensionSupplierFunc = NULL;
-
-namespace framework
-{
-
-pfunc_setMenuExtensionSupplier SAL_CALL SetMenuExtensionSupplier( pfunc_setMenuExtensionSupplier pMenuExtensionSupplierFuncArg )
-{
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
-
- pfunc_setMenuExtensionSupplier pOldMenuExtensionSupplierFunc = pMenuExtensionSupplierFunc;
- pMenuExtensionSupplierFunc = pMenuExtensionSupplierFuncArg;
- return pOldMenuExtensionSupplierFunc;
-}
-
-MenuExtensionItem SAL_CALL GetMenuExtension()
-{
- MenuExtensionItem aItem;
-
- pfunc_setMenuExtensionSupplier pLocalMenuExtensionSupplierFunc( 0 );
-
- {
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- pLocalMenuExtensionSupplierFunc = pMenuExtensionSupplierFunc;
- }
-
- if ( pLocalMenuExtensionSupplierFunc )
- return (*pLocalMenuExtensionSupplierFunc)();
- else
- return aItem;
-}
-
-}
diff --git a/framework/source/classes/menumanager.cxx b/framework/source/classes/menumanager.cxx
index 61cb8eb4a253..493ac9dfb4a1 100644
--- a/framework/source/classes/menumanager.cxx
+++ b/framework/source/classes/menumanager.cxx
@@ -33,12 +33,12 @@
// my own includes
//_________________________________________________________________________________________________________________
#include <classes/menumanager.hxx>
-#include <xml/menuconfiguration.hxx>
-#include <classes/bmkmenu.hxx>
-#include <classes/addonmenu.hxx>
-#include <helper/imageproducer.hxx>
+#include <framework/menuconfiguration.hxx>
+#include <framework/bmkmenu.hxx>
+#include <framework/addonmenu.hxx>
+#include <framework/imageproducer.hxx>
#include <threadhelp/resetableguard.hxx>
-#include "classes/addonsoptions.hxx"
+#include "framework/addonsoptions.hxx"
#include <classes/fwkresid.hxx>
#include <services.h>
#include "classes/resource.hrc"
diff --git a/framework/source/classes/propertysethelper.cxx b/framework/source/classes/propertysethelper.cxx
deleted file mode 100644
index 2e41106a9ceb..000000000000
--- a/framework/source/classes/propertysethelper.cxx
+++ /dev/null
@@ -1,450 +0,0 @@
-/*************************************************************************
- *
- * 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_framework.hxx"
-
-//_________________________________________________________________________________________________________________
-// my own includes
-
-#include <classes/propertysethelper.hxx>
-#include <threadhelp/transactionguard.hxx>
-#include <threadhelp/readguard.hxx>
-#include <threadhelp/writeguard.hxx>
-
-//_________________________________________________________________________________________________________________
-// interface includes
-
-//_________________________________________________________________________________________________________________
-// other includes
-
-//_________________________________________________________________________________________________________________
-// namespace
-
-namespace framework{
-
-//_________________________________________________________________________________________________________________
-// non exported definitions
-
-//-----------------------------------------------------------------------------
-PropertySetHelper::PropertySetHelper(const css::uno::Reference< css::lang::XMultiServiceFactory >& xSMGR ,
- LockHelper* pExternalLock ,
- TransactionManager* pExternalTransactionManager ,
- sal_Bool bReleaseLockOnCall )
- : m_xSMGR (xSMGR )
- , m_lSimpleChangeListener(pExternalLock->getShareableOslMutex())
- , m_lVetoChangeListener (pExternalLock->getShareableOslMutex())
- , m_bReleaseLockOnCall (bReleaseLockOnCall )
- , m_rLock (*pExternalLock )
- , m_rTransactionManager (*pExternalTransactionManager )
-{
-}
-
-//-----------------------------------------------------------------------------
-PropertySetHelper::~PropertySetHelper()
-{
-}
-
-//-----------------------------------------------------------------------------
-void PropertySetHelper::impl_setPropertyChangeBroadcaster(const css::uno::Reference< css::uno::XInterface >& xBroadcaster)
-{
- TransactionGuard aTransaction(m_rTransactionManager, E_SOFTEXCEPTIONS);
-
- // SAFE ->
- WriteGuard aWriteLock(m_rLock);
- m_xBroadcaster = xBroadcaster;
- aWriteLock.unlock();
- // <- SAFE
-}
-
-//-----------------------------------------------------------------------------
-void SAL_CALL PropertySetHelper::impl_addPropertyInfo(const css::beans::Property& aProperty)
- throw(css::beans::PropertyExistException,
- css::uno::Exception )
-{
- TransactionGuard aTransaction(m_rTransactionManager, E_SOFTEXCEPTIONS);
-
- // SAFE ->
- WriteGuard aWriteLock(m_rLock);
-
- PropertySetHelper::TPropInfoHash::const_iterator pIt = m_lProps.find(aProperty.Name);
- if (pIt != m_lProps.end())
- throw css::beans::PropertyExistException();
-
- m_lProps[aProperty.Name] = aProperty;
- // <- SAFE
-}
-
-//-----------------------------------------------------------------------------
-void SAL_CALL PropertySetHelper::impl_removePropertyInfo(const ::rtl::OUString& sProperty)
- throw(css::beans::UnknownPropertyException,
- css::uno::Exception )
-{
- TransactionGuard aTransaction(m_rTransactionManager, E_SOFTEXCEPTIONS);
-
- // SAFE ->
- WriteGuard aWriteLock(m_rLock);
-
- PropertySetHelper::TPropInfoHash::iterator pIt = m_lProps.find(sProperty);
- if (pIt == m_lProps.end())
- throw css::beans::UnknownPropertyException();
-
- m_lProps.erase(pIt);
- // <- SAFE
-}
-
-//-----------------------------------------------------------------------------
-void SAL_CALL PropertySetHelper::impl_enablePropertySet()
-{
-}
-
-//-----------------------------------------------------------------------------
-void SAL_CALL PropertySetHelper::impl_disablePropertySet()
-{
- TransactionGuard aTransaction(m_rTransactionManager, E_SOFTEXCEPTIONS);
-
- // SAFE ->
- WriteGuard aWriteLock(m_rLock);
-
- css::uno::Reference< css::uno::XInterface > xThis(static_cast< css::beans::XPropertySet* >(this), css::uno::UNO_QUERY);
- css::lang::EventObject aEvent(xThis);
-
- m_lSimpleChangeListener.disposeAndClear(aEvent);
- m_lVetoChangeListener.disposeAndClear(aEvent);
- m_lProps.free();
-
- aWriteLock.unlock();
- // <- SAFE
-}
-
-//-----------------------------------------------------------------------------
-sal_Bool PropertySetHelper::impl_existsVeto(const css::beans::PropertyChangeEvent& aEvent)
-{
- /* Dont use the lock here!
- The used helper is threadsafe and it lives for the whole lifetime of
- our own object.
- */
- ::cppu::OInterfaceContainerHelper* pVetoListener = m_lVetoChangeListener.getContainer(aEvent.PropertyName);
- if (! pVetoListener)
- return sal_False;
-
- ::cppu::OInterfaceIteratorHelper pListener(*pVetoListener);
- while (pListener.hasMoreElements())
- {
- try
- {
- css::uno::Reference< css::beans::XVetoableChangeListener > xListener(
- ((css::beans::XVetoableChangeListener*)pListener.next()),
- css::uno::UNO_QUERY_THROW);
- xListener->vetoableChange(aEvent);
- }
- catch(const css::uno::RuntimeException&)
- { pListener.remove(); }
- catch(const css::beans::PropertyVetoException&)
- { return sal_True; }
- }
-
- return sal_False;
-}
-
-//-----------------------------------------------------------------------------
-void PropertySetHelper::impl_notifyChangeListener(const css::beans::PropertyChangeEvent& aEvent)
-{
- /* Dont use the lock here!
- The used helper is threadsafe and it lives for the whole lifetime of
- our own object.
- */
- ::cppu::OInterfaceContainerHelper* pSimpleListener = m_lSimpleChangeListener.getContainer(aEvent.PropertyName);
- if (! pSimpleListener)
- return;
-
- ::cppu::OInterfaceIteratorHelper pListener(*pSimpleListener);
- while (pListener.hasMoreElements())
- {
- try
- {
- css::uno::Reference< css::beans::XPropertyChangeListener > xListener(
- ((css::beans::XVetoableChangeListener*)pListener.next()),
- css::uno::UNO_QUERY_THROW);
- xListener->propertyChange(aEvent);
- }
- catch(const css::uno::RuntimeException&)
- { pListener.remove(); }
- }
-}
-
-//-----------------------------------------------------------------------------
-css::uno::Reference< css::beans::XPropertySetInfo > SAL_CALL PropertySetHelper::getPropertySetInfo()
- throw(css::uno::RuntimeException)
-{
- TransactionGuard aTransaction(m_rTransactionManager, E_HARDEXCEPTIONS);
-
- css::uno::Reference< css::beans::XPropertySetInfo > xInfo(static_cast< css::beans::XPropertySetInfo* >(this), css::uno::UNO_QUERY_THROW);
- return xInfo;
-}
-
-//-----------------------------------------------------------------------------
-void SAL_CALL PropertySetHelper::setPropertyValue(const ::rtl::OUString& sProperty,
- const css::uno::Any& aValue )
- throw(css::beans::UnknownPropertyException,
- css::beans::PropertyVetoException ,
- css::lang::IllegalArgumentException ,
- css::lang::WrappedTargetException ,
- css::uno::RuntimeException )
-{
- // TODO look for e.g. readonly props and reject setProp() call!
-
- TransactionGuard aTransaction(m_rTransactionManager, E_HARDEXCEPTIONS);
-
- // SAFE ->
- WriteGuard aWriteLock(m_rLock);
-
- PropertySetHelper::TPropInfoHash::const_iterator pIt = m_lProps.find(sProperty);
- if (pIt == m_lProps.end())
- throw css::beans::UnknownPropertyException();
-
- css::beans::Property aPropInfo = pIt->second;
-
- sal_Bool bLocked = sal_True;
- if (m_bReleaseLockOnCall)
- {
- aWriteLock.unlock();
- bLocked = sal_False;
- // <- SAFE
- }
-
- css::uno::Any aCurrentValue = impl_getPropertyValue(aPropInfo.Name, aPropInfo.Handle);
-
- if (! bLocked)
- {
- // SAFE ->
- aWriteLock.lock();
- bLocked = sal_True;
- }
-
- sal_Bool bWillBeChanged = (aCurrentValue != aValue);
- if (! bWillBeChanged)
- return;
-
- css::beans::PropertyChangeEvent aEvent;
- aEvent.PropertyName = aPropInfo.Name;
- aEvent.Further = sal_False;
- aEvent.PropertyHandle = aPropInfo.Handle;
- aEvent.OldValue = aCurrentValue;
- aEvent.NewValue = aValue;
- aEvent.Source = css::uno::Reference< css::uno::XInterface >(m_xBroadcaster.get(), css::uno::UNO_QUERY);
-
- if (m_bReleaseLockOnCall)
- {
- aWriteLock.unlock();
- bLocked = sal_False;
- // <- SAFE
- }
-
- if (impl_existsVeto(aEvent))
- throw css::beans::PropertyVetoException();
-
- impl_setPropertyValue(aPropInfo.Name, aPropInfo.Handle, aValue);
-
- impl_notifyChangeListener(aEvent);
-}
-
-//-----------------------------------------------------------------------------
-css::uno::Any SAL_CALL PropertySetHelper::getPropertyValue(const ::rtl::OUString& sProperty)
- throw(css::beans::UnknownPropertyException,
- css::lang::WrappedTargetException ,
- css::uno::RuntimeException )
-{
- TransactionGuard aTransaction(m_rTransactionManager, E_HARDEXCEPTIONS);
-
- // SAFE ->
- ReadGuard aReadLock(m_rLock);
-
- PropertySetHelper::TPropInfoHash::const_iterator pIt = m_lProps.find(sProperty);
- if (pIt == m_lProps.end())
- throw css::beans::UnknownPropertyException();
-
- css::beans::Property aPropInfo = pIt->second;
-
- sal_Bool bLocked = sal_True;
- if (m_bReleaseLockOnCall)
- {
- aReadLock.unlock();
- bLocked = sal_False;
- // <- SAFE
- }
-
- return impl_getPropertyValue(aPropInfo.Name, aPropInfo.Handle);
-}
-
-//-----------------------------------------------------------------------------
-void SAL_CALL PropertySetHelper::addPropertyChangeListener(const ::rtl::OUString& sProperty,
- const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener)
- throw(css::beans::UnknownPropertyException,
- css::lang::WrappedTargetException ,
- css::uno::RuntimeException )
-{
- TransactionGuard aTransaction(m_rTransactionManager, E_HARDEXCEPTIONS);
-
- // SAFE ->
- ReadGuard aReadLock(m_rLock);
-
- PropertySetHelper::TPropInfoHash::const_iterator pIt = m_lProps.find(sProperty);
- if (pIt == m_lProps.end())
- throw css::beans::UnknownPropertyException();
-
- aReadLock.unlock();
- // <- SAFE
-
- m_lSimpleChangeListener.addInterface(sProperty, xListener);
-}
-
-//-----------------------------------------------------------------------------
-void SAL_CALL PropertySetHelper::removePropertyChangeListener(const ::rtl::OUString& sProperty,
- const css::uno::Reference< css::beans::XPropertyChangeListener >& xListener)
- throw(css::beans::UnknownPropertyException,
- css::lang::WrappedTargetException ,
- css::uno::RuntimeException )
-{
- TransactionGuard aTransaction(m_rTransactionManager, E_SOFTEXCEPTIONS);
-
- // SAFE ->
- ReadGuard aReadLock(m_rLock);
-
- PropertySetHelper::TPropInfoHash::const_iterator pIt = m_lProps.find(sProperty);
- if (pIt == m_lProps.end())
- throw css::beans::UnknownPropertyException();
-
- aReadLock.unlock();
- // <- SAFE
-
- m_lSimpleChangeListener.removeInterface(sProperty, xListener);
-}
-
-//-----------------------------------------------------------------------------
-void SAL_CALL PropertySetHelper::addVetoableChangeListener(const ::rtl::OUString& sProperty,
- const css::uno::Reference< css::beans::XVetoableChangeListener >& xListener)
- throw(css::beans::UnknownPropertyException,
- css::lang::WrappedTargetException ,
- css::uno::RuntimeException )
-{
- TransactionGuard aTransaction(m_rTransactionManager, E_HARDEXCEPTIONS);
-
- // SAFE ->
- ReadGuard aReadLock(m_rLock);
-
- PropertySetHelper::TPropInfoHash::const_iterator pIt = m_lProps.find(sProperty);
- if (pIt == m_lProps.end())
- throw css::beans::UnknownPropertyException();
-
- aReadLock.unlock();
- // <- SAFE
-
- m_lVetoChangeListener.addInterface(sProperty, xListener);
-}
-
-//-----------------------------------------------------------------------------
-void SAL_CALL PropertySetHelper::removeVetoableChangeListener(const ::rtl::OUString& sProperty,
- const css::uno::Reference< css::beans::XVetoableChangeListener >& xListener)
- throw(css::beans::UnknownPropertyException,
- css::lang::WrappedTargetException ,
- css::uno::RuntimeException )
-{
- TransactionGuard aTransaction(m_rTransactionManager, E_SOFTEXCEPTIONS);
-
- // SAFE ->
- ReadGuard aReadLock(m_rLock);
-
- PropertySetHelper::TPropInfoHash::const_iterator pIt = m_lProps.find(sProperty);
- if (pIt == m_lProps.end())
- throw css::beans::UnknownPropertyException();
-
- aReadLock.unlock();
- // <- SAFE
-
- m_lVetoChangeListener.removeInterface(sProperty, xListener);
-}
-
-//-----------------------------------------------------------------------------
-css::uno::Sequence< css::beans::Property > SAL_CALL PropertySetHelper::getProperties()
- throw(css::uno::RuntimeException)
-{
- TransactionGuard aTransaction(m_rTransactionManager, E_HARDEXCEPTIONS);
-
- // SAFE ->
- ReadGuard aReadLock(m_rLock);
-
- sal_Int32 c = (sal_Int32)m_lProps.size();
- css::uno::Sequence< css::beans::Property > lProps(c);
- PropertySetHelper::TPropInfoHash::const_iterator pIt ;
-
- for ( pIt = m_lProps.begin();
- pIt != m_lProps.end() ;
- ++pIt )
- {
- lProps[--c] = pIt->second;
- }
-
- return lProps;
- // <- SAFE
-}
-
-//-----------------------------------------------------------------------------
-css::beans::Property SAL_CALL PropertySetHelper::getPropertyByName(const ::rtl::OUString& sName)
- throw(css::beans::UnknownPropertyException,
- css::uno::RuntimeException )
-{
- TransactionGuard aTransaction(m_rTransactionManager, E_HARDEXCEPTIONS);
-
- // SAFE ->
- ReadGuard aReadLock(m_rLock);
-
- PropertySetHelper::TPropInfoHash::const_iterator pIt = m_lProps.find(sName);
- if (pIt == m_lProps.end())
- throw css::beans::UnknownPropertyException();
-
- return pIt->second;
- // <- SAFE
-}
-
-//-----------------------------------------------------------------------------
-sal_Bool SAL_CALL PropertySetHelper::hasPropertyByName(const ::rtl::OUString& sName)
- throw(css::uno::RuntimeException)
-{
- TransactionGuard aTransaction(m_rTransactionManager, E_HARDEXCEPTIONS);
-
- // SAFE ->
- ReadGuard aReadLock(m_rLock);
-
- PropertySetHelper::TPropInfoHash::iterator pIt = m_lProps.find(sName);
- sal_Bool bExist = (pIt != m_lProps.end());
-
- return bExist;
- // <- SAFE
-}
-
-} // namespace framework
diff --git a/framework/source/classes/protocolhandlercache.cxx b/framework/source/classes/protocolhandlercache.cxx
deleted file mode 100644
index 266100ce4f43..000000000000
--- a/framework/source/classes/protocolhandlercache.cxx
+++ /dev/null
@@ -1,361 +0,0 @@
-/*************************************************************************
- *
- * 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_framework.hxx"
-
-/*TODO
- - change "singleton" behaviour by using new helper ::comhelper::SingletonRef
- - rename method exist() to existHandlerForURL() or similar one
- - may its a good idea to replace struct ProtocolHandler by css::beans::NamedValue type?!
-*/
-
-//_________________________________________________________________________________________________________________
-// my own includes
-//_________________________________________________________________________________________________________________
-
-#include <classes/protocolhandlercache.hxx>
-#include <classes/converter.hxx>
-#include <threadhelp/readguard.hxx>
-#include <threadhelp/writeguard.hxx>
-#include <threadhelp/lockhelper.hxx>
-
-//_________________________________________________________________________________________________________________
-// interface includes
-//_________________________________________________________________________________________________________________
-
-//_________________________________________________________________________________________________________________
-// other includes
-//_________________________________________________________________________________________________________________
-#include <tools/wldcrd.hxx>
-#include <unotools/configpathes.hxx>
-#include <rtl/ustrbuf.hxx>
-
-//_________________________________________________________________________________________________________________
-// namespace
-//_________________________________________________________________________________________________________________
-
-namespace framework{
-
-//_________________________________________________________________________________________________________________
-// non exported const
-//_________________________________________________________________________________________________________________
-
-//_________________________________________________________________________________________________________________
-// non exported definitions
-//_________________________________________________________________________________________________________________
-
-/**
- @short overloaded index operator of hash map to support pattern key search
- @descr All keys inside this hash map are URL pattern which points to an uno
- implementation name of a protocol handler service which is registered
- for this pattern. This operator makes it easy to find such registered
- handler by using a full qualified URL and compare it with all pattern
- keys.
-
- @param sURL
- the full qualified URL which should match to a registered pattern
-
- @return An iterator which points to the found item inside the hash or PatternHash::end()
- if no pattern match this given <var>sURL</var>.
-
- @modified 30.04.2002 09:52, as96863
- */
-PatternHash::iterator PatternHash::findPatternKey( const ::rtl::OUString& sURL )
-{
- PatternHash::iterator pItem = this->begin();
- while( pItem!=this->end() )
- {
- WildCard aPattern(pItem->first);
- if (aPattern.Matches(sURL))
- break;
- ++pItem;
- }
- return pItem;
-}
-
-//_________________________________________________________________________________________________________________
-
-/**
- @short initialize static member of class HandlerCache
- @descr We use a singleton pattern to implement this handler cache.
- That means it use two static member list to hold all neccessary informations
- and a ref count mechanism to create/destroy it on demand.
-
- @modified 30.04.2002 11:13, as96863
- */
-HandlerHash* HandlerCache::m_pHandler = NULL;
-PatternHash* HandlerCache::m_pPattern = NULL;
-sal_Int32 HandlerCache::m_nRefCount = 0 ;
-HandlerCFGAccess* HandlerCache::m_pConfig = NULL;
-
-//_________________________________________________________________________________________________________________
-
-/**
- @short ctor of the cache of all registered protoco handler
- @descr It tries to open the right configuration package automaticly
- and fill the internal structures. After that the cache can be
- used for read access on this data and perform some search
- operations on it.
-
- @modified 30.04.2002 10:02, as96863
- */
-HandlerCache::HandlerCache()
-{
- /* SAFE */{
- WriteGuard aGlobalLock( LockHelper::getGlobalLock() );
-
- if (m_nRefCount==0)
- {
- m_pHandler = new HandlerHash();
- m_pPattern = new PatternHash();
- m_pConfig = new HandlerCFGAccess(PACKAGENAME_PROTOCOLHANDLER);
- m_pConfig->read(&m_pHandler,&m_pPattern);
- m_pConfig->setCache(this);
- }
-
- ++m_nRefCount;
- /* SAFE */}
-}
-
-//_________________________________________________________________________________________________________________
-
-/**
- @short dtor of the cache
- @descr It frees all used memory. In further implementations (may if we support write access too)
- it's a good place to flush changes back to the configuration - but not needed yet.
-
- @modified 30.04.2002 09:54, as96863
- */
-HandlerCache::~HandlerCache()
-{
- /* SAFE */{
- WriteGuard aGlobalLock( LockHelper::getGlobalLock() );
-
- if( m_nRefCount==1)
- {
- m_pConfig->setCache(NULL);
- m_pHandler->free();
- m_pPattern->free();
-
- delete m_pConfig;
- delete m_pHandler;
- delete m_pPattern;
- m_pConfig = NULL;
- m_pHandler= NULL;
- m_pPattern= NULL;
- }
-
- --m_nRefCount;
- /* SAFE */}
-}
-
-//_________________________________________________________________________________________________________________
-
-/**
- @short dtor of the cache
- @descr It frees all used memory. In further implementations (may if we support write access too)
- it's a good place to flush changes back to the configuration - but not needed yet.
-
- @modified 30.04.2002 09:54, as96863
- */
-sal_Bool HandlerCache::search( const ::rtl::OUString& sURL, ProtocolHandler* pReturn ) const
-{
- sal_Bool bFound = sal_False;
- /* SAFE */{
- ReadGuard aReadLock( LockHelper::getGlobalLock() );
- PatternHash::const_iterator pItem = m_pPattern->findPatternKey(sURL);
- if (pItem!=m_pPattern->end())
- {
- *pReturn = (*m_pHandler)[pItem->second];
- bFound = sal_True;
- }
- /* SAFE */}
- return bFound;
-}
-
-//_________________________________________________________________________________________________________________
-
-/**
- @short search for a registered handler by using an URL struct
- @descr We combine neccessary parts of this struct to a valid URL string
- and call our other search method ...
- It's a helper for outside code.
-
- @modified 30.04.2002 09:54, as96863
- */
-sal_Bool HandlerCache::search( const css::util::URL& aURL, ProtocolHandler* pReturn ) const
-{
- return search( aURL.Complete, pReturn );
-}
-
-//_________________________________________________________________________________________________________________
-
-sal_Bool HandlerCache::exists( const ::rtl::OUString& sURL ) const
-{
- sal_Bool bFound = sal_False;
- /* SAFE */{
- ReadGuard aReadLock( LockHelper::getGlobalLock() );
- PatternHash::const_iterator pItem = m_pPattern->findPatternKey(sURL);
- bFound = pItem!=m_pPattern->end();
- /* SAFE */}
- return bFound;
-}
-
-//_________________________________________________________________________________________________________________
-void HandlerCache::takeOver(HandlerHash* pHandler, PatternHash* pPattern)
-{
- // SAFE ->
- WriteGuard aWriteLock( LockHelper::getGlobalLock() );
-
- HandlerHash* pOldHandler = m_pHandler;
- PatternHash* pOldPattern = m_pPattern;
-
- m_pHandler = pHandler;
- m_pPattern = pPattern;
-
- pOldHandler->free();
- pOldPattern->free();
- delete pOldHandler;
- delete pOldPattern;
-
- aWriteLock.unlock();
- // <- SAFE
-}
-
-//_________________________________________________________________________________________________________________
-
-/**
- @short dtor of the config access class
- @descr It opens the configuration package automaticly by using base class mechanism.
- After that "read()" method of this class should be called to use it.
-
- @param sPackage
- specifies the package name of the configuration data which should be used
-
- @modified 30.04.2002 10:06, as96863
- */
-HandlerCFGAccess::HandlerCFGAccess( const ::rtl::OUString& sPackage )
- : ConfigItem( sPackage )
-{
- css::uno::Sequence< ::rtl::OUString > lListenPathes(1);
- lListenPathes[0] = SETNAME_HANDLER;
- EnableNotification(lListenPathes);
-}
-
-//_________________________________________________________________________________________________________________
-
-/**
- @short use base class mechanism to fill given structures
- @descr User use us as a wrapper between configuration api and his internal structures.
- He give us some pointer to his member and we fill it.
-
- @param pHandler
- pointer to a list of protocol handler infos
-
- @param pPattern
- reverse map of handler pattern to her uno names
-
- @modified 30.04.2002 09:54, as96863
- */
-void HandlerCFGAccess::read( HandlerHash** ppHandler ,
- PatternHash** ppPattern )
-{
- // list of all uno implementation names without encoding
- css::uno::Sequence< ::rtl::OUString > lNames = GetNodeNames( SETNAME_HANDLER, ::utl::CONFIG_NAME_LOCAL_PATH );
- sal_Int32 nSourceCount = lNames.getLength();
- sal_Int32 nTargetCount = nSourceCount;
- // list of all full qualified path names of configuration entries
- css::uno::Sequence< ::rtl::OUString > lFullNames ( nTargetCount );
-
- // expand names to full path names
- sal_Int32 nSource=0;
- sal_Int32 nTarget=0;
- for( nSource=0; nSource<nSourceCount; ++nSource )
- {
- ::rtl::OUStringBuffer sPath( SETNAME_HANDLER );
- sPath.append(CFG_PATH_SEPERATOR);
- sPath.append(lNames[nSource]);
- sPath.append(CFG_PATH_SEPERATOR);
- sPath.append(PROPERTY_PROTOCOLS);
-
- lFullNames[nTarget] = sPath.makeStringAndClear();
- ++nTarget;
- }
-
- // get values at all
- css::uno::Sequence< css::uno::Any > lValues = GetProperties( lFullNames );
- LOG_ASSERT2( lFullNames.getLength()!=lValues.getLength(), "HandlerCFGAccess::read()", "Miss some configuration values of handler set!" )
-
- // fill structures
- nSource = 0;
- for( nTarget=0; nTarget<nTargetCount; ++nTarget )
- {
- // create it new for every loop to guarantee a real empty object!
- ProtocolHandler aHandler;
- aHandler.m_sUNOName = ::utl::extractFirstFromConfigurationPath(lNames[nSource]);
-
- // unpack all values of this handler
- css::uno::Sequence< ::rtl::OUString > lTemp;
- lValues[nTarget] >>= lTemp;
- aHandler.m_lProtocols = Converter::convert_seqOUString2OUStringList(lTemp);
-
- // register his pattern into the performance search hash
- for (OUStringList::iterator pItem =aHandler.m_lProtocols.begin();
- pItem!=aHandler.m_lProtocols.end() ;
- ++pItem )
- {
- (**ppPattern)[*pItem] = lNames[nSource];
- }
-
- // �nsert the handler info into the normal handler cache
- (**ppHandler)[lNames[nSource]] = aHandler;
- ++nSource;
- }
-}
-
-//_________________________________________________________________________________________________________________
-void HandlerCFGAccess::Notify(const css::uno::Sequence< rtl::OUString >& /*lPropertyNames*/)
-{
- HandlerHash* pHandler = new HandlerHash;
- PatternHash* pPattern = new PatternHash;
-
- read(&pHandler, &pPattern);
- if (m_pCache)
- m_pCache->takeOver(pHandler, pPattern);
- else
- {
- delete pHandler;
- delete pPattern;
- }
-}
-
-void HandlerCFGAccess::Commit()
-{
-}
-
-} // namespace framework
diff --git a/framework/source/classes/rootactiontriggercontainer.cxx b/framework/source/classes/rootactiontriggercontainer.cxx
deleted file mode 100644
index c78d398b39a7..000000000000
--- a/framework/source/classes/rootactiontriggercontainer.cxx
+++ /dev/null
@@ -1,379 +0,0 @@
-/*************************************************************************
- *
- * 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_framework.hxx"
-
-#include <classes/rootactiontriggercontainer.hxx>
-#include <classes/actiontriggercontainer.hxx>
-#include <classes/actiontriggerpropertyset.hxx>
-#include <classes/actiontriggerseparatorpropertyset.hxx>
-#include <helper/actiontriggerhelper.hxx>
-#include <threadhelp/resetableguard.hxx>
-#include <osl/mutex.hxx>
-#include <vcl/svapp.hxx>
-#include <cppuhelper/typeprovider.hxx>
-
-
-using namespace cppu;
-using namespace com::sun::star::uno;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::container;
-using namespace com::sun::star::beans;
-
-
-namespace framework
-{
-
-static Sequence< sal_Int8 > impl_getStaticIdentifier()
-{
- static sal_uInt8 pGUID[16] = { 0x17, 0x0F, 0xA2, 0xC9, 0xCA, 0x50, 0x4A, 0xD3, 0xA6, 0x3B, 0x39, 0x99, 0xC5, 0x96, 0x43, 0x27 };
- static ::com::sun::star::uno::Sequence< sal_Int8 > seqID((sal_Int8*)pGUID,16) ;
- return seqID ;
-}
-
-
-RootActionTriggerContainer::RootActionTriggerContainer( const Menu* pMenu, const ::rtl::OUString* pMenuIdentifier, const Reference< XMultiServiceFactory >& rServiceManager ) :
- PropertySetContainer( rServiceManager )
- , m_bContainerCreated( sal_False )
- , m_bContainerChanged( sal_False )
- , m_bInContainerCreation( sal_False )
- , m_pMenu( pMenu )
- , m_pMenuIdentifier( pMenuIdentifier )
-{
-}
-
-RootActionTriggerContainer::~RootActionTriggerContainer()
-{
-}
-
-Sequence< sal_Int8 > RootActionTriggerContainer::GetUnoTunnelId() const
-{
- return impl_getStaticIdentifier();
-}
-
-const Menu* RootActionTriggerContainer::GetMenu()
-{
- if ( !m_bContainerChanged )
- return m_pMenu;
- else
- {
- ResetableGuard aGuard( m_aLock );
-
- Menu* pNewMenu = new PopupMenu;
-
- ActionTriggerHelper::CreateMenuFromActionTriggerContainer( pNewMenu, this );
- m_pMenu = pNewMenu;
- m_bContainerChanged = sal_False;
-
- return m_pMenu;
- }
-}
-
-
-// XInterface
-Any SAL_CALL RootActionTriggerContainer::queryInterface( const Type& aType )
-throw ( RuntimeException )
-{
- Any a = ::cppu::queryInterface(
- aType ,
- SAL_STATIC_CAST( XMultiServiceFactory* , this ),
- SAL_STATIC_CAST( XServiceInfo* , this ),
- SAL_STATIC_CAST( XUnoTunnel* , this ),
- SAL_STATIC_CAST( XTypeProvider* , this ),
- SAL_STATIC_CAST( XNamed* , this ));
-
- if( a.hasValue() )
- {
- return a;
- }
-
- return PropertySetContainer::queryInterface( aType );
-}
-
-void SAL_CALL RootActionTriggerContainer::acquire() throw ()
-{
- PropertySetContainer::acquire();
-}
-
-void SAL_CALL RootActionTriggerContainer::release() throw ()
-{
- PropertySetContainer::release();
-}
-
-// XMultiServiceFactory
-Reference< XInterface > SAL_CALL RootActionTriggerContainer::createInstance( const ::rtl::OUString& aServiceSpecifier )
-throw ( Exception, RuntimeException )
-{
- if ( aServiceSpecifier.equalsAscii( SERVICENAME_ACTIONTRIGGER ))
- return (OWeakObject *)( new ActionTriggerPropertySet( m_xServiceManager ));
- else if ( aServiceSpecifier.equalsAscii( SERVICENAME_ACTIONTRIGGERCONTAINER ))
- return (OWeakObject *)( new ActionTriggerContainer( m_xServiceManager ));
- else if ( aServiceSpecifier.equalsAscii( SERVICENAME_ACTIONTRIGGERSEPARATOR ))
- return (OWeakObject *)( new ActionTriggerSeparatorPropertySet( m_xServiceManager ));
- else
- throw com::sun::star::uno::RuntimeException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Unknown service specifier!" )), (OWeakObject *)this );
-}
-
-Reference< XInterface > SAL_CALL RootActionTriggerContainer::createInstanceWithArguments( const ::rtl::OUString& ServiceSpecifier, const Sequence< Any >& /*Arguments*/ )
-throw ( Exception, RuntimeException )
-{
- return createInstance( ServiceSpecifier );
-}
-
-Sequence< ::rtl::OUString > SAL_CALL RootActionTriggerContainer::getAvailableServiceNames()
-throw ( RuntimeException )
-{
- Sequence< ::rtl::OUString > aSeq( 3 );
-
- aSeq[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICENAME_ACTIONTRIGGER ));
- aSeq[1] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICENAME_ACTIONTRIGGERCONTAINER ));
- aSeq[2] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICENAME_ACTIONTRIGGERSEPARATOR ));
-
- return aSeq;
-}
-
-
-// XIndexContainer
-void SAL_CALL RootActionTriggerContainer::insertByIndex( sal_Int32 Index, const Any& Element )
-throw ( IllegalArgumentException, IndexOutOfBoundsException, WrappedTargetException, RuntimeException )
-{
- ResetableGuard aGuard( m_aLock );
-
- if ( !m_bContainerCreated )
- FillContainer();
-
- if ( !m_bInContainerCreation )
- m_bContainerChanged = sal_True;
- PropertySetContainer::insertByIndex( Index, Element );
-}
-
-void SAL_CALL RootActionTriggerContainer::removeByIndex( sal_Int32 Index )
-throw ( IndexOutOfBoundsException, WrappedTargetException, RuntimeException )
-{
- ResetableGuard aGuard( m_aLock );
-
- if ( !m_bContainerCreated )
- FillContainer();
-
- if ( !m_bInContainerCreation )
- m_bContainerChanged = sal_True;
- PropertySetContainer::removeByIndex( Index );
-}
-
-
-// XIndexReplace
-void SAL_CALL RootActionTriggerContainer::replaceByIndex( sal_Int32 Index, const Any& Element )
-throw ( IllegalArgumentException, IndexOutOfBoundsException, WrappedTargetException, RuntimeException )
-{
- ResetableGuard aGuard( m_aLock );
-
- if ( !m_bContainerCreated )
- FillContainer();
-
- if ( !m_bInContainerCreation )
- m_bContainerChanged = sal_True;
- PropertySetContainer::replaceByIndex( Index, Element );
-}
-
-
-// XIndexAccess
-sal_Int32 SAL_CALL RootActionTriggerContainer::getCount()
-throw ( RuntimeException )
-{
- ResetableGuard aGuard( m_aLock );
-
- if ( !m_bContainerCreated )
- {
- if ( m_pMenu )
- {
- vos::OGuard aSolarMutexGuard( Application::GetSolarMutex() );
- return m_pMenu->GetItemCount();
- }
- else
- return 0;
- }
- else
- {
- return PropertySetContainer::getCount();
- }
-}
-
-Any SAL_CALL RootActionTriggerContainer::getByIndex( sal_Int32 Index )
-throw ( IndexOutOfBoundsException, WrappedTargetException, RuntimeException )
-{
- ResetableGuard aGuard( m_aLock );
-
- if ( !m_bContainerCreated )
- FillContainer();
-
- return PropertySetContainer::getByIndex( Index );
-}
-
-
-// XElementAccess
-Type SAL_CALL RootActionTriggerContainer::getElementType()
- throw (::com::sun::star::uno::RuntimeException)
-{
- return ::getCppuType(( Reference< XPropertySet >*)0);
-}
-
-sal_Bool SAL_CALL RootActionTriggerContainer::hasElements()
-throw (::com::sun::star::uno::RuntimeException)
-{
- if ( m_pMenu )
- {
- vos::OGuard aSolarMutexGuard( Application::GetSolarMutex() );
- return ( m_pMenu->GetItemCount() > 0 );
- }
-
- return sal_False;
-}
-
-
-// XServiceInfo
-::rtl::OUString SAL_CALL RootActionTriggerContainer::getImplementationName()
-throw ( RuntimeException )
-{
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( IMPLEMENTATIONNAME_ROOTACTIONTRIGGERCONTAINER ));
-}
-
-sal_Bool SAL_CALL RootActionTriggerContainer::supportsService( const ::rtl::OUString& ServiceName )
-throw ( RuntimeException )
-{
- if ( ServiceName.equalsAscii( SERVICENAME_ACTIONTRIGGERCONTAINER ))
- return sal_True;
-
- return sal_False;
-}
-
-Sequence< ::rtl::OUString > SAL_CALL RootActionTriggerContainer::getSupportedServiceNames()
-throw ( RuntimeException )
-{
- Sequence< ::rtl::OUString > seqServiceNames( 1 );
-
- seqServiceNames[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( SERVICENAME_ACTIONTRIGGERCONTAINER ));
- return seqServiceNames;
-}
-
-// XUnoTunnel
-sal_Int64 SAL_CALL RootActionTriggerContainer::getSomething( const Sequence< sal_Int8 >& aIdentifier ) throw ( RuntimeException )
-{
- if ( aIdentifier == impl_getStaticIdentifier() )
- return reinterpret_cast< sal_Int64 >( this );
- else
- return 0;
-}
-
-// XTypeProvider
-Sequence< Type > SAL_CALL RootActionTriggerContainer::getTypes() throw ( RuntimeException )
-{
- // Optimize this method !
- // We initialize a static variable only one time. And we don't must use a mutex at every call!
- // For the first call; pTypeCollection is NULL - for the second call pTypeCollection is different from NULL!
- static ::cppu::OTypeCollection* pTypeCollection = NULL ;
-
- if ( pTypeCollection == NULL )
- {
- // Ready for multithreading; get global mutex for first call of this method only! see before
- osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ;
-
- // Control these pointer again ... it can be, that another instance will be faster then these!
- if ( pTypeCollection == NULL )
- {
- // Create a static typecollection ...
- static ::cppu::OTypeCollection aTypeCollection(
- ::getCppuType(( const Reference< XMultiServiceFactory >*)NULL ) ,
- ::getCppuType(( const Reference< XIndexContainer >*)NULL ) ,
- ::getCppuType(( const Reference< XIndexAccess >*)NULL ) ,
- ::getCppuType(( const Reference< XIndexReplace >*)NULL ) ,
- ::getCppuType(( const Reference< XServiceInfo >*)NULL ) ,
- ::getCppuType(( const Reference< XTypeProvider >*)NULL ) ,
- ::getCppuType(( const Reference< XUnoTunnel >*)NULL ) ,
- ::getCppuType(( const Reference< XNamed >*)NULL )) ;
-
- // ... and set his address to static pointer!
- pTypeCollection = &aTypeCollection ;
- }
- }
-
- return pTypeCollection->getTypes() ;
-}
-
-Sequence< sal_Int8 > SAL_CALL RootActionTriggerContainer::getImplementationId() throw ( RuntimeException )
-{
- // Create one Id for all instances of this class.
- // Use ethernet address to do this! (sal_True)
-
- // Optimize this method
- // We initialize a static variable only one time. And we don't must use a mutex at every call!
- // For the first call; pID is NULL - for the second call pID is different from NULL!
- static ::cppu::OImplementationId* pID = NULL ;
-
- if ( pID == NULL )
- {
- // Ready for multithreading; get global mutex for first call of this method only! see before
- osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ;
-
- // Control these pointer again ... it can be, that another instance will be faster then these!
- if ( pID == NULL )
- {
- // Create a new static ID ...
- static ::cppu::OImplementationId aID( sal_False ) ;
- // ... and set his address to static pointer!
- pID = &aID ;
- }
- }
-
- return pID->getImplementationId() ;
-}
-
-// private implementation helper
-void RootActionTriggerContainer::FillContainer()
-{
- m_bContainerCreated = sal_True;
- m_bInContainerCreation = sal_True;
- Reference<XIndexContainer> xXIndexContainer( (OWeakObject *)this, UNO_QUERY );
- ActionTriggerHelper::FillActionTriggerContainerFromMenu(
- xXIndexContainer,
- m_pMenu );
- m_bInContainerCreation = sal_False;
-}
-::rtl::OUString RootActionTriggerContainer::getName() throw ( RuntimeException )
-{
- ::rtl::OUString sRet;
- if( m_pMenuIdentifier )
- sRet = *m_pMenuIdentifier;
- return sRet;
-}
-
-void RootActionTriggerContainer::setName( const ::rtl::OUString& ) throw ( RuntimeException)
-{
- throw RuntimeException();
-}
-}
-
diff --git a/framework/source/classes/sfxhelperfunctions.cxx b/framework/source/classes/sfxhelperfunctions.cxx
deleted file mode 100644
index c6953b1ea2b9..000000000000
--- a/framework/source/classes/sfxhelperfunctions.cxx
+++ /dev/null
@@ -1,181 +0,0 @@
-/*************************************************************************
- *
- * 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_framework.hxx"
-
-#ifndef __FRAMEWORK_CLASSES_SFXHELPERFUNCTIONS_CXX_
-#include <classes/sfxhelperfunctions.hxx>
-#endif
-
-#include <tools/diagnose_ex.h>
-
-static pfunc_setToolBoxControllerCreator pToolBoxControllerCreator = NULL;
-static pfunc_setStatusBarControllerCreator pStatusBarControllerCreator = NULL;
-static pfunc_getRefreshToolbars pRefreshToolbars = NULL;
-static pfunc_createDockingWindow pCreateDockingWindow = NULL;
-static pfunc_isDockingWindowVisible pIsDockingWindowVisible = NULL;
-static pfunc_activateToolPanel pActivateToolPanel = NULL;
-
-
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::frame;
-
-namespace framework
-{
-
-pfunc_setToolBoxControllerCreator SAL_CALL SetToolBoxControllerCreator( pfunc_setToolBoxControllerCreator pSetToolBoxControllerCreator )
-{
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- pfunc_setToolBoxControllerCreator pOldSetToolBoxControllerCreator = pToolBoxControllerCreator;
- pToolBoxControllerCreator = pSetToolBoxControllerCreator;
- return pOldSetToolBoxControllerCreator;
-}
-
-svt::ToolboxController* SAL_CALL CreateToolBoxController( const Reference< XFrame >& rFrame, ToolBox* pToolbox, unsigned short nID, const ::rtl::OUString& aCommandURL )
-{
- pfunc_setToolBoxControllerCreator pFactory = NULL;
- {
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- pFactory = pToolBoxControllerCreator;
- }
-
- if ( pFactory )
- return (*pFactory)( rFrame, pToolbox, nID, aCommandURL );
- else
- return NULL;
-}
-
-pfunc_setStatusBarControllerCreator SAL_CALL SetStatusBarControllerCreator( pfunc_setStatusBarControllerCreator pSetStatusBarControllerCreator )
-{
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- pfunc_setStatusBarControllerCreator pOldSetStatusBarControllerCreator = pSetStatusBarControllerCreator;
- pStatusBarControllerCreator = pSetStatusBarControllerCreator;
- return pOldSetStatusBarControllerCreator;
-}
-
-svt::StatusbarController* SAL_CALL CreateStatusBarController( const Reference< XFrame >& rFrame, StatusBar* pStatusBar, unsigned short nID, const ::rtl::OUString& aCommandURL )
-{
- pfunc_setStatusBarControllerCreator pFactory = NULL;
- {
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- pFactory = pStatusBarControllerCreator;
- }
-
- if ( pFactory )
- return (*pFactory)( rFrame, pStatusBar, nID, aCommandURL );
- else
- return NULL;
-}
-
-pfunc_getRefreshToolbars SAL_CALL SetRefreshToolbars( pfunc_getRefreshToolbars pNewRefreshToolbarsFunc )
-{
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- pfunc_getRefreshToolbars pOldFunc = pRefreshToolbars;
- pRefreshToolbars = pNewRefreshToolbarsFunc;
-
- return pOldFunc;
-}
-
-void SAL_CALL RefreshToolbars( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame )
-{
- pfunc_getRefreshToolbars pCallback = NULL;
- {
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- pCallback = pRefreshToolbars;
- }
-
- if ( pCallback )
- (*pCallback)( rFrame );
-}
-
-pfunc_createDockingWindow SAL_CALL SetDockingWindowCreator( pfunc_createDockingWindow pNewCreateDockingWindow )
-{
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- pfunc_createDockingWindow pOldFunc = pCreateDockingWindow;
- pCreateDockingWindow = pNewCreateDockingWindow;
-
- return pOldFunc;
-}
-
-void SAL_CALL CreateDockingWindow( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& rResourceURL )
-{
- pfunc_createDockingWindow pFactory = NULL;
- {
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- pFactory = pCreateDockingWindow;
- }
-
- if ( pFactory )
- (*pFactory)( rFrame, rResourceURL );
-}
-
-pfunc_isDockingWindowVisible SAL_CALL SetIsDockingWindowVisible( pfunc_isDockingWindowVisible pNewIsDockingWindowVisible)
-{
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- pfunc_isDockingWindowVisible pOldFunc = pIsDockingWindowVisible;
- pIsDockingWindowVisible = pNewIsDockingWindowVisible;
-
- return pOldFunc;
-}
-
-bool SAL_CALL IsDockingWindowVisible( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& rResourceURL )
-{
- pfunc_isDockingWindowVisible pCall = NULL;
- {
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- pCall = pIsDockingWindowVisible;
- }
-
- if ( pIsDockingWindowVisible )
- return (*pIsDockingWindowVisible)( rFrame, rResourceURL );
- else
- return false;
-}
-
-pfunc_activateToolPanel SAL_CALL SetActivateToolPanel( pfunc_activateToolPanel i_pActivator )
-{
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- pfunc_activateToolPanel pOldFunc = pActivateToolPanel;
- pActivateToolPanel = i_pActivator;
- return pOldFunc;
-}
-
-void SAL_CALL ActivateToolPanel( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& i_rFrame, const ::rtl::OUString& i_rPanelURL )
-{
- pfunc_activateToolPanel pActivator = NULL;
- {
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- pActivator = pActivateToolPanel;
- }
-
- ENSURE_OR_RETURN_VOID( pActivator, "framework::ActivateToolPanel: no activator function!" );
- (*pActivator)( i_rFrame, i_rPanelURL );
-}
-
-}