diff options
author | Antonio Fernandez <antonio.fernandez@aentos.es> | 2012-07-18 17:04:55 +0100 |
---|---|---|
committer | Bjoern Michaelsen <bjoern.michaelsen@canonical.com> | 2012-11-14 13:52:38 +0100 |
commit | 8dfd4a3a342dcd4ccc1cd8cdf874cf322422962f (patch) | |
tree | bc4a2fa79b86690f3cdb2792b52cc5830e04df06 | |
parent | 0cd1ae1f9b85261e6915471938c5f6c3e0ec9283 (diff) |
Refactor of Menu classes from VCL module and Framework module.
Change-Id: I47aa65d3851692d38ee0741031d72fb02e9da785
-rw-r--r-- | framework/inc/classes/menumanager.hxx | 22 | ||||
-rw-r--r-- | framework/inc/uielement/menubarmanager.hxx | 24 | ||||
-rw-r--r-- | framework/inc/uielement/menubarmerger.hxx | 16 | ||||
-rw-r--r-- | framework/source/classes/menumanager.cxx | 16 | ||||
-rw-r--r-- | framework/source/uielement/menubarmanager.cxx | 32 | ||||
-rw-r--r-- | framework/source/uielement/menubarmerger.cxx | 18 | ||||
-rw-r--r-- | vcl/inc/vcl/menu.hxx | 138 |
7 files changed, 177 insertions, 89 deletions
diff --git a/framework/inc/classes/menumanager.hxx b/framework/inc/classes/menumanager.hxx index aa7ae93a4af7..8bdbb398b888 100644 --- a/framework/inc/classes/menumanager.hxx +++ b/framework/inc/classes/menumanager.hxx @@ -72,7 +72,7 @@ class MenuManager : public ThreadHelpBase , MenuManager( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory, REFERENCE< XFRAME >& rFrame, - Menu* pMenu, + AbstractMenu* pMenu, sal_Bool bDelete, sal_Bool bDeleteChildren ); @@ -84,33 +84,33 @@ class MenuManager : public ThreadHelpBase , // XEventListener virtual void SAL_CALL disposing( const EVENTOBJECT& Source ) throw ( RUNTIMEEXCEPTION ); - DECL_LINK( Select, Menu * ); + DECL_LINK( Select, AbstractMenu * ); - Menu* GetMenu() const { return m_pVCLMenu; } + AbstractMenu* GetMenu() const { return m_pVCLMenu; } void RemoveListener(); const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& getServiceFactory(); - static void UpdateSpecialWindowMenu( Menu* pMenu ,const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory,IMutex& _rMutex); + static void UpdateSpecialWindowMenu( AbstractMenu* pMenu ,const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory,IMutex& _rMutex); static void FillMenuImages( ::com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& xFrame, - Menu* _pMenu, + AbstractMenu* _pMenu, sal_Bool bShowMenuImages ); protected: DECL_LINK(Highlight, void *); - DECL_LINK( Activate, Menu * ); - DECL_LINK( Deactivate, Menu * ); + DECL_LINK( Activate, AbstractMenu * ); + DECL_LINK( Deactivate, AbstractMenu * ); private: - void UpdateSpecialFileMenu( Menu* pMenu ); - void UpdateSpecialWindowMenu( Menu* pMenu ); + void UpdateSpecialFileMenu( AbstractMenu* pMenu ); + void UpdateSpecialWindowMenu( AbstractMenu* pMenu ); void ClearMenuDispatch(const EVENTOBJECT& Source = EVENTOBJECT(),bool _bRemoveOnly = true); void SetHdl(); void AddMenu(PopupMenu* _pPopupMenu,const ::rtl::OUString& _sItemCommand,sal_uInt16 _nItemId,sal_Bool _bDelete,sal_Bool _bDeleteChildren); - sal_uInt16 FillItemCommand(::rtl::OUString& _rItemCommand,Menu* _pMenu,sal_uInt16 _nIndex) const; + sal_uInt16 FillItemCommand(::rtl::OUString& _rItemCommand, AbstractMenu* _pMenu,sal_uInt16 _nIndex) const; struct MenuItemHandler @@ -141,7 +141,7 @@ class MenuManager : public ThreadHelpBase , sal_Bool m_bIsBookmarkMenu; sal_Bool m_bShowMenuImages; ::rtl::OUString m_aMenuItemCommand; - Menu* m_pVCLMenu; + AbstractMenu* m_pVCLMenu; REFERENCE< XFRAME > m_xFrame; ::std::vector< MenuItemHandler* > m_aMenuItemHandlerVector; diff --git a/framework/inc/uielement/menubarmanager.hxx b/framework/inc/uielement/menubarmanager.hxx index bb90ae0c0c5b..07f352bf3bad 100644 --- a/framework/inc/uielement/menubarmanager.hxx +++ b/framework/inc/uielement/menubarmanager.hxx @@ -111,7 +111,7 @@ class MenuBarManager : public com::sun::star::frame::XStatusListener const ::com::sun::star::uno::Reference< ::com::sun::star::util::XURLTransformer >& _xURLTransformer, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider >& rDispatchProvider, const rtl::OUString& aModuleIdentifier, - Menu* pMenu, + AbstractMenu* pMenu, sal_Bool bDelete, sal_Bool bDeleteChildren ); @@ -146,22 +146,22 @@ class MenuBarManager : public com::sun::star::frame::XStatusListener // XSystemDependentMenuPeer virtual ::com::sun::star::uno::Any SAL_CALL getMenuHandle( const ::com::sun::star::uno::Sequence< sal_Int8 >& ProcessId, sal_Int16 SystemType ) throw (::com::sun::star::uno::RuntimeException); - DECL_LINK( Select, Menu * ); + DECL_LINK( Select, AbstractMenu * ); - Menu* GetMenuBar() const { return m_pVCLMenu; } + AbstractMenu* GetMenuBar() const { return m_pVCLMenu; } // Configuration methods - static void FillMenuWithConfiguration( sal_uInt16& nId, Menu* pMenu, + static void FillMenuWithConfiguration( sal_uInt16& nId, AbstractMenu* pMenu, const ::rtl::OUString& rModuleIdentifier, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >& rItemContainer, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XURLTransformer >& rTransformer ); static void FillMenu( sal_uInt16& nId, - Menu* pMenu, + AbstractMenu* pMenu, const ::rtl::OUString& rModuleIdentifier, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >& rItemContainer, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider >& rDispatchProvider ); - void FillMenuManager( Menu* pMenu, + void FillMenuManager( AbstractMenu* pMenu, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider >& rDispatchProvider, const rtl::OUString& rModuleIdentifier, @@ -172,8 +172,8 @@ class MenuBarManager : public com::sun::star::frame::XStatusListener protected: DECL_LINK(Highlight, void *); - DECL_LINK( Activate, Menu * ); - DECL_LINK( Deactivate, Menu * ); + DECL_LINK( Activate, AbstractMenu * ); + DECL_LINK( Deactivate, AbstractMenu * ); DECL_LINK( AsyncSettingsHdl, Timer * ); void RemoveListener(); @@ -216,16 +216,16 @@ class MenuBarManager : public com::sun::star::frame::XStatusListener void CreatePicklistArguments( ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aArgsList, const MenuItemHandler* ); - void CheckAndAddMenuExtension( Menu* pMenu ); + void CheckAndAddMenuExtension( AbstractMenu* pMenu ); static void impl_RetrieveShortcutsFromConfiguration( const ::com::sun::star::uno::Reference< ::com::sun::star::ui::XAcceleratorConfiguration >& rAccelCfg, const ::com::sun::star::uno::Sequence< rtl::OUString >& rCommands, std::vector< MenuItemHandler* >& aMenuShortCuts ); - static void MergeAddonMenus( Menu* pMenuBar, const MergeMenuInstructionContainer&, const ::rtl::OUString& aModuleIdentifier ); + static void MergeAddonMenus( AbstractMenu* pMenuBar, const MergeMenuInstructionContainer&, const ::rtl::OUString& aModuleIdentifier ); MenuItemHandler* GetMenuItemHandler( sal_uInt16 nItemId ); sal_Bool CreatePopupMenuController( MenuItemHandler* pMenuItemHandler ); void AddMenu(MenuBarManager* pSubMenuManager,const ::rtl::OUString& _sItemCommand,sal_uInt16 _nItemId); - sal_uInt16 FillItemCommand(::rtl::OUString& _rItemCommand,Menu* _pMenu,sal_uInt16 _nIndex) const; + sal_uInt16 FillItemCommand(::rtl::OUString& _rItemCommand, AbstractMenu* _pMenu,sal_uInt16 _nIndex) const; void Init(const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame,AddonMenu* pAddonMenu,sal_Bool bDelete,sal_Bool bDeleteChildren,bool _bHandlePopUp = false); void SetHdl(); @@ -241,7 +241,7 @@ class MenuBarManager : public com::sun::star::frame::XStatusListener sal_Bool m_bModuleIdentified; ::rtl::OUString m_aMenuItemCommand; ::rtl::OUString m_aModuleIdentifier; - Menu* m_pVCLMenu; + AbstractMenu* m_pVCLMenu; ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame > m_xFrame; ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xUICommandLabels; ::com::sun::star::uno::Reference< ::com::sun::star::frame::XUIControllerRegistration > m_xPopupMenuControllerRegistration; diff --git a/framework/inc/uielement/menubarmerger.hxx b/framework/inc/uielement/menubarmerger.hxx index 57586e71c763..f44c91d21f4c 100644 --- a/framework/inc/uielement/menubarmerger.hxx +++ b/framework/inc/uielement/menubarmerger.hxx @@ -51,7 +51,7 @@ enum RPResultInfo struct ReferencePathInfo { - Menu* pPopupMenu; + AbstractMenu* pPopupMenu; sal_uInt16 nPos; sal_Int32 nLevel; RPResultInfo eResult; @@ -64,14 +64,14 @@ class MenuBarMerger static void RetrieveReferencePath( const ::rtl::OUString&, std::vector< ::rtl::OUString >& aReferencePath ); - static ReferencePathInfo FindReferencePath( const std::vector< ::rtl::OUString >& aReferencePath, Menu* pMenu ); + static ReferencePathInfo FindReferencePath( const std::vector< ::rtl::OUString >& aReferencePath, AbstractMenu* pMenu ); static sal_uInt16 FindMenuItem( const ::rtl::OUString& rCmd, - Menu* pMenu ); + AbstractMenu* pMenu ); static void GetMenuEntry( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& rAddonMenuEntry, AddonMenuItem& aAddonMenu ); static void GetSubMenu( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > >& rSubMenuEntries, AddonMenuContainer& rSubMenu ); - static bool ProcessMergeOperation( Menu* pMenu, + static bool ProcessMergeOperation( AbstractMenu* pMenu, sal_uInt16 nPos, sal_uInt16& rItemId, const ::rtl::OUString& rMergeCommand, @@ -86,21 +86,21 @@ class MenuBarMerger const ::rtl::OUString& rModuleIdentifier, const AddonMenuContainer& rAddonMenuItems ); static bool ProcessFallbackOperation(); - static bool MergeMenuItems( Menu* pMenu, + static bool MergeMenuItems( AbstractMenu* pMenu, sal_uInt16 nPos, sal_uInt16 nModIndex, sal_uInt16& rItemId, const ::rtl::OUString& rModuleIdentifier, const AddonMenuContainer& rAddonMenuItems ); - static bool ReplaceMenuItem( Menu* pMenu, + static bool ReplaceMenuItem( AbstractMenu* pMenu, sal_uInt16 nPos, sal_uInt16& rItemId, const ::rtl::OUString& rModuleIdentifier, const AddonMenuContainer& rAddonMenuItems ); - static bool RemoveMenuItems( Menu* pMenu, + static bool RemoveMenuItems( AbstractMenu* pMenu, sal_uInt16 nPos, const ::rtl::OUString& rMergeCommandParameter ); - static bool CreateSubMenu( Menu* pSubMenu, + static bool CreateSubMenu( AbstractMenu* pSubMenu, sal_uInt16& nItemId, const ::rtl::OUString& rModuleIdentifier, const AddonMenuContainer& rAddonSubMenu ); diff --git a/framework/source/classes/menumanager.cxx b/framework/source/classes/menumanager.cxx index 4736bd96b5ae..b4befafdefd8 100644 --- a/framework/source/classes/menumanager.cxx +++ b/framework/source/classes/menumanager.cxx @@ -120,7 +120,7 @@ const char UNO_COMMAND[] = ".uno:"; MenuManager::MenuManager( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& xServiceFactory, - REFERENCE< XFRAME >& rFrame, Menu* pMenu, sal_Bool bDelete, sal_Bool bDeleteChildren ) + REFERENCE< XFRAME >& rFrame, AbstractMenu* pMenu, sal_Bool bDelete, sal_Bool bDeleteChildren ) : ThreadHelpBase( &Application::GetSolarMutex() ), mxServiceFactory(xServiceFactory) @@ -465,7 +465,7 @@ void SAL_CALL MenuManager::disposing( const EVENTOBJECT& Source ) throw ( RUNTIM } -void MenuManager::UpdateSpecialFileMenu( Menu* pMenu ) +void MenuManager::UpdateSpecialFileMenu( AbstractMenu* pMenu ) { // update picklist Sequence< Sequence< PropertyValue > > aHistoryList = SvtHistoryOptions().GetList( ePICKLIST ); @@ -631,7 +631,7 @@ void MenuManager::UpdateSpecialFileMenu( Menu* pMenu ) } } -void MenuManager::UpdateSpecialWindowMenu( Menu* pMenu,const Reference< XMultiServiceFactory >& xServiceFactory,framework::IMutex& _rMutex ) +void MenuManager::UpdateSpecialWindowMenu( AbstractMenu* pMenu,const Reference< XMultiServiceFactory >& xServiceFactory,framework::IMutex& _rMutex ) { // update window list ::std::vector< ::rtl::OUString > aNewWindowListVector; @@ -745,7 +745,7 @@ void MenuManager::CreatePicklistArguments( Sequence< PropertyValue >& aArgsList, // vcl handler //_________________________________________________________________________________________________________________ -IMPL_LINK( MenuManager, Activate, Menu *, pMenu ) +IMPL_LINK( MenuManager, Activate, AbstractMenu *, pMenu ) { if ( pMenu == m_pVCLMenu ) { @@ -848,7 +848,7 @@ IMPL_LINK( MenuManager, Activate, Menu *, pMenu ) } -IMPL_LINK( MenuManager, Deactivate, Menu *, pMenu ) +IMPL_LINK( MenuManager, Deactivate, AbstractMenu *, pMenu ) { if ( pMenu == m_pVCLMenu ) m_bActive = sal_False; @@ -857,7 +857,7 @@ IMPL_LINK( MenuManager, Deactivate, Menu *, pMenu ) } -IMPL_LINK( MenuManager, Select, Menu *, pMenu ) +IMPL_LINK( MenuManager, Select, AbstractMenu *, pMenu ) { URL aTargetURL; Sequence<PropertyValue> aArgs; @@ -959,7 +959,7 @@ void MenuManager::AddMenu(PopupMenu* _pPopupMenu,const ::rtl::OUString& _sItemCo m_aMenuItemHandlerVector.push_back( pMenuItemHandler ); } -sal_uInt16 MenuManager::FillItemCommand(::rtl::OUString& _rItemCommand,Menu* _pMenu,sal_uInt16 _nIndex) const +sal_uInt16 MenuManager::FillItemCommand(::rtl::OUString& _rItemCommand, AbstractMenu* _pMenu,sal_uInt16 _nIndex) const { sal_uInt16 nItemId = _pMenu->GetItemId( _nIndex ); @@ -973,7 +973,7 @@ sal_uInt16 MenuManager::FillItemCommand(::rtl::OUString& _rItemCommand,Menu* _pM } return nItemId; } -void MenuManager::FillMenuImages(Reference< XFrame >& _xFrame,Menu* _pMenu,sal_Bool bShowMenuImages) +void MenuManager::FillMenuImages(Reference< XFrame >& _xFrame, AbstractMenu* _pMenu,sal_Bool bShowMenuImages) { AddonsOptions aAddonOptions; diff --git a/framework/source/uielement/menubarmanager.cxx b/framework/source/uielement/menubarmanager.cxx index 2f1f22e09a2c..5afca6a5d874 100644 --- a/framework/source/uielement/menubarmanager.cxx +++ b/framework/source/uielement/menubarmanager.cxx @@ -184,7 +184,7 @@ MenuBarManager::MenuBarManager( const Reference< XURLTransformer >& _xURLTransformer, const Reference< XDispatchProvider >& rDispatchProvider, const rtl::OUString& rModuleIdentifier, - Menu* pMenu, sal_Bool bDelete, sal_Bool bDeleteChildren ) + AbstractMenu* pMenu, sal_Bool bDelete, sal_Bool bDeleteChildren ) : ThreadHelpBase( &Application::GetSolarMutex() ), OWeakObject() , m_bDisposed( sal_False ) , m_bRetrieveImages( sal_False ) @@ -760,7 +760,7 @@ void SAL_CALL MenuBarManager::disposing( const EventObject& Source ) throw ( Run } -void MenuBarManager::CheckAndAddMenuExtension( Menu* pMenu ) +void MenuBarManager::CheckAndAddMenuExtension( AbstractMenu* pMenu ) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "MenuBarManager::CheckAndAddMenuExtension" ); @@ -791,7 +791,7 @@ void MenuBarManager::CheckAndAddMenuExtension( Menu* pMenu ) } } -static void lcl_CheckForChildren(Menu* pMenu, sal_uInt16 nItemId) +static void lcl_CheckForChildren(AbstractMenu* pMenu, sal_uInt16 nItemId) { if (PopupMenu* pThisPopup = pMenu->GetPopupMenu( nItemId )) pMenu->EnableItem( nItemId, pThisPopup->GetItemCount() ? true : false ); @@ -831,7 +831,7 @@ private: } -IMPL_LINK( MenuBarManager, Activate, Menu *, pMenu ) +IMPL_LINK( MenuBarManager, Activate, AbstractMenu *, pMenu ) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "MenuBarManager::Activate" ); if ( pMenu == m_pVCLMenu ) @@ -1030,7 +1030,7 @@ IMPL_LINK( MenuBarManager, Activate, Menu *, pMenu ) } -IMPL_LINK( MenuBarManager, Deactivate, Menu *, pMenu ) +IMPL_LINK( MenuBarManager, Deactivate, AbstractMenu *, pMenu ) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "MenuBarManager::Deactivate" ); if ( pMenu == m_pVCLMenu ) @@ -1066,7 +1066,7 @@ IMPL_LINK( MenuBarManager, AsyncSettingsHdl, Timer*,) return 0; } -IMPL_LINK( MenuBarManager, Select, Menu *, pMenu ) +IMPL_LINK( MenuBarManager, Select, AbstractMenu *, pMenu ) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "MenuBarManager::Select" ); URL aTargetURL; @@ -1238,7 +1238,7 @@ sal_Bool MenuBarManager::CreatePopupMenuController( MenuItemHandler* pMenuItemHa return sal_False; } -void MenuBarManager::FillMenuManager( Menu* pMenu, const Reference< XFrame >& rFrame, const Reference< XDispatchProvider >& rDispatchProvider, const rtl::OUString& rModuleIdentifier, sal_Bool bDelete, sal_Bool bDeleteChildren ) +void MenuBarManager::FillMenuManager( AbstractMenu* pMenu, const Reference< XFrame >& rFrame, const Reference< XDispatchProvider >& rDispatchProvider, const rtl::OUString& rModuleIdentifier, sal_Bool bDelete, sal_Bool bDeleteChildren ) { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "MenuBarManager::FillMenuManager" ); m_xFrame = rFrame; @@ -1682,8 +1682,8 @@ void MenuBarManager::RetrieveImageManagers() } void MenuBarManager::FillMenuWithConfiguration( - sal_uInt16& nId, - Menu* pMenu, + sal_uInt16& nId, + AbstractMenu* pMenu, const ::rtl::OUString& rModuleIdentifier, const Reference< XIndexAccess >& rItemContainer, const Reference< XURLTransformer >& rTransformer ) @@ -1693,7 +1693,7 @@ void MenuBarManager::FillMenuWithConfiguration( MenuBarManager::FillMenu( nId, pMenu, rModuleIdentifier, rItemContainer, xEmptyDispatchProvider ); // Merge add-on menu entries into the menu bar - MenuBarManager::MergeAddonMenus( static_cast< Menu* >( pMenu ), + MenuBarManager::MergeAddonMenus( static_cast< AbstractMenu* >( pMenu ), AddonsOptions().GetMergeMenuInstructions(), rModuleIdentifier ); @@ -1718,8 +1718,8 @@ void MenuBarManager::FillMenuWithConfiguration( } void MenuBarManager::FillMenu( - sal_uInt16& nId, - Menu* pMenu, + sal_uInt16& nId, + AbstractMenu* pMenu, const rtl::OUString& rModuleIdentifier, const Reference< XIndexAccess >& rItemContainer, const Reference< XDispatchProvider >& rDispatchProvider ) @@ -1829,7 +1829,7 @@ void MenuBarManager::FillMenu( } void MenuBarManager::MergeAddonMenus( - Menu* pMenuBar, + AbstractMenu* pMenuBar, const MergeMenuInstructionContainer& aMergeInstructionContainer, const ::rtl::OUString& rModuleIdentifier ) { @@ -1854,7 +1854,7 @@ void MenuBarManager::MergeAddonMenus( MenuBarMerger::GetSubMenu( rMergeInstruction.aMergeMenu, aMergeMenuItems ); // try to find the reference point for our merge operation - Menu* pMenu = pMenuBar; + AbstractMenu* pMenu = pMenuBar; ReferencePathInfo aResult = MenuBarMerger::FindReferencePath( aMergePath, pMenu ); if ( aResult.eResult == RP_OK ) @@ -1933,7 +1933,7 @@ void MenuBarManager::SetItemContainer( const Reference< XIndexAccess >& rItemCon sal_uInt16 nId = 1; // Fill menu bar with container contents - FillMenuWithConfiguration( nId, (Menu *)m_pVCLMenu, m_aModuleIdentifier, rItemContainer, m_xURLTransformer ); + FillMenuWithConfiguration( nId, (AbstractMenu *)m_pVCLMenu, m_aModuleIdentifier, rItemContainer, m_xURLTransformer ); // Refill menu manager again Reference< XDispatchProvider > xDispatchProvider; @@ -2012,7 +2012,7 @@ void MenuBarManager::AddMenu(MenuBarManager* pSubMenuManager,const ::rtl::OUStri m_aMenuItemHandlerVector.push_back( pMenuItemHandler ); } -sal_uInt16 MenuBarManager::FillItemCommand(::rtl::OUString& _rItemCommand,Menu* _pMenu,sal_uInt16 _nIndex) const +sal_uInt16 MenuBarManager::FillItemCommand(::rtl::OUString& _rItemCommand, AbstractMenu* _pMenu,sal_uInt16 _nIndex) const { RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "framework", "Ocke.Janssen@sun.com", "MenuBarManager::FillItemCommand" ); sal_uInt16 nItemId = _pMenu->GetItemId( _nIndex ); diff --git a/framework/source/uielement/menubarmerger.cxx b/framework/source/uielement/menubarmerger.cxx index 544c52ad2668..213ad895ab46 100644 --- a/framework/source/uielement/menubarmerger.cxx +++ b/framework/source/uielement/menubarmerger.cxx @@ -96,7 +96,7 @@ void MenuBarMerger::RetrieveReferencePath( ReferencePathInfo MenuBarMerger::FindReferencePath( const ::std::vector< ::rtl::OUString >& rReferencePath, - Menu* pMenu ) + AbstractMenu* pMenu ) { sal_uInt32 i( 0 ); const sal_uInt32 nCount( rReferencePath.size() ); @@ -108,7 +108,7 @@ ReferencePathInfo MenuBarMerger::FindReferencePath( return aResult; } - Menu* pCurrMenu( pMenu ); + AbstractMenu* pCurrMenu( pMenu ); RPResultInfo eResult( RP_OK ); sal_Int32 nLevel( - 1 ); @@ -157,7 +157,7 @@ ReferencePathInfo MenuBarMerger::FindReferencePath( return aResult; } -sal_uInt16 MenuBarMerger::FindMenuItem( const ::rtl::OUString& rCmd, Menu* pCurrMenu ) +sal_uInt16 MenuBarMerger::FindMenuItem( const ::rtl::OUString& rCmd, AbstractMenu* pCurrMenu ) { for ( sal_uInt16 i = 0; i < pCurrMenu->GetItemCount(); i++ ) { @@ -173,7 +173,7 @@ sal_uInt16 MenuBarMerger::FindMenuItem( const ::rtl::OUString& rCmd, Menu* pCurr } bool MenuBarMerger::CreateSubMenu( - Menu* pSubMenu, + AbstractMenu* pSubMenu, sal_uInt16& nItemId, const ::rtl::OUString& rModuleIdentifier, const AddonMenuContainer& rAddonSubMenu ) @@ -211,7 +211,7 @@ bool MenuBarMerger::CreateSubMenu( } bool MenuBarMerger::MergeMenuItems( - Menu* pMenu, + AbstractMenu* pMenu, sal_uInt16 nPos, sal_uInt16 nModIndex, sal_uInt16& nItemId, @@ -253,7 +253,7 @@ bool MenuBarMerger::MergeMenuItems( } bool MenuBarMerger::ReplaceMenuItem( - Menu* pMenu, + AbstractMenu* pMenu, sal_uInt16 nPos, sal_uInt16& rItemId, const ::rtl::OUString& rModuleIdentifier, @@ -267,7 +267,7 @@ bool MenuBarMerger::ReplaceMenuItem( } bool MenuBarMerger::RemoveMenuItems( - Menu* pMenu, + AbstractMenu* pMenu, sal_uInt16 nPos, const ::rtl::OUString& rMergeCommandParameter ) { @@ -287,7 +287,7 @@ bool MenuBarMerger::RemoveMenuItems( } bool MenuBarMerger::ProcessMergeOperation( - Menu* pMenu, + AbstractMenu* pMenu, sal_uInt16 nPos, sal_uInt16& nItemId, const ::rtl::OUString& rMergeCommand, @@ -336,7 +336,7 @@ bool MenuBarMerger::ProcessFallbackOperation( } else if ( rMergeFallback.equalsAsciiL( MERGEFALLBACK_ADDPATH, MERGEFALLBACK_ADDPATH_LEN )) { - Menu* pCurrMenu( aRefPathInfo.pPopupMenu ); + AbstractMenu* pCurrMenu( aRefPathInfo.pPopupMenu ); sal_Int32 nLevel( aRefPathInfo.nLevel ); const sal_Int32 nSize( rReferencePath.size() ); bool bFirstLevel( true ); diff --git a/vcl/inc/vcl/menu.hxx b/vcl/inc/vcl/menu.hxx index 9807f7326a87..6a7558e6f9b7 100644 --- a/vcl/inc/vcl/menu.hxx +++ b/vcl/inc/vcl/menu.hxx @@ -102,6 +102,94 @@ struct ImplMenuDelData bool isDeleted() const { return mpMenu == 0; } }; +// ---------------- +// - AbstractMenu - +// ---------------- + +class VCL_DLLPUBLIC AbstractMenu : public Resource +{ +public: + virtual ~AbstractMenu() {} + + virtual SAL_DLLPRIVATE Window* ImplGetWindow() const = 0; + + virtual void InsertItem( sal_uInt16 nItemId, const XubString& rStr, + MenuItemBits nItemBits = 0, + sal_uInt16 nPos = MENU_APPEND ) = 0; + virtual void InsertItem( sal_uInt16 nItemId, + const XubString& rString, const Image& rImage, + MenuItemBits nItemBits = 0, + sal_uInt16 nPos = MENU_APPEND ) = 0; + virtual void InsertSeparator( sal_uInt16 nPos = MENU_APPEND ) = 0; + virtual void RemoveItem( sal_uInt16 nPos ) = 0; + virtual void CopyItem( const Menu& rMenu, sal_uInt16 nPos, + sal_uInt16 nNewPos = MENU_APPEND ) = 0; + virtual void Clear() = 0; + + virtual void SetMenuFlags( sal_uInt16 nFlags ) = 0; + virtual sal_uInt16 GetMenuFlags() const = 0; + + virtual sal_uInt16 GetItemCount() const = 0; + virtual sal_uInt16 GetItemId( sal_uInt16 nPos ) const = 0; + virtual sal_uInt16 GetItemPos( sal_uInt16 nItemId ) const = 0; + virtual MenuItemType GetItemType( sal_uInt16 nPos ) const = 0; + virtual sal_uInt16 GetCurItemId() const = 0; + + virtual void SetItemBits( sal_uInt16 nItemId, MenuItemBits nBits ) = 0; + virtual MenuItemBits GetItemBits( sal_uInt16 nItemId ) const = 0; + + virtual void SetUserValue( sal_uInt16 nItemId, sal_uLong nValue ) = 0; + virtual sal_uLong GetUserValue( sal_uInt16 nItemId ) const = 0; + + virtual void SetPopupMenu( sal_uInt16 nItemId, PopupMenu* pMenu ) = 0; + virtual PopupMenu* GetPopupMenu( sal_uInt16 nItemId ) const = 0; + + virtual void SetAccelKey( sal_uInt16 nItemId, const KeyCode& rKeyCode ) = 0; + + virtual void CheckItem( sal_uInt16 nItemId, sal_Bool bCheck = sal_True ) = 0; + virtual sal_Bool IsItemChecked( sal_uInt16 nItemId ) const = 0; + + virtual void EnableItem( sal_uInt16 nItemId, sal_Bool bEnable = sal_True ) = 0; + virtual sal_Bool IsItemEnabled( sal_uInt16 nItemId ) const = 0; + + virtual void ShowItem( sal_uInt16 nItemId, sal_Bool bVisible = sal_True ) = 0; + virtual void HideItem( sal_uInt16 nItemId ) = 0; + + virtual sal_Bool IsMenuBar() const = 0; + + virtual void RemoveDisabledEntries( sal_Bool bCheckPopups = sal_True, + sal_Bool bRemoveEmptyPopups = sal_False ) = 0; + + virtual void SetItemText( sal_uInt16 nItemId, const XubString& rStr ) = 0; + virtual XubString GetItemText( sal_uInt16 nItemId ) const = 0; + + virtual void SetItemImage( sal_uInt16 nItemId, const Image& rImage ) = 0; + virtual Image GetItemImage( sal_uInt16 nItemId ) const = 0; + + virtual void SetItemCommand( sal_uInt16 nItemId, const XubString& rCommand ) = 0; + virtual const XubString& GetItemCommand( sal_uInt16 nItemId ) const = 0; + + virtual void SetTipHelpText( sal_uInt16 nItemId, const XubString& rString ) = 0; + + virtual void SetHelpCommand( sal_uInt16 nItemId, const XubString& rString ) = 0; + virtual const XubString& GetHelpCommand( sal_uInt16 nItemId ) const = 0; + + virtual void SetHelpId( sal_uInt16 nItemId, const rtl::OString& rHelpId ) = 0; + virtual rtl::OString GetHelpId( sal_uInt16 nItemId ) const = 0; + + virtual void SetActivateHdl( const Link& rLink ) = 0; + + virtual void SetDeactivateHdl( const Link& rLink ) = 0; + + virtual void SetHighlightHdl( const Link& rLink ) = 0; + + virtual void SetSelectHdl( const Link& rLink ) = 0; + + // Returns the system's menu handle if native menus are supported + // pData must point to a SystemMenuData structure + virtual sal_Bool GetSystemMenuData( SystemMenuData* pData ) const = 0; +}; + // -------- // - Menu - // -------- @@ -113,7 +201,7 @@ struct MenuLogo Color aEndColor; }; -class VCL_DLLPUBLIC Menu : public Resource +class VCL_DLLPUBLIC Menu : public AbstractMenu { friend class MenuBar; friend class MenuBarWindow; @@ -267,12 +355,12 @@ public: void ShowItem( sal_uInt16 nItemId, sal_Bool bVisible = sal_True ); void HideItem( sal_uInt16 nItemId ) { ShowItem( nItemId, sal_False ); } - sal_Bool IsItemPosVisible( sal_uInt16 nItemPos ) const; - sal_Bool IsMenuVisible() const; - sal_Bool IsMenuBar() const { return bIsMenuBar; } + sal_Bool IsItemPosVisible( sal_uInt16 nItemPos ) const; + sal_Bool IsMenuVisible() const; + sal_Bool IsMenuBar() const { return bIsMenuBar; } void RemoveDisabledEntries( sal_Bool bCheckPopups = sal_True, sal_Bool bRemoveEmptyPopups = sal_False ); - sal_Bool HasValidEntries( sal_Bool bCheckPopups = sal_True ); + sal_Bool HasValidEntries( sal_Bool bCheckPopups = sal_True ); void SetItemText( sal_uInt16 nItemId, const XubString& rStr ); XubString GetItemText( sal_uInt16 nItemId ) const; @@ -282,7 +370,7 @@ public: void SetItemImageAngle( sal_uInt16 nItemId, long nAngle10 ); long GetItemImageAngle( sal_uInt16 nItemId ) const; void SetItemImageMirrorMode( sal_uInt16 nItemId, sal_Bool bMirror ); - sal_Bool GetItemImageMirrorMode( sal_uInt16 ) const; + sal_Bool GetItemImageMirrorMode( sal_uInt16 ) const; void SetItemCommand( sal_uInt16 nItemId, const XubString& rCommand ); const XubString& GetItemCommand( sal_uInt16 nItemId ) const; @@ -318,8 +406,8 @@ public: void AddEventListener( const Link& rEventListener ); void RemoveEventListener( const Link& rEventListener ); - //void AddChildEventListener( const Link& rEventListener ); - //void RemoveChildEventListener( const Link& rEventListener ); + void AddChildEventListener( const Link& rEventListener ); + void RemoveChildEventListener( const Link& rEventListener ); Menu& operator =( const Menu& rMenu ); @@ -369,10 +457,10 @@ class VCL_DLLPUBLIC MenuBar : public Menu Link maCloserHdl; Link maFloatHdl; Link maHideHdl; - sal_Bool mbCloserVisible; - sal_Bool mbFloatBtnVisible; - sal_Bool mbHideBtnVisible; - sal_Bool mbDisplayable; + sal_Bool mbCloserVisible; + sal_Bool mbFloatBtnVisible; + sal_Bool mbHideBtnVisible; + sal_Bool mbDisplayable; friend class Application; friend class Menu; @@ -382,7 +470,7 @@ class VCL_DLLPUBLIC MenuBar : public Menu SAL_DLLPRIVATE static Window* ImplCreate( Window* pParent, Window* pWindow, MenuBar* pMenu ); SAL_DLLPRIVATE static void ImplDestroy( MenuBar* pMenu, sal_Bool bDelete ); - SAL_DLLPRIVATE sal_Bool ImplHandleKeyEvent( const KeyEvent& rKEvent, sal_Bool bFromMenu = sal_True ); + SAL_DLLPRIVATE sal_Bool ImplHandleKeyEvent( const KeyEvent& rKEvent, sal_Bool bFromMenu = sal_True ); public: MenuBar(); @@ -392,17 +480,17 @@ public: MenuBar& operator =( const MenuBar& rMenu ); void ShowCloser( sal_Bool bShow = sal_True ); - sal_Bool HasCloser() const { return mbCloserVisible; } - sal_Bool HasFloatButton() const { return mbFloatBtnVisible; } - sal_Bool HasHideButton() const { return mbHideBtnVisible; } + sal_Bool HasCloser() const { return mbCloserVisible; } + sal_Bool HasFloatButton() const { return mbFloatBtnVisible; } + sal_Bool HasHideButton() const { return mbHideBtnVisible; } void ShowButtons( sal_Bool bClose, sal_Bool bFloat, sal_Bool bHide ); void SelectEntry( sal_uInt16 nId ); - sal_Bool HandleMenuActivateEvent( Menu *pMenu ) const; - sal_Bool HandleMenuDeActivateEvent( Menu *pMenu ) const; - sal_Bool HandleMenuHighlightEvent( Menu *pMenu, sal_uInt16 nEventId ) const; - sal_Bool HandleMenuCommandEvent( Menu *pMenu, sal_uInt16 nEventId ) const; - sal_Bool HandleMenuButtonEvent( Menu *pMenu, sal_uInt16 nEventId ) const; + sal_Bool HandleMenuActivateEvent( Menu *pMenu ) const; + sal_Bool HandleMenuDeActivateEvent( Menu *pMenu ) const; + sal_Bool HandleMenuHighlightEvent( Menu *pMenu, sal_uInt16 nEventId ) const; + sal_Bool HandleMenuCommandEvent( Menu *pMenu, sal_uInt16 nEventId ) const; + sal_Bool HandleMenuButtonEvent( Menu *pMenu, sal_uInt16 nEventId ) const; void SetCloserHdl( const Link& rLink ) { maCloserHdl = rLink; } const Link& GetCloserHdl() const { return maCloserHdl; } @@ -416,18 +504,18 @@ public: // and it will be hidden if it was visible before // - note: if a menubar is diplayable, this does not necessarily mean that it is currently visible void SetDisplayable( sal_Bool bDisplayable ); - sal_Bool IsDisplayable() const { return mbDisplayable; } + sal_Bool IsDisplayable() const { return mbDisplayable; } struct MenuBarButtonCallbackArg { sal_uInt16 nId; // Id of the button - bool bHighlight; // highlight on/off - MenuBar* pMenuBar; // menubar the button belongs to + bool bHighlight; // highlight on/off + MenuBar* pMenuBar; // menubar the button belongs to }; // add an arbitrary button to the menubar (will appear next to closer) // passed link will be call with a MenuBarButtonCallbackArg on press // passed string will be set as tooltip - sal_uInt16 AddMenuBarButton( const Image&, const Link&, const String&, sal_uInt16 nPos = 0 ); + sal_uInt16 AddMenuBarButton( const Image&, const Link&, const String&, sal_uInt16 nPos = 0 ); // set the highlight link for additional button with ID nId // highlight link will be called with a MenuBarButtonHighlightArg // the bHighlight member of that struct shall contain the new state |