diff options
Diffstat (limited to 'framework/source/fwe/xml/statusbardocumenthandler.cxx')
-rw-r--r-- | framework/source/fwe/xml/statusbardocumenthandler.cxx | 155 |
1 files changed, 58 insertions, 97 deletions
diff --git a/framework/source/fwe/xml/statusbardocumenthandler.cxx b/framework/source/fwe/xml/statusbardocumenthandler.cxx index 94dd1817872f..27653fa3b2fd 100644 --- a/framework/source/fwe/xml/statusbardocumenthandler.cxx +++ b/framework/source/fwe/xml/statusbardocumenthandler.cxx @@ -27,10 +27,10 @@ #include <com/sun/star/container/XIndexAccess.hpp> #include <com/sun/star/container/XIndexContainer.hpp> -#include <vcl/svapp.hxx> #include <vcl/status.hxx> #include <comphelper/attributelist.hxx> +#include <comphelper/propertyvalue.hxx> using namespace ::com::sun::star::uno; using namespace ::com::sun::star::beans; @@ -38,57 +38,52 @@ using namespace ::com::sun::star::xml::sax; using namespace ::com::sun::star::ui; using namespace ::com::sun::star::container; -#define XMLNS_STATUSBAR "http://openoffice.org/2001/statusbar" -#define XMLNS_XLINK "http://www.w3.org/1999/xlink" -#define XMLNS_STATUSBAR_PREFIX "statusbar:" -#define XMLNS_XLINK_PREFIX "xlink:" +constexpr OUString XMLNS_STATUSBAR = u"http://openoffice.org/2001/statusbar"_ustr; +constexpr OUString XMLNS_XLINK = u"http://www.w3.org/1999/xlink"_ustr; +constexpr OUStringLiteral XMLNS_STATUSBAR_PREFIX = u"statusbar:"; +constexpr OUStringLiteral XMLNS_XLINK_PREFIX = u"xlink:"; -#define XMLNS_FILTER_SEPARATOR "^" +constexpr OUString XMLNS_FILTER_SEPARATOR = u"^"_ustr; -#define ELEMENT_STATUSBAR "statusbar" -#define ELEMENT_STATUSBARITEM "statusbaritem" +constexpr OUString ATTRIBUTE_ALIGN = u"align"_ustr; +constexpr OUString ATTRIBUTE_STYLE = u"style"_ustr; +constexpr OUString ATTRIBUTE_URL = u"href"_ustr; +constexpr OUString ATTRIBUTE_WIDTH = u"width"_ustr; +constexpr OUString ATTRIBUTE_OFFSET = u"offset"_ustr; +constexpr OUString ATTRIBUTE_AUTOSIZE = u"autosize"_ustr; +constexpr OUString ATTRIBUTE_OWNERDRAW = u"ownerdraw"_ustr; +constexpr OUString ATTRIBUTE_HELPURL = u"helpid"_ustr; +constexpr OUString ATTRIBUTE_MANDATORY = u"mandatory"_ustr; -#define ATTRIBUTE_ALIGN "align" -#define ATTRIBUTE_STYLE "style" -#define ATTRIBUTE_URL "href" -#define ATTRIBUTE_WIDTH "width" -#define ATTRIBUTE_OFFSET "offset" -#define ATTRIBUTE_AUTOSIZE "autosize" -#define ATTRIBUTE_OWNERDRAW "ownerdraw" -#define ATTRIBUTE_HELPURL "helpid" -#define ATTRIBUTE_MANDATORY "mandatory" +constexpr OUString ELEMENT_NS_STATUSBAR = u"statusbar:statusbar"_ustr; +constexpr OUString ELEMENT_NS_STATUSBARITEM = u"statusbar:statusbaritem"_ustr; -#define ELEMENT_NS_STATUSBAR "statusbar:statusbar" -#define ELEMENT_NS_STATUSBARITEM "statusbar:statusbaritem" +constexpr OUStringLiteral ATTRIBUTE_XMLNS_STATUSBAR = u"xmlns:statusbar"; +constexpr OUStringLiteral ATTRIBUTE_XMLNS_XLINK = u"xmlns:xlink"; -#define ATTRIBUTE_XMLNS_STATUSBAR "xmlns:statusbar" -#define ATTRIBUTE_XMLNS_XLINK "xmlns:xlink" +constexpr OUString ATTRIBUTE_BOOLEAN_TRUE = u"true"_ustr; +constexpr OUString ATTRIBUTE_BOOLEAN_FALSE = u"false"_ustr; -#define ATTRIBUTE_TYPE_CDATA "CDATA" +constexpr OUString ATTRIBUTE_ALIGN_LEFT = u"left"_ustr; +constexpr OUString ATTRIBUTE_ALIGN_RIGHT = u"right"_ustr; +constexpr OUString ATTRIBUTE_ALIGN_CENTER = u"center"_ustr; -#define ATTRIBUTE_BOOLEAN_TRUE "true" -#define ATTRIBUTE_BOOLEAN_FALSE "false" +constexpr OUStringLiteral ATTRIBUTE_STYLE_IN = u"in"; +constexpr OUString ATTRIBUTE_STYLE_OUT = u"out"_ustr; +constexpr OUString ATTRIBUTE_STYLE_FLAT = u"flat"_ustr; -#define ATTRIBUTE_ALIGN_LEFT "left" -#define ATTRIBUTE_ALIGN_RIGHT "right" -#define ATTRIBUTE_ALIGN_CENTER "center" - -#define ATTRIBUTE_STYLE_IN "in" -#define ATTRIBUTE_STYLE_OUT "out" -#define ATTRIBUTE_STYLE_FLAT "flat" - -#define STATUSBAR_DOCTYPE "<!DOCTYPE statusbar:statusbar PUBLIC \"-//OpenOffice.org//DTD OfficeDocument 1.0//EN\" \"statusbar.dtd\">" +constexpr OUStringLiteral STATUSBAR_DOCTYPE = u"<!DOCTYPE statusbar:statusbar PUBLIC \"-//OpenOffice.org//DTD OfficeDocument 1.0//EN\" \"statusbar.dtd\">"; namespace framework { // Property names of a menu/menu item ItemDescriptor -const char ITEM_DESCRIPTOR_COMMANDURL[] = "CommandURL"; -const char ITEM_DESCRIPTOR_HELPURL[] = "HelpURL"; -const char ITEM_DESCRIPTOR_OFFSET[] = "Offset"; -const char ITEM_DESCRIPTOR_STYLE[] = "Style"; -const char ITEM_DESCRIPTOR_WIDTH[] = "Width"; -const char ITEM_DESCRIPTOR_TYPE[] = "Type"; +constexpr OUString ITEM_DESCRIPTOR_COMMANDURL = u"CommandURL"_ustr; +constexpr OUString ITEM_DESCRIPTOR_HELPURL = u"HelpURL"_ustr; +constexpr OUString ITEM_DESCRIPTOR_OFFSET = u"Offset"_ustr; +constexpr OUString ITEM_DESCRIPTOR_STYLE = u"Style"_ustr; +constexpr OUString ITEM_DESCRIPTOR_WIDTH = u"Width"_ustr; +constexpr OUString ITEM_DESCRIPTOR_TYPE = u"Type"_ustr; static void ExtractStatusbarItemParameters( const Sequence< PropertyValue >& rProp, @@ -103,7 +98,6 @@ static void ExtractStatusbarItemParameters( if ( rEntry.Name == ITEM_DESCRIPTOR_COMMANDURL ) { rEntry.Value >>= rCommandURL; - rCommandURL = rCommandURL.intern(); } else if ( rEntry.Name == ITEM_DESCRIPTOR_HELPURL ) { @@ -129,15 +123,15 @@ namespace { struct StatusBarEntryProperty { OReadStatusBarDocumentHandler::StatusBar_XML_Namespace nNamespace; - char aEntryName[20]; + OUString aEntryName; }; } -StatusBarEntryProperty const StatusBarEntries[OReadStatusBarDocumentHandler::SB_XML_ENTRY_COUNT] = +StatusBarEntryProperty constexpr StatusBarEntries[OReadStatusBarDocumentHandler::SB_XML_ENTRY_COUNT] = { - { OReadStatusBarDocumentHandler::SB_NS_STATUSBAR, ELEMENT_STATUSBAR }, - { OReadStatusBarDocumentHandler::SB_NS_STATUSBAR, ELEMENT_STATUSBARITEM }, + { OReadStatusBarDocumentHandler::SB_NS_STATUSBAR, u"statusbar"_ustr }, + { OReadStatusBarDocumentHandler::SB_NS_STATUSBAR, u"statusbaritem"_ustr }, { OReadStatusBarDocumentHandler::SB_NS_XLINK, ATTRIBUTE_URL }, { OReadStatusBarDocumentHandler::SB_NS_STATUSBAR, ATTRIBUTE_ALIGN }, { OReadStatusBarDocumentHandler::SB_NS_STATUSBAR, ATTRIBUTE_STYLE }, @@ -154,18 +148,18 @@ OReadStatusBarDocumentHandler::OReadStatusBarDocumentHandler( m_aStatusBarItems( rStatusBarItems ) { // create hash map - for ( int i = 0; i < int(SB_XML_ENTRY_COUNT); i++ ) + for ( int i = 0; i < SB_XML_ENTRY_COUNT; i++ ) { if ( StatusBarEntries[i].nNamespace == SB_NS_STATUSBAR ) { - OUString temp = XMLNS_STATUSBAR XMLNS_FILTER_SEPARATOR + - OUString::createFromAscii( StatusBarEntries[i].aEntryName ); + OUString temp = XMLNS_STATUSBAR + XMLNS_FILTER_SEPARATOR + + StatusBarEntries[i].aEntryName; m_aStatusBarMap.emplace( temp, static_cast<StatusBar_XML_Entry>(i) ); } else { - OUString temp = XMLNS_XLINK XMLNS_FILTER_SEPARATOR + - OUString::createFromAscii( StatusBarEntries[i].aEntryName ); + OUString temp = XMLNS_XLINK + XMLNS_FILTER_SEPARATOR + + StatusBarEntries[i].aEntryName; m_aStatusBarMap.emplace( temp, static_cast<StatusBar_XML_Entry>(i) ); } } @@ -185,8 +179,6 @@ void SAL_CALL OReadStatusBarDocumentHandler::startDocument() void SAL_CALL OReadStatusBarDocumentHandler::endDocument() { - SolarMutexGuard g; - if ( m_bStatusBarStartFound ) { OUString aErrorMessage = getErrorLineString() + "No matching start or end element 'statusbar' found!"; @@ -197,8 +189,6 @@ void SAL_CALL OReadStatusBarDocumentHandler::endDocument() void SAL_CALL OReadStatusBarDocumentHandler::startElement( const OUString& aName, const Reference< XAttributeList > &xAttribs ) { - SolarMutexGuard g; - StatusBarHashMap::const_iterator pStatusBarEntry = m_aStatusBarMap.find( aName ); if ( pStatusBarEntry == m_aStatusBarMap.end() ) return; @@ -374,22 +364,16 @@ void SAL_CALL OReadStatusBarDocumentHandler::startElement( } else { - Sequence< PropertyValue > aStatusbarItemProp( 6 ); - aStatusbarItemProp[0].Name = ITEM_DESCRIPTOR_COMMANDURL; - aStatusbarItemProp[1].Name = ITEM_DESCRIPTOR_HELPURL; - aStatusbarItemProp[2].Name = ITEM_DESCRIPTOR_OFFSET; - aStatusbarItemProp[3].Name = ITEM_DESCRIPTOR_STYLE; - aStatusbarItemProp[4].Name = ITEM_DESCRIPTOR_WIDTH; - aStatusbarItemProp[5].Name = ITEM_DESCRIPTOR_TYPE; - - aStatusbarItemProp[0].Value <<= aCommandURL; - aStatusbarItemProp[1].Value <<= aHelpURL; - aStatusbarItemProp[2].Value <<= nOffset; - aStatusbarItemProp[3].Value <<= nItemBits; - aStatusbarItemProp[4].Value <<= nWidth; - aStatusbarItemProp[5].Value <<= css::ui::ItemType::DEFAULT; - - m_aStatusBarItems->insertByIndex( m_aStatusBarItems->getCount(), makeAny( aStatusbarItemProp ) ); + Sequence< PropertyValue > aStatusbarItemProp{ + comphelper::makePropertyValue(ITEM_DESCRIPTOR_COMMANDURL, aCommandURL), + comphelper::makePropertyValue(ITEM_DESCRIPTOR_HELPURL, aHelpURL), + comphelper::makePropertyValue(ITEM_DESCRIPTOR_OFFSET, nOffset), + comphelper::makePropertyValue(ITEM_DESCRIPTOR_STYLE, nItemBits), + comphelper::makePropertyValue(ITEM_DESCRIPTOR_WIDTH, nWidth), + comphelper::makePropertyValue(ITEM_DESCRIPTOR_TYPE, css::ui::ItemType::DEFAULT) + }; + + m_aStatusBarItems->insertByIndex( m_aStatusBarItems->getCount(), Any( aStatusbarItemProp ) ); } } break; @@ -401,8 +385,6 @@ void SAL_CALL OReadStatusBarDocumentHandler::startElement( void SAL_CALL OReadStatusBarDocumentHandler::endElement(const OUString& aName) { - SolarMutexGuard g; - StatusBarHashMap::const_iterator pStatusBarEntry = m_aStatusBarMap.find( aName ); if ( pStatusBarEntry == m_aStatusBarMap.end() ) return; @@ -453,15 +435,11 @@ void SAL_CALL OReadStatusBarDocumentHandler::processingInstruction( void SAL_CALL OReadStatusBarDocumentHandler::setDocumentLocator( const Reference< XLocator > &xLocator) { - SolarMutexGuard g; - m_xLocator = xLocator; } OUString OReadStatusBarDocumentHandler::getErrorLineString() { - SolarMutexGuard g; - if ( m_xLocator.is() ) return "Line: " + OUString::number( m_xLocator->getLineNumber() ) + " - "; else @@ -476,9 +454,7 @@ OWriteStatusBarDocumentHandler::OWriteStatusBarDocumentHandler( m_aStatusBarItems( aStatusBarItems ), m_xWriteDocumentHandler( rWriteDocumentHandler ) { - ::comphelper::AttributeList* pList = new ::comphelper::AttributeList; - m_xEmptyList.set( static_cast<XAttributeList *>(pList), UNO_QUERY ); - m_aAttributeType = ATTRIBUTE_TYPE_CDATA; + m_xEmptyList = new ::comphelper::AttributeList; m_aXMLXlinkNS = XMLNS_XLINK_PREFIX; m_aXMLStatusBarNS = XMLNS_STATUSBAR_PREFIX; } @@ -489,8 +465,6 @@ OWriteStatusBarDocumentHandler::~OWriteStatusBarDocumentHandler() void OWriteStatusBarDocumentHandler::WriteStatusBarDocument() { - SolarMutexGuard g; - m_xWriteDocumentHandler->startDocument(); // write DOCTYPE line! @@ -504,14 +478,12 @@ void OWriteStatusBarDocumentHandler::WriteStatusBarDocument() rtl::Reference<::comphelper::AttributeList> pList = new ::comphelper::AttributeList; pList->AddAttribute( ATTRIBUTE_XMLNS_STATUSBAR, - m_aAttributeType, XMLNS_STATUSBAR ); pList->AddAttribute( ATTRIBUTE_XMLNS_XLINK, - m_aAttributeType, XMLNS_XLINK ); - m_xWriteDocumentHandler->startElement( ELEMENT_NS_STATUSBAR, pList.get() ); + m_xWriteDocumentHandler->startElement( ELEMENT_NS_STATUSBAR, pList ); m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); sal_Int32 nItemCount = m_aStatusBarItems->getCount(); @@ -556,8 +528,7 @@ void OWriteStatusBarDocumentHandler::WriteStatusBarItem( sal_Int16 nStyle, sal_Int16 nWidth ) { - ::comphelper::AttributeList* pList = new ::comphelper::AttributeList; - Reference< XAttributeList > xList( static_cast<XAttributeList *>(pList) , UNO_QUERY ); + rtl::Reference<::comphelper::AttributeList> pList = new ::comphelper::AttributeList; if (m_aAttributeURL.isEmpty() ) { @@ -565,25 +536,22 @@ void OWriteStatusBarDocumentHandler::WriteStatusBarItem( } // save required attribute (URL) - pList->AddAttribute( m_aAttributeURL, m_aAttributeType, rCommandURL ); + pList->AddAttribute( m_aAttributeURL, rCommandURL ); // alignment if ( nStyle & ItemStyle::ALIGN_RIGHT ) { pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_ALIGN, - m_aAttributeType, ATTRIBUTE_ALIGN_RIGHT ); } else if ( nStyle & ItemStyle::ALIGN_CENTER ) { pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_ALIGN, - m_aAttributeType, ATTRIBUTE_ALIGN_CENTER ); } else { pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_ALIGN, - m_aAttributeType, ATTRIBUTE_ALIGN_LEFT ); } @@ -591,13 +559,11 @@ void OWriteStatusBarDocumentHandler::WriteStatusBarItem( if ( nStyle & ItemStyle::DRAW_FLAT ) { pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_STYLE, - m_aAttributeType, ATTRIBUTE_STYLE_FLAT ); } else if ( nStyle & ItemStyle::DRAW_OUT3D ) { pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_STYLE, - m_aAttributeType, ATTRIBUTE_STYLE_OUT ); } @@ -605,7 +571,6 @@ void OWriteStatusBarDocumentHandler::WriteStatusBarItem( if ( nStyle & ItemStyle::AUTO_SIZE ) { pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_AUTOSIZE, - m_aAttributeType, ATTRIBUTE_BOOLEAN_TRUE ); } @@ -613,7 +578,6 @@ void OWriteStatusBarDocumentHandler::WriteStatusBarItem( if ( nStyle & ItemStyle::OWNER_DRAW ) { pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_OWNERDRAW, - m_aAttributeType, ATTRIBUTE_BOOLEAN_TRUE ); } @@ -621,7 +585,6 @@ void OWriteStatusBarDocumentHandler::WriteStatusBarItem( if ( nWidth > 0 ) { pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_WIDTH, - m_aAttributeType, OUString::number( nWidth ) ); } @@ -629,7 +592,6 @@ void OWriteStatusBarDocumentHandler::WriteStatusBarItem( if ( nOffset != STATUSBAR_OFFSET ) { pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_OFFSET, - m_aAttributeType, OUString::number( nOffset ) ); } @@ -637,12 +599,11 @@ void OWriteStatusBarDocumentHandler::WriteStatusBarItem( if ( !( nStyle & ItemStyle::MANDATORY ) ) { pList->AddAttribute( m_aXMLStatusBarNS + ATTRIBUTE_MANDATORY, - m_aAttributeType, ATTRIBUTE_BOOLEAN_FALSE ); } m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); - m_xWriteDocumentHandler->startElement( ELEMENT_NS_STATUSBARITEM, xList ); + m_xWriteDocumentHandler->startElement( ELEMENT_NS_STATUSBARITEM, pList ); m_xWriteDocumentHandler->ignorableWhitespace( OUString() ); m_xWriteDocumentHandler->endElement( ELEMENT_NS_STATUSBARITEM ); } |