framework/inc/framework/addonmenu.hxx | 15 ++-- framework/source/classes/menumanager.cxx | 2 framework/source/dispatch/menudispatcher.cxx | 4 - framework/source/fwe/classes/addonmenu.cxx | 78 ++++++++++++------------ framework/source/uielement/menubarmanager.cxx | 10 --- officecfg/registry/data/org/openoffice/Inet.xcu | 44 ------------- sfx2/source/menu/virtmenu.cxx | 11 +-- 7 files changed, 58 insertions(+), 106 deletions(-)
New commits: commit 70c4adf42a0d7789abc900a0698a2ff4b5314944 Author: Herbert Dürr <h...@apache.org> Date: Fri May 16 12:57:29 2014 +0000 #i124881# drop ill-reputed euroseek search engine Found-by: Rainer Bielefeld <rainerbielefeld_ooo...@bielefeldundbuss.de> diff --git a/officecfg/registry/data/org/openoffice/Inet.xcu b/officecfg/registry/data/org/openoffice/Inet.xcu index 1489697..f779044 100644 --- a/officecfg/registry/data/org/openoffice/Inet.xcu +++ b/officecfg/registry/data/org/openoffice/Inet.xcu @@ -91,50 +91,6 @@ </prop> </node> <node oor:name="SearchEngines"> - <node oor:name="Euroseek" oor:op="replace"> - <node oor:name="And"> - <prop oor:name="ooInetPrefix" oor:type="xs:string"> - <value>http://www.euroseek.com/system/search.cgi?mode=internet&string=</value> - </prop> - <prop oor:name="ooInetSuffix" oor:type="xs:string"> - <value>&language=en</value> - </prop> - <prop oor:name="ooInetCaseMatch" oor:type="xs:int"> - <value>0</value> - </prop> - <prop oor:name="ooInetSeparator" oor:type="xs:string"> - <value>+</value> - </prop> - </node> - <node oor:name="Exact"> - <prop oor:name="ooInetPrefix" oor:type="xs:string"> - <value>http://www.euroseek.com/system/search.cgi?mode=internet&string=</value> - </prop> - <prop oor:name="ooInetSuffix" oor:type="xs:string"> - <value>&language=en</value> - </prop> - <prop oor:name="ooInetCaseMatch" oor:type="xs:int"> - <value>0</value> - </prop> - <prop oor:name="ooInetSeparator" oor:type="xs:string"> - <value>%20</value> - </prop> - </node> - <node oor:name="Or"> - <prop oor:name="ooInetPrefix" oor:type="xs:string"> - <value>http://www.euroseek.com/system/search.cgi?mode=internet&string=</value> - </prop> - <prop oor:name="ooInetSuffix" oor:type="xs:string"> - <value>&language=en</value> - </prop> - <prop oor:name="ooInetCaseMatch" oor:type="xs:int"> - <value>0</value> - </prop> - <prop oor:name="ooInetSeparator" oor:type="xs:string"> - <value>+</value> - </prop> - </node> - </node> <node oor:name="Lycos" oor:op="replace"> <node oor:name="And"> <prop oor:name="ooInetPrefix" oor:type="xs:string"> commit 2aac0070dbef6c1ad7eeccf7d4015cdcbffe067e Author: Tsutomu Uchino <ha...@apache.org> Date: Fri May 16 12:48:54 2014 +0000 #i86528# use the module manager to identify the context for addons menu merging diff --git a/framework/inc/framework/addonmenu.hxx b/framework/inc/framework/addonmenu.hxx index 83b7f2b..6768dc7 100644 --- a/framework/inc/framework/addonmenu.hxx +++ b/framework/inc/framework/addonmenu.hxx @@ -30,6 +30,7 @@ #include <com/sun/star/frame/XFrame.hpp> #include <com/sun/star/beans/PropertyValue.hpp> #include <com/sun/star/uno/Sequence.hxx> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> //_________________________________________________________________________________________________________________ // includes of other projects @@ -92,23 +93,25 @@ class FWE_DLLPUBLIC AddonMenuManager static sal_Bool IsAddonMenuId( sal_uInt16 nId ) { return (( nId >= ADDONMENU_ITEMID_START ) && ( nId < ADDONMENU_ITEMID_END )); } // Check if the context string matches the provided xModel context - static sal_Bool IsCorrectContext( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& rModel, const rtl::OUString& aContext ); + static sal_Bool IsCorrectContext( const ::rtl::OUString& rModuleIdentifier, const rtl::OUString& aContext ); // Factory method to create different Add-On menu types static PopupMenu* CreatePopupMenuType( MenuType eMenuType, const com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& rFrame ); // Create the Add-Ons menu - static AddonMenu* CreateAddonMenu( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame ); + static AddonMenu* CreateAddonMenu( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& rFrame, + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rServiceManager ); // Merge the Add-Ons help menu items into the given menu bar at a defined pos static void MergeAddonHelpMenu( const com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& rFrame, - MenuBar* pMergeMenuBar ); + MenuBar* pMergeMenuBar, + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rServiceManager ); // Merge the addon popup menus into the given menu bar at the provided pos. static void MergeAddonPopupMenus( const com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& rFrame, - const com::sun::star::uno::Reference< com::sun::star::frame::XModel >& rModel, sal_uInt16 nMergeAtPos, - MenuBar* pMergeMenuBar ); + MenuBar* pMergeMenuBar, + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& rServiceManager ); // Returns the next position to insert a menu item/sub menu static sal_uInt16 GetNextPos( sal_uInt16 nPos ); @@ -120,7 +123,7 @@ class FWE_DLLPUBLIC AddonMenuManager sal_uInt16& nUniqueMenuId, com::sun::star::uno::Sequence< com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue > > aAddonMenuDefinition, const com::sun::star::uno::Reference< com::sun::star::frame::XFrame >& rFrame, - const com::sun::star::uno::Reference< com::sun::star::frame::XModel >& rModel ); + const ::rtl::OUString& rModuleIdentifier ); // Retrieve the menu entry property values from a sequence static void GetMenuEntry( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >& rAddonMenuEntry, diff --git a/framework/source/classes/menumanager.cxx b/framework/source/classes/menumanager.cxx index f8daef4..d95df55 100644 --- a/framework/source/classes/menumanager.cxx +++ b/framework/source/classes/menumanager.cxx @@ -192,7 +192,7 @@ MenuManager::MenuManager( AddonMenuManager::HasAddonMenuElements() ) { sal_uInt16 nCount = 0; - AddonMenu* pSubMenu = AddonMenuManager::CreateAddonMenu( rFrame ); + AddonMenu* pSubMenu = AddonMenuManager::CreateAddonMenu( rFrame, xServiceFactory ); if ( pSubMenu && ( pSubMenu->GetItemCount() > 0 )) { if ( pPopupMenu->GetItemType( nCount-1 ) != MENUITEM_SEPARATOR ) diff --git a/framework/source/dispatch/menudispatcher.cxx b/framework/source/dispatch/menudispatcher.cxx index 40f2086..d06f4c4 100644 --- a/framework/source/dispatch/menudispatcher.cxx +++ b/framework/source/dispatch/menudispatcher.cxx @@ -344,10 +344,10 @@ sal_Bool MenuDispatcher::impl_setMenuBar( MenuBar* pMenuBar, sal_Bool bMenuFromR xModel = uno::Reference< XModel >( xController->getModel(), UNO_QUERY ); // retrieve addon popup menus and add them to our menu bar - AddonMenuManager::MergeAddonPopupMenus( xFrame, xModel, nPos, pMenuBar ); + AddonMenuManager::MergeAddonPopupMenus( xFrame, nPos, pMenuBar, m_xFactory ); // retrieve addon help menu items and add them to our help menu - AddonMenuManager::MergeAddonHelpMenu( xFrame, pMenuBar ); + AddonMenuManager::MergeAddonHelpMenu( xFrame, pMenuBar, m_xFactory ); } // set new menu on our system window and create new menu manager diff --git a/framework/source/fwe/classes/addonmenu.cxx b/framework/source/fwe/classes/addonmenu.cxx index e0b45bf..dc6823b 100644 --- a/framework/source/fwe/classes/addonmenu.cxx +++ b/framework/source/fwe/classes/addonmenu.cxx @@ -33,6 +33,7 @@ #include <macros/debug/assertion.hxx> #include <framework/imageproducer.hxx> #include <framework/menuconfiguration.hxx> +#include <services.h> //_________________________________________________________________________________________________________________ // interface includes @@ -40,7 +41,7 @@ #include <com/sun/star/uno/Reference.hxx> #include <com/sun/star/util/URL.hpp> #include <com/sun/star/util/XURLTransformer.hpp> -#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/frame/XModuleManager.hpp> //_________________________________________________________________________________________________________________ // includes of other projects @@ -108,18 +109,21 @@ AddonPopupMenu::~AddonPopupMenu() // ------------------------------------------------------------------------ -static Reference< XModel > GetModelFromFrame( const Reference< XFrame >& rFrame ) +static ::rtl::OUString GetModuleIdentifier( const Reference< XMultiServiceFactory >& rServiceManager, + const Reference< XFrame >& rFrame ) { - // Query for the model to get check the context information - Reference< XModel > xModel; - if ( rFrame.is() ) + Reference< XModuleManager > xModuleManager( rServiceManager->createInstance( SERVICENAME_MODULEMANAGER ), UNO_QUERY ); + if ( xModuleManager.is() ) { - Reference< XController > xController( rFrame->getController(), UNO_QUERY ); - if ( xController.is() ) - xModel = xController->getModel(); + try + { + return xModuleManager->identify( rFrame ); + } + catch ( Exception& ) + { + } } - - return xModel; + return ::rtl::OUString(); } // ------------------------------------------------------------------------ @@ -146,7 +150,8 @@ PopupMenu* AddonMenuManager::CreatePopupMenuType( MenuType eMenuType, const Refe } // Create the Add-Ons menu -AddonMenu* AddonMenuManager::CreateAddonMenu( const Reference< XFrame >& rFrame ) +AddonMenu* AddonMenuManager::CreateAddonMenu( const Reference< XFrame >& rFrame, + const Reference< XMultiServiceFactory >& rServiceManager ) { AddonsOptions aOptions; AddonMenu* pAddonMenu = NULL; @@ -156,8 +161,8 @@ AddonMenu* AddonMenuManager::CreateAddonMenu( const Reference< XFrame >& rFrame if ( rAddonMenuEntries.getLength() > 0 ) { pAddonMenu = (AddonMenu *)AddonMenuManager::CreatePopupMenuType( ADDON_MENU, rFrame ); - Reference< XModel > xModel = GetModelFromFrame( rFrame ); - AddonMenuManager::BuildMenu( pAddonMenu, ADDON_MENU, MENU_APPEND, nUniqueMenuId, rAddonMenuEntries, rFrame, xModel ); + ::rtl::OUString aModuleIdentifier = GetModuleIdentifier( rServiceManager, rFrame ); + AddonMenuManager::BuildMenu( pAddonMenu, ADDON_MENU, MENU_APPEND, nUniqueMenuId, rAddonMenuEntries, rFrame, aModuleIdentifier ); // Don't return an empty Add-On menu if ( pAddonMenu->GetItemCount() == 0 ) @@ -194,7 +199,9 @@ static sal_uInt16 FindMenuId( Menu* pMenu, const String aCommand ) // Merge the Add-Ons help menu items into the given menu bar at a defined pos -void AddonMenuManager::MergeAddonHelpMenu( const Reference< XFrame >& rFrame, MenuBar* pMergeMenuBar ) +void AddonMenuManager::MergeAddonHelpMenu( const Reference< XFrame >& rFrame, + MenuBar* pMergeMenuBar, + const Reference< XMultiServiceFactory >& rServiceManager ) { if ( pMergeMenuBar ) { @@ -245,8 +252,8 @@ void AddonMenuManager::MergeAddonHelpMenu( const Reference< XFrame >& rFrame, Me if ( nInsPos < nItemCount && pHelpMenu->GetItemType( nInsPos ) != MENUITEM_SEPARATOR ) nInsSepAfterPos = nInsPos; - Reference< XModel > xModel = GetModelFromFrame( rFrame ); - AddonMenuManager::BuildMenu( pHelpMenu, ADDON_MENU, nInsPos, nUniqueMenuId, rAddonHelpMenuEntries, rFrame, xModel ); + ::rtl::OUString aModuleIdentifier = GetModuleIdentifier( rServiceManager, rFrame ); + AddonMenuManager::BuildMenu( pHelpMenu, ADDON_MENU, nInsPos, nUniqueMenuId, rAddonHelpMenuEntries, rFrame, aModuleIdentifier ); if ( pHelpMenu->GetItemCount() > nItemCount ) { @@ -267,9 +274,9 @@ void AddonMenuManager::MergeAddonHelpMenu( const Reference< XFrame >& rFrame, Me // Merge the addon popup menus into the given menu bar at the provided pos. void AddonMenuManager::MergeAddonPopupMenus( const Reference< XFrame >& rFrame, - const Reference< XModel >& rModel, sal_uInt16 nMergeAtPos, - MenuBar* pMergeMenuBar ) + MenuBar* pMergeMenuBar, + const Reference< XMultiServiceFactory >& rServiceManager ) { if ( pMergeMenuBar ) { @@ -283,6 +290,7 @@ void AddonMenuManager::MergeAddonPopupMenus( const Reference< XFrame >& rFrame, ::rtl::OUString aContext; Sequence< Sequence< PropertyValue > > aAddonSubMenu; sal_uInt16 nUniqueMenuId = ADDONMENU_ITEMID_START; + ::rtl::OUString aModuleIdentifier = GetModuleIdentifier( rServiceManager, rFrame ); const Sequence< Sequence< PropertyValue > >& rAddonMenuEntries = aAddonsOptions.GetAddonsMenuBarPart(); for ( sal_Int32 i = 0; i < rAddonMenuEntries.getLength(); i++ ) @@ -297,12 +305,12 @@ void AddonMenuManager::MergeAddonPopupMenus( const Reference< XFrame >& rFrame, if ( aTitle.getLength() > 0 && aURL.getLength() > 0 && aAddonSubMenu.getLength() > 0 && - AddonMenuManager::IsCorrectContext( rModel, aContext )) + AddonMenuManager::IsCorrectContext( aModuleIdentifier, aContext )) { sal_uInt16 nId = nUniqueMenuId++; AddonPopupMenu* pAddonPopupMenu = (AddonPopupMenu *)AddonMenuManager::CreatePopupMenuType( ADDON_POPUPMENU, rFrame ); - AddonMenuManager::BuildMenu( pAddonPopupMenu, ADDON_MENU, MENU_APPEND, nUniqueMenuId, aAddonSubMenu, rFrame, rModel ); + AddonMenuManager::BuildMenu( pAddonPopupMenu, ADDON_MENU, MENU_APPEND, nUniqueMenuId, aAddonSubMenu, rFrame, aModuleIdentifier ); if ( pAddonPopupMenu->GetItemCount() > 0 ) { @@ -327,7 +335,7 @@ void AddonMenuManager::BuildMenu( PopupMenu* pCurrent sal_uInt16& nUniqueMenuId, Sequence< Sequence< PropertyValue > > aAddonMenuDefinition, const Reference< XFrame >& rFrame, - const Reference< XModel >& rModel ) + const ::rtl::OUString& rModuleIdentifier ) { Sequence< Sequence< PropertyValue > > aAddonSubMenu; sal_Bool bInsertSeparator = sal_False; @@ -346,7 +354,7 @@ void AddonMenuManager::BuildMenu( PopupMenu* pCurrent { GetMenuEntry( aAddonMenuDefinition[i], aTitle, aURL, aTarget, aImageId, aContext, aAddonSubMenu ); - if ( !IsCorrectContext( rModel, aContext ) || ( !aTitle.getLength() && !aURL.getLength() )) + if ( !IsCorrectContext( rModuleIdentifier, aContext ) || ( !aTitle.getLength() && !aURL.getLength() )) continue; if ( aURL == ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "private:separator" ))) @@ -357,7 +365,7 @@ void AddonMenuManager::BuildMenu( PopupMenu* pCurrent if ( aAddonSubMenu.getLength() > 0 ) { pSubMenu = AddonMenuManager::CreatePopupMenuType( nSubMenuType, rFrame ); - AddonMenuManager::BuildMenu( pSubMenu, nSubMenuType, MENU_APPEND, nUniqueMenuId, aAddonSubMenu, rFrame, rModel ); + AddonMenuManager::BuildMenu( pSubMenu, nSubMenuType, MENU_APPEND, nUniqueMenuId, aAddonSubMenu, rFrame, rModuleIdentifier ); // Don't create a menu item for an empty sub menu if ( pSubMenu->GetItemCount() == 0 ) @@ -426,26 +434,18 @@ void AddonMenuManager::GetMenuEntry( const Sequence< PropertyValue >& rAddonMenu } // Check if the context string matches the provided xModel context -sal_Bool AddonMenuManager::IsCorrectContext( const Reference< XModel >& rModel, const ::rtl::OUString& aContext ) +sal_Bool AddonMenuManager::IsCorrectContext( const ::rtl::OUString& rModuleIdentifier, const ::rtl::OUString& aContext ) { - if ( rModel.is() ) - { - Reference< com::sun::star::lang::XServiceInfo > xServiceInfo( rModel, UNO_QUERY ); - if ( xServiceInfo.is() ) - { - sal_Int32 nIndex = 0; - do - { - ::rtl::OUString aToken = aContext.getToken( 0, ',', nIndex ); + if ( aContext.isEmpty() ) + return sal_True; - if ( xServiceInfo->supportsService( aToken )) - return sal_True; - } - while ( nIndex >= 0 ); - } + if ( !rModuleIdentifier.isEmpty() ) + { + sal_Int32 nIndex = aContext.indexOf( rModuleIdentifier ); + return ( nIndex >= 0 ); } - return ( aContext.getLength() == 0 ); + return sal_False; } } diff --git a/framework/source/uielement/menubarmanager.cxx b/framework/source/uielement/menubarmanager.cxx index 759da39..13f20f1 100644 --- a/framework/source/uielement/menubarmanager.cxx +++ b/framework/source/uielement/menubarmanager.cxx @@ -1292,17 +1292,13 @@ void MenuBarManager::FillMenuManager( Menu* pMenu, const Reference< XFrame >& rF aCommand == aSpecialWindowCommand ) { // Retrieve addon popup menus and add them to our menu bar - Reference< com::sun::star::frame::XModel > xModel; - Reference< com::sun::star::frame::XController > xController( rFrame->getController(), UNO_QUERY ); - if ( xController.is() ) - xModel = Reference< com::sun::star::frame::XModel >( xController->getModel(), UNO_QUERY ); - framework::AddonMenuManager::MergeAddonPopupMenus( rFrame, xModel, nPos, (MenuBar *)pMenu ); + framework::AddonMenuManager::MergeAddonPopupMenus( rFrame, nPos, (MenuBar *)pMenu, mxServiceFactory ); break; } } // Merge the Add-Ons help menu items into the Office help menu - framework::AddonMenuManager::MergeAddonHelpMenu( rFrame, (MenuBar *)pMenu ); + framework::AddonMenuManager::MergeAddonHelpMenu( rFrame, (MenuBar *)pMenu, mxServiceFactory ); } String aEmpty; @@ -1398,7 +1394,7 @@ void MenuBarManager::FillMenuManager( Menu* pMenu, const Reference< XFrame >& rF { // Create addon popup menu if there exist elements and this is the tools popup menu sal_uInt16 nCount = 0; - AddonMenu* pSubMenu = AddonMenuManager::CreateAddonMenu( rFrame ); + AddonMenu* pSubMenu = AddonMenuManager::CreateAddonMenu( rFrame, mxServiceFactory ); if ( pSubMenu && ( pSubMenu->GetItemCount() > 0 )) { if ( pPopup->GetItemType( nCount-1 ) != MENUITEM_SEPARATOR ) diff --git a/sfx2/source/menu/virtmenu.cxx b/sfx2/source/menu/virtmenu.cxx index 8564bb2..a20a489 100644 --- a/sfx2/source/menu/virtmenu.cxx +++ b/sfx2/source/menu/virtmenu.cxx @@ -341,20 +341,17 @@ void SfxVirtualMenu::CreateFromSVMenu() if ( pSVMenu->IsMenuBar() ) { + Reference<com::sun::star::lang::XMultiServiceFactory> aXMultiServiceFactory(::comphelper::getProcessServiceFactory()); sal_uInt16 nPos = pSVMenu->GetItemPos( SID_MDIWINDOWLIST ); if ( nPos != MENU_ITEM_NOTFOUND && xFrame.is() ) { // Retrieve addon popup menus and add them to our menu bar - Reference< com::sun::star::frame::XModel > xModel; - Reference< com::sun::star::frame::XController > xController( xFrame->getController(), UNO_QUERY ); - if ( xController.is() ) - xModel = Reference< com::sun::star::frame::XModel >( xController->getModel(), UNO_QUERY ); - framework::AddonMenuManager::MergeAddonPopupMenus( xFrame, xModel, nPos, (MenuBar *)pSVMenu ); + framework::AddonMenuManager::MergeAddonPopupMenus( xFrame, nPos, (MenuBar *)pSVMenu, aXMultiServiceFactory ); } // Merge the Add-Ons help menu items into the Office help menu if ( xFrame.is() ) - framework::AddonMenuManager::MergeAddonHelpMenu( xFrame, (MenuBar *)pSVMenu ); + framework::AddonMenuManager::MergeAddonHelpMenu( xFrame, (MenuBar *)pSVMenu, aXMultiServiceFactory ); // Set addon menu pointer here to avoid problems. When accessibility is enabled, the whole menu // is created immediately! @@ -870,7 +867,7 @@ void SfxVirtualMenu::InsertAddOnsMenuItem( Menu* pMenu ) PopupMenu* pAddonMenu = NULL; try { - pAddonMenu = framework::AddonMenuManager::CreateAddonMenu( xFrame ); + pAddonMenu = framework::AddonMenuManager::CreateAddonMenu( xFrame, aXMultiServiceFactory ); } catch ( ::com::sun::star::lang::WrappedTargetException ) {
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits