diff options
Diffstat (limited to 'sw/source/filter/ww8/ww8atr.cxx')
-rw-r--r-- | sw/source/filter/ww8/ww8atr.cxx | 64 |
1 files changed, 63 insertions, 1 deletions
diff --git a/sw/source/filter/ww8/ww8atr.cxx b/sw/source/filter/ww8/ww8atr.cxx index dfa4c2d29aa2..ad4c300b0350 100644 --- a/sw/source/filter/ww8/ww8atr.cxx +++ b/sw/source/filter/ww8/ww8atr.cxx @@ -899,7 +899,12 @@ OUString MSWordExportBase::GetBookmarkName( sal_uInt16 nTyp, const OUString* pNa } break; case REF_SEQUENCEFLD: - break; // ??? + { + assert(pName); + sRet += "Ref_"; + sRet += *pName; + break; + } case REF_BOOKMARK: if ( pName ) sRet = *pName; @@ -2779,6 +2784,63 @@ void AttributeOutputBase::TextField( const SwFormatField& rField ) break; } break; + case REF_SEQUENCEFLD: + { + // Have this only for DOCX format by now + if(!(GetExport().GetExportFormat() == MSWordExportBase::ExportFormat::DOCX)) + break; + + switch (pField->GetFormat()) + { + case REF_PAGE: + case REF_PAGE_PGDESC: + eField = ww::ePAGEREF; + break; + default: + eField = ww::eREF; + break; + } + // Generate a unique bookmark name + { + OUString sName(rRField.GetSetRefName()); + sName += OUString::number(rRField.GetSeqNo()); + switch (pField->GetFormat()) + { + case REF_PAGE: + case REF_PAGE_PGDESC: + case REF_CONTENT: + case REF_UPDOWN: + sName += "_full"; + break; + case REF_ONLYNUMBER: + sName += "_label_and_number"; + break; + case REF_ONLYCAPTION: + sName += "_caption_only"; + break; + case REF_ONLYSEQNO: + sName += "_number_only"; + break; + default: // Ingore other types of reference fields + eField = ww::eNONE; + break; + } + sStr = FieldString(eField) + MSWordExportBase::GetBookmarkName(nSubType, &sName, 0); + } + switch (pField->GetFormat()) + { + case REF_NUMBER: + sStr += " \\r"; + break; + case REF_NUMBER_NO_CONTEXT: + sStr += " \\n"; + break; + case REF_NUMBER_FULL_CONTEXT: + sStr += " \\w"; + break; + } + break; + } case REF_FOOTNOTE: case REF_ENDNOTE: switch (pField->GetFormat()) |