summaryrefslogtreecommitdiffstats
path: root/xmloff/source/forms/propertyexport.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'xmloff/source/forms/propertyexport.cxx')
-rw-r--r--xmloff/source/forms/propertyexport.cxx53
1 files changed, 29 insertions, 24 deletions
diff --git a/xmloff/source/forms/propertyexport.cxx b/xmloff/source/forms/propertyexport.cxx
index 13d770e7e2b3..050dd4bf0992 100644
--- a/xmloff/source/forms/propertyexport.cxx
+++ b/xmloff/source/forms/propertyexport.cxx
@@ -101,7 +101,21 @@ namespace xmloff
return ( !bIsDefaultValue || bIsDynamicProperty );
}
- //---------------------------------------------------------------------
+ template< typename T > void
+ OPropertyExport::exportRemainingPropertiesSequence(
+ Any const & value, token::XMLTokenEnum eValueAttName)
+ {
+ OSequenceIterator< T > i(value);
+ while (i.hasMoreElements())
+ {
+ ::rtl::OUString sValue(implConvertAny(i.nextElement()));
+ AddAttribute(XML_NAMESPACE_OFFICE, eValueAttName, sValue );
+ SvXMLElementExport aValueTag(
+ m_rContext.getGlobalContext(), XML_NAMESPACE_FORM,
+ token::XML_LIST_VALUE, sal_True, sal_False);
+ }
+ }
+
void OPropertyExport::exportRemainingProperties()
{
// the properties tag (will be created if we have at least one no-default property)
@@ -189,49 +203,40 @@ namespace xmloff
continue;
// the not-that-simple case, we need to iterate through the sequence elements
- IIterator* pSequenceIterator = NULL;
-
switch ( aExportType.getTypeClass() )
{
case TypeClass_STRING:
- pSequenceIterator = new OSequenceIterator< ::rtl::OUString >(aValue);
+ exportRemainingPropertiesSequence< ::rtl::OUString >(
+ aValue, eValueAttName);
break;
case TypeClass_DOUBLE:
- pSequenceIterator = new OSequenceIterator< double >(aValue);
+ exportRemainingPropertiesSequence< double >(
+ aValue, eValueAttName);
break;
case TypeClass_BOOLEAN:
- pSequenceIterator = new OSequenceIterator< sal_Bool >(aValue);
+ exportRemainingPropertiesSequence< sal_Bool >(
+ aValue, eValueAttName);
break;
case TypeClass_BYTE:
- pSequenceIterator = new OSequenceIterator< sal_Int8 >(aValue);
+ exportRemainingPropertiesSequence< sal_Int8 >(
+ aValue, eValueAttName);
break;
case TypeClass_SHORT:
- pSequenceIterator = new OSequenceIterator< sal_Int16 >(aValue);
+ exportRemainingPropertiesSequence< sal_Int16 >(
+ aValue, eValueAttName);
break;
case TypeClass_LONG:
- pSequenceIterator = new OSequenceIterator< sal_Int32 >(aValue);
+ exportRemainingPropertiesSequence< sal_Int32 >(
+ aValue, eValueAttName);
break;
case TypeClass_HYPER:
- pSequenceIterator = new OSequenceIterator< sal_Int64 >(aValue);
+ exportRemainingPropertiesSequence< sal_Int64 >(
+ aValue, eValueAttName);
break;
default:
OSL_FAIL("OPropertyExport::exportRemainingProperties: unsupported sequence tyoe !");
break;
}
- if (pSequenceIterator)
- {
- while (pSequenceIterator->hasMoreElements())
- {
- sValue =
- implConvertAny(pSequenceIterator->nextElement());
- AddAttribute(XML_NAMESPACE_OFFICE, eValueAttName, sValue );
- SvXMLElementExport aValueTag(
- m_rContext.getGlobalContext(),
- XML_NAMESPACE_FORM, token::XML_LIST_VALUE,
- sal_True, sal_False);
- }
- }
- delete pSequenceIterator;
}
}
catch(...)