Author: arielch
Date: Thu Dec 6 13:29:05 2012
New Revision: 1417851
URL: http://svn.apache.org/viewvc?rev=1417851&view=rev
Log:
#i121442# - Read Statusbar merging configuration
Modified:
openoffice/trunk/main/framework/inc/framework/addonsoptions.hxx
openoffice/trunk/main/framework/source/fwe/classes/addonsoptions.cxx
Modified: openoffice/trunk/main/framework/inc/framework/addonsoptions.hxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/framework/inc/framework/addonsoptions.hxx?rev=1417851&r1=1417850&r2=1417851&view=diff
==============================================================================
--- openoffice/trunk/main/framework/inc/framework/addonsoptions.hxx (original)
+++ openoffice/trunk/main/framework/inc/framework/addonsoptions.hxx Thu Dec 6
13:29:05 2012
@@ -52,6 +52,10 @@
#define ADDONSMENUITEM_STRING_CONTROLTYPE "ControlType"
#define ADDONSMENUITEM_STRING_WIDTH "Width"
+#define STATUSBARITEM_STRING_ALIGN "Alignment"
+#define STATUSBARITEM_STRING_AUTOSIZE "AutoSize"
+#define STATUSBARITEM_STRING_OWNERDRAW "OwnerDraw"
+
#define ADDONSMENUITEM_URL_LEN 3
#define ADDONSMENUITEM_TITLE_LEN 5
#define ADDONSMENUITEM_TARGET_LEN 6
@@ -68,6 +72,10 @@
#define ADDONSMENUITEM_PROPERTYNAME_CONTROLTYPE
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ADDONSMENUITEM_STRING_CONTROLTYPE
))
#define ADDONSMENUITEM_PROPERTYNAME_WIDTH
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(ADDONSMENUITEM_STRING_WIDTH
))
+#define STATUSBARITEM_PROPERTYNAME_ALIGN
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(STATUSBARITEM_STRING_ALIGN
))
+#define STATUSBARITEM_PROPERTYNAME_AUTOSIZE
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(STATUSBARITEM_STRING_AUTOSIZE
))
+#define STATUSBARITEM_PROPERTYNAME_OWNERDRAW
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(STATUSBARITEM_STRING_OWNERDRAW
))
+
#define ADDONSPOPUPMENU_URL_PREFIX_STR "private:menu/Addon"
#define ADDONSPOPUPMENU_URL_PREFIX
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( ADDONSPOPUPMENU_URL_PREFIX_STR ))
@@ -101,6 +109,18 @@ struct FWE_DLLPUBLIC MergeToolbarInstruc
typedef ::std::vector< MergeToolbarInstruction >
MergeToolbarInstructionContainer;
+struct FWE_DLLPUBLIC MergeStatusbarInstruction
+{
+ ::rtl::OUString aMergePoint;
+ ::rtl::OUString aMergeCommand;
+ ::rtl::OUString aMergeCommandParameter;
+ ::rtl::OUString aMergeFallback;
+ ::rtl::OUString aMergeContext;
+ ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence<
::com::sun::star::beans::PropertyValue > > aMergeStatusbarItems;
+};
+
+typedef ::std::vector< MergeStatusbarInstruction >
MergeStatusbarInstructionContainer;
+
//_________________________________________________________________________________________________________________
// forward declarations
//_________________________________________________________________________________________________________________
@@ -284,6 +304,8 @@ class FWE_DLLPUBLIC AddonsOptions
*//*-*****************************************************************************************************/
bool GetMergeToolbarInstructions( const ::rtl::OUString& rToolbarName,
MergeToolbarInstructionContainer& rToolbar ) const;
+ const MergeStatusbarInstructionContainer&
GetMergeStatusbarInstructions() const;
+
/*-****************************************************************************************************//**
@short Gets the Add-On help menu part of all addon components
registered
@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=1417851&r1=1417850&r2=1417851&view=diff
==============================================================================
--- openoffice/trunk/main/framework/source/fwe/classes/addonsoptions.cxx
(original)
+++ openoffice/trunk/main/framework/source/fwe/classes/addonsoptions.cxx Thu
Dec 6 13:29:05 2012
@@ -80,6 +80,10 @@ using namespace ::com::sun::star::lang ;
#define PROPERTYNAME_CONTROLTYPE
ADDONSMENUITEM_PROPERTYNAME_CONTROLTYPE
#define PROPERTYNAME_WIDTH
ADDONSMENUITEM_PROPERTYNAME_WIDTH
+#define PROPERTYNAME_ALIGN
STATUSBARITEM_PROPERTYNAME_ALIGN
+#define PROPERTYNAME_AUTOSIZE
STATUSBARITEM_PROPERTYNAME_AUTOSIZE
+#define PROPERTYNAME_OWNERDRAW
STATUSBARITEM_PROPERTYNAME_OWNERDRAW
+
#define PROPERTYNAME_IMAGESMALL
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ImageSmall" ))
#define PROPERTYNAME_IMAGEBIG
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ImageBig" ))
#define PROPERTYNAME_IMAGESMALLHC
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ImageSmallHC" ))
@@ -108,16 +112,26 @@ using namespace ::com::sun::star::lang ;
#define PROPERTYNAME_MERGETOOLBAR_MERGECONTEXT
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeContext" ))
#define PROPERTYNAME_MERGETOOLBAR_TOOLBARITEMS
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ToolBarItems" ))
+#define PROPERTYNAME_MERGESTATUSBAR_MERGEPOINT
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergePoint" ))
+#define PROPERTYNAME_MERGESTATUSBAR_MERGECOMMAND
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeCommand" ))
+#define PROPERTYNAME_MERGESTATUSBAR_MERGECOMMANDPARAMETER
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeCommandParameter" ))
+#define PROPERTYNAME_MERGESTATUSBAR_MERGEFALLBACK
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeFallback" ))
+#define PROPERTYNAME_MERGESTATUSBAR_MERGECONTEXT
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MergeContext" ))
+#define PROPERTYNAME_MERGESTATUSBAR_STATUSBARITEMS
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("StatusBarItems" ))
+
// The following order is mandatory. Please add properties at the end!
-#define INDEX_URL 0
-#define INDEX_TITLE 1
-#define INDEX_IMAGEIDENTIFIER 2
-#define INDEX_TARGET 3
-#define INDEX_CONTEXT 4
-#define INDEX_SUBMENU 5
-#define INDEX_CONTROLTYPE 6
-#define INDEX_WIDTH 7
-#define PROPERTYCOUNT_INDEX 8
+#define INDEX_URL 0
+#define INDEX_TITLE 1
+#define INDEX_IMAGEIDENTIFIER 2
+#define INDEX_TARGET 3
+#define INDEX_CONTEXT 4
+#define INDEX_SUBMENU 5
+#define INDEX_CONTROLTYPE 6
+#define INDEX_WIDTH 7
+#define INDEX_ALIGN 8
+#define INDEX_AUTOSIZE 9
+#define INDEX_OWNERDRAW 10
+#define PROPERTYCOUNT_INDEX 11
// The following order is mandatory. Please add properties at the end!
#define PROPERTYCOUNT_MENUITEM
6
@@ -146,6 +160,17 @@ using namespace ::com::sun::star::lang ;
#define OFFSET_TOOLBARITEM_WIDTH 6
// The following order is mandatory. Please add properties at the end!
+#define PROPERTYCOUNT_STATUSBARITEM 7
+#define OFFSET_STATUSBARITEM_URL 0
+#define OFFSET_STATUSBARITEM_TITLE 1
+#define OFFSET_STATUSBARITEM_CONTEXT 2
+#define OFFSET_STATUSBARITEM_ALIGN 3
+#define OFFSET_STATUSBARITEM_AUTOSIZE 4
+#define OFFSET_STATUSBARITEM_OWNERDRAW 5
+#define OFFSET_STATUSBARITEM_WIDTH 6
+
+
+// The following order is mandatory. Please add properties at the end!
#define PROPERTYCOUNT_IMAGES
8
#define PROPERTYCOUNT_EMBEDDED_IMAGES 4
#define OFFSET_IMAGES_SMALL
0
@@ -174,6 +199,14 @@ using namespace ::com::sun::star::lang ;
#define OFFSET_MERGETOOLBAR_MERGECONTEXT 5
#define OFFSET_MERGETOOLBAR_TOOLBARITEMS 6
+#define PROPERTYCOUNT_MERGE_STATUSBAR 6
+#define OFFSET_MERGESTATUSBAR_MERGEPOINT 0
+#define OFFSET_MERGESTATUSBAR_MERGECOMMAND 1
+#define OFFSET_MERGESTATUSBAR_MERGECOMMANDPARAMETER 2
+#define OFFSET_MERGESTATUSBAR_MERGEFALLBACK 3
+#define OFFSET_MERGESTATUSBAR_MERGECONTEXT 4
+#define OFFSET_MERGESTATUSBAR_STATUSBARITEMS 5
+
#define EXPAND_PROTOCOL "vnd.sun.star.expand:"
const Size aImageSizeSmall( 16, 16 );
@@ -267,7 +300,7 @@ class AddonsOptions_Impl : public Config
Image
GetImageFromURL( const rtl::OUString& aURL, sal_Bool
bBig, sal_Bool bHiContrast, sal_Bool bNoScale ) const;
const MergeMenuInstructionContainer&
GetMergeMenuInstructions() const;
bool
GetMergeToolbarInstructions( const ::rtl::OUString& rToolbarName,
MergeToolbarInstructionContainer& rToolbarInstructions ) const;
-
+ const MergeStatusbarInstructionContainer&
GetMergeStatusbarInstructions() const;
void
ReadConfigurationData();
//-------------------------------------------------------------------------------------------------------------
@@ -316,18 +349,21 @@ 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 ReadToolBarItemSet( const
rtl::OUString rToolBarItemSetNodeName, Sequence< Sequence< PropertyValue > >&
aAddonOfficeToolBarSeq );
+ sal_Bool ReadToolBarItemSet( const
rtl::OUString rToolBarItemSetNodeName, Sequence< Sequence< PropertyValue > >&
aAddonOfficeToolBarSeq );
sal_Bool ReadOfficeHelpSet( Sequence<
Sequence< PropertyValue > >& aAddonOfficeHelpMenuSeq );
sal_Bool ReadImages( ImageManager&
aImageManager );
sal_Bool ReadMenuMergeInstructions(
MergeMenuInstructionContainer& rContainer );
sal_Bool ReadToolbarMergeInstructions(
ToolbarMergingInstructions& rToolbarMergeMap );
+ sal_Bool ReadStatusbarMergeInstructions(
MergeStatusbarInstructionContainer& rContainer );
sal_Bool ReadMergeMenuData( const ::rtl::OUString&
aMergeAddonInstructionBase, Sequence< Sequence< PropertyValue > >& rMergeMenu );
sal_Bool ReadMergeToolbarData( const ::rtl::OUString&
aMergeAddonInstructionBase, Sequence< Sequence< PropertyValue > >&
rMergeToolbarItems );
+ sal_Bool ReadMergeStatusbarData( const ::rtl::OUString&
aMergeAddonInstructionBase, Sequence< Sequence< PropertyValue > >&
rMergeStatusbar );
sal_Bool ReadMenuItem( const
::rtl::OUString& aMenuItemNodeName, Sequence< PropertyValue >& aMenuItem,
sal_Bool bIgnoreSubMenu = sal_False );
sal_Bool ReadPopupMenu( const
::rtl::OUString& aPopupMenuNodeName, Sequence< PropertyValue >& aPopupMenu );
sal_Bool AppendPopupMenu( Sequence< PropertyValue >&
aTargetPopupMenu, const Sequence< PropertyValue >& rSourcePopupMenu );
sal_Bool ReadToolBarItem( const
::rtl::OUString& aToolBarItemNodeName, Sequence< PropertyValue >& aToolBarItem
);
+ sal_Bool ReadStatusBarItem( const ::rtl::OUString&
aStatusbarItemNodeName, Sequence< PropertyValue >& aStatusbarItem );
sal_Bool ReadImagesItem( const
::rtl::OUString& aImagesItemNodeName, Sequence< PropertyValue >& aImagesItem );
ImageEntry* ReadImageData( const
::rtl::OUString& aImagesNodeName );
void ReadAndAssociateImages( const
::rtl::OUString& aURL, const ::rtl::OUString& aImageId );
@@ -343,6 +379,7 @@ class AddonsOptions_Impl : public Config
Sequence< ::rtl::OUString > GetPropertyNamesMenuItem( const
::rtl::OUString& aPropertyRootNode ) const;
Sequence< ::rtl::OUString > GetPropertyNamesPopupMenu( 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;
sal_Bool CreateImageFromSequence(
Image& rImage, sal_Bool bBig, Sequence< sal_Int8 >& rBitmapDataSeq ) const;
@@ -358,6 +395,7 @@ class AddonsOptions_Impl : public Config
::rtl::OUString
m_aPropImagesNames[PROPERTYCOUNT_IMAGES];
::rtl::OUString
m_aPropMergeMenuNames[PROPERTYCOUNT_MERGE_MENUBAR];
::rtl::OUString
m_aPropMergeToolbarNames[PROPERTYCOUNT_MERGE_TOOLBAR];
+ ::rtl::OUString
m_aPropMergeStatusbarNames[PROPERTYCOUNT_MERGE_STATUSBAR];
::rtl::OUString
m_aEmpty;
::rtl::OUString
m_aPathDelimiter;
::rtl::OUString
m_aSeparator;
@@ -373,6 +411,7 @@ class AddonsOptions_Impl : public Config
Sequence< Sequence< PropertyValue > > m_aEmptyAddonToolBar;
MergeMenuInstructionContainer
m_aCachedMergeMenuInsContainer;
ToolbarMergingInstructions
m_aCachedToolbarMergingInstructions;
+ MergeStatusbarInstructionContainer
m_aCachedStatusbarMergingInstructions;
};
//_________________________________________________________________________________________________________________
@@ -400,6 +439,9 @@ AddonsOptions_Impl::AddonsOptions_Impl()
m_aPropNames[ INDEX_SUBMENU ] =
PROPERTYNAME_SUBMENU; // Submenu set!
m_aPropNames[ INDEX_CONTROLTYPE ] = PROPERTYNAME_CONTROLTYPE;
m_aPropNames[ INDEX_WIDTH ] = PROPERTYNAME_WIDTH;
+ m_aPropNames[ INDEX_ALIGN ] = PROPERTYNAME_ALIGN;
+ m_aPropNames[ INDEX_AUTOSIZE ] = PROPERTYNAME_AUTOSIZE;
+ m_aPropNames[ INDEX_OWNERDRAW ] = PROPERTYNAME_OWNERDRAW;
// initialize array with fixed images property names
m_aPropImagesNames[ OFFSET_IMAGES_SMALL ] =
PROPERTYNAME_IMAGESMALL;
@@ -427,6 +469,13 @@ AddonsOptions_Impl::AddonsOptions_Impl()
m_aPropMergeToolbarNames[ OFFSET_MERGETOOLBAR_MERGECONTEXT ] =
PROPERTYNAME_MERGETOOLBAR_MERGECONTEXT;
m_aPropMergeToolbarNames[ OFFSET_MERGETOOLBAR_TOOLBARITEMS ] =
PROPERTYNAME_MERGETOOLBAR_TOOLBARITEMS;
+ m_aPropMergeStatusbarNames[ OFFSET_MERGESTATUSBAR_MERGEPOINT ]
= PROPERTYNAME_MERGESTATUSBAR_MERGEPOINT;
+ m_aPropMergeStatusbarNames[ OFFSET_MERGESTATUSBAR_MERGECOMMAND ]
= PROPERTYNAME_MERGESTATUSBAR_MERGECOMMAND;
+ m_aPropMergeStatusbarNames[ OFFSET_MERGESTATUSBAR_MERGECOMMANDPARAMETER ]
= PROPERTYNAME_MERGESTATUSBAR_MERGECOMMANDPARAMETER;
+ m_aPropMergeStatusbarNames[ OFFSET_MERGESTATUSBAR_MERGEFALLBACK ]
= PROPERTYNAME_MERGESTATUSBAR_MERGEFALLBACK;
+ m_aPropMergeStatusbarNames[ OFFSET_MERGESTATUSBAR_MERGECONTEXT ]
= PROPERTYNAME_MERGESTATUSBAR_MERGECONTEXT;
+ m_aPropMergeStatusbarNames[ OFFSET_MERGESTATUSBAR_STATUSBARITEMS ]
= PROPERTYNAME_MERGESTATUSBAR_STATUSBARITEMS;
+
Reference< XComponentContext > xContext;
Reference< com::sun::star::beans::XPropertySet > xProps(
::comphelper::getProcessServiceFactory(), UNO_QUERY );
xProps->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
"DefaultContext" ))) >>= xContext;
@@ -471,14 +520,17 @@ void AddonsOptions_Impl::ReadConfigurati
ReadAddonMenuSet( m_aCachedMenuProperties );
ReadOfficeMenuBarSet( m_aCachedMenuBarPartProperties );
ReadOfficeToolBarSet( m_aCachedToolBarPartProperties,
m_aCachedToolBarPartResourceNames );
+
ReadOfficeHelpSet( m_aCachedHelpMenuProperties );
ReadImages( m_aImageManager );
m_aCachedMergeMenuInsContainer.clear();
m_aCachedToolbarMergingInstructions.clear();
+ m_aCachedStatusbarMergingInstructions.clear();
ReadMenuMergeInstructions( m_aCachedMergeMenuInsContainer );
ReadToolbarMergeInstructions( m_aCachedToolbarMergingInstructions );
+ ReadStatusbarMergeInstructions( m_aCachedStatusbarMergingInstructions );
}
//*****************************************************************************************************************
@@ -592,6 +644,11 @@ bool AddonsOptions_Impl::GetMergeToolbar
return false;
}
+const MergeStatusbarInstructionContainer&
AddonsOptions_Impl::GetMergeStatusbarInstructions() const
+{
+ return m_aCachedStatusbarMergingInstructions;
+}
+
//*****************************************************************************************************************
// public method
//*****************************************************************************************************************
@@ -847,6 +904,7 @@ void AddonsOptions_Impl::InsertToolBarSe
rAddonOfficeToolBarSeq[nToolBarItemCount] = aToolBarItem;
}
+
//*****************************************************************************************************************
// private method
//*****************************************************************************************************************
@@ -1094,6 +1152,142 @@ sal_Bool AddonsOptions_Impl::ReadMergeTo
return ReadToolBarItemSet( aMergeToolbarBaseNode, rMergeToolbarItems );
}
+
+sal_Bool AddonsOptions_Impl::ReadStatusbarMergeInstructions(
MergeStatusbarInstructionContainer& aContainer )
+{
+ const ::rtl::OUString aStatusbarMergeRootName(
RTL_CONSTASCII_USTRINGPARAM( "AddonUI/OfficeStatusbarMerging/" ));
+
+ Sequence< ::rtl::OUString > aAddonMergeNodesSeq = GetNodeNames(
aStatusbarMergeRootName );
+ ::rtl::OUString aAddonMergeNode( aStatusbarMergeRootName );
+ sal_uInt32 nCount = aAddonMergeNodesSeq.getLength();
+
+ Sequence< ::rtl::OUString > aNodePropNames( 5 );
+ ::rtl::OUString aURL;
+
+ for ( sal_uInt32 i = 0; i < nCount; i++ )
+ {
+ ::rtl::OUString aMergeAddonInstructions( aAddonMergeNode +
aAddonMergeNodesSeq[i] );
+
+ Sequence< ::rtl::OUString > aAddonInstMergeNodesSeq = GetNodeNames(
aMergeAddonInstructions );
+ sal_uInt32 nCountAddons = aAddonInstMergeNodesSeq.getLength();
+
+ for ( sal_uInt32 j = 0; j < nCountAddons; j++ )
+ {
+ ::rtl::OUStringBuffer aMergeAddonInstructionBase(
aMergeAddonInstructions );
+ aMergeAddonInstructionBase.append( m_aPathDelimiter );
+ aMergeAddonInstructionBase.append( aAddonInstMergeNodesSeq[j] );
+ aMergeAddonInstructionBase.append( m_aPathDelimiter );
+
+ // Create sequence for data access
+ ::rtl::OUStringBuffer aBuffer( aMergeAddonInstructionBase );
+ aBuffer.append( m_aPropMergeMenuNames[
OFFSET_MERGESTATUSBAR_MERGEPOINT ] );
+ aNodePropNames[0] = aBuffer.makeStringAndClear();
+
+ aBuffer = aMergeAddonInstructionBase;
+ aBuffer.append( m_aPropMergeMenuNames[
OFFSET_MERGESTATUSBAR_MERGECOMMAND ] );
+ aNodePropNames[1] = aBuffer.makeStringAndClear();
+
+ aBuffer = aMergeAddonInstructionBase;
+ aBuffer.append( m_aPropMergeMenuNames[
OFFSET_MERGESTATUSBAR_MERGECOMMANDPARAMETER ] );
+ aNodePropNames[2] = aBuffer.makeStringAndClear();
+
+ aBuffer = aMergeAddonInstructionBase;
+ aBuffer.append( m_aPropMergeMenuNames[
OFFSET_MERGESTATUSBAR_MERGEFALLBACK ] );
+ aNodePropNames[3] = aBuffer.makeStringAndClear();
+
+ aBuffer = aMergeAddonInstructionBase;
+ aBuffer.append( m_aPropMergeMenuNames[
OFFSET_MERGESTATUSBAR_MERGECONTEXT ] );
+ aNodePropNames[4] = aBuffer.makeStringAndClear();
+
+ Sequence< Any > aNodePropValues = GetProperties( aNodePropNames );
+
+ MergeStatusbarInstruction aMergeStatusbarInstruction;
+ aNodePropValues[0] >>= aMergeStatusbarInstruction.aMergePoint;
+ aNodePropValues[1] >>= aMergeStatusbarInstruction.aMergeCommand;
+ aNodePropValues[2] >>=
aMergeStatusbarInstruction.aMergeCommandParameter;
+ aNodePropValues[3] >>= aMergeStatusbarInstruction.aMergeFallback;
+ aNodePropValues[4] >>= aMergeStatusbarInstruction.aMergeContext;
+
+ ReadMergeStatusbarData(
aMergeAddonInstructionBase.makeStringAndClear(),
+
aMergeStatusbarInstruction.aMergeStatusbarItems );
+
+ aContainer.push_back( aMergeStatusbarInstruction );
+ }
+ }
+
+ return sal_True;
+}
+
+sal_Bool AddonsOptions_Impl::ReadMergeStatusbarData(
+ const ::rtl::OUString& aMergeAddonInstructionBase,
+ Sequence< Sequence< PropertyValue > >& rMergeStatusbarItems )
+{
+ sal_uInt32 nStatusbarItemCount = rMergeStatusbarItems.getLength();
+
+ ::rtl::OUStringBuffer aBuffer( aMergeAddonInstructionBase );
+ aBuffer.append( m_aPropMergeStatusbarNames[
OFFSET_MERGESTATUSBAR_STATUSBARITEMS ] );
+ ::rtl::OUString aMergeStatusbarBaseNode = aBuffer.makeStringAndClear();
+
+ ::rtl::OUString aAddonStatusbarItemSetNode( aMergeStatusbarBaseNode +
m_aPathDelimiter );
+ Sequence< ::rtl::OUString > aAddonStatusbarItemSetNodeSeq = GetNodeNames(
aMergeStatusbarBaseNode );
+
+ Sequence< PropertyValue > aStatusbarItem( PROPERTYCOUNT_STATUSBARITEM );
+ aStatusbarItem[ OFFSET_STATUSBARITEM_URL ].Name = m_aPropNames[
INDEX_URL ];
+ aStatusbarItem[ OFFSET_STATUSBARITEM_TITLE ].Name = m_aPropNames[
INDEX_TITLE ];
+ aStatusbarItem[ OFFSET_STATUSBARITEM_CONTEXT ].Name = m_aPropNames[
INDEX_CONTEXT ];
+ aStatusbarItem[ OFFSET_STATUSBARITEM_ALIGN ].Name = m_aPropNames[
INDEX_ALIGN ];
+ aStatusbarItem[ OFFSET_STATUSBARITEM_AUTOSIZE ].Name = m_aPropNames[
INDEX_AUTOSIZE ];
+ aStatusbarItem[ OFFSET_STATUSBARITEM_OWNERDRAW ].Name = m_aPropNames[
INDEX_OWNERDRAW ];
+ aStatusbarItem[ OFFSET_STATUSBARITEM_WIDTH ].Name = m_aPropNames[
INDEX_WIDTH ];
+
+ sal_uInt32 nCount = aAddonStatusbarItemSetNodeSeq.getLength();
+ for ( sal_uInt32 n = 0; n < nCount; n++ )
+ {
+ ::rtl::OUString aStatusbarItemNode( aAddonStatusbarItemSetNode +
aAddonStatusbarItemSetNodeSeq[n] );
+
+ if ( ReadStatusBarItem( aStatusbarItemNode, aStatusbarItem ) )
+ {
+ sal_uInt32 nAddonCount = rMergeStatusbarItems.getLength();
+ rMergeStatusbarItems.realloc( nAddonCount+1 );
+ rMergeStatusbarItems[nAddonCount] = aStatusbarItem;
+ }
+ }
+
+ return ( (sal_uInt32)rMergeStatusbarItems.getLength() >
nStatusbarItemCount );
+}
+
+sal_Bool AddonsOptions_Impl::ReadStatusBarItem(
+ const ::rtl::OUString& aStatusarItemNodeName,
+ Sequence< PropertyValue >& aStatusbarItem )
+{
+ sal_Bool bResult( sal_False );
+ ::rtl::OUString aURL;
+ ::rtl::OUString aAddonStatusbarItemTreeNode( aStatusarItemNodeName +
m_aPathDelimiter );
+ Sequence< Any > aStatusbarItemNodePropValues;
+
+ aStatusbarItemNodePropValues = GetProperties(
GetPropertyNamesStatusbarItem( aAddonStatusbarItemTreeNode ) );
+
+ // Command URL is required
+ if (( aStatusbarItemNodePropValues[ OFFSET_STATUSBARITEM_URL ] >>= aURL )
&& aURL.getLength() > 0 )
+ {
+ aStatusbarItem[ OFFSET_STATUSBARITEM_URL ].Value <<= aURL;
+ aStatusbarItem[ OFFSET_STATUSBARITEM_TITLE ].Value <<=
aStatusbarItemNodePropValues[ OFFSET_STATUSBARITEM_TITLE ];
+ aStatusbarItem[ OFFSET_STATUSBARITEM_CONTEXT ].Value <<=
aStatusbarItemNodePropValues[ OFFSET_STATUSBARITEM_CONTEXT ];
+ aStatusbarItem[ OFFSET_STATUSBARITEM_ALIGN ].Value <<=
aStatusbarItemNodePropValues[ OFFSET_STATUSBARITEM_ALIGN ];
+ aStatusbarItem[ OFFSET_STATUSBARITEM_AUTOSIZE ].Value <<=
aStatusbarItemNodePropValues[ OFFSET_STATUSBARITEM_AUTOSIZE ];;
+ aStatusbarItem[ OFFSET_STATUSBARITEM_OWNERDRAW ].Value <<=
aStatusbarItemNodePropValues[ OFFSET_STATUSBARITEM_OWNERDRAW ];
+
+ // Configuration uses hyper for long. Therefore transform into
sal_Int32
+ sal_Int64 nValue( 0 );
+ aStatusbarItemNodePropValues[ OFFSET_STATUSBARITEM_WIDTH ] >>= nValue;
+ aStatusbarItem[ OFFSET_STATUSBARITEM_WIDTH ].Value <<= sal_Int32(
nValue );
+
+ bResult = sal_True;
+ }
+
+ return bResult;
+}
+
//*****************************************************************************************************************
// private method
//*****************************************************************************************************************
@@ -1634,6 +1828,22 @@ Sequence< ::rtl::OUString > AddonsOption
return lResult;
}
+Sequence< ::rtl::OUString > AddonsOptions_Impl::GetPropertyNamesStatusbarItem(
+ const ::rtl::OUString& aPropertyRootNode ) const
+{
+ Sequence< ::rtl::OUString > lResult( PROPERTYCOUNT_STATUSBARITEM );
+
+ lResult[0] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[ INDEX_URL
] );
+ lResult[1] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[
INDEX_TITLE ] );
+ lResult[2] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[
INDEX_CONTEXT ] );
+ lResult[3] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[
INDEX_ALIGN ] );
+ lResult[4] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[
INDEX_AUTOSIZE ] );
+ lResult[5] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[
INDEX_OWNERDRAW ] );
+ lResult[6] = ::rtl::OUString( aPropertyRootNode + m_aPropNames[
INDEX_WIDTH ] );
+
+ return lResult;
+}
+
//*****************************************************************************************************************
// private method
//*****************************************************************************************************************
@@ -1791,6 +2001,12 @@ bool AddonsOptions::GetMergeToolbarInstr
rToolbarName, rToolbarInstructions );
}
+const MergeStatusbarInstructionContainer&
AddonsOptions::GetMergeStatusbarInstructions() const
+{
+ MutexGuard aGuard( GetOwnStaticMutex() );
+ return m_pDataContainer->GetMergeStatusbarInstructions();
+}
+
//*****************************************************************************************************************
// public method
//*****************************************************************************************************************