diff options
author | Kohei Yoshida <kohei.yoshida@gmail.com> | 2013-02-11 13:25:53 -0500 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@gmail.com> | 2013-02-11 22:33:35 -0500 |
commit | 180819d4feb2a2e889acad910d6d5241bea95d55 (patch) | |
tree | e089014012e2a02bb3cd688034e3b0b6db2e6487 | |
parent | ec3e84c89e6abcd12cc79ed38c5148e89a7a4f35 (diff) |
Import document title field as well.
Change-Id: Iea73d553927ce95afbb9b6e9062b398733228687
-rw-r--r-- | sc/source/filter/xml/celltextparacontext.cxx | 4 | ||||
-rw-r--r-- | sc/source/filter/xml/celltextparacontext.hxx | 2 | ||||
-rw-r--r-- | sc/source/filter/xml/xmlcelli.cxx | 26 | ||||
-rw-r--r-- | sc/source/filter/xml/xmlcelli.hxx | 7 |
4 files changed, 27 insertions, 12 deletions
diff --git a/sc/source/filter/xml/celltextparacontext.cxx b/sc/source/filter/xml/celltextparacontext.cxx index 84249b422fcd..a4ce72dec9cd 100644 --- a/sc/source/filter/xml/celltextparacontext.cxx +++ b/sc/source/filter/xml/celltextparacontext.cxx @@ -82,8 +82,9 @@ void ScXMLCellTextParaContext::PushFieldDate(const OUString& rOutput) { } -void ScXMLCellTextParaContext::PushFieldTitle(const OUString& rTitle) +void ScXMLCellTextParaContext::PushFieldTitle() { + mrParentCxt.PushParagraphFieldDocTitle(); } ScXMLCellTextSpanContext::ScXMLCellTextSpanContext( @@ -205,6 +206,7 @@ void ScXMLCellFieldTitleContext::StartElement(const uno::Reference<xml::sax::XAt void ScXMLCellFieldTitleContext::EndElement() { + mrParentCxt.PushFieldTitle(); } void ScXMLCellFieldTitleContext::Characters(const OUString& rChars) diff --git a/sc/source/filter/xml/celltextparacontext.hxx b/sc/source/filter/xml/celltextparacontext.hxx index 7840cd6fc335..55ea8efdbb2f 100644 --- a/sc/source/filter/xml/celltextparacontext.hxx +++ b/sc/source/filter/xml/celltextparacontext.hxx @@ -34,7 +34,7 @@ public: void PushSpan(const OUString& rSpan, const OUString& rStyleName); void PushFieldSheetName(); void PushFieldDate(const OUString& rOutput); - void PushFieldTitle(const OUString& rTitle); + void PushFieldTitle(); }; /** diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx index aff762ff36a7..255d5ae77b27 100644 --- a/sc/source/filter/xml/xmlcelli.cxx +++ b/sc/source/filter/xml/xmlcelli.cxx @@ -116,11 +116,11 @@ using namespace xmloff::token; ScXMLTableRowCellContext::ParaFormat::ParaFormat(ScEditEngineDefaulter& rEditEngine) : maItemSet(rEditEngine.GetEmptyItemSet()) {} -ScXMLTableRowCellContext::Field::Field() : mpItem(NULL) {} +ScXMLTableRowCellContext::Field::Field(SvxFieldData* pData) : mpData(pData) {} ScXMLTableRowCellContext::Field::~Field() { - delete mpItem; + delete mpData; } ScXMLTableRowCellContext::ScXMLTableRowCellContext( ScXMLImport& rImport, @@ -557,20 +557,30 @@ void ScXMLTableRowCellContext::PushParagraphSpan(const OUString& rSpan, const OU rFmt.maItemSet.Put(*pPoolItem); } -void ScXMLTableRowCellContext::PushParagraphFieldSheetName() +void ScXMLTableRowCellContext::PushParagraphField(SvxFieldData* pData) { - SCTAB nTab = GetScImport().GetTables().GetCurrentCellPos().Tab(); - maFields.push_back(new Field); + maFields.push_back(new Field(pData)); Field& rField = maFields.back(); - rField.mpItem = new SvxTableField(nTab); + sal_Int32 nPos = maParagraph.getLength(); - maParagraph.append(sal_Unicode('\1')); + maParagraph.append(sal_Unicode('\1')); // Placeholder text for inserted field item. rField.maSelection.nStartPara = mnCurParagraph; rField.maSelection.nEndPara = mnCurParagraph; rField.maSelection.nStartPos = nPos; rField.maSelection.nEndPos = nPos+1; } +void ScXMLTableRowCellContext::PushParagraphFieldSheetName() +{ + SCTAB nTab = GetScImport().GetTables().GetCurrentCellPos().Tab(); + PushParagraphField(new SvxTableField(nTab)); +} + +void ScXMLTableRowCellContext::PushParagraphFieldDocTitle() +{ + PushParagraphField(new SvxFileField); +} + void ScXMLTableRowCellContext::PushParagraphEnd() { // EditEngine always has at least one paragraph even when its content is empty. @@ -1027,7 +1037,7 @@ void ScXMLTableRowCellContext::PutTextCell( const ScAddress& rCurrentPos, { FieldsType::const_iterator it = maFields.begin(), itEnd = maFields.end(); for (; it != itEnd; ++it) - mpEditEngine->QuickInsertField(SvxFieldItem(*it->mpItem, EE_FEATURE_FIELD), it->maSelection); + mpEditEngine->QuickInsertField(SvxFieldItem(*it->mpData, EE_FEATURE_FIELD), it->maSelection); } pNewCell = new ScEditCell(mpEditEngine->CreateTextObject(), pDoc, pDoc->GetEditPool()); diff --git a/sc/source/filter/xml/xmlcelli.hxx b/sc/source/filter/xml/xmlcelli.hxx index 20f4465ae98c..022d5a2fab11 100644 --- a/sc/source/filter/xml/xmlcelli.hxx +++ b/sc/source/filter/xml/xmlcelli.hxx @@ -49,10 +49,10 @@ class ScXMLTableRowCellContext : public ScXMLImportContext struct Field : boost::noncopyable { - SvxFieldData* mpItem; + SvxFieldData* mpData; ESelection maSelection; - Field(); + Field(SvxFieldData* pData); ~Field(); }; @@ -118,6 +118,8 @@ class ScXMLTableRowCellContext : public ScXMLImportContext bool IsPossibleErrorString() const; + void PushParagraphField(SvxFieldData* pData); + public: ScXMLTableRowCellContext( ScXMLImport& rImport, sal_uInt16 nPrfx, @@ -135,6 +137,7 @@ public: void PushParagraphSpan(const OUString& rSpan, const OUString& rStyleName); void PushParagraphFieldSheetName(); + void PushParagraphFieldDocTitle(); void PushParagraphEnd(); void SetAnnotation( const ScAddress& rPosition ); |