summaryrefslogtreecommitdiff
path: root/framework/source/fwe/xml/statusbardocumenthandler.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'framework/source/fwe/xml/statusbardocumenthandler.cxx')
-rw-r--r--framework/source/fwe/xml/statusbardocumenthandler.cxx155
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 );
}