diff options
author | Cédric Bosdonnat <cedricbosdo@openoffice.org> | 2009-11-17 12:33:55 +0100 |
---|---|---|
committer | Cédric Bosdonnat <cedricbosdo@openoffice.org> | 2009-11-17 12:33:55 +0100 |
commit | b54c9639c577a87279316ee6384dd95ed4752d66 (patch) | |
tree | 7c2a9ea171aa90212c76437ea4a401009cbcedf1 /xmloff/source | |
parent | cc423d4be4338cbd81eed9f96f7c7a277da0ee88 (diff) |
cbosdo02: field patch to upstream applied
Diffstat (limited to 'xmloff/source')
-rw-r--r-- | xmloff/source/text/XMLTextMarkImportContext.cxx | 46 | ||||
-rw-r--r-- | xmloff/source/text/txtimp.cxx | 12 | ||||
-rw-r--r-- | xmloff/source/text/txtparae.cxx | 29 |
3 files changed, 49 insertions, 38 deletions
diff --git a/xmloff/source/text/XMLTextMarkImportContext.cxx b/xmloff/source/text/XMLTextMarkImportContext.cxx index 5e6f47ed5b6a..3ced425c6aed 100644 --- a/xmloff/source/text/XMLTextMarkImportContext.cxx +++ b/xmloff/source/text/XMLTextMarkImportContext.cxx @@ -41,6 +41,7 @@ #include <xmloff/xmltoken.hxx> #include <xmloff/xmlimp.hxx> #include <xmloff/nmspmap.hxx> +#include <xmloff/ecmaflds.hxx> #include "xmlnmspe.hxx" #include <com/sun/star/xml/sax/XAttributeList.hpp> #include <com/sun/star/text/XTextContent.hpp> @@ -138,6 +139,33 @@ static SvXMLEnumMapEntry __READONLY_DATA lcl_aMarkTypeMap[] = { XML_TOKEN_INVALID, 0 }, }; + +static const char *lcl_getFormFieldmarkName(rtl::OUString &name) +{ + static const char sCheckbox[]=ECMA_FORMCHECKBOX; + static const char sFormDropDown[]=ECMA_FORMDROPDOWN; + if (name.compareToAscii("msoffice.field.FORMCHECKBOX")==0) + return sCheckbox; + else if (name.compareToAscii(ECMA_FORMCHECKBOX)==0) + return sCheckbox; + if (name.compareToAscii(ECMA_FORMDROPDOWN)==0) + return sFormDropDown; + else + return NULL; +} + +static rtl::OUString lcl_getFieldmarkName(rtl::OUString &name) +{ + static const char sFormtext[]=ECMA_FORMTEXT; + if (name.compareToAscii("msoffice.field.FORMTEXT")==0) + return rtl::OUString::createFromAscii(sFormtext); + else if (name.compareToAscii(ECMA_FORMTEXT)==0) + return rtl::OUString::createFromAscii(sFormtext); + else + return name; +} + + void XMLTextMarkImportContext::StartElement( const Reference<XAttributeList> & xAttrList) { @@ -194,7 +222,8 @@ void XMLTextMarkImportContext::EndElement() case TypeFieldmark: case TypeBookmark: { - bool bImportAsField=((lcl_MarkType)nTmp==TypeFieldmark && m_sFieldName.compareToAscii("msoffice.field.FORMCHECKBOX")==0); // for now only import FORMCHECKBOX boxes + const char *formFieldmarkName=lcl_getFormFieldmarkName(m_sFieldName); + bool bImportAsField=((lcl_MarkType)nTmp==TypeFieldmark && formFieldmarkName!=NULL); //@TODO handle abbreviation cases.. // export point bookmark const Reference<XInterface> xContent( CreateAndInsertMark(GetImport(), @@ -213,10 +242,8 @@ void XMLTextMarkImportContext::EndElement() if (xContent.is() && bImportAsField) { // setup fieldmark... Reference< ::com::sun::star::text::XFormField> xFormField(xContent, UNO_QUERY); - xFormField->setType(1); // Checkbox... + xFormField->setFieldType(rtl::OUString::createFromAscii(formFieldmarkName)); if (xFormField.is() && m_rHelper.hasCurrentFieldCtx()) { -// xFormField->setDescription(::rtl::OUString::createFromAscii("HELLO CHECKBOX")); -// xFormField->setRes(1); m_rHelper.setCurrentFieldParamsTo(xFormField); } } @@ -263,11 +290,6 @@ void XMLTextMarkImportContext::EndElement() xInsertionCursor, UNO_QUERY); bool bImportAsField=((lcl_MarkType)nTmp==TypeFieldmarkEnd && m_rHelper.hasCurrentFieldCtx()); - if (bImportAsField) { - ::rtl::OUString currentFieldType = - m_rHelper.getCurrentFieldType(); - bImportAsField=currentFieldType.compareToAscii("msoffice.field.FORMTEXT")==0; // for now only import FORMTEXT boxes - } // insert reference const Reference<XInterface> xContent( @@ -288,10 +310,12 @@ void XMLTextMarkImportContext::EndElement() if (xContent.is() && bImportAsField) { // setup fieldmark... Reference< ::com::sun::star::text::XFormField> xFormField(xContent, UNO_QUERY); - xFormField->setType(0); // Text if (xFormField.is() && m_rHelper.hasCurrentFieldCtx()) { + rtl::OUString givenTypeName=m_rHelper.getCurrentFieldType(); + rtl::OUString fieldmarkTypeName=lcl_getFieldmarkName(givenTypeName); + + xFormField->setFieldType(fieldmarkTypeName); m_rHelper.setCurrentFieldParamsTo(xFormField); -// xFormField->setDescription(::rtl::OUString::createFromAscii("HELLO")); } } m_rHelper.popFieldCtx(); diff --git a/xmloff/source/text/txtimp.cxx b/xmloff/source/text/txtimp.cxx index 613a4688389f..5ab41a2f59f3 100644 --- a/xmloff/source/text/txtimp.cxx +++ b/xmloff/source/text/txtimp.cxx @@ -2291,14 +2291,10 @@ void XMLTextImportHelper::setCurrentFieldParamsTo(::com::sun::star::uno::Referen if (!aFieldStack.empty() && xFormField.is()) { field_params_t ¶ms=aFieldStack.top().second; for (field_params_t::iterator i=params.begin();i!=params.end();i++) { - rtl::OUString name=i->first; - rtl::OUString value=i->second; - if (name.compareToAscii("Description")==0){ - xFormField->setDescription(value); - } else if (name.compareToAscii("Result")==0){ - xFormField->setRes((sal_Int16)value.toInt32()); - } - + rtl::OString aOString1 = ::rtl::OUStringToOString (i->first, RTL_TEXTENCODING_UTF8); + rtl::OString aOString2 = ::rtl::OUStringToOString (i->second, RTL_TEXTENCODING_UTF8); + /* printf("param[\"%s\"]=\"%s\"\n", aOString1.getStr(), aOString2.getStr()); */ + xFormField->addParam(i->first, i->second, false); } } } diff --git a/xmloff/source/text/txtparae.cxx b/xmloff/source/text/txtparae.cxx index 2c160eabd334..60adedd5ed13 100644 --- a/xmloff/source/text/txtparae.cxx +++ b/xmloff/source/text/txtparae.cxx @@ -2236,14 +2236,16 @@ void XMLTextParagraphExport::exportTextRangeEnumeration( } Reference< ::com::sun::star::text::XFormField > xFormField(xPropSet->getPropertyValue(sBookmark), UNO_QUERY); if (xFormField.is()) { - GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_TYPE, ::rtl::OUString::createFromAscii("msoffice.field.FORMTEXT")); + GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_TYPE, xFormField->getFieldType()); } GetExport().StartElement(XML_NAMESPACE_FIELD, XML_FIELDMARK_START, sal_False); if (xFormField.is()) { - GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_NAME, ::rtl::OUString::createFromAscii("Description")); - GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_VALUE, xFormField->getDescription()); + for(sal_Int16 i=0;i<xFormField->getParamCount();i++) { + GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_NAME, xFormField->getParamName(i)); + GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_VALUE, xFormField->getParamValue(i)); GetExport().StartElement(XML_NAMESPACE_FIELD, XML_PARAM, sal_False); GetExport().EndElement(XML_NAMESPACE_FIELD, XML_PARAM, sal_False); + } } GetExport().EndElement(XML_NAMESPACE_FIELD, XML_FIELDMARK_START, sal_False); } @@ -2260,27 +2262,16 @@ void XMLTextParagraphExport::exportTextRangeEnumeration( } Reference< ::com::sun::star::text::XFormField > xFormField(xPropSet->getPropertyValue(sBookmark), UNO_QUERY); if (xFormField.is()) { - sal_Int16 fftype=xFormField->getType(); - switch (fftype) { - case 1: - GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_TYPE, ::rtl::OUString::createFromAscii("msoffice.field.FORMCHECKBOX")); - break; - default: - DBG_ASSERT(false, "hey ---- add your export stuff here!!"); - break; - } + GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_TYPE, xFormField->getFieldType()); } GetExport().StartElement(XML_NAMESPACE_FIELD, XML_FIELDMARK, sal_False); if (xFormField.is()) { - GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_NAME, ::rtl::OUString::createFromAscii("Description")); - GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_VALUE, xFormField->getDescription()); - GetExport().StartElement(XML_NAMESPACE_FIELD, XML_PARAM, sal_False); - GetExport().EndElement(XML_NAMESPACE_FIELD, XML_PARAM, sal_False); - - GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_NAME, ::rtl::OUString::createFromAscii("Result")); - GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_VALUE, ::rtl::OUString::valueOf((sal_Int32 )xFormField->getRes())); + for(sal_Int16 i=0;i<xFormField->getParamCount();i++) { + GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_NAME, xFormField->getParamName(i)); + GetExport().AddAttribute(XML_NAMESPACE_FIELD, XML_VALUE, xFormField->getParamValue(i)); GetExport().StartElement(XML_NAMESPACE_FIELD, XML_PARAM, sal_False); GetExport().EndElement(XML_NAMESPACE_FIELD, XML_PARAM, sal_False); + } } GetExport().EndElement(XML_NAMESPACE_FIELD, XML_FIELDMARK, sal_False); } |