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

Susobhan Ghosh susobhang70 at gmail.com
Mon Mar 14 13:49:21 UTC 2016


 dbaccess/source/ui/control/opendoccontrols.cxx |   52 -------------------------
 include/vcl/commandinfoprovider.hxx            |    2 
 vcl/source/helper/commandinfoprovider.cxx      |   33 +++++++++++++++
 3 files changed, 37 insertions(+), 50 deletions(-)

New commits:
commit bf8f926acc8afd6a2dcd2b889d427c01e06dbf85
Author: Susobhan Ghosh <susobhang70 at gmail.com>
Date:   Sat Mar 5 01:48:55 2016 +0530

    tdf#95845 Use CommandInfoProvider to receive UNO command labels
    
    Added GetCommandPropertyFromModule to CommandInfoProvider.
    Removed GetCommandText.
    
    Change-Id: Ie987984b6465d540029196df371c0c0467999a59
    Reviewed-on: https://gerrit.libreoffice.org/22918
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>

diff --git a/dbaccess/source/ui/control/opendoccontrols.cxx b/dbaccess/source/ui/control/opendoccontrols.cxx
index caa0e1c..1e5db4b 100644
--- a/dbaccess/source/ui/control/opendoccontrols.cxx
+++ b/dbaccess/source/ui/control/opendoccontrols.cxx
@@ -32,6 +32,7 @@
 #include <comphelper/processfactory.hxx>
 #include <vcl/graph.hxx>
 #include <vcl/help.hxx>
+#include <vcl/commandinfoprovider.hxx>
 #include <unotools/historyoptions.hxx>
 #include <comphelper/sequenceashashmap.hxx>
 #include <tools/urlobj.hxx>
@@ -59,55 +60,6 @@ namespace dbaui
         using ::com::sun::star::frame::theUICommandDescription;
         using ::com::sun::star::graphic::XGraphic;
 
-        OUString GetCommandText( const sal_Char* _pCommandURL, const OUString& _rModuleName )
-        {
-            OUString sLabel;
-            if ( !_pCommandURL || !*_pCommandURL )
-                return sLabel;
-
-            Reference< XNameAccess > xUICommandLabels;
-            OUString sCommandURL = OUString::createFromAscii( _pCommandURL );
-
-            try
-            {
-                do
-                {
-                    // Retrieve popup menu labels
-                    Reference< XComponentContext > xContext( ::comphelper::getProcessComponentContext() );
-                    if ( !xContext.is() )
-                        break;
-
-                    Reference< XNameAccess> xNameAccess( theUICommandDescription::get(xContext) );
-
-                    xNameAccess->getByName( _rModuleName ) >>= xUICommandLabels;
-                    if ( !xUICommandLabels.is() )
-                        break;
-
-                    Sequence< PropertyValue > aProperties;
-                    if ( !( xUICommandLabels->getByName(sCommandURL) >>= aProperties ) )
-                        break;
-
-                    sal_Int32 nCount( aProperties.getLength() );
-                    for ( sal_Int32 i=0; i<nCount; ++i )
-                    {
-                        OUString sPropertyName( aProperties[i].Name );
-                        if ( sPropertyName == "Label" )
-                        {
-                            aProperties[i].Value >>= sLabel;
-                            break;
-                        }
-                    }
-                }
-                while ( false );
-            }
-            catch( Exception& rException )
-            {
-                (void)rException;
-            }
-
-            return sLabel;
-        }
-
         Image GetCommandIcon( const sal_Char* _pCommandURL, const OUString& _rModuleName )
         {
             Image aIcon;
@@ -170,7 +122,7 @@ namespace dbaui
         m_sModule = OUString::createFromAscii( _pAsciiModuleName );
 
         // our label should equal the UI text of the "Open" command
-        OUString sLabel(GetCommandText(".uno:Open", m_sModule));
+        OUString sLabel(vcl::CommandInfoProvider::Instance().GetCommandPropertyFromModule(".uno:Open", m_sModule));
         SetText(" " + sLabel.replaceAll("~", ""));
 
         // Place icon left of text and both centered in the button.
diff --git a/include/vcl/commandinfoprovider.hxx b/include/vcl/commandinfoprovider.hxx
index 29a9bf8..67a7ab3 100644
--- a/include/vcl/commandinfoprovider.hxx
+++ b/include/vcl/commandinfoprovider.hxx
@@ -87,6 +87,8 @@ public:
     OUString GetRealCommandForCommand( const OUString& rCommandName,
                                        const css::uno::Reference<css::frame::XFrame>& rxFrame );
 
+    OUString GetCommandPropertyFromModule( const sal_Char* pCommandURL, const OUString& rModuleName );
+
     Image GetImageForCommand(
         const OUString& rsCommandName,
         bool bLarge,
diff --git a/vcl/source/helper/commandinfoprovider.cxx b/vcl/source/helper/commandinfoprovider.cxx
index 121aacf..c878a94 100644
--- a/vcl/source/helper/commandinfoprovider.cxx
+++ b/vcl/source/helper/commandinfoprovider.cxx
@@ -477,6 +477,39 @@ OUString CommandInfoProvider::GetCommandProperty(const OUString& rsProperty, con
     return OUString();
 }
 
+OUString CommandInfoProvider::GetCommandPropertyFromModule( const sal_Char* pCommandURL, const OUString& rModuleName )
+{
+    OUString sLabel;
+    if ( !pCommandURL || !*pCommandURL )
+        return sLabel;
+
+    Sequence<beans::PropertyValue> aProperties;
+    OUString sCommandURL = OUString::createFromAscii( pCommandURL );
+    try
+    {
+        if( rModuleName.getLength() > 0)
+        {
+            Reference<container::XNameAccess> xNameAccess  = frame::theUICommandDescription::get(mxContext);
+            Reference<container::XNameAccess> xUICommandLabels;
+            if (xNameAccess->getByName( rModuleName ) >>= xUICommandLabels )
+                xUICommandLabels->getByName(sCommandURL) >>= aProperties;
+
+            for (sal_Int32 nIndex=0; nIndex<aProperties.getLength(); ++nIndex)
+            {
+                if(aProperties[nIndex].Name == "Label")
+                {
+                    aProperties[nIndex].Value >>= sLabel;
+                    return sLabel;
+                }
+            }
+        }
+    }
+    catch (Exception&)
+    {
+    }
+    return OUString();
+}
+
 vcl::KeyCode CommandInfoProvider::AWTKey2VCLKey(const awt::KeyEvent& aAWTKey)
 {
     bool bShift = ((aAWTKey.Modifiers & awt::KeyModifier::SHIFT) == awt::KeyModifier::SHIFT );


More information about the Libreoffice-commits mailing list