diff options
author | Thomas Arnhold <thomas@arnhold.org> | 2011-08-03 01:51:28 +0200 |
---|---|---|
committer | Thomas Arnhold <thomas@arnhold.org> | 2011-08-03 01:51:28 +0200 |
commit | 5fd54f2f3de2fec39b372e2f8ece0ee73f080c8f (patch) | |
tree | 580aaed1b4aab01dd2598c6f46c6d629f2de454e /framework | |
parent | 228d801ab1d5e1dd86b814703b2e25baf69ad07c (diff) |
callcatcher: remove unused methods
Diffstat (limited to 'framework')
20 files changed, 0 insertions, 3121 deletions
diff --git a/framework/Library_fwe.mk b/framework/Library_fwe.mk index f6a7994aad5e..47e4bd37c6be 100644 --- a/framework/Library_fwe.mk +++ b/framework/Library_fwe.mk @@ -74,7 +74,6 @@ $(eval $(call gb_Library_add_exception_objects,fwe,\ framework/source/fwe/classes/rootactiontriggercontainer \ framework/source/fwe/classes/sfxhelperfunctions \ framework/source/fwe/dispatch/interaction \ - framework/source/fwe/helper/acceleratorinfo \ framework/source/fwe/helper/actiontriggerhelper \ framework/source/fwe/helper/configimporter \ framework/source/fwe/helper/imageproducer \ diff --git a/framework/Library_fwk.mk b/framework/Library_fwk.mk index 04a78867e363..b517e0dd63dc 100644 --- a/framework/Library_fwk.mk +++ b/framework/Library_fwk.mk @@ -114,7 +114,6 @@ $(eval $(call gb_Library_add_exception_objects,fwk,\ framework/source/layoutmanager/helpers \ framework/source/layoutmanager/layoutmanager \ framework/source/layoutmanager/panel \ - framework/source/layoutmanager/panelmanager \ framework/source/layoutmanager/toolbarlayoutmanager \ framework/source/layoutmanager/uielement \ framework/source/loadenv/loadenv \ @@ -125,7 +124,6 @@ $(eval $(call gb_Library_add_exception_objects,fwk,\ framework/source/services/backingwindow \ framework/source/services/desktop \ framework/source/services/frame \ - framework/source/services/modelwinservice \ framework/source/services/modulemanager \ framework/source/services/pathsettings \ framework/source/services/sessionlistener \ @@ -142,7 +140,6 @@ $(eval $(call gb_Library_add_exception_objects,fwk,\ framework/source/uiconfiguration/moduleuiconfigurationmanager \ framework/source/uiconfiguration/uicategorydescription \ framework/source/uiconfiguration/uiconfigurationmanager \ - framework/source/uiconfiguration/uiconfigurationmanagerimpl \ framework/source/uiconfiguration/windowstateconfiguration \ framework/source/uielement/addonstoolbarmanager \ framework/source/uielement/addonstoolbarwrapper \ @@ -160,7 +157,6 @@ $(eval $(call gb_Library_add_exception_objects,fwk,\ framework/source/uielement/menubarwrapper \ framework/source/uielement/objectmenucontroller \ framework/source/uielement/panelwindow \ - framework/source/uielement/panelwrapper \ framework/source/uielement/progressbarwrapper \ framework/source/uielement/recentfilesmenucontroller \ framework/source/uielement/spinfieldtoolbarcontroller \ diff --git a/framework/Package_inc.mk b/framework/Package_inc.mk index b2af44e30a87..390621ccf664 100644 --- a/framework/Package_inc.mk +++ b/framework/Package_inc.mk @@ -27,7 +27,6 @@ #************************************************************************* $(eval $(call gb_Package_Package,framework_inc,$(SRCDIR)/framework/inc)) -$(eval $(call gb_Package_add_file,framework_inc,inc/framework/acceleratorinfo.hxx,framework/acceleratorinfo.hxx)) $(eval $(call gb_Package_add_file,framework_inc,inc/framework/actiontriggerhelper.hxx,framework/actiontriggerhelper.hxx)) $(eval $(call gb_Package_add_file,framework_inc,inc/framework/addonmenu.hxx,framework/addonmenu.hxx)) $(eval $(call gb_Package_add_file,framework_inc,inc/framework/addonsoptions.hxx,framework/addonsoptions.hxx)) diff --git a/framework/inc/framework/acceleratorinfo.hxx b/framework/inc/framework/acceleratorinfo.hxx deleted file mode 100644 index a18eea4e9551..000000000000 --- a/framework/inc/framework/acceleratorinfo.hxx +++ /dev/null @@ -1,53 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef __FRAMEWORK_HELPER_ACCELERATORINFO_HXX_ -#define __FRAMEWORK_HELPER_ACCELERATORINFO_HXX_ - -#include <com/sun/star/frame/XFrame.hpp> -#include <vcl/keycod.hxx> -#include <rtl/ustring.hxx> -#include <framework/fwedllapi.h> - -namespace framework -{ - -typedef ::rtl::OUString ( *pfunc_getCommandURLFromKeyCode)( const KeyCode& ); -typedef KeyCode ( *pfunc_getKeyCodeFromCommandURL )( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::rtl::OUString& aURL ); - -pfunc_getCommandURLFromKeyCode SAL_CALL SetCommandURLFromKeyCode( pfunc_getCommandURLFromKeyCode ); -pfunc_getKeyCodeFromCommandURL SAL_CALL SetKeyCodeFromCommandURL( pfunc_getKeyCodeFromCommandURL ); - -::rtl::OUString SAL_CALL GetCommandURLFromKeyCode( const KeyCode& aKeyCode ); -KeyCode GetKeyCodeFromCommandURL( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const rtl::OUString& aCommandURL ); - -} - -#endif // __FRAMEWORK_HELPER_ACCELERATORINFO_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/framework/inc/services/layoutmanager.hxx b/framework/inc/services/layoutmanager.hxx index 7afd3ebc5254..13d33dcb4dc1 100644 --- a/framework/inc/services/layoutmanager.hxx +++ b/framework/inc/services/layoutmanager.hxx @@ -95,7 +95,6 @@ class MenuBar; namespace framework { class ToolbarLayoutManager; - class PanelManager; class GlobalSettings; namespace detail { @@ -231,7 +230,6 @@ namespace framework //--------------------------------------------------------------------------------------------------------- void impl_clearUpMenuBar(); void implts_reset( sal_Bool bAttach ); - void implts_setMenuBarCloser(sal_Bool bCloserState); void implts_updateMenuBarClose(); sal_Bool implts_resetMenuBar(); @@ -245,7 +243,6 @@ namespace framework // query //--------------------------------------------------------------------------------------------------------- ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement > implts_findElement( const rtl::OUString& aName ); - UIElement& impl_findElement( const rtl::OUString& aName ); void implts_writeNewStateData( const rtl::OUString aName, const ::com::sun::star::uno::Reference< com::sun::star::awt::XWindow >& xWindow ); sal_Bool implts_readWindowStateData( const rtl::OUString& rName, UIElement& rElementData ); @@ -371,7 +368,6 @@ namespace framework sal_Int16 m_eSymbolsStyle; Timer m_aAsyncLayoutTimer; ::cppu::OMultiTypeInterfaceContainerHelper m_aListenerContainer; // container for ALL Listener - PanelManager* m_pPanelManager; ToolbarLayoutManager* m_pToolbarManager; css::uno::Reference< ::com::sun::star::ui::XUIConfigurationListener > m_xToolbarManager; diff --git a/framework/inc/services/modelwinservice.hxx b/framework/inc/services/modelwinservice.hxx deleted file mode 100644 index af35b75d8b51..000000000000 --- a/framework/inc/services/modelwinservice.hxx +++ /dev/null @@ -1,125 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: urltransformer.hxx,v $ - * $Revision: 1.8 $ - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef __FRAMEWORK_SERVICES_MODELWINSERVICE_HXX_ -#define __FRAMEWORK_SERVICES_MODELWINSERVICE_HXX_ - -//_________________________________________________________________________________________________________________ -// my own includes -//_________________________________________________________________________________________________________________ - -#include <threadhelp/threadhelpbase.hxx> -#include <macros/generic.hxx> -#include <macros/debug.hxx> -#include <macros/xinterface.hxx> -#include <macros/xtypeprovider.hxx> -#include <macros/xserviceinfo.hxx> -#include <general.h> -#include <stdtypes.h> - -//_________________________________________________________________________________________________________________ -// interface includes -//_________________________________________________________________________________________________________________ - -#include <com/sun/star/lang/XTypeProvider.hpp> -#include <com/sun/star/awt/XWindow.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/container/XNameAccess.hpp> -#include <com/sun/star/awt/XControlModel.hpp> - -//_________________________________________________________________________________________________________________ -// other includes -//_________________________________________________________________________________________________________________ - -#include <cppuhelper/weak.hxx> -#include <vcl/window.hxx> - -//_________________________________________________________________________________________________________________ -// namespace -//_________________________________________________________________________________________________________________ - -namespace framework{ - -class IModelWin -{ - public: - virtual void registerModelForXWindow( const css::uno::Reference< css::awt::XWindow >& rWindow, const css::uno::Reference< css::awt::XControlModel >& rModel ) = 0; - virtual void deregisterModelForXWindow( const css::uno::Reference< css::awt::XWindow >& rWindow ) = 0; -}; - -class ModelWinService : public css::lang::XTypeProvider - , public css::lang::XServiceInfo - , public css::container::XNameAccess - , public IModelWin - , public ::cppu::OWeakObject -{ - public: - ModelWinService(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rServiceManager ); - virtual ~ModelWinService(); - - //--------------------------------------------------------------------------------------------------------- - // XInterface, XTypeProvider, XServiceInfo - //--------------------------------------------------------------------------------------------------------- - - FWK_DECLARE_XINTERFACE - FWK_DECLARE_XTYPEPROVIDER - DECLARE_XSERVICEINFO - - //--------------------------------------------------------------------------------------------------------- - // IModelWin - //--------------------------------------------------------------------------------------------------------- - virtual void registerModelForXWindow( const css::uno::Reference< css::awt::XWindow >& rWindow, const css::uno::Reference< css::awt::XControlModel >& rModel ); - virtual void deregisterModelForXWindow( const css::uno::Reference< css::awt::XWindow >& rWindow ); - - //--------------------------------------------------------------------------------------------------------- - // XNameAccess - //--------------------------------------------------------------------------------------------------------- - virtual css::uno::Any SAL_CALL getByName( const ::rtl::OUString& sName ) throw( css::container::NoSuchElementException , - css::lang::WrappedTargetException , - css::uno::RuntimeException ); - virtual css::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames() throw( css::uno::RuntimeException ); - virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& sName ) throw( css::uno::RuntimeException ); - - //--------------------------------------------------------------------------------------------------------- - // XElementAccess - //--------------------------------------------------------------------------------------------------------- - virtual css::uno::Type SAL_CALL getElementType() throw( css::uno::RuntimeException ); - virtual sal_Bool SAL_CALL hasElements() throw( css::uno::RuntimeException ); - - private: - css::uno::Reference< css::lang::XMultiServiceFactory > m_xServiceManager; -}; - -} - -#endif // __FRAMEWORK_SERVICES_MODELWINSERVICE_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/framework/inc/uielement/panelwrapper.hxx b/framework/inc/uielement/panelwrapper.hxx deleted file mode 100644 index 6d5226e19052..000000000000 --- a/framework/inc/uielement/panelwrapper.hxx +++ /dev/null @@ -1,71 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ - - -#ifndef __FRAMEWORK_UIELEMENT_PANELWRAPPER_HXX_ -#define __FRAMEWORK_UIELEMENT_PANELWRAPPER_HXX_ - -//_________________________________________________________________________________________________________________ -// my own includes -//_________________________________________________________________________________________________________________ - -#include <helper/uielementwrapperbase.hxx> - -//_________________________________________________________________________________________________________________ -// interface includes -//_________________________________________________________________________________________________________________ - -#include <com/sun/star/frame/XFrame.hpp> -#include <com/sun/star/lang/XComponent.hpp> -#include <com/sun/star/lang/XMultiServiceFactory.hpp> - -//_________________________________________________________________________________________________________________ -// other includes -//_________________________________________________________________________________________________________________ - -namespace framework -{ - -class PanelWrapper : public UIElementWrapperBase -{ - public: - PanelWrapper( const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& xServiceManager ); - virtual ~PanelWrapper(); - - // XInterface - virtual void SAL_CALL acquire() throw(); - virtual void SAL_CALL release() throw(); - virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw( ::com::sun::star::uno::RuntimeException ); - - // XComponent - virtual void SAL_CALL dispose() throw (::com::sun::star::uno::RuntimeException); - - // XInitialization - virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); - - // XUIElement - virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getRealInterface() throw (::com::sun::star::uno::RuntimeException); - - // XUpdatable - virtual void SAL_CALL update() throw (::com::sun::star::uno::RuntimeException); - - // XEventListener - using cppu::OPropertySetHelper::disposing; - virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& aEvent ) throw (::com::sun::star::uno::RuntimeException); - - //------------------------------------------------------------------------------------------------------------- - // protected methods - //------------------------------------------------------------------------------------------------------------- - protected: - virtual void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const com::sun::star::uno::Any& aValue ) throw( com::sun::star::uno::Exception ); - - private: - com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > m_xServiceManager; - com::sun::star::uno::Reference< com::sun::star::awt::XWindow > m_xPanelWindow; - bool m_bNoClose; -}; - -} - -#endif // __FRAMEWORK_UIELEMENT_PANELWRAPPER_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/framework/source/fwe/helper/acceleratorinfo.cxx b/framework/source/fwe/helper/acceleratorinfo.cxx deleted file mode 100644 index 74ca316f7b5d..000000000000 --- a/framework/source/fwe/helper/acceleratorinfo.cxx +++ /dev/null @@ -1,74 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_framework.hxx" - -#include <framework/acceleratorinfo.hxx> - -namespace framework -{ - -static pfunc_getCommandURLFromKeyCode _pGetCommandURLFromKeyCode = NULL; -static pfunc_getKeyCodeFromCommandURL _pGetKeyCodeFromCommandURL = NULL; - -pfunc_getCommandURLFromKeyCode SAL_CALL SetCommandURLFromKeyCode( pfunc_getCommandURLFromKeyCode pNewFunc ) -{ - pfunc_getCommandURLFromKeyCode pOldFunc = _pGetCommandURLFromKeyCode; - _pGetCommandURLFromKeyCode = pNewFunc; - - return pOldFunc; -} - -::rtl::OUString SAL_CALL GetCommandURLFromKeyCode( const KeyCode& aKeyCode ) -{ - if ( _pGetCommandURLFromKeyCode ) - return _pGetCommandURLFromKeyCode( aKeyCode ); - else - return rtl::OUString(); -} - -pfunc_getKeyCodeFromCommandURL SAL_CALL SetKeyCodeFromCommandURL( pfunc_getKeyCodeFromCommandURL pNewFunc ) -{ - pfunc_getKeyCodeFromCommandURL pOldFunc = _pGetKeyCodeFromCommandURL; - _pGetKeyCodeFromCommandURL = pNewFunc; - - return pOldFunc; -} - -KeyCode SAL_CALL GetKeyCodeFromCommandURL( ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const rtl::OUString& aCommandURL ) -{ - if ( _pGetKeyCodeFromCommandURL ) - return _pGetKeyCodeFromCommandURL( rFrame, aCommandURL ); - else - return KeyCode(); -} - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/framework/source/layoutmanager/helpers.cxx b/framework/source/layoutmanager/helpers.cxx index 9cf6a202d9ad..82cde704d700 100644 --- a/framework/source/layoutmanager/helpers.cxx +++ b/framework/source/layoutmanager/helpers.cxx @@ -272,27 +272,6 @@ void parseResourceURL( const rtl::OUString& aResourceURL, rtl::OUString& aElemen return aRect; } -css::awt::Rectangle convertRectangleToAWT( const ::Rectangle& rRect ) -{ - css::awt::Rectangle aRect; - aRect.X = rRect.Left(); - aRect.Y = rRect.Top(); - aRect.Width = rRect.GetWidth(); - aRect.Height = rRect.GetHeight(); - return aRect; -} - -::Rectangle convertAWTToRectangle( const ::com::sun::star::awt::Rectangle& rRect ) -{ - ::Rectangle aRect; - aRect.Left() = rRect.X; - aRect.Top() = rRect.Y; - aRect.Right() = rRect.X + rRect.Width; - aRect.Bottom() = rRect.Y + rRect.Height; - - return aRect; -} - bool equalRectangles( const css::awt::Rectangle& rRect1, const css::awt::Rectangle& rRect2 ) { diff --git a/framework/source/layoutmanager/helpers.hxx b/framework/source/layoutmanager/helpers.hxx index bfa4b045fcca..eaeadaf4a1ff 100644 --- a/framework/source/layoutmanager/helpers.hxx +++ b/framework/source/layoutmanager/helpers.hxx @@ -81,8 +81,6 @@ WindowAlign ImplConvertAlignment( sal_Int16 aAlignment ); void parseResourceURL( const rtl::OUString& aResourceURL, rtl::OUString& aElementType, rtl::OUString& aElementName ); ::Rectangle putAWTToRectangle( const ::com::sun::star::awt::Rectangle& rRect ); ::com::sun::star::awt::Rectangle putRectangleValueToAWT( const ::Rectangle& rRect ); -::com::sun::star::awt::Rectangle convertRectangleToAWT( const ::Rectangle& rRect ); -::Rectangle convertAWTToRectangle( const ::com::sun::star::awt::Rectangle& rRect ); ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > impl_getModelFromFrame( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame ); sal_Bool implts_isPreviewModel( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& xModel ); sal_Bool implts_isFrameOrWindowTop( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& xFrame ); diff --git a/framework/source/layoutmanager/layoutmanager.cxx b/framework/source/layoutmanager/layoutmanager.cxx index c69ae4187dcf..f906e4c05a91 100644 --- a/framework/source/layoutmanager/layoutmanager.cxx +++ b/framework/source/layoutmanager/layoutmanager.cxx @@ -35,7 +35,6 @@ // my own includes #include <services/layoutmanager.hxx> #include <helpers.hxx> -#include <panelmanager.hxx> #include <threadhelp/resetableguard.hxx> #include <services.h> @@ -165,7 +164,6 @@ LayoutManager::LayoutManager( const Reference< XMultiServiceFactory >& xServiceM , m_aPropLocked( RTL_CONSTASCII_USTRINGPARAM( WINDOWSTATE_PROPERTY_LOCKED )) , m_aCustomizeCmd( RTL_CONSTASCII_USTRINGPARAM( "ConfigureDialog" )) , m_aListenerContainer( m_aLock.getShareableOslMutex() ) - , m_pPanelManager( 0 ) , m_pToolbarManager( 0 ) { // Initialize statusbar member @@ -507,22 +505,6 @@ uno::Reference< ui::XUIElement > LayoutManager::implts_findElement( const rtl::O return uno::Reference< ui::XUIElement >(); } -UIElement& LayoutManager::impl_findElement( const rtl::OUString& aName ) -{ - static UIElement aEmptyElement; - - ::rtl::OUString aElementType; - ::rtl::OUString aElementName; - - parseResourceURL( aName, aElementType, aElementName ); - if (( aElementType.equalsIgnoreAsciiCaseAscii( "statusbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "statusbar" )) || ( m_aStatusBarElement.m_aName == aName )) - return m_aStatusBarElement; - else if ( aElementType.equalsIgnoreAsciiCaseAscii( "progressbar" ) && aElementName.equalsIgnoreAsciiCaseAscii( "progressbar" )) - return m_aProgressBarElement; - - return aEmptyElement; -} - sal_Bool LayoutManager::implts_readWindowStateData( const rtl::OUString& aName, UIElement& rElementData ) { sal_Bool bGetSettingsState( sal_False ); @@ -1587,7 +1569,6 @@ throw (RuntimeException) if ( xUIElement.is() ) { impl_addWindowListeners( xThis, xUIElement ); - m_pPanelManager->addDockingWindow( aName, xUIElement ); } // The docking window is created by a factory method located in the sfx2 library. @@ -2664,15 +2645,6 @@ sal_Bool LayoutManager::implts_resetMenuBar() return sal_False; } -void LayoutManager::implts_setMenuBarCloser(sal_Bool bCloserState) -{ - WriteGuard aWriteLock( m_aLock ); - m_bMenuBarCloser = bCloserState; - aWriteLock.unlock(); - - implts_updateMenuBarClose(); -} - IMPL_LINK( LayoutManager, MenuBarClose, MenuBar *, EMPTYARG ) { ReadGuard aReadLock( m_aLock ); diff --git a/framework/source/layoutmanager/panelmanager.cxx b/framework/source/layoutmanager/panelmanager.cxx deleted file mode 100644 index 0aa9dce6934c..000000000000 --- a/framework/source/layoutmanager/panelmanager.cxx +++ /dev/null @@ -1,186 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: layoutmanager.hxx,v $ - * $Revision: 1.34 $ - * - * 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 "panelmanager.hxx" -#include "services.h" -#include "services/modelwinservice.hxx" - -//_________________________________________________________________________________________________________________ -// interface includes -//_________________________________________________________________________________________________________________ - - -//_________________________________________________________________________________________________________________ -// other includes -//_________________________________________________________________________________________________________________ - -#include <vcl/svapp.hxx> -#include <toolkit/unohlp.hxx> - -//_________________________________________________________________________________________________________________ -// namespace -//_________________________________________________________________________________________________________________ - -using namespace ::com::sun::star; - -namespace framework -{ - -//_________________________________________________________________________________________________________________ -// non exported definitions -//_________________________________________________________________________________________________________________ - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - - -PanelManager::PanelManager( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rSMGR, - const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame ) : - m_xSMGR( rSMGR ), - m_xFrame( rFrame ) -{ - m_aPanels[PANEL_TOP] = 0; - m_aPanels[PANEL_BOTTOM] = 0; - m_aPanels[PANEL_LEFT] = 0; - m_aPanels[PANEL_RIGHT] = 0; -} - -PanelManager::~PanelManager() -{ -} - -//--------------------------------------------------------------------------------------------------------- -// Creation and layouting -//--------------------------------------------------------------------------------------------------------- -bool PanelManager::createPanels() -{ - if ( m_xFrame.is() ) - { - SolarMutexGuard aGuard; - uno::Reference< awt::XWindow > xWindow( m_xFrame->getContainerWindow(), uno::UNO_QUERY ); - if ( xWindow.is() ) - { - // destroy old panel windows - delete m_aPanels[PANEL_TOP ]; - delete m_aPanels[PANEL_BOTTOM]; - delete m_aPanels[PANEL_LEFT ]; - delete m_aPanels[PANEL_RIGHT ]; - - m_aPanels[PANEL_TOP ] = new Panel( m_xSMGR, xWindow, PANEL_TOP ); - m_aPanels[PANEL_BOTTOM] = new Panel( m_xSMGR, xWindow, PANEL_BOTTOM ); - m_aPanels[PANEL_LEFT ] = new Panel( m_xSMGR, xWindow, PANEL_LEFT ); - m_aPanels[PANEL_RIGHT ] = new Panel( m_xSMGR, xWindow, PANEL_RIGHT ); - return true; - } - } - - return false; -} - -awt::Rectangle PanelManager::getPreferredSize() const -{ - return awt::Rectangle(); -} - -void PanelManager::layoutPanels( const awt::Rectangle /*newSize*/ ) -{ -} - -//--------------------------------------------------------------------------------------------------------- -// Panel functions -//--------------------------------------------------------------------------------------------------------- -UIElement* PanelManager::findDockingWindow( const ::rtl::OUString& /*rResourceName*/ ) -{ - return NULL; -} - -bool PanelManager::addDockingWindow( const ::rtl::OUString& /*rResourceName*/, const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement >& /*xUIElement*/ ) -{ - return false; -} - -bool PanelManager::destroyDockingWindow( const ::rtl::OUString& /*rResourceName*/ ) -{ - return false; -} - -//--------------------------------------------------------------------------------------------------------- -// XDockableWindowListener -//--------------------------------------------------------------------------------------------------------- -void SAL_CALL PanelManager::startDocking( const awt::DockingEvent& ) -throw (uno::RuntimeException) -{ -} - -awt::DockingData SAL_CALL PanelManager::docking( const awt::DockingEvent& ) -throw (uno::RuntimeException) -{ - return awt::DockingData(); -} - -void SAL_CALL PanelManager::endDocking( const awt::EndDockingEvent& ) -throw (uno::RuntimeException) -{ -} - -sal_Bool SAL_CALL PanelManager::prepareToggleFloatingMode( const lang::EventObject& ) -throw (uno::RuntimeException) -{ - return false; -} - -void SAL_CALL PanelManager::toggleFloatingMode( const lang::EventObject& ) -throw (uno::RuntimeException) -{ -} - -void SAL_CALL PanelManager::closed( const lang::EventObject& ) -throw (uno::RuntimeException) -{ -} - -void SAL_CALL PanelManager::endPopupMode( const awt::EndPopupModeEvent& ) -throw (uno::RuntimeException) -{ -} - -} // namespace framework - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/framework/source/layoutmanager/panelmanager.hxx b/framework/source/layoutmanager/panelmanager.hxx deleted file mode 100644 index 280925f4eb6c..000000000000 --- a/framework/source/layoutmanager/panelmanager.hxx +++ /dev/null @@ -1,112 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: layoutmanager.hxx,v $ - * $Revision: 1.34 $ - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef __FRAMEWORK_LAYOUTMANAGER_PANELMANAGER_HXX_ -#define __FRAMEWORK_LAYOUTMANAGER_PANELMANAGER_HXX_ - -//_________________________________________________________________________________________________________________ -// my own includes -//_________________________________________________________________________________________________________________ - -#include <threadhelp/threadhelpbase.hxx> -#include <macros/generic.hxx> -#include <macros/debug.hxx> -#include <macros/xinterface.hxx> -#include <macros/xtypeprovider.hxx> -#include <macros/xserviceinfo.hxx> -#include <general.h> -#include <stdtypes.h> -#include "panel.hxx" -#include <uielement/uielement.hxx> - -//_________________________________________________________________________________________________________________ -// interface includes -//_________________________________________________________________________________________________________________ - -#include <com/sun/star/lang/XTypeProvider.hpp> -#include <com/sun/star/awt/XWindow.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/container/XNameAccess.hpp> -#include <com/sun/star/awt/XDockableWindowListener.hpp> -#include <com/sun/star/frame/XFrame.hpp> - -//_________________________________________________________________________________________________________________ -// other includes -//_________________________________________________________________________________________________________________ - -#include <cppuhelper/weak.hxx> -#include <vcl/window.hxx> - -//_________________________________________________________________________________________________________________ -// namespace -//_________________________________________________________________________________________________________________ - -namespace framework -{ - -class PanelManager : private ThreadHelpBase // Struct for right initalization of mutex member! Must be first of baseclasses. -{ - public: - PanelManager( - const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rSMGR, - const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame ); - virtual ~PanelManager(); - - bool createPanels(); - ::com::sun::star::awt::Rectangle getPreferredSize() const; - void layoutPanels( const ::com::sun::star::awt::Rectangle newSize ); - - UIElement* findDockingWindow( const ::rtl::OUString& rResourceName ); - bool addDockingWindow( const ::rtl::OUString& rResourceName, const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIElement >& xUIElement ); - bool destroyDockingWindow( const ::rtl::OUString& rResourceName ); - - //--------------------------------------------------------------------------------------------------------- - // XDockableWindowListener - //--------------------------------------------------------------------------------------------------------- - virtual void SAL_CALL startDocking( const ::com::sun::star::awt::DockingEvent& e ) throw (::com::sun::star::uno::RuntimeException); - virtual ::com::sun::star::awt::DockingData SAL_CALL docking( const ::com::sun::star::awt::DockingEvent& e ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL endDocking( const ::com::sun::star::awt::EndDockingEvent& e ) throw (::com::sun::star::uno::RuntimeException); - virtual sal_Bool SAL_CALL prepareToggleFloatingMode( const ::com::sun::star::lang::EventObject& e ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL toggleFloatingMode( const ::com::sun::star::lang::EventObject& e ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL closed( const ::com::sun::star::lang::EventObject& e ) throw (::com::sun::star::uno::RuntimeException); - virtual void SAL_CALL endPopupMode( const ::com::sun::star::awt::EndPopupModeEvent& e ) throw (::com::sun::star::uno::RuntimeException); - - private: - Panel* m_aPanels[PANEL_COUNT]; - css::uno::Reference< css::lang::XMultiServiceFactory > m_xSMGR; - css::uno::Reference< css::frame::XFrame > m_xFrame; -}; - -} // namespace framework - -#endif // __FRAMEWORK_LAYOUTMANAGER_PANELMANAGER_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/framework/source/services/backingcomp.cxx b/framework/source/services/backingcomp.cxx index 05eb6852c1ba..0e682bf7a5c3 100644 --- a/framework/source/services/backingcomp.cxx +++ b/framework/source/services/backingcomp.cxx @@ -38,7 +38,6 @@ #include <threadhelp/readguard.hxx> #include <threadhelp/writeguard.hxx> #include <classes/droptargetlistener.hxx> -#include <framework/acceleratorinfo.hxx> #include <targets.h> #include <properties.h> #include <services.h> diff --git a/framework/source/services/modelwinservice.cxx b/framework/source/services/modelwinservice.cxx deleted file mode 100644 index 52c5d9c864f0..000000000000 --- a/framework/source/services/modelwinservice.cxx +++ /dev/null @@ -1,282 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: urltransformer.cxx,v $ - * $Revision: 1.17 $ - * - * 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 "services.h" -#include "services/modelwinservice.hxx" - -//_________________________________________________________________________________________________________________ -// interface includes -//_________________________________________________________________________________________________________________ - -#include <com/sun/star/awt/XControlModel.hpp> - -using namespace ::com::sun::star; - -//_________________________________________________________________________________________________________________ -// namespace -//_________________________________________________________________________________________________________________ - -namespace framework{ - -//_________________________________________________________________________________________________________________ -// non exported definitions -//_________________________________________________________________________________________________________________ - -//_________________________________________________________________________________________________________________ -// declarations -//_________________________________________________________________________________________________________________ - -class Impl_ModelWinService -{ - public: - ~Impl_ModelWinService(); - - static Impl_ModelWinService* getSingleInstance( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rServiceManager ); - - uno::Any getByName( const ::rtl::OUString& sName ) - throw( container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException ); - - uno::Sequence< ::rtl::OUString > getElementNames() - throw( uno::RuntimeException ); - - sal_Bool hasByName( const ::rtl::OUString& sName ) - throw( uno::RuntimeException ); - - uno::Type getElementType() - throw( css::uno::RuntimeException ); - - sal_Bool hasElements() - throw( css::uno::RuntimeException ); - - void registerModelForXWindow( const uno::Reference< awt::XWindow >& rWindow, const uno::Reference< awt::XControlModel >& rModel ); - - void deregisterModelForXWindow( const uno::Reference< awt::XWindow >& rWindow ); - - private: - typedef BaseHash< uno::WeakReference< awt::XControlModel > > ModelWinMap; - - Impl_ModelWinService(); - Impl_ModelWinService( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rServiceManager ); - - static Impl_ModelWinService* m_pModelWinService; - - ::com::sun::star::uno::WeakReference< ::com::sun::star::lang::XMultiServiceFactory > m_xServiceManager; - ModelWinMap m_aModelMap; -}; - -Impl_ModelWinService* Impl_ModelWinService::m_pModelWinService = 0; - -Impl_ModelWinService* Impl_ModelWinService::getSingleInstance( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rServiceManager ) -{ - osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ; - if ( !m_pModelWinService ) - m_pModelWinService = new Impl_ModelWinService( rServiceManager ); - return m_pModelWinService; -} - -Impl_ModelWinService::Impl_ModelWinService( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rServiceManager ) : - m_xServiceManager( rServiceManager ) -{ -} - -Impl_ModelWinService::Impl_ModelWinService() -{ -} - -Impl_ModelWinService::~Impl_ModelWinService() -{ -} - -void Impl_ModelWinService::registerModelForXWindow( const uno::Reference< awt::XWindow >& rWindow, const uno::Reference< awt::XControlModel >& rModel ) -{ - osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ; - - ::rtl::OUString sName = rtl::OUString::valueOf( reinterpret_cast< sal_Int64 >((void*)rWindow.get())); - ModelWinMap::iterator pIter = m_aModelMap.find( sName ); - if ( pIter != m_aModelMap.end() ) - pIter->second = rModel; - else - m_aModelMap[sName] = rModel; -} - -void Impl_ModelWinService::deregisterModelForXWindow( const uno::Reference< awt::XWindow >& /*rWindow*/ ) -{ -} - -uno::Any Impl_ModelWinService::getByName( const ::rtl::OUString& sName ) -throw( container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException ) -{ - uno::Any aAny; - - osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ; - ModelWinMap::iterator pIter = m_aModelMap.find( sName ); - if ( pIter != m_aModelMap.end()) - { - uno::Reference< awt::XControlModel > xModel( pIter->second ); - aAny = uno::makeAny(xModel); - } - - return aAny; -} - -uno::Sequence< ::rtl::OUString > Impl_ModelWinService::getElementNames() -throw( uno::RuntimeException ) -{ - osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ; - uno::Sequence< ::rtl::OUString > aResult( m_aModelMap.size() ); - - sal_Int32 i = 0; - ModelWinMap::const_iterator pIter = m_aModelMap.begin(); - while ( pIter != m_aModelMap.end()) - aResult[i++] = pIter->first; - - return aResult; -} - -sal_Bool Impl_ModelWinService::hasByName( const ::rtl::OUString& sName ) -throw( uno::RuntimeException ) -{ - osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ; - ModelWinMap::iterator pIter = m_aModelMap.find( sName ); - if ( pIter != m_aModelMap.end()) - return true; - else - return false; -} - -uno::Type Impl_ModelWinService::getElementType() -throw( css::uno::RuntimeException ) -{ - return ::getCppuType(( const uno::Reference< awt::XControlModel >*)NULL ); -} - -sal_Bool Impl_ModelWinService::hasElements() -throw( css::uno::RuntimeException ) -{ - osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() ) ; - return (m_aModelMap.size() > 0); -} - -//***************************************************************************************************************** -// css::uno::XInterface, XTypeProvider, XServiceInfo -//***************************************************************************************************************** - -DEFINE_XINTERFACE_4 ( ModelWinService , - OWeakObject , - DIRECT_INTERFACE(css::lang::XTypeProvider ), - DIRECT_INTERFACE(css::lang::XServiceInfo ), - DIRECT_INTERFACE(css::container::XNameAccess ), - DIRECT_INTERFACE(css::container::XElementAccess ) - ) - -DEFINE_XTYPEPROVIDER_4 ( ModelWinService , - css::lang::XTypeProvider , - css::lang::XServiceInfo , - css::container::XNameAccess , - css::container::XElementAccess - ) - -DEFINE_XSERVICEINFO_MULTISERVICE ( ModelWinService , - OWeakObject , - SERVICENAME_MODELWINSERVICE , - IMPLEMENTATIONNAME_MODELWINSERVICE - ) - -DEFINE_INIT_SERVICE ( ModelWinService, - { - } - ) - -//***************************************************************************************************************** -// constructor -//***************************************************************************************************************** -ModelWinService::ModelWinService(const uno::Reference< lang::XMultiServiceFactory >& rServiceManager ) : - m_xServiceManager( rServiceManager ) -{ -} - -ModelWinService::~ModelWinService() -{ -} - -void ModelWinService::registerModelForXWindow( const uno::Reference< awt::XWindow >& rWindow, const uno::Reference< awt::XControlModel >& rModel ) -{ - Impl_ModelWinService::getSingleInstance(m_xServiceManager)->registerModelForXWindow( rWindow, rModel ); -} - -void ModelWinService::deregisterModelForXWindow( const uno::Reference< awt::XWindow >& rWindow ) -{ - Impl_ModelWinService::getSingleInstance(m_xServiceManager)->deregisterModelForXWindow( rWindow ); -} - -uno::Any SAL_CALL ModelWinService::getByName( const ::rtl::OUString& sName ) -throw( container::NoSuchElementException, lang::WrappedTargetException, uno::RuntimeException ) -{ - return Impl_ModelWinService::getSingleInstance(m_xServiceManager)->getByName( sName ); -} - -uno::Sequence< ::rtl::OUString > SAL_CALL ModelWinService::getElementNames() -throw( uno::RuntimeException ) -{ - return Impl_ModelWinService::getSingleInstance(m_xServiceManager)->getElementNames( ); -} - -sal_Bool SAL_CALL ModelWinService::hasByName( const ::rtl::OUString& sName ) -throw( uno::RuntimeException ) -{ - return Impl_ModelWinService::getSingleInstance(m_xServiceManager)->hasByName( sName ); -} - -//--------------------------------------------------------------------------------------------------------- -// XElementAccess -//--------------------------------------------------------------------------------------------------------- -uno::Type SAL_CALL ModelWinService::getElementType() -throw( uno::RuntimeException ) -{ - return ::getCppuType( (const uno::Reference< awt::XControlModel > *)NULL ); -} - -sal_Bool SAL_CALL ModelWinService::hasElements() -throw( uno::RuntimeException ) -{ - return Impl_ModelWinService::getSingleInstance(m_xServiceManager)->hasElements(); -} - -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/framework/source/uiconfiguration/uiconfigurationmanagerimpl.cxx b/framework/source/uiconfiguration/uiconfigurationmanagerimpl.cxx deleted file mode 100644 index 46f919d37678..000000000000 --- a/framework/source/uiconfiguration/uiconfigurationmanagerimpl.cxx +++ /dev/null @@ -1,1704 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_framework.hxx" -#include <uiconfigurationmanagerimpl.hxx> -#include <threadhelp/resetableguard.hxx> -#include <services.h> -#include <uielement/constitemcontainer.hxx> -#include <uielement/rootitemcontainer.hxx> -#include <uielement/uielementtypenames.hxx> -#include <framework/menuconfiguration.hxx> -#include <framework/toolboxconfiguration.hxx> -#include <uiconfiguration/imagemanager.hxx> - -#include <framework/statusbarconfiguration.hxx> - -//_________________________________________________________________________________________________________________ -// interface includes -//_________________________________________________________________________________________________________________ -#include <com/sun/star/ui/UIElementType.hpp> -#include <com/sun/star/ui/ConfigurationEvent.hpp> -#include <com/sun/star/lang/DisposedException.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/embed/ElementModes.hpp> -#include <com/sun/star/container/XNameAccess.hpp> -#include <com/sun/star/io/XStream.hpp> - -//_________________________________________________________________________________________________________________ -// other includes -//_________________________________________________________________________________________________________________ - -#include <vcl/svapp.hxx> -#include <rtl/ustrbuf.hxx> -#include <comphelper/sequenceashashmap.hxx> -#include <boost/bind.hpp> - -//_________________________________________________________________________________________________________________ -// namespaces -//_________________________________________________________________________________________________________________ - -using rtl::OUString; -using namespace com::sun::star::uno; -using namespace com::sun::star::io; -using namespace com::sun::star::embed; -using namespace com::sun::star::lang; -using namespace com::sun::star::container; -using namespace com::sun::star::beans; -using namespace ::com::sun::star::ui; -using namespace ::cppu; - -namespace framework -{ - - -// important: The order and position of the elements must match the constant -// definition of "::com::sun::star::ui::UIElementType" -static const char* UIELEMENTTYPENAMES[] = -{ - "", // Dummy value for unknown! - UIELEMENTTYPE_MENUBAR_NAME, - UIELEMENTTYPE_POPUPMENU_NAME, - UIELEMENTTYPE_TOOLBAR_NAME, - UIELEMENTTYPE_STATUSBAR_NAME, - UIELEMENTTYPE_FLOATINGWINDOW_NAME, - UIELEMENTTYPE_PROGRESSBAR_NAME -}; - -static const char RESOURCEURL_PREFIX[] = "private:resource/"; -static const sal_Int32 RESOURCEURL_PREFIX_SIZE = 17; -static const char RESOURCEURL_CUSTOM_ELEMENT[] = "custom_"; - -static sal_Int16 RetrieveTypeFromResourceURL( const rtl::OUString& aResourceURL ) -{ - - if (( aResourceURL.indexOf( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( RESOURCEURL_PREFIX ))) == 0 ) && - ( aResourceURL.getLength() > RESOURCEURL_PREFIX_SIZE )) - { - rtl::OUString aTmpStr = aResourceURL.copy( RESOURCEURL_PREFIX_SIZE ); - sal_Int32 nIndex = aTmpStr.indexOf( '/' ); - if (( nIndex > 0 ) && ( aTmpStr.getLength() > nIndex )) - { - rtl::OUString aTypeStr( aTmpStr.copy( 0, nIndex )); - for ( int i = 0; i < UIElementType::COUNT; i++ ) - { - if ( aTypeStr.equalsAscii( UIELEMENTTYPENAMES[i] )) - return sal_Int16( i ); - } - } - } - - return UIElementType::UNKNOWN; -} - -static rtl::OUString RetrieveNameFromResourceURL( const rtl::OUString& aResourceURL ) -{ - if (( aResourceURL.indexOf( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( RESOURCEURL_PREFIX ))) == 0 ) && - ( aResourceURL.getLength() > RESOURCEURL_PREFIX_SIZE )) - { - sal_Int32 nIndex = aResourceURL.lastIndexOf( '/' ); - if (( nIndex > 0 ) && (( nIndex+1 ) < aResourceURL.getLength())) - return aResourceURL.copy( nIndex+1 ); - } - - return rtl::OUString(); -} - -void UIConfigurationManagerImpl::impl_fillSequenceWithElementTypeInfo( UIElementInfoHashMap& aUIElementInfoCollection, sal_Int16 nElementType ) -{ - // preload list of element types on demand - impl_preloadUIElementTypeList( LAYER_USERDEFINED, nElementType ); - if ( m_bUseDefault ) - impl_preloadUIElementTypeList( LAYER_DEFAULT, nElementType ); - - UIElementDataHashMap& rUserElements = m_aUIElements[LAYER_USERDEFINED][nElementType].aElementsHashMap; - UIElementDataHashMap::const_iterator pUserIter = rUserElements.begin(); - - rtl::OUString aCustomUrlPrefix( RTL_CONSTASCII_USTRINGPARAM( RESOURCEURL_CUSTOM_ELEMENT )); - while ( pUserIter != rUserElements.end() ) - { - sal_Int32 nIndex = pUserIter->second.aResourceURL.indexOf( aCustomUrlPrefix, RESOURCEURL_PREFIX_SIZE ); - if ( nIndex > RESOURCEURL_PREFIX_SIZE ) - { - // Performance: Retrieve user interface name only for custom user interface elements. - // It's only used by them! - UIElementData* pDataSettings = impl_findUIElementData( pUserIter->second.aResourceURL, nElementType ); - if ( pDataSettings && ( m_bUseDefault || !pDataSettings->bDefault )) - { - // Retrieve user interface name from XPropertySet interface - rtl::OUString aUIName; - Reference< XPropertySet > xPropSet( pDataSettings->xSettings, UNO_QUERY ); - if ( xPropSet.is() ) - { - xPropSet->getPropertyValue( m_aPropUIName ) >>= aUIName; - } - - UIElementInfo aInfo( pUserIter->second.aResourceURL, aUIName ); - aUIElementInfoCollection.insert( UIElementInfoHashMap::value_type( pUserIter->second.aResourceURL, aInfo )); - } - } - else - { - // The user interface name for standard user interface elements is stored in the WindowState.xcu file - UIElementInfo aInfo( pUserIter->second.aResourceURL, rtl::OUString() ); - aUIElementInfoCollection.insert( UIElementInfoHashMap::value_type( pUserIter->second.aResourceURL, aInfo )); - } - ++pUserIter; - } - - if ( m_bUseDefault ) - { - UIElementDataHashMap& rDefaultElements = m_aUIElements[LAYER_DEFAULT][nElementType].aElementsHashMap; - UIElementDataHashMap::const_iterator pDefIter = rDefaultElements.begin(); - - while ( pDefIter != rDefaultElements.end() ) - { - UIElementInfoHashMap::const_iterator pIterInfo = aUIElementInfoCollection.find( pDefIter->second.aResourceURL ); - if ( pIterInfo == aUIElementInfoCollection.end() ) - { - sal_Int32 nIndex = pDefIter->second.aResourceURL.indexOf( aCustomUrlPrefix, RESOURCEURL_PREFIX_SIZE ); - if ( nIndex > RESOURCEURL_PREFIX_SIZE ) - { - // Performance: Retrieve user interface name only for custom user interface elements. - // It's only used by them! - UIElementData* pDataSettings = impl_findUIElementData( pDefIter->second.aResourceURL, nElementType ); - if ( pDataSettings ) - { - // Retrieve user interface name from XPropertySet interface - rtl::OUString aUIName; - Reference< XPropertySet > xPropSet( pDataSettings->xSettings, UNO_QUERY ); - if ( xPropSet.is() ) - { - xPropSet->getPropertyValue( m_aPropUIName ) >>= aUIName; - } - - UIElementInfo aInfo( pDefIter->second.aResourceURL, aUIName ); - aUIElementInfoCollection.insert( UIElementInfoHashMap::value_type( pDefIter->second.aResourceURL, aInfo )); - } - } - else - { - // The user interface name for standard user interface elements is stored in the WindowState.xcu file - UIElementInfo aInfo( pDefIter->second.aResourceURL, rtl::OUString() ); - aUIElementInfoCollection.insert( UIElementInfoHashMap::value_type( pDefIter->second.aResourceURL, aInfo )); - } - } - - ++pDefIter; - } // while ( pDefIter != rDefaultElements.end() ) - } -} - -void UIConfigurationManagerImpl::impl_preloadUIElementTypeList( Layer eLayer, sal_Int16 nElementType ) -{ - UIElementType& rElementTypeData = m_aUIElements[eLayer][nElementType]; - - if ( !rElementTypeData.bLoaded ) - { - Reference< XStorage > xElementTypeStorage = rElementTypeData.xStorage; - if ( xElementTypeStorage.is() ) - { - rtl::OUStringBuffer aBuf( RESOURCEURL_PREFIX_SIZE ); - aBuf.appendAscii( RESOURCEURL_PREFIX ); - aBuf.appendAscii( UIELEMENTTYPENAMES[ nElementType ] ); - aBuf.appendAscii( "/" ); - rtl::OUString aResURLPrefix( aBuf.makeStringAndClear() ); - - UIElementDataHashMap& rHashMap = rElementTypeData.aElementsHashMap; - Reference< XNameAccess > xNameAccess( xElementTypeStorage, UNO_QUERY ); - Sequence< rtl::OUString > aUIElementNames = xNameAccess->getElementNames(); - for ( sal_Int32 n = 0; n < aUIElementNames.getLength(); n++ ) - { - UIElementData aUIElementData; - - // Resource name must be without ".xml" - sal_Int32 nIndex = aUIElementNames[n].lastIndexOf( '.' ); - if (( nIndex > 0 ) && ( nIndex < aUIElementNames[n].getLength() )) - { - rtl::OUString aExtension( aUIElementNames[n].copy( nIndex+1 )); - rtl::OUString aUIElementName( aUIElementNames[n].copy( 0, nIndex )); - - if (( aUIElementName.getLength() > 0 ) && - ( aExtension.equalsIgnoreAsciiCaseAsciiL( "xml", 3 ))) - { - aUIElementData.aResourceURL = aResURLPrefix + aUIElementName; - aUIElementData.aName = aUIElementNames[n]; - - if ( eLayer == LAYER_USERDEFINED ) - { - aUIElementData.bModified = false; - aUIElementData.bDefault = false; - aUIElementData.bDefaultNode = false; - } - - // Create boost::unordered_map entries for all user interface elements inside the storage. We don't load the - // settings to speed up the process. - rHashMap.insert( UIElementDataHashMap::value_type( aUIElementData.aResourceURL, aUIElementData )); - } - } - } - } - } - - rElementTypeData.bLoaded = true; -} - -void UIConfigurationManagerImpl::impl_requestUIElementData( sal_Int16 nElementType, Layer eLayer, UIElementData& aUIElementData ) -{ - UIElementType& rElementTypeData = m_aUIElements[eLayer][nElementType]; - - Reference< XStorage > xElementTypeStorage = rElementTypeData.xStorage; - if ( xElementTypeStorage.is() && aUIElementData.aName.getLength() ) - { - try - { - Reference< XStream > xStream = xElementTypeStorage->openStreamElement( aUIElementData.aName, ElementModes::READ ); - Reference< XInputStream > xInputStream = xStream->getInputStream(); - - if ( xInputStream.is() ) - { - switch ( nElementType ) - { - case ::com::sun::star::ui::UIElementType::UNKNOWN: - break; - - case ::com::sun::star::ui::UIElementType::MENUBAR: - { - try - { - MenuConfiguration aMenuCfg( m_xServiceManager ); - Reference< XIndexAccess > xContainer( aMenuCfg.CreateMenuBarConfigurationFromXML( xInputStream )); - RootItemContainer* pRootItemContainer = RootItemContainer::GetImplementation( xContainer ); - if ( pRootItemContainer ) - aUIElementData.xSettings = Reference< XIndexAccess >( static_cast< OWeakObject * >( new ConstItemContainer( pRootItemContainer, sal_True ) ), UNO_QUERY ); - else - aUIElementData.xSettings = Reference< XIndexAccess >( static_cast< OWeakObject * >( new ConstItemContainer( xContainer, sal_True ) ), UNO_QUERY ); - return; - } - catch ( ::com::sun::star::lang::WrappedTargetException& ) - { - } - } - break; - - case ::com::sun::star::ui::UIElementType::POPUPMENU: - { - break; - } - - case ::com::sun::star::ui::UIElementType::TOOLBAR: - { - try - { - Reference< XIndexContainer > xIndexContainer( static_cast< OWeakObject * >( new RootItemContainer() ), UNO_QUERY ); - ToolBoxConfiguration::LoadToolBox( m_xServiceManager, xInputStream, xIndexContainer ); - RootItemContainer* pRootItemContainer = RootItemContainer::GetImplementation( xIndexContainer ); - aUIElementData.xSettings = Reference< XIndexAccess >( static_cast< OWeakObject * >( new ConstItemContainer( pRootItemContainer, sal_True ) ), UNO_QUERY ); - return; - } - catch ( ::com::sun::star::lang::WrappedTargetException& ) - { - } - - break; - } - - case ::com::sun::star::ui::UIElementType::STATUSBAR: - { - try - { - Reference< XIndexContainer > xIndexContainer( static_cast< OWeakObject * >( new RootItemContainer() ), UNO_QUERY ); - StatusBarConfiguration::LoadStatusBar( m_xServiceManager, xInputStream, xIndexContainer ); - RootItemContainer* pRootItemContainer = RootItemContainer::GetImplementation( xIndexContainer ); - aUIElementData.xSettings = Reference< XIndexAccess >( static_cast< OWeakObject * >( new ConstItemContainer( pRootItemContainer, sal_True ) ), UNO_QUERY ); - return; - } - catch ( ::com::sun::star::lang::WrappedTargetException& ) - { - } - - break; - } - - case ::com::sun::star::ui::UIElementType::FLOATINGWINDOW: - { - break; - } - } - } - } - catch ( ::com::sun::star::embed::InvalidStorageException& ) - { - } - catch ( ::com::sun::star::lang::IllegalArgumentException& ) - { - } - catch ( ::com::sun::star::io::IOException& ) - { - } - catch ( ::com::sun::star::embed::StorageWrappedTargetException& ) - { - } - } - - // At least we provide an empty settings container! - aUIElementData.xSettings = Reference< XIndexAccess >( static_cast< OWeakObject * >( new ConstItemContainer() ), UNO_QUERY ); -} - -UIConfigurationManagerImpl::UIElementData* UIConfigurationManagerImpl::impl_findUIElementData( const rtl::OUString& aResourceURL, sal_Int16 nElementType, bool bLoad ) -{ - // preload list of element types on demand - impl_preloadUIElementTypeList( LAYER_USERDEFINED, nElementType ); - if ( m_bUseDefault ) - impl_preloadUIElementTypeList( LAYER_DEFAULT, nElementType ); - - // first try to look into our user-defined vector/boost::unordered_map combination - UIElementDataHashMap& rUserHashMap = m_aUIElements[LAYER_USERDEFINED][nElementType].aElementsHashMap; - UIElementDataHashMap::iterator pIter = rUserHashMap.find( aResourceURL ); - if ( pIter != rUserHashMap.end() ) - { - // Default data settings data must be retrieved from the default layer! - if ( !pIter->second.bDefault ) - { - if ( !pIter->second.xSettings.is() && bLoad ) - impl_requestUIElementData( nElementType, LAYER_USERDEFINED, pIter->second ); - return &(pIter->second); - } - } - - if ( m_bUseDefault ) - { - // Not successfull, we have to look into our default vector/boost::unordered_map combination - UIElementDataHashMap& rDefaultHashMap = m_aUIElements[LAYER_DEFAULT][nElementType].aElementsHashMap; - pIter = rDefaultHashMap.find( aResourceURL ); - if ( pIter != rDefaultHashMap.end() ) - { - if ( !pIter->second.xSettings.is() && bLoad ) - impl_requestUIElementData( nElementType, LAYER_DEFAULT, pIter->second ); - return &(pIter->second); - } // if ( pIter != rDefaultHashMap.end() ) - } - - // Nothing has been found! - return NULL; -} - -void UIConfigurationManagerImpl::impl_storeElementTypeData( Reference< XStorage > xStorage, UIElementType& rElementType, bool bResetModifyState ) -{ - UIElementDataHashMap& rHashMap = rElementType.aElementsHashMap; - UIElementDataHashMap::iterator pIter = rHashMap.begin(); - - while ( pIter != rHashMap.end() ) - { - UIElementData& rElement = pIter->second; - if ( rElement.bModified ) - { - if ( rElement.bDefault ) - { - xStorage->removeElement( rElement.aName ); - rElement.bModified = sal_False; // mark as not modified - } - else - { - Reference< XStream > xStream( xStorage->openStreamElement( rElement.aName, ElementModes::WRITE|ElementModes::TRUNCATE ), UNO_QUERY ); - Reference< XOutputStream > xOutputStream( xStream->getOutputStream() ); - - if ( xOutputStream.is() ) - { - switch( rElementType.nElementType ) - { - case ::com::sun::star::ui::UIElementType::MENUBAR: - { - try - { - MenuConfiguration aMenuCfg( m_xServiceManager ); - aMenuCfg.StoreMenuBarConfigurationToXML( rElement.xSettings, xOutputStream ); - } - catch ( ::com::sun::star::lang::WrappedTargetException& ) - { - } - } - break; - - case ::com::sun::star::ui::UIElementType::TOOLBAR: - { - try - { - ToolBoxConfiguration::StoreToolBox( m_xServiceManager, xOutputStream, rElement.xSettings ); - } - catch ( ::com::sun::star::lang::WrappedTargetException& ) - { - } - } - break; - - case ::com::sun::star::ui::UIElementType::STATUSBAR: - { - try - { - StatusBarConfiguration::StoreStatusBar( m_xServiceManager, xOutputStream, rElement.xSettings ); - } - catch ( ::com::sun::star::lang::WrappedTargetException& ) - { - } - } - break; - - default: - break; - } - } - - // mark as not modified if we store to our own storage - if ( bResetModifyState ) - rElement.bModified = sal_False; - } - } - - ++pIter; - } - - // commit element type storage - Reference< XTransactedObject > xTransactedObject( xStorage, UNO_QUERY ); - if ( xTransactedObject.is() ) - xTransactedObject->commit(); - - // mark UIElementType as not modified if we store to our own storage - if ( bResetModifyState ) - rElementType.bModified = sal_False; -} - -// This is only allowed to be called on the LAYER_USER_DEFINED! -void UIConfigurationManagerImpl::impl_resetElementTypeData( - UIElementType& rUserElementType, - UIElementType& rDefaultElementType, - ConfigEventNotifyContainer& rRemoveNotifyContainer, - ConfigEventNotifyContainer& rReplaceNotifyContainer ) -{ - UIElementDataHashMap& rHashMap = rUserElementType.aElementsHashMap; - UIElementDataHashMap::iterator pIter = rHashMap.begin(); - - Reference< XUIConfigurationManager > xThis( m_xOwner, UNO_QUERY ); - Reference< XNameAccess > xDefaultNameAccess( rDefaultElementType.xStorage, UNO_QUERY ); - sal_Int16 nType = rUserElementType.nElementType; - - // Make copies of the event structures to be thread-safe. We have to unlock our mutex before calling - // our listeners! - while ( pIter != rHashMap.end() ) - { - UIElementData& rElement = pIter->second; - if ( !rElement.bDefault ) - { - if ( m_bUseDefault && xDefaultNameAccess->hasByName( rElement.aName )) - { - // Replace settings with data from default layer - Reference< XIndexAccess > xOldSettings( rElement.xSettings ); - impl_requestUIElementData( nType, LAYER_DEFAULT, rElement ); - - ConfigurationEvent aReplaceEvent; - aReplaceEvent.ResourceURL = rElement.aResourceURL; - aReplaceEvent.Accessor <<= xThis; - aReplaceEvent.Source = m_xOwner; - aReplaceEvent.ReplacedElement <<= xOldSettings; - aReplaceEvent.Element <<= rElement.xSettings; - - rReplaceNotifyContainer.push_back( aReplaceEvent ); - - // Mark element as default and not modified. That means "not active" - // in the user layer anymore. - rElement.bModified = false; - rElement.bDefault = true; - } - else - { - // Remove user-defined settings from user layer - ConfigurationEvent aEvent; - aEvent.ResourceURL = rElement.aResourceURL; - aEvent.Accessor <<= xThis; - aEvent.Source = m_xOwner; - aEvent.Element <<= rElement.xSettings; - - rRemoveNotifyContainer.push_back( aEvent ); - - // Mark element as default and not modified. That means "not active" - // in the user layer anymore. - rElement.bModified = false; - rElement.bDefault = true; - } - } // if ( !rElement.bDefault ) - else - rElement.bModified = false; - - ++pIter; - } - - // Remove all settings from our user interface elements - rHashMap.clear(); -} - -void UIConfigurationManagerImpl::impl_reloadElementTypeData( - UIElementType& rUserElementType, - UIElementType& rDefaultElementType, - ConfigEventNotifyContainer& rRemoveNotifyContainer, - ConfigEventNotifyContainer& rReplaceNotifyContainer ) -{ - UIElementDataHashMap& rHashMap = rUserElementType.aElementsHashMap; - UIElementDataHashMap::iterator pIter = rHashMap.begin(); - Reference< XStorage > xUserStorage( rUserElementType.xStorage ); - Reference< XStorage > xDefaultStorage( rDefaultElementType.xStorage ); - Reference< XNameAccess > xUserNameAccess( rUserElementType.xStorage, UNO_QUERY ); - Reference< XNameAccess > xDefaultNameAccess( rDefaultElementType.xStorage, UNO_QUERY ); - - Reference< XUIConfigurationManager > xThis( m_xOwner, UNO_QUERY ); - sal_Int16 nType = rUserElementType.nElementType; - - while ( pIter != rHashMap.end() ) - { - UIElementData& rElement = pIter->second; - if ( rElement.bModified ) - { - if ( xUserNameAccess->hasByName( rElement.aName )) - { - // Replace settings with data from user layer - Reference< XIndexAccess > xOldSettings( rElement.xSettings ); - - impl_requestUIElementData( nType, LAYER_USERDEFINED, rElement ); - - ConfigurationEvent aReplaceEvent; - - aReplaceEvent.ResourceURL = rElement.aResourceURL; - aReplaceEvent.Accessor <<= xThis; - aReplaceEvent.Source = m_xOwner; - aReplaceEvent.ReplacedElement <<= xOldSettings; - aReplaceEvent.Element <<= rElement.xSettings; - rReplaceNotifyContainer.push_back( aReplaceEvent ); - - rElement.bModified = false; - } - else if ( m_bUseDefault && xDefaultNameAccess->hasByName( rElement.aName )) - { - // Replace settings with data from default layer - Reference< XIndexAccess > xOldSettings( rElement.xSettings ); - - impl_requestUIElementData( nType, LAYER_DEFAULT, rElement ); - - ConfigurationEvent aReplaceEvent; - - aReplaceEvent.ResourceURL = rElement.aResourceURL; - aReplaceEvent.Accessor <<= xThis; - aReplaceEvent.Source = m_xOwner; - aReplaceEvent.ReplacedElement <<= xOldSettings; - aReplaceEvent.Element <<= rElement.xSettings; - rReplaceNotifyContainer.push_back( aReplaceEvent ); - - // Mark element as default and not modified. That means "not active" - // in the user layer anymore. - rElement.bModified = false; - rElement.bDefault = true; - } - else - { - // Element settings are not in any storage => remove - ConfigurationEvent aRemoveEvent; - - aRemoveEvent.ResourceURL = rElement.aResourceURL; - aRemoveEvent.Accessor <<= xThis; - aRemoveEvent.Source = m_xOwner; - aRemoveEvent.Element <<= rElement.xSettings; - - rRemoveNotifyContainer.push_back( aRemoveEvent ); - - // Mark element as default and not modified. That means "not active" - // in the user layer anymore. - rElement.bModified = false; - rElement.bDefault = true; - } - } - ++pIter; - } - - rUserElementType.bModified = sal_False; -} - -void UIConfigurationManagerImpl::impl_Initialize() -{ - // Initialize the top-level structures with the storage data - if ( m_xUserConfigStorage.is() ) - { - // Try to access our module sub folder - for ( sal_Int16 i = 1; i < ::com::sun::star::ui::UIElementType::COUNT; - i++ ) - { - Reference< XStorage > xElementTypeStorage; - try - { - if ( m_pStorageHandler[i] ) - xElementTypeStorage = m_pStorageHandler[i]->getWorkingStorageUser(); - } - catch ( com::sun::star::container::NoSuchElementException& ) - { - } - catch ( ::com::sun::star::embed::InvalidStorageException& ) - { - } - catch ( ::com::sun::star::lang::IllegalArgumentException& ) - { - } - catch ( ::com::sun::star::io::IOException& ) - { - } - catch ( ::com::sun::star::embed::StorageWrappedTargetException& ) - { - } - - m_aUIElements[LAYER_USERDEFINED][i].nElementType = i; - m_aUIElements[LAYER_USERDEFINED][i].bModified = false; - m_aUIElements[LAYER_USERDEFINED][i].xStorage = xElementTypeStorage; - m_aUIElements[LAYER_USERDEFINED][i].bDefaultLayer = false; - } - } // if ( m_xUserConfigStorage.is() ) - else if ( !m_bUseDefault ) - { - // We have no storage, just initialize ui element types with empty storage! - for ( int i = 1; i < ::com::sun::star::ui::UIElementType::COUNT; i++ ) - m_aUIElements[LAYER_USERDEFINED][i].xStorage.clear(); - } - - if ( m_bUseDefault && m_xUserConfigStorage.is() ) - { - Reference< XNameAccess > xNameAccess( m_xDefaultConfigStorage, UNO_QUERY_THROW ); - - // Try to access our module sub folder - for ( sal_Int16 i = 1; i < ::com::sun::star::ui::UIElementType::COUNT; - i++ ) - { - Reference< XStorage > xElementTypeStorage; - try - { - xNameAccess->getByName( rtl::OUString::createFromAscii( UIELEMENTTYPENAMES[i] )) >>= xElementTypeStorage; - } - catch ( com::sun::star::container::NoSuchElementException& ) - { - } - - m_aUIElements[LAYER_DEFAULT][i].nElementType = i; - m_aUIElements[LAYER_DEFAULT][i].bModified = false; - m_aUIElements[LAYER_DEFAULT][i].xStorage = xElementTypeStorage; - m_aUIElements[LAYER_DEFAULT][i].bDefaultLayer = true; - } - } -} - -UIConfigurationManagerImpl::UIConfigurationManagerImpl( const Reference< com::sun::star::lang::XMultiServiceFactory >& xServiceManager - ,const Reference< XInterface >& _xOwner - , bool _bUseDefault) : - ThreadHelpBase( &Application::GetSolarMutex() ) - , m_xOwner( _xOwner ) - , m_bUseDefault(_bUseDefault) - , m_bReadOnly( true ) - , m_bInitialized( false ) - , m_bModified( false ) - , m_bConfigRead( false ) - , m_bDisposed( false ) - , m_aXMLPostfix( RTL_CONSTASCII_USTRINGPARAM( ".xml" )) - , m_aPropUIName( RTL_CONSTASCII_USTRINGPARAM( "UIName" )) - , m_aPropResourceURL( RTL_CONSTASCII_USTRINGPARAM( "ResourceURL" )) - , m_xServiceManager( xServiceManager ) - , m_aListenerContainer( m_aLock.getShareableOslMutex() ) -{ - for ( int i = 0; i < ::com::sun::star::ui::UIElementType::COUNT; i++ ) - m_pStorageHandler[i] = 0; - - // Make sure we have a default initialized entry for every layer and user interface element type! - // The following code depends on this! - m_aUIElements[LAYER_DEFAULT].resize( ::com::sun::star::ui::UIElementType::COUNT ); - m_aUIElements[LAYER_USERDEFINED].resize( ::com::sun::star::ui::UIElementType::COUNT ); -} - -UIConfigurationManagerImpl::~UIConfigurationManagerImpl() -{ - for ( int i = 0; i < ::com::sun::star::ui::UIElementType::COUNT; i++ ) - delete m_pStorageHandler[i]; -} - -// XComponent -void UIConfigurationManagerImpl::dispose() throw (::com::sun::star::uno::RuntimeException) -{ - css::lang::EventObject aEvent( m_xOwner ); - m_aListenerContainer.disposeAndClear( aEvent ); - - { - ResetableGuard aGuard( m_aLock ); - try - { - if ( m_xModuleImageManager.is() ) - m_xModuleImageManager->dispose(); - } - catch ( Exception& ) - { - } - - m_xModuleImageManager.clear(); - m_aUIElements[LAYER_USERDEFINED].clear(); - m_aUIElements[LAYER_DEFAULT].clear(); - m_xDefaultConfigStorage.clear(); - m_xUserConfigStorage.clear(); - m_xUserRootCommit.clear(); - m_bConfigRead = false; - m_bModified = false; - m_bDisposed = true; - } -} - -void UIConfigurationManagerImpl::addEventListener( const Reference< XEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException) -{ - { - ResetableGuard aGuard( m_aLock ); - - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - if ( m_bDisposed ) - throw DisposedException(); - } - - m_aListenerContainer.addInterface( ::getCppuType( ( const Reference< XEventListener >* ) NULL ), xListener ); -} - -void UIConfigurationManagerImpl::removeEventListener( const Reference< XEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException) -{ - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - m_aListenerContainer.removeInterface( ::getCppuType( ( const Reference< XEventListener >* ) NULL ), xListener ); -} - -// XInitialization -void UIConfigurationManagerImpl::initialize( const Sequence< Any >& aArguments ) throw ( Exception, RuntimeException ) -{ - ResetableGuard aLock( m_aLock ); - - if ( !m_bInitialized ) - { - ::comphelper::SequenceAsHashMap lArgs(aArguments); - m_aModuleIdentifier = lArgs.getUnpackedValueOrDefault(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ModuleIdentifier")), ::rtl::OUString()); - m_aModuleShortName = lArgs.getUnpackedValueOrDefault(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ModuleShortName")), ::rtl::OUString()); - - for ( int i = 1; i < ::com::sun::star::ui::UIElementType::COUNT; i++ ) - { - rtl::OUString aResourceType; - if ( i == ::com::sun::star::ui::UIElementType::MENUBAR ) - aResourceType = PresetHandler::RESOURCETYPE_MENUBAR(); - else if ( i == ::com::sun::star::ui::UIElementType::TOOLBAR ) - aResourceType = PresetHandler::RESOURCETYPE_TOOLBAR(); - else if ( i == ::com::sun::star::ui::UIElementType::STATUSBAR ) - aResourceType = PresetHandler::RESOURCETYPE_STATUSBAR(); - - if ( aResourceType.getLength() > 0 ) - { - m_pStorageHandler[i] = new PresetHandler( m_xServiceManager ); - m_pStorageHandler[i]->connectToResource( PresetHandler::E_MODULES, - aResourceType, // this path wont be used later ... seee next lines! - m_aModuleShortName, - css::uno::Reference< css::embed::XStorage >()); // no document root used here! - } - } - - // initialize root storages for all resource types - m_xUserRootCommit = css::uno::Reference< css::embed::XTransactedObject >( - m_pStorageHandler[::com::sun::star::ui::UIElementType::MENUBAR]->getOrCreateRootStorageUser(), css::uno::UNO_QUERY); // can be empty - m_xDefaultConfigStorage = m_pStorageHandler[::com::sun::star::ui::UIElementType::MENUBAR]->getParentStorageShare( - m_pStorageHandler[::com::sun::star::ui::UIElementType::MENUBAR]->getWorkingStorageShare()); - m_xUserConfigStorage = m_pStorageHandler[::com::sun::star::ui::UIElementType::MENUBAR]->getParentStorageUser( - m_pStorageHandler[::com::sun::star::ui::UIElementType::MENUBAR]->getWorkingStorageUser()); - - if ( m_xUserConfigStorage.is() ) - { - Reference< XPropertySet > xPropSet( m_xUserConfigStorage, UNO_QUERY ); - if ( xPropSet.is() ) - { - long nOpenMode = 0; - if ( xPropSet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "OpenMode" ))) >>= nOpenMode ) - m_bReadOnly = !( nOpenMode & ElementModes::WRITE ); - } - } - - impl_Initialize(); - - m_bInitialized = true; - } -} - -// XUIConfiguration -void UIConfigurationManagerImpl::addConfigurationListener( const Reference< ::com::sun::star::ui::XUIConfigurationListener >& xListener ) throw (::com::sun::star::uno::RuntimeException) -{ - { - ResetableGuard aGuard( m_aLock ); - - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - if ( m_bDisposed ) - throw DisposedException(); - } - - m_aListenerContainer.addInterface( ::getCppuType( ( const Reference< XUIConfigurationListener >* ) NULL ), xListener ); -} - -void UIConfigurationManagerImpl::removeConfigurationListener( const Reference< ::com::sun::star::ui::XUIConfigurationListener >& xListener ) throw (::com::sun::star::uno::RuntimeException) -{ - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - m_aListenerContainer.removeInterface( ::getCppuType( ( const Reference< XUIConfigurationListener >* ) NULL ), xListener ); -} - - -// XUIConfigurationManager -void UIConfigurationManagerImpl::reset() throw (::com::sun::star::uno::RuntimeException) -{ - ResetableGuard aGuard( m_aLock ); - - /* SAFE AREA ----------------------------------------------------------------------------------------------- */ - if ( m_bDisposed ) - throw DisposedException(); - - if ( !isReadOnly() ) - { - // Remove all elements from our user-defined storage! - try - { - for ( int i = 1; i < ::com::sun::star::ui::UIElementType::COUNT; i++ ) - { - UIElementType& rElementType = m_aUIElements[LAYER_USERDEFINED][i]; - Reference< XStorage > xSubStorage( rElementType.xStorage, UNO_QUERY ); - - if ( xSubStorage.is() ) - { - bool bCommitSubStorage( false ); - Reference< XNameAccess > xSubStorageNameAccess( xSubStorage, UNO_QUERY ); - Sequence< rtl::OUString > aUIElementStreamNames = xSubStorageNameAccess->getElementNames(); - for ( sal_Int32 j = 0; j < aUIElementStreamNames.getLength(); j++ ) - { - xSubStorage->removeElement( aUIElementStreamNames[j] ); - bCommitSubStorage = true; - } - - if ( bCommitSubStorage ) - { - Reference< XTransactedObject > xTransactedObject( xSubStorage, UNO_QUERY ); - if ( xTransactedObject.is() ) - xTransactedObject->commit(); - m_pStorageHandler[i]->commitUserChanges(); - } - } - } - - // remove settings from user defined layer and notify listener about removed settings data! - ConfigEventNotifyContainer aRemoveEventNotifyContainer; - ConfigEventNotifyContainer aReplaceEventNotifyContainer; - for ( sal_Int16 j = 1; j < ::com::sun::star::ui::UIElementType::COUNT; j++ ) - { - try - { - UIElementType& rUserElementType = m_aUIElements[LAYER_USERDEFINED][j]; - UIElementType& rDefaultElementType = m_aUIElements[LAYER_DEFAULT][j]; - - impl_resetElementTypeData( rUserElementType, rDefaultElementType, aRemoveEventNotifyContainer, aReplaceEventNotifyContainer ); - rUserElementType.bModified = sal_False; - } - catch ( Exception& ) - { - throw IOException(); - } - } - - m_bModified = sal_False; - - // Unlock mutex before notify our listeners - aGuard.unlock(); - - // Notify our listeners - ::std::for_each(aRemoveEventNotifyContainer.begin(),aRemoveEventNotifyContainer.end(),::boost::bind(&UIConfigurationManagerImpl::implts_notifyContainerListener,this,_1,NotifyOp_Remove)); - ::std::for_each(aReplaceEventNotifyContainer.begin(),aReplaceEventNotifyContainer.end(),::boost::bind(&UIConfigurationManagerImpl::implts_notifyContainerListener,this,_1,NotifyOp_Replace)); - } - catch ( ::com::sun::star::lang::IllegalArgumentException& ) - { - } - catch ( ::com::sun::star::container::NoSuchElementException& ) - { - } - catch ( ::com::sun::star::embed::InvalidStorageException& ) - { - } - catch ( ::com::sun::star::embed::StorageWrappedTargetException& ) - { - } - } -} - -Sequence< Sequence< PropertyValue > > UIConfigurationManagerImpl::getUIElementsInfo( sal_Int16 ElementType ) -throw ( IllegalArgumentException, RuntimeException ) -{ - if (( ElementType < 0 ) || ( ElementType >= ::com::sun::star::ui::UIElementType::COUNT )) - throw IllegalArgumentException(); - - ResetableGuard aGuard( m_aLock ); - if ( m_bDisposed ) - throw DisposedException(); - - Sequence< Sequence< PropertyValue > > aElementInfoSeq; - UIElementInfoHashMap aUIElementInfoCollection; - - if ( ElementType == ::com::sun::star::ui::UIElementType::UNKNOWN ) - { - for ( sal_Int16 i = 0; i < ::com::sun::star::ui::UIElementType::COUNT; i++ ) - impl_fillSequenceWithElementTypeInfo( aUIElementInfoCollection, sal_Int16( i ) ); - } - else - impl_fillSequenceWithElementTypeInfo( aUIElementInfoCollection, ElementType ); - - Sequence< PropertyValue > aUIElementInfo( 2 ); - aUIElementInfo[0].Name = m_aPropResourceURL; - aUIElementInfo[1].Name = m_aPropUIName; - - aElementInfoSeq.realloc( aUIElementInfoCollection.size() ); - UIElementInfoHashMap::const_iterator pIter = aUIElementInfoCollection.begin(); - - sal_Int32 n = 0; - while ( pIter != aUIElementInfoCollection.end() ) - { - aUIElementInfo[0].Value <<= pIter->second.aResourceURL; - aUIElementInfo[1].Value <<= pIter->second.aUIName; - aElementInfoSeq[n++] = aUIElementInfo; - ++pIter; - } - - return aElementInfoSeq; -} - -Reference< XIndexContainer > UIConfigurationManagerImpl::createSettings() throw (::com::sun::star::uno::RuntimeException) -{ - ResetableGuard aGuard( m_aLock ); - - if ( m_bDisposed ) - throw DisposedException(); - - // Creates an empty item container which can be filled from outside - return Reference< XIndexContainer >( static_cast< OWeakObject * >( new RootItemContainer() ), UNO_QUERY ); -} - -sal_Bool UIConfigurationManagerImpl::hasSettings( const ::rtl::OUString& ResourceURL ) -throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException) -{ - sal_Int16 nElementType = RetrieveTypeFromResourceURL( ResourceURL ); - - if (( nElementType == ::com::sun::star::ui::UIElementType::UNKNOWN ) || - ( nElementType >= ::com::sun::star::ui::UIElementType::COUNT )) - throw IllegalArgumentException(); - else - { - ResetableGuard aGuard( m_aLock ); - - if ( m_bDisposed ) - throw DisposedException(); - - UIElementData* pDataSettings = impl_findUIElementData( ResourceURL, nElementType, false ); - if ( pDataSettings && ( m_bUseDefault || !pDataSettings->bDefault) ) - return sal_True; - } - - return sal_False; -} - -Reference< XIndexAccess > UIConfigurationManagerImpl::getSettings( const ::rtl::OUString& ResourceURL, sal_Bool bWriteable ) -throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException) -{ - sal_Int16 nElementType = RetrieveTypeFromResourceURL( ResourceURL ); - - if (( nElementType == ::com::sun::star::ui::UIElementType::UNKNOWN ) || - ( nElementType >= ::com::sun::star::ui::UIElementType::COUNT )) - throw IllegalArgumentException(); - else - { - ResetableGuard aGuard( m_aLock ); - - if ( m_bDisposed ) - throw DisposedException(); - - UIElementData* pDataSettings = impl_findUIElementData( ResourceURL, nElementType ); - if ( pDataSettings && ( m_bUseDefault || !pDataSettings->bDefault) ) - { - // Create a copy of our data if someone wants to change the data. - if ( bWriteable ) - return Reference< XIndexAccess >( static_cast< OWeakObject * >( new RootItemContainer( pDataSettings->xSettings ) ), UNO_QUERY ); - else - return pDataSettings->xSettings; - } - } - - throw NoSuchElementException(); -} - -void UIConfigurationManagerImpl::replaceSettings( const ::rtl::OUString& ResourceURL, const Reference< ::com::sun::star::container::XIndexAccess >& aNewData ) -throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::IllegalAccessException, ::com::sun::star::uno::RuntimeException) -{ - sal_Int16 nElementType = RetrieveTypeFromResourceURL( ResourceURL ); - - if (( nElementType == ::com::sun::star::ui::UIElementType::UNKNOWN ) || - ( nElementType >= ::com::sun::star::ui::UIElementType::COUNT )) - throw IllegalArgumentException(); - else if ( m_bReadOnly ) - throw IllegalAccessException(); - else - { - ResetableGuard aGuard( m_aLock ); - - if ( m_bDisposed ) - throw DisposedException(); - - UIElementData* pDataSettings = impl_findUIElementData( ResourceURL, nElementType ); - if ( pDataSettings && ( m_bUseDefault || !pDataSettings->bDefault) ) - { - if ( !m_bUseDefault || !pDataSettings->bDefaultNode ) - { - // we have a settings entry in our user-defined layer - replace - Reference< XIndexAccess > xOldSettings = pDataSettings->xSettings; - - // Create a copy of the data if the container is not const - Reference< XIndexReplace > xReplace( aNewData, UNO_QUERY ); - if ( xReplace.is() ) - pDataSettings->xSettings = Reference< XIndexAccess >( static_cast< OWeakObject * >( new ConstItemContainer( aNewData ) ), UNO_QUERY ); - else - pDataSettings->xSettings = aNewData; - pDataSettings->bDefault = false; - pDataSettings->bModified = true; - m_bModified = true; - - // Modify type container - UIElementType& rElementType = m_aUIElements[LAYER_USERDEFINED][nElementType]; - rElementType.bModified = true; - - Reference< XUIConfigurationManager > xThis( m_xOwner, UNO_QUERY ); - - // Create event to notify listener about replaced element settings - ConfigurationEvent aEvent; - - aEvent.ResourceURL = ResourceURL; - aEvent.Accessor <<= xThis; - aEvent.Source = m_xOwner; - aEvent.ReplacedElement <<= xOldSettings; - aEvent.Element <<= pDataSettings->xSettings; - - aGuard.unlock(); - - implts_notifyContainerListener( aEvent, NotifyOp_Replace ); - } - else - { - // we have no settings in our user-defined layer - insert - UIElementData aUIElementData; - - aUIElementData.bDefault = false; - aUIElementData.bDefaultNode = false; - aUIElementData.bModified = true; - - // Create a copy of the data if the container is not const - Reference< XIndexReplace > xReplace( aNewData, UNO_QUERY ); - if ( xReplace.is() ) - aUIElementData.xSettings = Reference< XIndexAccess >( static_cast< OWeakObject * >( new ConstItemContainer( aNewData ) ), UNO_QUERY ); - else - aUIElementData.xSettings = aNewData; - aUIElementData.aName = RetrieveNameFromResourceURL( ResourceURL ) + m_aXMLPostfix; - aUIElementData.aResourceURL = ResourceURL; - m_bModified = true; - - // Modify type container - UIElementType& rElementType = m_aUIElements[LAYER_USERDEFINED][nElementType]; - rElementType.bModified = true; - - UIElementDataHashMap& rElements = rElementType.aElementsHashMap; - - // Check our user element settings hash map as it can already contain settings that have been set to default! - // If no node can be found, we have to insert it. - UIElementDataHashMap::iterator pIter = rElements.find( ResourceURL ); - if ( pIter != rElements.end() ) - pIter->second = aUIElementData; - else - rElements.insert( UIElementDataHashMap::value_type( ResourceURL, aUIElementData )); - - Reference< XUIConfigurationManager > xThis( m_xOwner, UNO_QUERY ); - - // Create event to notify listener about replaced element settings - ConfigurationEvent aEvent; - - aEvent.ResourceURL = ResourceURL; - aEvent.Accessor <<= xThis; - aEvent.Source = m_xOwner; - aEvent.ReplacedElement <<= pDataSettings->xSettings; - aEvent.Element <<= aUIElementData.xSettings; - - aGuard.unlock(); - - implts_notifyContainerListener( aEvent, NotifyOp_Replace ); - } - } - else - throw NoSuchElementException(); - } -} - -void UIConfigurationManagerImpl::removeSettings( const ::rtl::OUString& ResourceURL ) -throw ( NoSuchElementException, IllegalArgumentException, IllegalAccessException, RuntimeException) -{ - sal_Int16 nElementType = RetrieveTypeFromResourceURL( ResourceURL ); - - if (( nElementType == ::com::sun::star::ui::UIElementType::UNKNOWN ) || - ( nElementType >= ::com::sun::star::ui::UIElementType::COUNT )) - throw IllegalArgumentException(); - else if ( m_bReadOnly ) - throw IllegalAccessException(); - else - { - ResetableGuard aGuard( m_aLock ); - - if ( m_bDisposed ) - throw DisposedException(); - - UIElementData* pDataSettings = impl_findUIElementData( ResourceURL, nElementType ); - if ( pDataSettings ) - { - // If element settings are default, we don't need to change anything! - if ( pDataSettings->bDefault ) - return; - else - { - Reference< XIndexAccess > xRemovedSettings = pDataSettings->xSettings; - pDataSettings->bDefault = true; - - // check if this is a default layer node - if ( !m_bUseDefault || !pDataSettings->bDefaultNode ) - pDataSettings->bModified = true; // we have to remove this node from the user layer! - pDataSettings->xSettings.clear(); - m_bModified = true; // user layer must be written - - // Modify type container - UIElementType& rElementType = m_aUIElements[LAYER_USERDEFINED][nElementType]; - rElementType.bModified = true; - - Reference< XUIConfigurationManager > xThis( m_xOwner, UNO_QUERY ); - // Check if we have settings in the default layer which replaces the user-defined one! - UIElementData* pDefaultDataSettings = m_bUseDefault ? impl_findUIElementData( ResourceURL, nElementType ) : NULL; - if ( pDefaultDataSettings ) - { - // Create event to notify listener about replaced element settings - ConfigurationEvent aEvent; - - aEvent.ResourceURL = ResourceURL; - aEvent.Accessor <<= xThis; - aEvent.Source = m_xOwner; - aEvent.Element <<= xRemovedSettings; - aEvent.ReplacedElement <<= pDefaultDataSettings->xSettings; - - aGuard.unlock(); - - implts_notifyContainerListener( aEvent, NotifyOp_Replace ); - } - else - { - // Create event to notify listener about removed element settings - ConfigurationEvent aEvent; - - aEvent.ResourceURL = ResourceURL; - aEvent.Accessor <<= xThis; - aEvent.Source = m_xOwner; - aEvent.Element <<= xRemovedSettings; - - aGuard.unlock(); - - implts_notifyContainerListener( aEvent, NotifyOp_Remove ); - } - } - } - else - throw NoSuchElementException(); - } -} - -void UIConfigurationManagerImpl::insertSettings( const ::rtl::OUString& NewResourceURL, const Reference< XIndexAccess >& aNewData ) -throw ( ElementExistException, IllegalArgumentException, IllegalAccessException, RuntimeException ) -{ - sal_Int16 nElementType = RetrieveTypeFromResourceURL( NewResourceURL ); - - if (( nElementType == ::com::sun::star::ui::UIElementType::UNKNOWN ) || - ( nElementType >= ::com::sun::star::ui::UIElementType::COUNT )) - throw IllegalArgumentException(); - else if ( m_bReadOnly ) - throw IllegalAccessException(); - else - { - ResetableGuard aGuard( m_aLock ); - - if ( m_bDisposed ) - throw DisposedException(); - - bool bInsertData( false ); - UIElementData aUIElementData; - UIElementData* pDataSettings = impl_findUIElementData( NewResourceURL, nElementType ); - if ( !m_bUseDefault ) - { - if ( pDataSettings && !pDataSettings->bDefault ) - throw ElementExistException(); - if ( !pDataSettings ) - { - pDataSettings = &aUIElementData; - bInsertData = true; - } - } - if ( !pDataSettings || !m_bUseDefault ) - { - aUIElementData.bDefault = false; - if ( !m_bUseDefault ) - aUIElementData.bDefaultNode = false; - aUIElementData.bModified = true; - - // Create a copy of the data if the container is not const - Reference< XIndexReplace > xReplace( aNewData, UNO_QUERY ); - if ( xReplace.is() ) - aUIElementData.xSettings = Reference< XIndexAccess >( static_cast< OWeakObject * >( new ConstItemContainer( aNewData ) ), UNO_QUERY ); - else - aUIElementData.xSettings = aNewData; - - m_bModified = true; - - UIElementType& rElementType = m_aUIElements[LAYER_USERDEFINED][nElementType]; - rElementType.bModified = true; - - if ( bInsertData ) - { - aUIElementData.aName = RetrieveNameFromResourceURL( NewResourceURL ) + m_aXMLPostfix; - aUIElementData.aResourceURL = NewResourceURL; - UIElementDataHashMap& rElements = rElementType.aElementsHashMap; - rElements.insert( UIElementDataHashMap::value_type( NewResourceURL, aUIElementData )); - } - - Reference< XIndexAccess > xInsertSettings( aUIElementData.xSettings ); - Reference< XUIConfigurationManager > xThis( m_xOwner, UNO_QUERY ); - - // Create event to notify listener about removed element settings - ConfigurationEvent aEvent; - - aEvent.ResourceURL = NewResourceURL; - aEvent.Accessor <<= xThis; - aEvent.Source = m_xOwner; - aEvent.Element <<= xInsertSettings; - - aGuard.unlock(); - - implts_notifyContainerListener( aEvent, NotifyOp_Insert ); - } - else - throw ElementExistException(); - } -} - -Reference< XInterface > UIConfigurationManagerImpl::getImageManager() throw (::com::sun::star::uno::RuntimeException) -{ - ResetableGuard aGuard( m_aLock ); - - if ( m_bDisposed ) - throw DisposedException(); - - if ( !m_xModuleImageManager.is() ) - { - if ( m_bUseDefault ) - m_xModuleImageManager = Reference< XComponent >( static_cast< cppu::OWeakObject *>( new ModuleImageManager( m_xServiceManager )), - UNO_QUERY ); - else - m_xModuleImageManager = Reference< XComponent >( static_cast< cppu::OWeakObject *>( new ImageManager( m_xServiceManager )), - UNO_QUERY ); - Reference< XInitialization > xInit( m_xModuleImageManager, UNO_QUERY ); - - Sequence< Any > aPropSeq( m_bUseDefault ? 3 : 2 ); - PropertyValue aPropValue; - aPropValue.Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "UserConfigStorage" )); - aPropValue.Value <<= m_xUserConfigStorage; - aPropSeq[0] <<= aPropValue; - aPropValue.Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ModuleIdentifier" )); - aPropValue.Value <<= m_aModuleIdentifier; - aPropSeq[1] <<= aPropValue; - if ( m_bUseDefault ) - { - aPropValue.Name = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "UserRootCommit" )); - aPropValue.Value <<= m_xUserRootCommit; - aPropSeq[2] <<= aPropValue; - } - - xInit->initialize( aPropSeq ); - } - - return Reference< XInterface >( m_xModuleImageManager, UNO_QUERY ); - -} - -Reference< XInterface > UIConfigurationManagerImpl::getShortCutManager() throw (::com::sun::star::uno::RuntimeException) -{ - ResetableGuard aGuard( m_aLock ); - if ( !m_bUseDefault && m_xAccConfig.is()) - return m_xAccConfig; - - Reference< XMultiServiceFactory > xSMGR = m_xServiceManager; - ::rtl::OUString aModule = m_aModuleIdentifier; - Reference< XStorage > xDocumentRoot = m_xUserConfigStorage; - aGuard.unlock(); - Reference< XInterface > xManager = xSMGR->createInstance(m_bUseDefault ? SERVICENAME_MODULEACCELERATORCONFIGURATION : SERVICENAME_DOCUMENTACCELERATORCONFIGURATION ); - Reference< XInitialization > xInit (xManager, UNO_QUERY_THROW); - - PropertyValue aProp; - Sequence< Any > lArgs(1); - if ( m_bUseDefault ) - { - aProp.Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ModuleIdentifier")); - aProp.Value <<= aModule; - } // if ( m_bUseDefault ) - else - { - aProp.Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DocumentRoot")); - aProp.Value <<= xDocumentRoot; - } - lArgs[0] <<= aProp; - xInit->initialize(lArgs); - - if ( !m_bUseDefault ) - { - // SAFE -> - aGuard.lock(); - m_xAccConfig = xManager; - aGuard.unlock(); - // <- SAFE - } - - return xManager; -} - -Reference< XInterface > UIConfigurationManagerImpl::getEventsManager() throw (::com::sun::star::uno::RuntimeException) -{ - return Reference< XInterface >(); -} -// XUIConfigurationStorage -void UIConfigurationManagerImpl::setStorage( const Reference< XStorage >& Storage ) throw (::com::sun::star::uno::RuntimeException) -{ - ResetableGuard aGuard( m_aLock ); - - if ( m_bDisposed ) - throw DisposedException(); - - if ( m_xUserConfigStorage.is() ) - { - try - { - // Dispose old storage to be sure that it will be closed - Reference< XComponent > xComponent( m_xUserConfigStorage, UNO_QUERY ); - if ( xComponent.is() ) - xComponent->dispose(); - } - catch ( Exception& ) - { - } - } - - // We store the new storage. Be careful it could be an empty reference! - m_xUserConfigStorage = Storage; - m_bReadOnly = sal_True; - - Reference< XUIConfigurationStorage > xAccUpdate(m_xAccConfig, UNO_QUERY); - if ( xAccUpdate.is() ) - xAccUpdate->setStorage( m_xUserConfigStorage ); - - if ( m_xModuleImageManager.is() ) - { - ImageManager* pImageManager = (ImageManager*)m_xModuleImageManager.get(); - if ( pImageManager ) - pImageManager->setStorage( m_xUserConfigStorage ); - } - - if ( m_xUserConfigStorage.is() ) - { - ::rtl::OUString sEmpty; - for ( int i = 1; i < ::com::sun::star::ui::UIElementType::COUNT; i++ ) - { - rtl::OUString aResourceType; - if ( i == ::com::sun::star::ui::UIElementType::MENUBAR ) - aResourceType = PresetHandler::RESOURCETYPE_MENUBAR(); - else if ( i == ::com::sun::star::ui::UIElementType::TOOLBAR ) - aResourceType = PresetHandler::RESOURCETYPE_TOOLBAR(); - else if ( i == ::com::sun::star::ui::UIElementType::STATUSBAR ) - aResourceType = PresetHandler::RESOURCETYPE_STATUSBAR(); - - - m_pStorageHandler[i] = new PresetHandler( m_xServiceManager ); - m_pStorageHandler[i]->connectToResource( PresetHandler::E_DOCUMENT, - rtl::OUString::createFromAscii( UIELEMENTTYPENAMES[i] ), // this path wont be used later ... see next lines! - sEmpty, - m_xUserConfigStorage); - } - Reference< XPropertySet > xPropSet( m_xUserConfigStorage, UNO_QUERY ); - if ( xPropSet.is() ) - { - try - { - long nOpenMode = 0; - if ( xPropSet->getPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "OpenMode" ))) >>= nOpenMode ) - m_bReadOnly = !( nOpenMode & ElementModes::WRITE ); - } - catch ( com::sun::star::beans::UnknownPropertyException& ) - { - } - catch ( com::sun::star::lang::WrappedTargetException& ) - { - } - } - } - - impl_Initialize(); -} -// ----------------------------------------------------------------------------- -sal_Bool UIConfigurationManagerImpl::hasStorage() throw (::com::sun::star::uno::RuntimeException) -{ - ResetableGuard aGuard( m_aLock ); - - if ( m_bDisposed ) - throw DisposedException(); - - return ( m_xUserConfigStorage.is() ); -} - -// XUIConfigurationManagerImpl -sal_Bool UIConfigurationManagerImpl::isDefaultSettings( const ::rtl::OUString& ResourceURL ) -throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException) -{ - sal_Int16 nElementType = RetrieveTypeFromResourceURL( ResourceURL ); - - if (( nElementType == ::com::sun::star::ui::UIElementType::UNKNOWN ) || - ( nElementType >= ::com::sun::star::ui::UIElementType::COUNT )) - throw IllegalArgumentException(); - else - { - ResetableGuard aGuard( m_aLock ); - - if ( m_bDisposed ) - throw DisposedException(); - - UIElementData* pDataSettings = impl_findUIElementData( ResourceURL, nElementType, false ); - if ( pDataSettings && pDataSettings->bDefaultNode ) - return sal_True; - } - - return sal_False; -} - -Reference< XIndexAccess > UIConfigurationManagerImpl::getDefaultSettings( const ::rtl::OUString& ResourceURL ) -throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException) -{ - sal_Int16 nElementType = RetrieveTypeFromResourceURL( ResourceURL ); - - if (( nElementType == ::com::sun::star::ui::UIElementType::UNKNOWN ) || - ( nElementType >= ::com::sun::star::ui::UIElementType::COUNT )) - throw IllegalArgumentException(); - else - { - ResetableGuard aGuard( m_aLock ); - - if ( m_bDisposed ) - throw DisposedException(); - - // preload list of element types on demand - impl_preloadUIElementTypeList( LAYER_DEFAULT, nElementType ); - - // Look into our default vector/boost::unordered_map combination - UIElementDataHashMap& rDefaultHashMap = m_aUIElements[LAYER_DEFAULT][nElementType].aElementsHashMap; - UIElementDataHashMap::iterator pIter = rDefaultHashMap.find( ResourceURL ); - if ( pIter != rDefaultHashMap.end() ) - { - if ( !pIter->second.xSettings.is() ) - impl_requestUIElementData( nElementType, LAYER_DEFAULT, pIter->second ); - return pIter->second.xSettings; - } - } - - // Nothing has been found! - throw NoSuchElementException(); -} - -// XUIConfigurationPersistence -void UIConfigurationManagerImpl::reload() throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException) -{ - ResetableGuard aGuard( m_aLock ); - - if ( m_bDisposed ) - throw DisposedException(); - - if ( m_xUserConfigStorage.is() && m_bModified && !m_bReadOnly ) - { - // Try to access our module sub folder - ConfigEventNotifyContainer aRemoveNotifyContainer; - ConfigEventNotifyContainer aReplaceNotifyContainer; - for ( sal_Int16 i = 1; i < ::com::sun::star::ui::UIElementType::COUNT; i++ ) - { - try - { - UIElementType& rUserElementType = m_aUIElements[LAYER_USERDEFINED][i]; - UIElementType& rDefaultElementType = m_aUIElements[LAYER_DEFAULT][i]; - - if ( rUserElementType.bModified ) - impl_reloadElementTypeData( rUserElementType, rDefaultElementType, aRemoveNotifyContainer, aReplaceNotifyContainer ); - } - catch ( Exception& ) - { - throw IOException(); - } - } - - m_bModified = sal_False; - - // Unlock mutex before notify our listeners - aGuard.unlock(); - - // Notify our listeners - ::std::for_each(aRemoveNotifyContainer.begin(),aRemoveNotifyContainer.end(),::boost::bind(&UIConfigurationManagerImpl::implts_notifyContainerListener,this,_1,NotifyOp_Remove)); - ::std::for_each(aReplaceNotifyContainer.begin(),aReplaceNotifyContainer.end(),::boost::bind(&UIConfigurationManagerImpl::implts_notifyContainerListener,this,_1,NotifyOp_Replace)); - } -} - -void UIConfigurationManagerImpl::store() throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException) -{ - ResetableGuard aGuard( m_aLock ); - - if ( m_bDisposed ) - throw DisposedException(); - - if ( m_xUserConfigStorage.is() && m_bModified && !m_bReadOnly ) - { - // Try to access our module sub folder - for ( int i = 1; i < ::com::sun::star::ui::UIElementType::COUNT; i++ ) - { - try - { - UIElementType& rElementType = m_aUIElements[LAYER_USERDEFINED][i]; - Reference< XStorage > xStorage( rElementType.xStorage, UNO_QUERY ); - - if ( rElementType.bModified && xStorage.is() ) - { - impl_storeElementTypeData( xStorage, rElementType ); - m_pStorageHandler[i]->commitUserChanges(); - } - } - catch ( Exception& ) - { - throw IOException(); - } - } - - m_bModified = false; - } -} - -void UIConfigurationManagerImpl::storeToStorage( const Reference< XStorage >& Storage ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException) -{ - ResetableGuard aGuard( m_aLock ); - - if ( m_bDisposed ) - throw DisposedException(); - - if ( m_xUserConfigStorage.is() && m_bModified && !m_bReadOnly ) - { - // Try to access our module sub folder - for ( int i = 1; i < ::com::sun::star::ui::UIElementType::COUNT; i++ ) - { - try - { - Reference< XStorage > xElementTypeStorage( Storage->openStorageElement( - rtl::OUString::createFromAscii( UIELEMENTTYPENAMES[i] ), ElementModes::READWRITE )); - UIElementType& rElementType = m_aUIElements[LAYER_USERDEFINED][i]; - - if ( rElementType.bModified && xElementTypeStorage.is() ) - impl_storeElementTypeData( xElementTypeStorage, rElementType, false ); // store data to storage, but don't reset modify flag! - } - catch ( Exception& ) - { - throw IOException(); - } - } - - Reference< XTransactedObject > xTransactedObject( Storage, UNO_QUERY ); - if ( xTransactedObject.is() ) - xTransactedObject->commit(); - } -} - -sal_Bool UIConfigurationManagerImpl::isModified() throw (::com::sun::star::uno::RuntimeException) -{ - ResetableGuard aGuard( m_aLock ); - - return m_bModified; -} - -sal_Bool UIConfigurationManagerImpl::isReadOnly() throw (::com::sun::star::uno::RuntimeException) -{ - ResetableGuard aGuard( m_aLock ); - - return m_bReadOnly; -} - -void UIConfigurationManagerImpl::implts_notifyContainerListener( const ConfigurationEvent& aEvent, NotifyOp eOp ) -{ - ::cppu::OInterfaceContainerHelper* pContainer = m_aListenerContainer.getContainer( ::getCppuType( ( const css::uno::Reference< ::com::sun::star::ui::XUIConfigurationListener >*) NULL ) ); - if ( pContainer != NULL ) - { - ::cppu::OInterfaceIteratorHelper pIterator( *pContainer ); - while ( pIterator.hasMoreElements() ) - { - try - { - switch ( eOp ) - { - case NotifyOp_Replace: - ((::com::sun::star::ui::XUIConfigurationListener*)pIterator.next())->elementReplaced( aEvent ); - break; - case NotifyOp_Insert: - ((::com::sun::star::ui::XUIConfigurationListener*)pIterator.next())->elementInserted( aEvent ); - break; - case NotifyOp_Remove: - ((::com::sun::star::ui::XUIConfigurationListener*)pIterator.next())->elementRemoved( aEvent ); - break; - } - } - catch( css::uno::RuntimeException& ) - { - pIterator.remove(); - } - } - } -} - -} // namespace framework - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/framework/source/uiconfiguration/uiconfigurationmanagerimpl.hxx b/framework/source/uiconfiguration/uiconfigurationmanagerimpl.hxx deleted file mode 100644 index a2be907122d0..000000000000 --- a/framework/source/uiconfiguration/uiconfigurationmanagerimpl.hxx +++ /dev/null @@ -1,221 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef __FRAMEWORK_UICONFIGURATION_UICONFIGMANAGERIMPL_HXX_ -#define __FRAMEWORK_UICONFIGURATION_UICONFIGMANAGERIMPL_HXX_ - - -/** Attention: stl headers must(!) be included at first. Otherwhise it can make trouble - with solaris headers ... -*/ -#include <vector> -#include <list> -#include <boost/unordered_map.hpp> - -//_________________________________________________________________________________________________________________ -// my own includes -//_________________________________________________________________________________________________________________ -#include <accelerators/presethandler.hxx> -#include <threadhelp/threadhelpbase.hxx> -#include <macros/generic.hxx> -#include <macros/xinterface.hxx> -#include <macros/xtypeprovider.hxx> -#include <macros/xserviceinfo.hxx> -#include <stdtypes.h> -#include <uiconfiguration/moduleimagemanager.hxx> - -//_________________________________________________________________________________________________________________ -// interface includes -//_________________________________________________________________________________________________________________ -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/lang/XTypeProvider.hpp> -#include <com/sun/star/lang/XComponent.hpp> -#include <com/sun/star/ui/XUIConfigurationPersistence.hpp> -#include <com/sun/star/ui/XUIConfiguration.hpp> -#include <com/sun/star/ui/XUIConfigurationManager.hpp> -#include <com/sun/star/ui/UIElementType.hpp> -#include <com/sun/star/lang/XInitialization.hpp> -#include <com/sun/star/ui/ConfigurationEvent.hpp> -#include <com/sun/star/embed/XTransactedObject.hpp> -#include <com/sun/star/container/XIndexContainer.hpp> - -//_________________________________________________________________________________________________________________ -// other includes -//_________________________________________________________________________________________________________________ -#include <cppuhelper/weak.hxx> -#include <cppuhelper/interfacecontainer.hxx> -#include <rtl/ustring.hxx> - - -namespace framework -{ - class UIConfigurationManagerImpl : public ThreadHelpBase // Struct for right initalization of mutex member! Must be first of baseclasses. - { - public: - // XInterface, XTypeProvider, XServiceInfo - UIConfigurationManagerImpl( const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >& xServiceManager - , const com::sun::star::uno::Reference< com::sun::star::uno::XInterface >& _xOwner - , bool _bUseDefault); - ~UIConfigurationManagerImpl(); - - // XComponent - void dispose() throw (::com::sun::star::uno::RuntimeException); - void addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); - void removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException); - - // XInitialization - void initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); - - // XUIConfiguration - void addConfigurationListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIConfigurationListener >& Listener ) throw (::com::sun::star::uno::RuntimeException); - void removeConfigurationListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIConfigurationListener >& Listener ) throw (::com::sun::star::uno::RuntimeException); - - // XUIConfigurationManager - void reset() throw (::com::sun::star::uno::RuntimeException); - ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > > getUIElementsInfo( sal_Int16 ElementType ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); - ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexContainer > createSettings( ) throw (::com::sun::star::uno::RuntimeException); - sal_Bool hasSettings( const ::rtl::OUString& ResourceURL ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); - ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > getSettings( const ::rtl::OUString& ResourceURL, sal_Bool bWriteable ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); - void replaceSettings( const ::rtl::OUString& ResourceURL, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >& aNewData ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::IllegalAccessException, ::com::sun::star::uno::RuntimeException); - void removeSettings( const ::rtl::OUString& ResourceURL ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::IllegalAccessException, ::com::sun::star::uno::RuntimeException); - void insertSettings( const ::rtl::OUString& NewResourceURL, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >& aNewData ) throw (::com::sun::star::container::ElementExistException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::IllegalAccessException, ::com::sun::star::uno::RuntimeException); - ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getImageManager() throw (::com::sun::star::uno::RuntimeException); - ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getShortCutManager() throw (::com::sun::star::uno::RuntimeException); - ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getEventsManager() throw (::com::sun::star::uno::RuntimeException); - - // XUIConfigurationManagerImpl - sal_Bool isDefaultSettings( const ::rtl::OUString& ResourceURL ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); - ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > getDefaultSettings( const ::rtl::OUString& ResourceURL ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException); - - // XUIConfigurationPersistence - void reload() throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); - void store() throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); - void storeToStorage( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& Storage ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException); - sal_Bool isModified() throw (::com::sun::star::uno::RuntimeException); - sal_Bool isReadOnly() throw (::com::sun::star::uno::RuntimeException); - - // XUIConfigurationStorage - void setStorage( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& Storage ) throw (::com::sun::star::uno::RuntimeException); - sal_Bool hasStorage() throw (::com::sun::star::uno::RuntimeException); - - enum Layer - { - LAYER_DEFAULT, - LAYER_USERDEFINED, - LAYER_COUNT - }; - - enum NotifyOp - { - NotifyOp_Remove, - NotifyOp_Insert, - NotifyOp_Replace - }; - - struct UIElementInfo - { - UIElementInfo( const rtl::OUString& rResourceURL, const rtl::OUString& rUIName ) : - aResourceURL( rResourceURL), aUIName( rUIName ) {} - rtl::OUString aResourceURL; - rtl::OUString aUIName; - }; - - struct UIElementData - { - UIElementData() : bModified( false ), bDefault( true ), bDefaultNode( true ) {}; - - rtl::OUString aResourceURL; - rtl::OUString aName; - bool bModified; // has been changed since last storing - bool bDefault; // default settings - bool bDefaultNode; // this is a default layer element data - com::sun::star::uno::Reference< com::sun::star::container::XIndexAccess > xSettings; - }; - - struct UIElementType; - friend struct UIElementType; - typedef ::boost::unordered_map< rtl::OUString, UIElementData, OUStringHashCode, ::std::equal_to< rtl::OUString > > UIElementDataHashMap; - - struct UIElementType - { - UIElementType() : bModified( false ), - bLoaded( false ), - bDefaultLayer( false ), - nElementType( ::com::sun::star::ui::UIElementType::UNKNOWN ) {} - - - bool bModified; - bool bLoaded; - bool bDefaultLayer; - sal_Int16 nElementType; - UIElementDataHashMap aElementsHashMap; - com::sun::star::uno::Reference< com::sun::star::embed::XStorage > xStorage; - }; - - typedef ::std::vector< UIElementType > UIElementTypesVector; - typedef ::std::vector< ::com::sun::star::ui::ConfigurationEvent > ConfigEventNotifyContainer; - typedef ::boost::unordered_map< rtl::OUString, UIElementInfo, OUStringHashCode, ::std::equal_to< rtl::OUString > > UIElementInfoHashMap; - - // private methods - void impl_Initialize(); - void implts_notifyContainerListener( const ::com::sun::star::ui::ConfigurationEvent& aEvent, NotifyOp eOp ); - void impl_fillSequenceWithElementTypeInfo( UIElementInfoHashMap& aUIElementInfoCollection, sal_Int16 nElementType ); - void impl_preloadUIElementTypeList( Layer eLayer, sal_Int16 nElementType ); - UIElementData* impl_findUIElementData( const rtl::OUString& aResourceURL, sal_Int16 nElementType, bool bLoad = true ); - void impl_requestUIElementData( sal_Int16 nElementType, Layer eLayer, UIElementData& aUIElementData ); - void impl_storeElementTypeData( com::sun::star::uno::Reference< com::sun::star::embed::XStorage > xStorage, UIElementType& rElementType, bool bResetModifyState = true ); - void impl_resetElementTypeData( UIElementType& rUserElementType, UIElementType& rDefaultElementType, ConfigEventNotifyContainer& rRemoveNotifyContainer, ConfigEventNotifyContainer& rReplaceNotifyContainer ); - void impl_reloadElementTypeData( UIElementType& rUserElementType, UIElementType& rDefaultElementType, ConfigEventNotifyContainer& rRemoveNotifyContainer, ConfigEventNotifyContainer& rReplaceNotifyContainer ); - - UIElementTypesVector m_aUIElements[LAYER_COUNT]; - PresetHandler* m_pStorageHandler[::com::sun::star::ui::UIElementType::COUNT]; - com::sun::star::uno::Reference< com::sun::star::embed::XStorage > m_xDefaultConfigStorage; - com::sun::star::uno::Reference< com::sun::star::embed::XStorage > m_xUserConfigStorage; - com::sun::star::uno::Reference< com::sun::star::uno::XInterface > m_xOwner; - bool m_bUseDefault; - bool m_bReadOnly; - bool m_bInitialized; - bool m_bModified; - bool m_bConfigRead; - bool m_bDisposed; - rtl::OUString m_aXMLPostfix; - rtl::OUString m_aPropUIName; - rtl::OUString m_aPropResourceURL; - rtl::OUString m_aModuleIdentifier; - rtl::OUString m_aModuleShortName; - com::sun::star::uno::Reference< com::sun::star::embed::XTransactedObject > m_xUserRootCommit; - com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > m_xServiceManager; - ::cppu::OMultiTypeInterfaceContainerHelper m_aListenerContainer; /// container for ALL Listener - com::sun::star::uno::Reference< com::sun::star::uno::XInterface > m_xAccConfig; - com::sun::star::uno::Reference< com::sun::star::lang::XComponent > m_xModuleImageManager; - }; -} - -#endif // __FRAMEWORK_UICONFIGURATION_UICONFIGMANAGERIMPL_HXX_ - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/framework/source/uielement/menubarmanager.cxx b/framework/source/uielement/menubarmanager.cxx index 62ddc7338a68..3de401d53e7e 100644 --- a/framework/source/uielement/menubarmanager.cxx +++ b/framework/source/uielement/menubarmanager.cxx @@ -42,7 +42,6 @@ #include "framework/addonsoptions.hxx" #include <classes/fwkresid.hxx> #include <classes/menumanager.hxx> -#include <framework/acceleratorinfo.hxx> #include <helper/mischelper.hxx> #include <framework/menuextensionsupplier.hxx> #include <classes/resource.hrc> diff --git a/framework/source/uielement/panelwrapper.cxx b/framework/source/uielement/panelwrapper.cxx deleted file mode 100644 index c52e65765dfe..000000000000 --- a/framework/source/uielement/panelwrapper.cxx +++ /dev/null @@ -1,229 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_framework.hxx" -//_________________________________________________________________________________________________________________ -// my own includes -//_________________________________________________________________________________________________________________ - -#include <services.h> -#include <uielement/panelwrapper.hxx> -#include <threadhelp/resetableguard.hxx> -#include <uielement/constitemcontainer.hxx> -#include <uielement/rootitemcontainer.hxx> -#include <uielement/panelwindow.hxx> -#include <services/modelwinservice.hxx> - -//_________________________________________________________________________________________________________________ -// interface includes -//_________________________________________________________________________________________________________________ - -#include <com/sun/star/lang/XServiceInfo.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/awt/XSystemDependentMenuPeer.hpp> -#include <com/sun/star/awt/XMenuBar.hpp> -#include <com/sun/star/container/XIndexContainer.hpp> -#include <com/sun/star/container/XNameAccess.hpp> -#include <com/sun/star/ui/UIElementType.hpp> - -//_________________________________________________________________________________________________________________ -// other includes -//_________________________________________________________________________________________________________________ - -#include <toolkit/unohlp.hxx> -#include <toolkit/awt/vclxwindow.hxx> -#include <comphelper/processfactory.hxx> -#include <svtools/miscopt.hxx> -#include <vcl/svapp.hxx> -#include <rtl/logfile.hxx> - -using namespace com::sun::star; -using namespace com::sun::star::uno; -using namespace com::sun::star::beans; -using namespace com::sun::star::frame; -using namespace com::sun::star::lang; -using namespace com::sun::star::container; -using namespace com::sun::star::awt; -using namespace ::com::sun::star::ui; - -namespace framework -{ - -PanelWrapper::PanelWrapper( const Reference< XMultiServiceFactory >& xServiceManager ) : - UIElementWrapperBase( UIElementType::DOCKINGWINDOW ), - m_xServiceManager( xServiceManager ), - m_bNoClose(false) -{ -} - -PanelWrapper::~PanelWrapper() -{ -} - -// XInterface -void SAL_CALL PanelWrapper::acquire() throw() -{ - UIElementWrapperBase::acquire(); -} - -void SAL_CALL PanelWrapper::release() throw() -{ - UIElementWrapperBase::release(); -} - -uno::Any SAL_CALL PanelWrapper::queryInterface( const uno::Type & rType ) -throw( ::com::sun::star::uno::RuntimeException ) -{ - return UIElementWrapperBase::queryInterface( rType ); -} - -// XComponent -void SAL_CALL PanelWrapper::dispose() throw ( RuntimeException ) -{ - Reference< XComponent > xThis( static_cast< OWeakObject* >(this), UNO_QUERY ); - Reference< XMultiServiceFactory > xSMGR( m_xServiceManager ); - Reference< XWindow > xWindow; - - { - ResetableGuard aLock( m_aLock ); - if ( m_bDisposed ) - return; - xSMGR = m_xServiceManager; - } - - com::sun::star::lang::EventObject aEvent( xThis ); - m_aListenerContainer.disposeAndClear( aEvent ); - - rtl::OUString aModelWinService( SERVICENAME_MODELWINSERVICE ); - Reference< XNameAccess > xNameAccess( xSMGR->createInstance( aModelWinService ), UNO_QUERY ); - if ( xNameAccess.is() ) - { - ModelWinService* pService = dynamic_cast< ModelWinService* >( xNameAccess.get() ); - if ( pService != 0 ) - { - SolarMutexGuard aGuard; - PanelWindow* pPanelWindow = dynamic_cast< PanelWindow* >( m_xPanelWindow.get() ); - if ( pPanelWindow != NULL ) - { - xWindow = VCLUnoHelper::GetInterface( pPanelWindow->getContentWindow() ); - pService->deregisterModelForXWindow( xWindow ); - } - } - } - - ResetableGuard aLock( m_aLock ); - m_xPanelWindow.clear(); - m_bDisposed = sal_True; -} - -// XInitialization -void SAL_CALL PanelWrapper::initialize( const Sequence< Any >& aArguments ) throw ( Exception, RuntimeException ) -{ - ResetableGuard aLock( m_aLock ); - - if ( m_bDisposed ) - throw DisposedException(); - - if ( !m_bInitialized ) - { - UIElementWrapperBase::initialize( aArguments ); - - sal_Bool bPopupMode( sal_False ); - Reference< XWindow > xContentWindow; - for ( sal_Int32 i = 0; i < aArguments.getLength(); i++ ) - { - PropertyValue aPropValue; - if ( aArguments[i] >>= aPropValue ) - { - if ( aPropValue.Name.equalsAsciiL( "PopupMode", 9 )) - aPropValue.Value >>= bPopupMode; - else if ( aPropValue.Name.equalsAsciiL( "ContentWindow", 13 )) - aPropValue.Value >>= xContentWindow; - } - } - - Reference< XFrame > xFrame( m_xWeakFrame ); - if ( xFrame.is() ) - { - PanelWindow* pPanelWindow(0); - Window* pContentWindow(0); - { - SolarMutexGuard aGuard; - Window* pWindow = VCLUnoHelper::GetWindow( xFrame->getContainerWindow() ); - pContentWindow = VCLUnoHelper::GetWindow( xContentWindow ); - if ( pWindow ) - { - sal_uInt32 nStyles = WB_LINESPACING | WB_BORDER | WB_SCROLL | WB_MOVEABLE | WB_3DLOOK | WB_DOCKABLE | WB_SIZEABLE | WB_CLOSEABLE; - - pPanelWindow = new PanelWindow( pWindow, nStyles ); - m_xPanelWindow = VCLUnoHelper::GetInterface( pPanelWindow ); - pPanelWindow->setResourceURL( m_aResourceURL ); - pPanelWindow->setContentWindow( pContentWindow ); - } - } - - try - { - } - catch ( NoSuchElementException& ) - { - } - } - } -} - -// XEventListener -void SAL_CALL PanelWrapper::disposing( const ::com::sun::star::lang::EventObject& ) throw (::com::sun::star::uno::RuntimeException) -{ - // nothing todo -} - -// XUpdatable -void SAL_CALL PanelWrapper::update() throw (::com::sun::star::uno::RuntimeException) -{ - ResetableGuard aLock( m_aLock ); - - if ( m_bDisposed ) - throw DisposedException(); -} - -// XUIElement interface -Reference< XInterface > SAL_CALL PanelWrapper::getRealInterface( ) throw (::com::sun::star::uno::RuntimeException) -{ - ResetableGuard aLock( m_aLock ); - return m_xPanelWindow; -} - -void SAL_CALL PanelWrapper::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const com::sun::star::uno::Any& aValue ) throw( com::sun::star::uno::Exception ) -{ - ResetableGuard aLock( m_aLock ); - sal_Bool bNoClose( m_bNoClose ); - aLock.unlock(); - - UIElementWrapperBase::setFastPropertyValue_NoBroadcast( nHandle, aValue ); - - aLock.lock(); - - sal_Bool bNewNoClose( m_bNoClose ); - if ( m_xPanelWindow.is() && !m_bDisposed && ( bNewNoClose != bNoClose )) - { - PanelWindow* pPanelWindow = dynamic_cast< PanelWindow* >( VCLUnoHelper::GetWindow( m_xPanelWindow ) ); - if ( pPanelWindow ) - { - if ( bNewNoClose ) - { - pPanelWindow->SetStyle( pPanelWindow->GetStyle() & ~WB_CLOSEABLE ); - pPanelWindow->SetFloatStyle( pPanelWindow->GetFloatStyle() & ~WB_CLOSEABLE ); - } - else - { - pPanelWindow->SetStyle( pPanelWindow->GetStyle() | WB_CLOSEABLE ); - pPanelWindow->SetFloatStyle( pPanelWindow->GetFloatStyle() | WB_CLOSEABLE ); - } - } - } -} - -} // namespace framework - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/framework/source/uielement/toolbarmanager.cxx b/framework/source/uielement/toolbarmanager.cxx index 8bce5fdc5bef..51a8ed4bde69 100644 --- a/framework/source/uielement/toolbarmanager.cxx +++ b/framework/source/uielement/toolbarmanager.cxx @@ -47,7 +47,6 @@ #include <classes/resource.hrc> #include <framework/addonsoptions.hxx> #include <uielement/toolbarmerger.hxx> -#include <framework/acceleratorinfo.hxx> //_________________________________________________________________________________________________________________ // interface includes |