@@ -64,9 +64,11 @@ using namespace ::com::sun::star::lang ;
6464// const
6565// _________________________________________________________________________________________________________________
6666
67+ #define STR_TOOLBARITEMS " ToolBarItems"
68+
6769#define ROOTNODE_ADDONMENU ::rtl::OUString (RTL_CONSTASCII_USTRINGPARAM(" Office.Addons" ))
6870#define PATHDELIMITER ::rtl::OUString (RTL_CONSTASCII_USTRINGPARAM(" /" ))
69- #define TOOLBARITEMS ::rtl::OUString (RTL_CONSTASCII_USTRINGPARAM(" ToolBarItems " ))
71+ #define TOOLBARITEMS ::rtl::OUString (RTL_CONSTASCII_USTRINGPARAM(STR_TOOLBARITEMS ))
7072#define SEPARATOR_URL_STR " private:separator"
7173#define SEPARATOR_URL_LEN 17
7274#define SEPARATOR_URL ::rtl::OUString (RTL_CONSTASCII_USTRINGPARAM( SEPARATOR_URL_STR ))
@@ -79,6 +81,7 @@ using namespace ::com::sun::star::lang ;
7981#define PROPERTYNAME_SUBMENU ADDONSMENUITEM_PROPERTYNAME_SUBMENU
8082#define PROPERTYNAME_CONTROLTYPE ADDONSMENUITEM_PROPERTYNAME_CONTROLTYPE
8183#define PROPERTYNAME_WIDTH ADDONSMENUITEM_PROPERTYNAME_WIDTH
84+ #define PROPERTYNAME_TOOLBARITEMS TOOLBARITEMS
8285
8386#define PROPERTYNAME_ALIGN STATUSBARITEM_PROPERTYNAME_ALIGN
8487#define PROPERTYNAME_AUTOSIZE STATUSBARITEM_PROPERTYNAME_AUTOSIZE
@@ -110,7 +113,7 @@ using namespace ::com::sun::star::lang ;
110113#define PROPERTYNAME_MERGETOOLBAR_MERGECOMMANDPARAMETER ::rtl::OUString (RTL_CONSTASCII_USTRINGPARAM(" MergeCommandParameter" ))
111114#define PROPERTYNAME_MERGETOOLBAR_MERGEFALLBACK ::rtl::OUString (RTL_CONSTASCII_USTRINGPARAM(" MergeFallback" ))
112115#define PROPERTYNAME_MERGETOOLBAR_MERGECONTEXT ::rtl::OUString (RTL_CONSTASCII_USTRINGPARAM(" MergeContext" ))
113- #define PROPERTYNAME_MERGETOOLBAR_TOOLBARITEMS ::rtl::OUString (RTL_CONSTASCII_USTRINGPARAM(" ToolBarItems " ))
116+ #define PROPERTYNAME_MERGETOOLBAR_TOOLBARITEMS ::rtl::OUString (RTL_CONSTASCII_USTRINGPARAM(STR_TOOLBARITEMS ))
114117
115118#define PROPERTYNAME_MERGESTATUSBAR_MERGEPOINT ::rtl::OUString (RTL_CONSTASCII_USTRINGPARAM(" MergePoint" ))
116119#define PROPERTYNAME_MERGESTATUSBAR_MERGECOMMAND ::rtl::OUString (RTL_CONSTASCII_USTRINGPARAM(" MergeCommand" ))
@@ -131,7 +134,8 @@ using namespace ::com::sun::star::lang ;
131134#define INDEX_ALIGN 8
132135#define INDEX_AUTOSIZE 9
133136#define INDEX_OWNERDRAW 10
134- #define PROPERTYCOUNT_INDEX 11
137+ #define INDEX_TOOLBARITEMS 11
138+ #define PROPERTYCOUNT_INDEX 12
135139
136140// The following order is mandatory. Please add properties at the end!
137141#define PROPERTYCOUNT_MENUITEM 6
@@ -149,6 +153,11 @@ using namespace ::com::sun::star::lang ;
149153#define OFFSET_POPUPMENU_SUBMENU 2
150154#define OFFSET_POPUPMENU_URL 3 // Used for property set
151155
156+ // The following order is mandatory. Please add properties at the end!
157+ #define PROPERTYCOUNT_TOOLBAR 2
158+ #define OFFSET_TOOLBAR_TITLE 0
159+ #define OFFSET_TOOLBAR_TOOLBARITEMS 1
160+
152161// The following order is mandatory. Please add properties at the end!
153162#define PROPERTYCOUNT_TOOLBARITEM 7
154163#define OFFSET_TOOLBARITEM_URL 0
@@ -296,6 +305,7 @@ class AddonsOptions_Impl : public ConfigItem
296305 const Sequence< Sequence< PropertyValue > >& GetAddonsMenuBarPart () const ;
297306 const Sequence< Sequence< PropertyValue > >& GetAddonsToolBarPart ( sal_uInt32 nIndex ) const ;
298307 const ::rtl::OUString GetAddonsToolbarResourceName ( sal_uInt32 nIndex ) const ;
308+ const ::rtl::OUString GetAddonsToolbarUIName ( sal_uInt32 nIndex ) const ;
299309 const Sequence< Sequence< PropertyValue > >& GetAddonsHelpMenu () const ;
300310 Image GetImageFromURL ( const rtl::OUString& aURL, sal_Bool bBig, sal_Bool bHiContrast, sal_Bool bNoScale ) const ;
301311 const MergeMenuInstructionContainer& GetMergeMenuInstructions () const ;
@@ -348,7 +358,9 @@ class AddonsOptions_Impl : public ConfigItem
348358
349359 sal_Bool ReadAddonMenuSet ( Sequence< Sequence< PropertyValue > >& aAddonMenuSeq );
350360 sal_Bool ReadOfficeMenuBarSet ( Sequence< Sequence< PropertyValue > >& aAddonOfficeMenuBarSeq );
351- sal_Bool ReadOfficeToolBarSet ( AddonToolBars& rAddonOfficeToolBars, std::vector< rtl::OUString >& rAddonOfficeToolBarResNames );
361+ sal_Bool ReadOfficeToolBarSet ( AddonToolBars& rAddonOfficeToolBars,
362+ std::vector< rtl::OUString >& rAddonOfficeToolBarResNames,
363+ std::vector< rtl::OUString >& rAddonOfficeToolBarUINames );
352364 sal_Bool ReadToolBarItemSet ( const rtl::OUString rToolBarItemSetNodeName, Sequence< Sequence< PropertyValue > >& aAddonOfficeToolBarSeq );
353365 sal_Bool ReadOfficeHelpSet ( Sequence< Sequence< PropertyValue > >& aAddonOfficeHelpMenuSeq );
354366 sal_Bool ReadImages ( ImageManager& aImageManager );
@@ -378,6 +390,7 @@ class AddonsOptions_Impl : public ConfigItem
378390 Sequence< ::rtl::OUString > GetPropertyNamesMergeMenuInstruction ( const ::rtl::OUString& aPropertyRootName ) const ;
379391 Sequence< ::rtl::OUString > GetPropertyNamesMenuItem ( const ::rtl::OUString& aPropertyRootNode ) const ;
380392 Sequence< ::rtl::OUString > GetPropertyNamesPopupMenu ( const ::rtl::OUString& aPropertyRootNode ) const ;
393+ Sequence< ::rtl::OUString > GetPropertyNamesToolBar ( const ::rtl::OUString& aPropertyRootNode ) const ;
381394 Sequence< ::rtl::OUString > GetPropertyNamesToolBarItem ( const ::rtl::OUString& aPropertyRootNode ) const ;
382395 Sequence< ::rtl::OUString > GetPropertyNamesStatusbarItem ( const ::rtl::OUString& aPropertyRootNode ) const ;
383396 Sequence< ::rtl::OUString > GetPropertyNamesImages ( const ::rtl::OUString& aPropertyRootNode ) const ;
@@ -405,6 +418,7 @@ class AddonsOptions_Impl : public ConfigItem
405418 Sequence< Sequence< PropertyValue > > m_aCachedMenuBarPartProperties;
406419 AddonToolBars m_aCachedToolBarPartProperties;
407420 std::vector< rtl::OUString > m_aCachedToolBarPartResourceNames;
421+ std::vector< rtl::OUString > m_aCachedToolBarPartUINames;
408422 Sequence< Sequence< PropertyValue > > m_aCachedHelpMenuProperties;
409423 Reference< com::sun::star::util::XMacroExpander > m_xMacroExpander;
410424 ImageManager m_aImageManager;
@@ -442,6 +456,7 @@ AddonsOptions_Impl::AddonsOptions_Impl()
442456 m_aPropNames[ INDEX_ALIGN ] = PROPERTYNAME_ALIGN;
443457 m_aPropNames[ INDEX_AUTOSIZE ] = PROPERTYNAME_AUTOSIZE;
444458 m_aPropNames[ INDEX_OWNERDRAW ] = PROPERTYNAME_OWNERDRAW;
459+ m_aPropNames[ INDEX_TOOLBARITEMS ] = PROPERTYNAME_TOOLBARITEMS;
445460
446461 // initialize array with fixed images property names
447462 m_aPropImagesNames[ OFFSET_IMAGES_SMALL ] = PROPERTYNAME_IMAGESMALL;
@@ -515,11 +530,14 @@ void AddonsOptions_Impl::ReadConfigurationData()
515530 m_aCachedToolBarPartProperties = AddonToolBars ();
516531 m_aCachedHelpMenuProperties = Sequence< Sequence< PropertyValue > >();
517532 m_aCachedToolBarPartResourceNames.clear ();
533+ m_aCachedToolBarPartUINames.clear ();
518534 m_aImageManager = ImageManager ();
519535
520536 ReadAddonMenuSet ( m_aCachedMenuProperties );
521537 ReadOfficeMenuBarSet ( m_aCachedMenuBarPartProperties );
522- ReadOfficeToolBarSet ( m_aCachedToolBarPartProperties, m_aCachedToolBarPartResourceNames );
538+ ReadOfficeToolBarSet ( m_aCachedToolBarPartProperties,
539+ m_aCachedToolBarPartResourceNames,
540+ m_aCachedToolBarPartUINames );
523541
524542 ReadOfficeHelpSet ( m_aCachedHelpMenuProperties );
525543 ReadImages ( m_aImageManager );
@@ -611,6 +629,15 @@ const ::rtl::OUString AddonsOptions_Impl::GetAddonsToolbarResourceName( sal_uInt
611629 return rtl::OUString ();
612630}
613631
632+
633+ const ::rtl::OUString AddonsOptions_Impl::GetAddonsToolbarUIName ( sal_uInt32 nIndex ) const
634+ {
635+ if ( nIndex < m_aCachedToolBarPartUINames.size () )
636+ return m_aCachedToolBarPartUINames[nIndex];
637+ else
638+ return rtl::OUString ();
639+ }
640+
614641// *****************************************************************************************************************
615642// public method
616643// *****************************************************************************************************************
@@ -815,7 +842,10 @@ sal_Bool AddonsOptions_Impl::ReadOfficeMenuBarSet( Sequence< Sequence< PropertyV
815842// *****************************************************************************************************************
816843// private method
817844// *****************************************************************************************************************
818- sal_Bool AddonsOptions_Impl::ReadOfficeToolBarSet ( AddonToolBars& rAddonOfficeToolBars, std::vector< rtl::OUString >& rAddonOfficeToolBarResNames )
845+ sal_Bool AddonsOptions_Impl::ReadOfficeToolBarSet (
846+ AddonToolBars& rAddonOfficeToolBars,
847+ std::vector< rtl::OUString >& rAddonOfficeToolBarResNames,
848+ std::vector< rtl::OUString >& rAddonOfficeToolBarUINames )
819849{
820850 // Read the OfficeToolBar set and fill property sequences
821851 ::rtl::OUString aAddonToolBarNodeName ( RTL_CONSTASCII_USTRINGPARAM ( " AddonUI/OfficeToolBar" ));
@@ -826,10 +856,24 @@ sal_Bool AddonsOptions_Impl::ReadOfficeToolBarSet( AddonToolBars& rAddonOfficeTo
826856
827857 for ( sal_uInt32 n = 0 ; n < nCount; n++ )
828858 {
829- ::rtl::OUString aToolBarItemNode ( aAddonToolBarNode + aAddonToolBarNodeSeq[n] );
859+ ::rtl::OUString aToolBarNode ( aAddonToolBarNode + aAddonToolBarNodeSeq[n] + m_aPathDelimiter );
830860 rAddonOfficeToolBarResNames.push_back ( aAddonToolBarNodeSeq[n] );
831861 rAddonOfficeToolBars.push_back ( m_aEmptyAddonToolBar );
832- ReadToolBarItemSet ( aToolBarItemNode, rAddonOfficeToolBars[n] );
862+
863+ Sequence< Any > aToolBarNodeValues = GetProperties ( GetPropertyNamesToolBar ( aToolBarNode ) );
864+
865+ rtl::OUString aUIName;
866+ aToolBarNodeValues[OFFSET_TOOLBAR_TITLE] >>= aUIName;
867+ rAddonOfficeToolBarUINames.push_back ( aUIName );
868+
869+ Reference < XInterface > xToolbarItems;
870+ if ( ( aToolBarNodeValues[OFFSET_TOOLBAR_TOOLBARITEMS] >>= xToolbarItems ) && xToolbarItems.is () )
871+ {
872+ ::rtl::OUStringBuffer aBuffer;
873+ aBuffer.append ( aToolBarNode );
874+ aBuffer.appendAscii ( RTL_CONSTASCII_STRINGPARAM ( STR_TOOLBARITEMS ) );
875+ ReadToolBarItemSet ( aBuffer.makeStringAndClear (), rAddonOfficeToolBars[n] );
876+ }
833877 }
834878
835879 return ( !rAddonOfficeToolBars.empty () );
@@ -1812,6 +1856,17 @@ Sequence< ::rtl::OUString > AddonsOptions_Impl::GetPropertyNamesPopupMenu( const
18121856// *****************************************************************************************************************
18131857// private method
18141858// *****************************************************************************************************************
1859+ Sequence< ::rtl::OUString > AddonsOptions_Impl::GetPropertyNamesToolBar ( const ::rtl::OUString& aPropertyRootNode ) const
1860+ {
1861+ Sequence< ::rtl::OUString > lResult ( PROPERTYCOUNT_TOOLBAR );
1862+
1863+ // Create property names dependent from the root node name
1864+ lResult[OFFSET_TOOLBAR_TITLE] = ::rtl::OUString ( aPropertyRootNode + m_aPropNames[ INDEX_TITLE ] );
1865+ lResult[OFFSET_TOOLBAR_TOOLBARITEMS] = ::rtl::OUString ( aPropertyRootNode + m_aPropNames[ INDEX_TOOLBARITEMS ] );
1866+
1867+ return lResult;
1868+ }
1869+
18151870Sequence< ::rtl::OUString > AddonsOptions_Impl::GetPropertyNamesToolBarItem ( const ::rtl::OUString& aPropertyRootNode ) const
18161871{
18171872 Sequence< ::rtl::OUString > lResult ( PROPERTYCOUNT_TOOLBARITEM );
@@ -1971,6 +2026,12 @@ const ::rtl::OUString AddonsOptions::GetAddonsToolbarResourceName( sal_uInt32 nI
19712026 return m_pDataContainer->GetAddonsToolbarResourceName ( nIndex );
19722027}
19732028
2029+ const ::rtl::OUString AddonsOptions::GetAddonsToolbarUIName ( sal_uInt32 nIndex ) const
2030+ {
2031+ MutexGuard aGuard ( GetOwnStaticMutex () );
2032+ return m_pDataContainer->GetAddonsToolbarUIName ( nIndex );
2033+ }
2034+
19742035// *****************************************************************************************************************
19752036// public method
19762037// *****************************************************************************************************************
0 commit comments