diff options
author | RĂ¼diger Timm <rt@openoffice.org> | 2008-09-04 09:09:15 +0000 |
---|---|---|
committer | RĂ¼diger Timm <rt@openoffice.org> | 2008-09-04 09:09:15 +0000 |
commit | e584b9796ef70412b16c50318c67328a7dc283b1 (patch) | |
tree | 674fb7a228379ef08f988fae64c2bc77f5629f3f /xmloff | |
parent | 6eb3fa13c997fb07d9ccd69d998d75e1e88c0e76 (diff) |
INTEGRATION: CWS swenhancedfields2 (1.138.8); FILE MERGED
2008/08/05 15:25:25 b_michaelsen 1.138.8.5: post resync merge fixes
2008/08/04 15:11:24 b_michaelsen 1.138.8.4: RESYNC: (1.138-1.143); FILE MERGED
2008/04/24 09:04:31 ama 1.138.8.3: #i33737#: Enhanced fields
2008/04/24 07:47:39 ama 1.138.8.2: #i33737#: Enhanced fields
2008/04/23 09:01:55 ama 1.138.8.1: #i33737#: Enhanced fields
Diffstat (limited to 'xmloff')
-rw-r--r-- | xmloff/source/text/txtimp.cxx | 87 |
1 files changed, 86 insertions, 1 deletions
diff --git a/xmloff/source/text/txtimp.cxx b/xmloff/source/text/txtimp.cxx index bccd744d7b..4fa0f66688 100644 --- a/xmloff/source/text/txtimp.cxx +++ b/xmloff/source/text/txtimp.cxx @@ -7,7 +7,7 @@ * OpenOffice.org - a multi-platform office productivity suite * * $RCSfile: txtimp.cxx,v $ - * $Revision: 1.145 $ + * $Revision: 1.146 $ * * This file is part of OpenOffice.org. * @@ -331,6 +331,11 @@ static __FAR_DATA SvXMLTokenMapEntry aTextPElemTokenMap[] = { XML_NAMESPACE_PRESENTATION, XML_DATE_TIME, XML_TOK_DRAW_DATE_TIME }, { XML_NAMESPACE_TEXT, XML_PAGE_CONTINUATION, XML_TOK_TEXT_PAGE_CONTINUATION }, + { XML_NAMESPACE_FIELD, XML_FIELDMARK, XML_TOK_TEXT_FIELDMARK }, + { XML_NAMESPACE_FIELD, XML_FIELDMARK_START, XML_TOK_TEXT_FIELDMARK_START }, + { XML_NAMESPACE_FIELD, XML_FIELDMARK_END, XML_TOK_TEXT_FIELDMARK_END }, + + XML_TOKEN_MAP_END }; @@ -644,6 +649,8 @@ XMLTextImportHelper::~XMLTextImportHelper() delete [] mpOutlineStylesCandidates; // <-- + aBookmarkVector.clear(); + _FinitBackpatcher(); } @@ -2117,6 +2124,7 @@ void XMLTextImportHelper::InsertBookmarkStartRange( const OUString& i_rXmlId) { aBookmarkStartRanges[sName] = std::make_pair(rRange, i_rXmlId); + aBookmarkVector.push_back(sName); } sal_Bool XMLTextImportHelper::FindAndRemoveBookmarkStartRange( @@ -2129,6 +2137,13 @@ sal_Bool XMLTextImportHelper::FindAndRemoveBookmarkStartRange( o_rRange.set(aBookmarkStartRanges[sName].first); o_rXmlId = aBookmarkStartRanges[sName].second; aBookmarkStartRanges.erase(sName); + BookmarkVector_t::iterator it=aBookmarkVector.begin(); + while(it!=aBookmarkVector.end() && it->compareTo(sName)!=0) { + it++; + } + if (it!=aBookmarkVector.end()) { + aBookmarkVector.erase(it); + } return sal_True; } else @@ -2137,6 +2152,76 @@ sal_Bool XMLTextImportHelper::FindAndRemoveBookmarkStartRange( } } +::rtl::OUString XMLTextImportHelper::FindActiveBookmarkName() +{ + if (aBookmarkVector.size()>0) { + return aBookmarkVector.back(); + } else return ::rtl::OUString(); // return the empty string on error... +} + +::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > XMLTextImportHelper::GetRangeFor(::rtl::OUString &sName) +{ + return aBookmarkStartRanges[sName].first; +} + + +void XMLTextImportHelper::pushFieldCtx( ::rtl::OUString name, ::rtl::OUString type ) +{ + aFieldStack.push(field_stack_item_t(field_name_type_t(name, type), field_params_t())); +} + +void XMLTextImportHelper::popFieldCtx() +{ + aFieldStack.pop(); +} + +void XMLTextImportHelper::addFieldParam( ::rtl::OUString name, ::rtl::OUString value ) +{ + DBG_ASSERT(!aFieldStack.empty(), "stack is empty: not good! Do a pushFieldCtx before..."); + if (!aFieldStack.empty()) { + field_stack_item_t &aFieldStackItem=aFieldStack.top(); + aFieldStackItem.second.push_back(field_param_t( name, value )); + } +} +::rtl::OUString XMLTextImportHelper::getCurrentFieldName() +{ + DBG_ASSERT(!aFieldStack.empty(), "stack is empty: not good! Do a pushFieldCtx before..."); + if (!aFieldStack.empty()) { + return aFieldStack.top().first.first; + } else return ::rtl::OUString(); +} + +::rtl::OUString XMLTextImportHelper::getCurrentFieldType() +{ + DBG_ASSERT(!aFieldStack.empty(), "stack is empty: not good! Do a pushFieldCtx before..."); + if (!aFieldStack.empty()) { + return aFieldStack.top().first.second; + } else return ::rtl::OUString(); +} + +bool XMLTextImportHelper::hasCurrentFieldCtx() +{ + return !aFieldStack.empty(); +} + +void XMLTextImportHelper::setCurrentFieldParamsTo(::com::sun::star::uno::Reference< ::com::sun::star::text::XFormField> &xFormField) +{ + DBG_ASSERT(!aFieldStack.empty(), "stack is empty: not good! Do a pushFieldCtx before..."); + 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()); + } + + } + } +} + void XMLTextImportHelper::ConnectFrameChains( const OUString& rFrmName, |