Author: arielch
Date: Fri Jan  4 19:57:29 2013
New Revision: 1429069

URL: http://svn.apache.org/viewvc?rev=1429069&view=rev
Log:
i121577 - Allow setting toolbar name in Addons.xcu

Modified:
    openoffice/trunk/main/framework/inc/framework/addonsoptions.hxx
    openoffice/trunk/main/framework/source/fwe/classes/addonsoptions.cxx
    
openoffice/trunk/main/framework/source/layoutmanager/toolbarlayoutmanager.cxx
    
openoffice/trunk/main/officecfg/registry/schema/org/openoffice/Office/Addons.xcs

Modified: openoffice/trunk/main/framework/inc/framework/addonsoptions.hxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/framework/inc/framework/addonsoptions.hxx?rev=1429069&r1=1429068&r2=1429069&view=diff
==============================================================================
--- openoffice/trunk/main/framework/inc/framework/addonsoptions.hxx (original)
+++ openoffice/trunk/main/framework/inc/framework/addonsoptions.hxx Fri Jan  4 
19:57:29 2013
@@ -279,6 +279,13 @@ class FWE_DLLPUBLIC AddonsOptions
 
         const ::rtl::OUString GetAddonsToolbarResourceName( sal_uInt32 nIndex 
) const;
 
+        /**
+         *  @short      Gets the UI name of a single addon toolbar
+         *  @return     The UI name of the toolbar as specified in the 
Addons.xcu configuration
+         *  @onerror    Returns an empty string
+         */
+        const ::rtl::OUString GetAddonsToolbarUIName( sal_uInt32 nIndex ) 
const;
+
         
