summaryrefslogtreecommitdiff
path: root/xmloff
diff options
context:
space:
mode:
authorRĂ¼diger Timm <rt@openoffice.org>2008-09-04 09:09:15 +0000
committerRĂ¼diger Timm <rt@openoffice.org>2008-09-04 09:09:15 +0000
commite584b9796ef70412b16c50318c67328a7dc283b1 (patch)
tree674fb7a228379ef08f988fae64c2bc77f5629f3f /xmloff
parent6eb3fa13c997fb07d9ccd69d998d75e1e88c0e76 (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.cxx87
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 &params=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,