[Libreoffice-commits] core.git: framework/inc framework/source include/vcl vcl/source

Samuel Mehrbrodt Samuel.Mehrbrodt at cib.de
Tue Nov 17 03:12:36 PST 2015


 framework/inc/helper/mischelper.hxx                 |    8 --
 framework/inc/uielement/statusbarmanager.hxx        |    1 
 framework/source/fwi/helper/mischelper.cxx          |   71 --------------------
 framework/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(-)

New commits:
commit 81ff7cfddb8e6786529f0a878007e9d399d4908a
Author: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
Date:   Tue Nov 17 12:08:30 2015 +0100

    tdf#95845 Add methods for menu labels to CommandInfoProvider
    
    Change-Id: Ibf6a26940ec194f540255584776f8ebcefbb94ae

diff --git a/framework/inc/helper/mischelper.hxx b/framework/inc/helper/mischelper.hxx
index 4f5cf40..6be2306 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 1bef72c..a80fea3 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 7201de0..f8a1f75 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 5886753..badcb95 100644
--- a/framework/source/uielement/macrosmenucontroller.cxx
+++ b/framework/source/uielement/macrosmenucontroller.cxx
@@ -32,6 +32,7 @@
 #include <comphelper/processfactory.hxx>
 #include <vcl/svapp.hxx>
 #include <vcl/i18nhelp.hxx>
+#include <vcl/commandinfoprovider.hxx>
 #include <rtl/ustrbuf.hxx>
 #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 85fa140..0c4553b 100644
--- a/framework/source/uielement/menubarmanager.cxx
+++ b/framework/source/uielement/menubarmanager.cxx
@@ -69,6 +69,7 @@
 #include <vcl/window.hxx>
 #include <vcl/menu.hxx>
 #include <vcl/settings.hxx>
+#include <vcl/commandinfoprovider.hxx>
 #include <osl/mutex.hxx>
 #include <osl/file.hxx>
 #include <cppuhelper/implbase.hxx>
@@ -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 389d1f5..92673de 100644
--- a/framework/source/uielement/statusbarmanager.cxx
+++ b/framework/source/uielement/statusbarmanager.cxx
@@ -48,6 +48,7 @@
 #include <vcl/status.hxx>
 #include <vcl/svapp.hxx>
 #include <vcl/settings.hxx>
+#include <vcl/commandinfoprovider.hxx>
 
 #include <functional>
 
@@ -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 3d98296..c790fed 100644
--- a/include/vcl/commandinfoprovider.hxx
+++ b/include/vcl/commandinfoprovider.hxx
@@ -59,6 +59,14 @@ public:
         const OUString& rsCommandName,
         const css::uno::Reference<css::frame::XFrame>& rxFrame);
 
+    OUString GetMenuLabelForCommand (
+        const OUString& rsCommandName,
+        const css::uno::Reference<css::frame::XFrame>& rxFrame);
+
+    OUString GetPopupLabelForCommand (
+        const OUString& rsCommandName,
+        const css::uno::Reference<css::frame::XFrame>& 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 dde7441..6a7e868 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<frame::XFrame>& rxFrame)
@@ -113,6 +112,29 @@ OUString CommandInfoProvider::GetLabelForCommand (
     return GetCommandProperty("Name", rsCommandName);
 }
 
+OUString CommandInfoProvider::GetMenuLabelForCommand (
+    const OUString& rsCommandName,
+    const Reference<frame::XFrame>& 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<css::frame::XFrame>& 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<frame::XFrame>& 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));


More information about the Libreoffice-commits mailing list