/*-****************************************************************************************************//**
             @short      Retrieves all available merge instructions for the 
Office menu bar
             @descr      -

Modified: openoffice/trunk/main/framework/source/fwe/classes/addonsoptions.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/framework/source/fwe/classes/addonsoptions.cxx?rev=1429069&r1=1429068&r2=1429069&view=diff
==============================================================================
--- openoffice/trunk/main/framework/source/fwe/classes/addonsoptions.cxx 
(original)
+++ openoffice/trunk/main/framework/source/fwe/classes/addonsoptions.cxx Fri 
Jan  4 19:57:29 2013
@@ -64,9 +64,11 @@ using namespace ::com::sun::star::lang       ;
 //     const
 
//_________________________________________________________________________________________________________________
 
+#define STR_TOOLBARITEMS    "ToolBarItems"
+
 #define ROOTNODE_ADDONMENU                              
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Office.Addons"    ))
 #define PATHDELIMITER                                   
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/"                                
))
-#define TOOLBARITEMS                                                           
        ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ToolBarItems"              
))
+#define TOOLBARITEMS                                                           
        ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(STR_TOOLBARITEMS))
 #define SEPARATOR_URL_STR                                                      
        "private:separator"
 #define SEPARATOR_URL_LEN                                                      
        17
 #define SEPARATOR_URL                                                          
        ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( SEPARATOR_URL_STR ))
@@ -79,6 +81,7 @@ using namespace ::com::sun::star::lang        ;
 #define PROPERTYNAME_SUBMENU                                                   
ADDONSMENUITEM_PROPERTYNAME_SUBMENU
 #define PROPERTYNAME_CONTROLTYPE                        
ADDONSMENUITEM_PROPERTYNAME_CONTROLTYPE
 #define PROPERTYNAME_WIDTH                              
ADDONSMENUITEM_PROPERTYNAME_WIDTH
+#define PROPERTYNAME_TOOLBARITEMS                       TOOLBARITEMS
 
 #define PROPERTYNAME_ALIGN                              
STATUSBARITEM_PROPERTYNAME_ALIGN
 #define PROPERTYNAME_AUTOSIZE                           
STATUSBARITEM_PROPERTYNAME_AUTOSIZE
@@ -110,7 +113,7 @@ using namespace ::com::sun::star::lang      ;
 #define PROPERTYNAME_MERGETOOLBAR_MERGECOMMANDPARAMETER 
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeCommandParameter" ))
 #define PROPERTYNAME_MERGETOOLBAR_MERGEFALLBACK         
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeFallback" ))
 #define PROPERTYNAME_MERGETOOLBAR_MERGECONTEXT          
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeContext" ))
-#define PROPERTYNAME_MERGETOOLBAR_TOOLBARITEMS          
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ToolBarItems" ))
+#define PROPERTYNAME_MERGETOOLBAR_TOOLBARITEMS          
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(STR_TOOLBARITEMS ))
 
 #define PROPERTYNAME_MERGESTATUSBAR_MERGEPOINT               
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergePoint" ))
 #define PROPERTYNAME_MERGESTATUSBAR_MERGECOMMAND             
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeCommand" ))
@@ -131,7 +134,8 @@ using namespace ::com::sun::star::lang      ;
 #define INDEX_ALIGN             8
 #define INDEX_AUTOSIZE          9
 #define INDEX_OWNERDRAW         10
-#define PROPERTYCOUNT_INDEX     11
+#define INDEX_TOOLBARITEMS      11
+#define PROPERTYCOUNT_INDEX     12
 
 // The following order is mandatory. Please add properties at the end!
 #define PROPERTYCOUNT_MENUITEM                                                 
6
@@ -150,6 +154,11 @@ using namespace ::com::sun::star::lang     ;
 #define OFFSET_POPUPMENU_URL                                                   
3       // Used for property set
 
 // The following order is mandatory. Please add properties at the end!
+#define PROPERTYCOUNT_TOOLBAR                           2
+#define OFFSET_TOOLBAR_TITLE                            0
+#define OFFSET_TOOLBAR_TOOLBARITEMS                     1
+
+// The following order is mandatory. Please add properties at the end!
 #define PROPERTYCOUNT_TOOLBARITEM                                              
7
 #define OFFSET_TOOLBARITEM_URL                                                 0
 #define OFFSET_TOOLBARITEM_TITLE                                               
1
@@ -296,6 +305,7 @@ class AddonsOptions_Impl : public Config
                const Sequence< Sequence< PropertyValue > >&    
GetAddonsMenuBarPart () const ;
         const Sequence< Sequence< PropertyValue > >&   GetAddonsToolBarPart ( 
sal_uInt32 nIndex ) const ;
         const ::rtl::OUString                           
GetAddonsToolbarResourceName( sal_uInt32 nIndex ) const;
+        const ::rtl::OUString                           
GetAddonsToolbarUIName( sal_uInt32 nIndex ) const;
                const Sequence< Sequence< PropertyValue > >&    
GetAddonsHelpMenu        () const ;
                Image                                                           
                        GetImageFromURL( const rtl::OUString& aURL, sal_Bool 
bBig, sal_Bool bHiContrast, sal_Bool bNoScale ) const;
         const MergeMenuInstructionContainer&            
GetMergeMenuInstructions() const;
@@ -348,7 +358,9 @@ class AddonsOptions_Impl : public Config
 
                sal_Bool                         ReadAddonMenuSet( Sequence< 
Sequence< PropertyValue > >& aAddonMenuSeq );
                sal_Bool                         ReadOfficeMenuBarSet( 
Sequence< Sequence< PropertyValue > >& aAddonOfficeMenuBarSeq );
-        sal_Bool                        ReadOfficeToolBarSet( AddonToolBars& 
rAddonOfficeToolBars, std::vector< rtl::OUString >& rAddonOfficeToolBarResNames 
);
+        sal_Bool                        ReadOfficeToolBarSet( AddonToolBars& 
rAddonOfficeToolBars,
+                                                   std::vector< rtl::OUString 
>& rAddonOfficeToolBarResNames,
+                                                   std::vector< rtl::OUString 
>& rAddonOfficeToolBarUINames );
         sal_Bool                        ReadToolBarItemSet( const 
rtl::OUString rToolBarItemSetNodeName, Sequence< Sequence< PropertyValue > >& 
aAddonOfficeToolBarSeq );
                sal_Bool                         ReadOfficeHelpSet( Sequence< 
Sequence< PropertyValue > >& aAddonOfficeHelpMenuSeq );
                sal_Bool                         ReadImages( ImageManager& 
aImageManager );
@@ -378,6 +390,7 @@ class AddonsOptions_Impl : public Config
                Sequence< ::rtl::OUString > 
GetPropertyNamesMergeMenuInstruction( const ::rtl::OUString& aPropertyRootName 
) const;
         Sequence< ::rtl::OUString > GetPropertyNamesMenuItem( const 
::rtl::OUString& aPropertyRootNode ) const;
                Sequence< ::rtl::OUString > GetPropertyNamesPopupMenu( const 
::rtl::OUString& aPropertyRootNode ) const;
+        Sequence< ::rtl::OUString > GetPropertyNamesToolBar( const 
::rtl::OUString& aPropertyRootNode ) const;
                Sequence< ::rtl::OUString > GetPropertyNamesToolBarItem( const 
::rtl::OUString& aPropertyRootNode ) const;
         Sequence< ::rtl::OUString > GetPropertyNamesStatusbarItem( const 
::rtl::OUString& aPropertyRootNode ) const;
                Sequence< ::rtl::OUString > GetPropertyNamesImages( const 
::rtl::OUString& aPropertyRootNode ) const;
@@ -405,6 +418,7 @@ class AddonsOptions_Impl : public Config
                Sequence< Sequence< PropertyValue > >             
m_aCachedMenuBarPartProperties;
         AddonToolBars                                     
m_aCachedToolBarPartProperties;
         std::vector< rtl::OUString >                      
m_aCachedToolBarPartResourceNames;
+        std::vector< rtl::OUString >                      
m_aCachedToolBarPartUINames;
                Sequence< Sequence< PropertyValue > >             
m_aCachedHelpMenuProperties;
                Reference< com::sun::star::util::XMacroExpander > 
m_xMacroExpander;
                ImageManager                                      
m_aImageManager;
@@ -442,6 +456,7 @@ AddonsOptions_Impl::AddonsOptions_Impl()
     m_aPropNames[ INDEX_ALIGN           ] = PROPERTYNAME_ALIGN;
     m_aPropNames[ INDEX_AUTOSIZE        ] = PROPERTYNAME_AUTOSIZE;
     m_aPropNames[ INDEX_OWNERDRAW       ] = PROPERTYNAME_OWNERDRAW;
+    m_aPropNames[ INDEX_TOOLBARITEMS    ] = PROPERTYNAME_TOOLBARITEMS;
 
        // initialize array with fixed images property names
        m_aPropImagesNames[ OFFSET_IMAGES_SMALL                 ] = 
PROPERTYNAME_IMAGESMALL;
@@ -515,11 +530,14 @@ void AddonsOptions_Impl::ReadConfigurati
     m_aCachedToolBarPartProperties = AddonToolBars();
     m_aCachedHelpMenuProperties = Sequence< Sequence< PropertyValue > >();
     m_aCachedToolBarPartResourceNames.clear();
+    m_aCachedToolBarPartUINames.clear();
     m_aImageManager = ImageManager();
 
     ReadAddonMenuSet( m_aCachedMenuProperties );
        ReadOfficeMenuBarSet( m_aCachedMenuBarPartProperties );
-       ReadOfficeToolBarSet( m_aCachedToolBarPartProperties, 
m_aCachedToolBarPartResourceNames );
+       ReadOfficeToolBarSet( m_aCachedToolBarPartProperties,
+                          m_aCachedToolBarPartResourceNames,
+                          m_aCachedToolBarPartUINames );
 
        ReadOfficeHelpSet( m_aCachedHelpMenuProperties );
        ReadImages( m_aImageManager );
@@ -611,6 +629,15 @@ const ::rtl::OUString AddonsOptions_Impl
         return rtl::OUString();
 }
 
+
+const ::rtl::OUString AddonsOptions_Impl::GetAddonsToolbarUIName( sal_uInt32 
nIndex ) const
+{
+    if ( nIndex < m_aCachedToolBarPartUINames.size() )
+        return m_aCachedToolBarPartUINames[nIndex];
+    else
+        return rtl::OUString();
+}
+
 
//*****************************************************************************************************************
 //     public method
 
//*****************************************************************************************************************
@@ -815,7 +842,10 @@ sal_Bool AddonsOptions_Impl::ReadOfficeM
 
//*****************************************************************************************************************
 //     private method
 
//*****************************************************************************************************************
-sal_Bool AddonsOptions_Impl::ReadOfficeToolBarSet( AddonToolBars& 
rAddonOfficeToolBars, std::vector< rtl::OUString >& rAddonOfficeToolBarResNames 
)
+sal_Bool AddonsOptions_Impl::ReadOfficeToolBarSet(
+    AddonToolBars& rAddonOfficeToolBars,
+    std::vector< rtl::OUString >& rAddonOfficeToolBarResNames,
+    std::vector< rtl::OUString >& rAddonOfficeToolBarUINames )
 {
        // Read the OfficeToolBar set and fill property sequences
        ::rtl::OUString             aAddonToolBarNodeName( 
RTL_CONSTASCII_USTRINGPARAM( "AddonUI/OfficeToolBar" ));
@@ -826,10 +856,24 @@ sal_Bool AddonsOptions_Impl::ReadOfficeT
 
        for ( sal_uInt32 n = 0; n < nCount; n++ )
        {
-        ::rtl::OUString aToolBarItemNode( aAddonToolBarNode + 
aAddonToolBarNodeSeq[n] );
+        ::rtl::OUString aToolBarNode( aAddonToolBarNode + 
aAddonToolBarNodeSeq[n] + m_aPathDelimiter );
         rAddonOfficeToolBarResNames.push_back( aAddonToolBarNodeSeq[n] );
         rAddonOfficeToolBars.push_back( m_aEmptyAddonToolBar );
-        ReadToolBarItemSet( aToolBarItemNode, rAddonOfficeToolBars[n] );
+
+        Sequence< Any > aToolBarNodeValues = GetProperties( 
GetPropertyNamesToolBar( aToolBarNode ) );
+
+        rtl::OUString aUIName;
+        aToolBarNodeValues[OFFSET_TOOLBAR_TITLE] >>= aUIName;
+        rAddonOfficeToolBarUINames.push_back( aUIName );
+
+        Reference < XInterface > xToolbarItems;
+        if ( ( aToolBarNodeValues[OFFSET_TOOLBAR_TOOLBARITEMS] >>= 
xToolbarItems ) && xToolbarItems.is() )
+        {
+            ::rtl::OUStringBuffer aBuffer;
+            aBuffer.append( aToolBarNode );
+            aBuffer.appendAscii( RTL_CONSTASCII_STRINGPARAM( STR_TOOLBARITEMS 
) );
+            ReadToolBarItemSet( aBuffer.makeStringAndClear(), 
rAddonOfficeToolBars[n] );
+        }
        }
 
        return ( !rAddonOfficeToolBars.empty() );
@@ -1812,6 +1856,17 @@ Sequence< ::rtl::OUString > AddonsOption
 
//*****************************************************************************************************************
 //     private method
 
//*****************************************************************************************************************
+Sequence< ::rtl::OUString > AddonsOptions_Impl::GetPropertyNamesToolBar( const 
::rtl::OUString& aPropertyRootNode ) const
+{
+    Sequence< ::rtl::OUString > lResult( PROPERTYCOUNT_TOOLBAR );
+
+    // Create property names dependent from the root node name
+    lResult[OFFSET_TOOLBAR_TITLE]        = ::rtl::OUString( aPropertyRootNode 
+ m_aPropNames[ INDEX_TITLE ] );
+    lResult[OFFSET_TOOLBAR_TOOLBARITEMS] = ::rtl::OUString( aPropertyRootNode 
+ m_aPropNames[ INDEX_TOOLBARITEMS ] );
+
+    return lResult;
+}
+
 Sequence< ::rtl::OUString > AddonsOptions_Impl::GetPropertyNamesToolBarItem( 
const ::rtl::OUString& aPropertyRootNode ) const
 {
        Sequence< ::rtl::OUString > lResult( PROPERTYCOUNT_TOOLBARITEM );
@@ -1971,6 +2026,12 @@ const ::rtl::OUString AddonsOptions::Get
     return m_pDataContainer->GetAddonsToolbarResourceName( nIndex );
 }
 
+const ::rtl::OUString AddonsOptions::GetAddonsToolbarUIName( sal_uInt32 nIndex 
) const
+{
+    MutexGuard aGuard( GetOwnStaticMutex() );
+    return m_pDataContainer->GetAddonsToolbarUIName( nIndex );
+}
+
 
//*****************************************************************************************************************
 //     public method
 
//*****************************************************************************************************************

Modified: 
openoffice/trunk/main/framework/source/layoutmanager/toolbarlayoutmanager.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/framework/source/layoutmanager/toolbarlayoutmanager.cxx?rev=1429069&r1=1429068&r2=1429069&view=diff
==============================================================================
--- 
openoffice/trunk/main/framework/source/layoutmanager/toolbarlayoutmanager.cxx 
(original)
+++ 
openoffice/trunk/main/framework/source/layoutmanager/toolbarlayoutmanager.cxx 
Fri Jan  4 19:57:29 2013
@@ -1005,7 +1005,8 @@ void ToolbarLayoutManager::implts_create
                 }
 
                 ::rtl::OUString aAddonUIName = 
m_pAddonOptions->GetAddonsToolbarUIName( i );
-                ::rtl::OUString aAddonTitle = aAddonUIName.getLength() ?
+                const bool bAddonUIName = aAddonUIName.getLength();
+                ::rtl::OUString aAddonTitle = bAddonUIName ?
                     aAddonUIName : implts_generateGenericAddonToolbarTitle( 
i+1 );
 
                 if ( aElement.m_aName.getLength() > 0 )
@@ -1014,7 +1015,7 @@ void ToolbarLayoutManager::implts_create
                     // UI changes for this document.
                     implts_setElementData( aElement, xDockWindow );
                     aElement.m_xUIElement = xUIElement;
-                    if ( aElement.m_aUIName.getLength() == 0 )
+                    if ( aElement.m_aUIName.getLength() == 0 && !bAddonUIName)
                     {
                         aElement.m_aUIName = aAddonTitle;
                         implts_writeWindowStateData( aElement );
@@ -1027,7 +1028,7 @@ void ToolbarLayoutManager::implts_create
                     aNewToolbar.m_bFloating = true;
                     implts_readWindowStateData( aAddonToolBarName, aNewToolbar 
);
                     implts_setElementData( aNewToolbar, xDockWindow );
-                    if ( aNewToolbar.m_aUIName.getLength() == 0 )
+                    if ( aNewToolbar.m_aUIName.getLength() == 0 && 
!bAddonUIName)
                     {
                         aNewToolbar.m_aUIName = aAddonTitle;
                         implts_writeWindowStateData( aNewToolbar );

Modified: 
openoffice/trunk/main/officecfg/registry/schema/org/openoffice/Office/Addons.xcs
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/officecfg/registry/schema/org/openoffice/Office/Addons.xcs?rev=1429069&r1=1429068&r2=1429069&view=diff
==============================================================================
--- 
openoffice/trunk/main/officecfg/registry/schema/org/openoffice/Office/Addons.xcs
 (original)
+++ 
openoffice/trunk/main/officecfg/registry/schema/org/openoffice/Office/Addons.xcs
 Fri Jan  4 19:57:29 2013
@@ -157,6 +157,22 @@
                        </info>
                </set>
                </group>
+        <group oor:name="ToolBar">
+            <info>
+                <desc>Contains the structure of a toolbar.</desc>
+            </info>
+            <prop oor:name="Title" oor:type="xs:string" oor:localized="true">
+                <info>
+                    <desc>A localized string used as the toolbar title.</desc>
+                </info>
+                <value></value>
+            </prop>
+            <set oor:name="ToolBarItems" oor:node-type="ToolBarItem">
+                <info>
+                    <desc>Contains a list of sets of toolbar items that are 
part of add-on toolbars.</desc>
+                </info>
+            </set>
+        </group>
                <group oor:name="ToolBarItem">
                        <info>
                                <desc>Describes a toolbar item representing a 
function of of an external component. The name must be unique and should be 
written using a package-scheme like org.openoffice.external.applicationexecuter 
to minimize name clashes.</desc>
@@ -400,10 +416,10 @@
                                        <desc>Contains a list of menu merging 
instructions of different add-ons.</desc>
                                </info>
                        </set>
-                       <set oor:name="OfficeToolBar" 
oor:node-type="ToolBarItems">
-                               <info>
-                                       <desc>Contains a list of sets of 
toolbar items that are part of add-on toolbars.</desc>
-                               </info>
+                       <set oor:name="OfficeToolBar" oor:node-type="ToolBar">
+                <info>
+                    <desc>Contains a lists of addon toolbars.</desc>
+                </info>
                        </set>
                        <set oor:name="OfficeToolbarMerging" 
oor:node-type="MergeToolBarItems">
                            <info>


Reply via email to