From 81ff7cfddb8e6786529f0a878007e9d399d4908a Mon Sep 17 00:00:00 2001 From: Samuel Mehrbrodt Date: Tue, 17 Nov 2015 12:08:30 +0100 Subject: tdf#95845 Add methods for menu labels to CommandInfoProvider Change-Id: Ibf6a26940ec194f540255584776f8ebcefbb94ae --- framework/inc/helper/mischelper.hxx | 8 --- framework/inc/uielement/statusbarmanager.hxx | 1 - framework/source/fwi/helper/mischelper.cxx | 71 ---------------------- .../source/uielement/macrosmenucontroller.cxx | 9 +-- framework/source/uielement/menubarmanager.cxx | 7 +-- framework/source/uielement/statusbarmanager.cxx | 8 +-- include/vcl/commandinfoprovider.hxx | 8 +++ vcl/source/helper/commandinfoprovider.cxx | 26 +++++++- 8 files changed, 39 insertions(+), 99 deletions(-) diff --git a/framework/inc/helper/mischelper.hxx b/framework/inc/helper/mischelper.hxx index 4f5cf40a2782..6be2306e7fdf 100644 --- a/framework/inc/helper/mischelper.hxx +++ b/framework/inc/helper/mischelper.hxx @@ -121,14 +121,6 @@ public: css::uno::Reference< css::linguistic2::XLanguageGuessing > GetGuesser() const; }; -FWI_DLLPUBLIC OUString RetrieveLabelFromCommand( const OUString& aCmdURL - ,const css::uno::Reference< css::uno::XComponentContext >& _xContext - ,css::uno::Reference< css::container::XNameAccess >& _xUICommandLabels - ,const css::uno::Reference< css::frame::XFrame >& _xFrame - ,OUString& _rModuleIdentifier - ,bool& _rIni - ,const sal_Char* _pName); - FWI_DLLPUBLIC void FillLangItems( std::set< OUString > &rLangItems, const css::uno::Reference< css::frame::XFrame > &rxFrame, const LanguageGuessingHelper & rLangGuessHelper, diff --git a/framework/inc/uielement/statusbarmanager.hxx b/framework/inc/uielement/statusbarmanager.hxx index 1bef72cb811c..a80fea3293a9 100644 --- a/framework/inc/uielement/statusbarmanager.hxx +++ b/framework/inc/uielement/statusbarmanager.hxx @@ -89,7 +89,6 @@ class StatusBarManager : public ::cppu::WeakImplHelper< DECL_LINK_TYPED(DoubleClick, StatusBar*, void); void RemoveControllers(); - OUString RetrieveLabelFromCommand( const OUString& aCmdURL ); void CreateControllers(); void UpdateControllers(); void AddFrameActionListener(); diff --git a/framework/source/fwi/helper/mischelper.cxx b/framework/source/fwi/helper/mischelper.cxx index 7201de053ba9..f8a1f753aafc 100644 --- a/framework/source/fwi/helper/mischelper.cxx +++ b/framework/source/fwi/helper/mischelper.cxx @@ -59,77 +59,6 @@ uno::Reference< linguistic2::XLanguageGuessing > LanguageGuessingHelper::GetGues return m_xLanguageGuesser; } -OUString RetrieveLabelFromCommand( - const OUString& aCmdURL, - const uno::Reference< uno::XComponentContext >& _xContext, - uno::Reference< container::XNameAccess >& _xUICommandLabels, - const uno::Reference< frame::XFrame >& _xFrame, - OUString& _rModuleIdentifier, - bool& _rIni, - const sal_Char* _pName) -{ - OUString aLabel; - - // Retrieve popup menu labels - if ( !_xUICommandLabels.is() ) - { - try - { - if ( !_rIni ) - { - _rIni = true; - Reference< XModuleManager2 > xModuleManager = ModuleManager::create( _xContext ); - - try - { - _rModuleIdentifier = xModuleManager->identify( _xFrame ); - } - catch( const Exception& ) - { - } - } - - Reference< XNameAccess > xNameAccess = frame::theUICommandDescription::get( _xContext ); - xNameAccess->getByName( _rModuleIdentifier ) >>= _xUICommandLabels; - } - catch ( const Exception& ) - { - } - } - - if ( _xUICommandLabels.is() ) - { - try - { - if ( !aCmdURL.isEmpty() ) - { - OUString aStr; - Sequence< PropertyValue > aPropSeq; - if( _xUICommandLabels->hasByName( aCmdURL ) ) - { - if ( _xUICommandLabels->getByName( aCmdURL ) >>= aPropSeq ) - { - for ( sal_Int32 i = 0; i < aPropSeq.getLength(); i++ ) - { - if ( aPropSeq[i].Name.equalsAscii( _pName/*"Label"*/ )) - { - aPropSeq[i].Value >>= aStr; - break; - } - } - } - } - aLabel = aStr; - } - } - catch ( const css::uno::Exception& ) - { - } - } - - return aLabel; -} - void FillLangItems( std::set< OUString > &rLangItems, const uno::Reference< frame::XFrame > & rxFrame, const LanguageGuessingHelper & rLangGuessHelper, diff --git a/framework/source/uielement/macrosmenucontroller.cxx b/framework/source/uielement/macrosmenucontroller.cxx index 588675399e57..badcb95b07de 100644 --- a/framework/source/uielement/macrosmenucontroller.cxx +++ b/framework/source/uielement/macrosmenucontroller.cxx @@ -32,6 +32,7 @@ #include #include #include +#include #include #include "helper/mischelper.hxx" #include "helpid.hrc" @@ -85,7 +86,7 @@ void MacrosMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu >& rPo // insert basic OUString aCommand(".uno:MacroDialog"); - OUString aDisplayName = RetrieveLabelFromCommand( aCommand ); + OUString aDisplayName = vcl::CommandInfoProvider::Instance().GetMenuLabelForCommand(aCommand, m_xFrame); pPopupMenu->InsertItem( 2, aDisplayName ); pPopupMenu->SetItemCommand( 2, aCommand ); @@ -122,12 +123,6 @@ void SAL_CALL MacrosMenuController::statusChanged( const FeatureStateEvent& ) th } } -OUString MacrosMenuController::RetrieveLabelFromCommand(const OUString& rCmdURL) -{ - bool bModuleIdentified = !m_aModuleIdentifier.isEmpty(); - return framework::RetrieveLabelFromCommand(rCmdURL, m_xContext, m_xUICommandLabels, m_xFrame, m_aModuleIdentifier, bModuleIdentified, "Label"); -} - void MacrosMenuController::addScriptItems( PopupMenu* pPopupMenu, sal_uInt16 startItemId ) { const OUString aCmdBase(".uno:ScriptOrganizer?ScriptOrganizer.Language:string="); diff --git a/framework/source/uielement/menubarmanager.cxx b/framework/source/uielement/menubarmanager.cxx index 85fa140577a4..0c4553beb805 100644 --- a/framework/source/uielement/menubarmanager.cxx +++ b/framework/source/uielement/menubarmanager.cxx @@ -69,6 +69,7 @@ #include #include #include +#include #include #include #include @@ -1099,11 +1100,9 @@ OUString MenuBarManager::RetrieveLabelFromCommand(const OUString& rCmdURL) if ( !m_bHasMenuBar ) { // This is a context menu, prefer "PopupLabel" over "Label". - OUString aPopupLabel = framework::RetrieveLabelFromCommand(rCmdURL, m_xContext, m_xUICommandLabels,m_xFrame,m_aModuleIdentifier,m_bModuleIdentified,"PopupLabel"); - if ( !aPopupLabel.isEmpty() ) - return aPopupLabel; + return vcl::CommandInfoProvider::Instance().GetPopupLabelForCommand(rCmdURL, m_xFrame); } - return framework::RetrieveLabelFromCommand(rCmdURL, m_xContext, m_xUICommandLabels,m_xFrame,m_aModuleIdentifier,m_bModuleIdentified,"Label"); + return vcl::CommandInfoProvider::Instance().GetMenuLabelForCommand(rCmdURL, m_xFrame); } bool MenuBarManager::CreatePopupMenuController( MenuItemHandler* pMenuItemHandler ) diff --git a/framework/source/uielement/statusbarmanager.cxx b/framework/source/uielement/statusbarmanager.cxx index 389d1f5d1afc..92673de99a6f 100644 --- a/framework/source/uielement/statusbarmanager.cxx +++ b/framework/source/uielement/statusbarmanager.cxx @@ -48,6 +48,7 @@ #include #include #include +#include #include @@ -300,11 +301,6 @@ void StatusBarManager::RemoveControllers() m_aControllerMap.clear(); } -OUString StatusBarManager::RetrieveLabelFromCommand( const OUString& aCmdURL ) -{ - return framework::RetrieveLabelFromCommand(aCmdURL, m_xContext, m_xUICommandLabels,m_xFrame,m_aModuleIdentifier,m_bModuleIdentified,"Name"); -} - void StatusBarManager::CreateControllers() { uno::Reference< awt::XWindow > xStatusbarWindow = VCLUnoHelper::GetInterface( m_pStatusBar ); @@ -475,7 +471,7 @@ void StatusBarManager::FillStatusBar( const uno::Reference< container::XIndexAcc if (( nType == css::ui::ItemType::DEFAULT ) && !aCommandURL.isEmpty() ) { - OUString aString( RetrieveLabelFromCommand( aCommandURL )); + OUString aString( vcl::CommandInfoProvider::Instance().GetLabelForCommand(aCommandURL, m_xFrame)); sal_uInt16 nItemBits( impl_convertItemStyleToItemBits( nStyle )); m_pStatusBar->InsertItem( nId, nWidth, nItemBits, nOffset ); diff --git a/include/vcl/commandinfoprovider.hxx b/include/vcl/commandinfoprovider.hxx index 3d98296d1f3e..c790fedacf67 100644 --- a/include/vcl/commandinfoprovider.hxx +++ b/include/vcl/commandinfoprovider.hxx @@ -59,6 +59,14 @@ public: const OUString& rsCommandName, const css::uno::Reference& rxFrame); + OUString GetMenuLabelForCommand ( + const OUString& rsCommandName, + const css::uno::Reference& rxFrame); + + OUString GetPopupLabelForCommand ( + const OUString& rsCommandName, + const css::uno::Reference& rxFrame); + /** Return a tooltip for the given command. Falls back to label if command has no tooltip. @param rsCommandName The command name is expected to start with .uno: diff --git a/vcl/source/helper/commandinfoprovider.cxx b/vcl/source/helper/commandinfoprovider.cxx index dde74417a14c..6a7e86802956 100644 --- a/vcl/source/helper/commandinfoprovider.cxx +++ b/vcl/source/helper/commandinfoprovider.cxx @@ -103,7 +103,6 @@ CommandInfoProvider::~CommandInfoProvider() } } - OUString CommandInfoProvider::GetLabelForCommand ( const OUString& rsCommandName, const Reference& rxFrame) @@ -113,6 +112,29 @@ OUString CommandInfoProvider::GetLabelForCommand ( return GetCommandProperty("Name", rsCommandName); } +OUString CommandInfoProvider::GetMenuLabelForCommand ( + const OUString& rsCommandName, + const Reference& rxFrame) +{ + SetFrame(rxFrame); + + // Here we want to use "Label", not "Name". "Name" is a stripped-down version of "Label" without accelerators + // and ellipsis. In the menu, we want to have those accelerators and ellipsis. + return GetCommandProperty("Label", rsCommandName); +} + +OUString CommandInfoProvider::GetPopupLabelForCommand ( + const OUString& rsCommandName, + const css::uno::Reference& rxFrame) +{ + SetFrame(rxFrame); + + OUString sPopupLabel(GetCommandProperty("PopupLabel", rsCommandName)); + if (!sPopupLabel.isEmpty()) + return sPopupLabel; + return GetCommandProperty("Label", rsCommandName); +} + OUString CommandInfoProvider::GetTooltipForCommand ( const OUString& rsCommandName, const Reference& rxFrame, @@ -122,7 +144,7 @@ OUString CommandInfoProvider::GetTooltipForCommand ( OUString sLabel (GetCommandProperty("TooltipLabel", rsCommandName)); if (sLabel.isEmpty()) - sLabel = GetLabelForCommand(rsCommandName, rxFrame); + sLabel = GetCommandProperty("Name", rsCommandName); if (bIncludeShortcut) { const OUString sShortCut(GetCommandShortcut(rsCommandName, rxFrame)); -- cgit v1.2.3