editeng/source/items/flditem.cxx | 15 +++++++++------ sd/qa/unit/data/odp/author_fixed.odp |binary sd/qa/unit/export-tests.cxx | 19 +++++++++++++++++++ xmloff/inc/txtfldi.hxx | 4 ++++ xmloff/source/text/txtflde.cxx | 7 +++++-- xmloff/source/text/txtfldi.cxx | 10 ++++++++++ 6 files changed, 47 insertions(+), 8 deletions(-)
New commits: commit 109210e5b71a4e0b6fcaae72be7ef8d7667f3708 Author: Rosemary Sebastian <rosemarys...@gmail.com> Date: Sat Mar 18 08:46:27 2017 +0000 Revert "Revert "Implement export and import of author field in fixed format"" This reverts commit cae16645e17df6a1f87443c00b6abfd26dabd27f. Change-Id: If5b85beb53a0925909d537023879a7d86fa011cf Reviewed-on: https://gerrit.libreoffice.org/35391 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Rosemary Sebastian <rosemarys...@gmail.com> Tested-by: Rosemary Sebastian <rosemarys...@gmail.com> diff --git a/editeng/source/items/flditem.cxx b/editeng/source/items/flditem.cxx index 1d5ba3fa784e..690425594227 100644 --- a/editeng/source/items/flditem.cxx +++ b/editeng/source/items/flditem.cxx @@ -181,13 +181,16 @@ SvxFieldData* SvxFieldData::Create(const uno::Reference<text::XTextContent>& xTe SvxAuthorField* pData = new SvxAuthorField( aFirstName, aLastName, OUString(), bIsFixed ? SVXAUTHORTYPE_FIX : SVXAUTHORTYPE_VAR); - if (!bFullName) + if (!bIsFixed) { - pData->SetFormat(SVXAUTHORFORMAT_SHORTNAME); - } - else if (nFmt >= SVXAUTHORFORMAT_FULLNAME && nFmt <= SVXAUTHORFORMAT_SHORTNAME) - { - pData->SetFormat(static_cast<SvxAuthorFormat>(nFmt)); + if (!bFullName) + { + pData->SetFormat(SVXAUTHORFORMAT_SHORTNAME); + } + else if (nFmt >= SVXAUTHORFORMAT_FULLNAME && nFmt <= SVXAUTHORFORMAT_SHORTNAME) + { + pData->SetFormat(static_cast<SvxAuthorFormat>(nFmt)); + } } return pData; diff --git a/sd/qa/unit/data/odp/author_fixed.odp b/sd/qa/unit/data/odp/author_fixed.odp new file mode 100644 index 000000000000..2e666ad17fee Binary files /dev/null and b/sd/qa/unit/data/odp/author_fixed.odp differ diff --git a/sd/qa/unit/export-tests.cxx b/sd/qa/unit/export-tests.cxx index 797bf36d6192..dd57ec01bf3d 100644 --- a/sd/qa/unit/export-tests.cxx +++ b/sd/qa/unit/export-tests.cxx @@ -92,6 +92,7 @@ public: void testTdf62176(); void testTransparentBackground(); void testEmbeddedPdf(); + void testAuthorField(); CPPUNIT_TEST_SUITE(SdExportTest); @@ -106,6 +107,7 @@ public: CPPUNIT_TEST(testTdf62176); CPPUNIT_TEST(testTransparentBackground); CPPUNIT_TEST(testEmbeddedPdf); + CPPUNIT_TEST(testAuthorField); CPPUNIT_TEST_SUITE_END(); @@ -552,6 +554,23 @@ void SdExportTest::testEmbeddedPdf() #endif } +void SdExportTest::testAuthorField() +{ + ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("/sd/qa/unit/data/odp/author_fixed.odp"), ODP); + + xDocShRef = saveAndReload( xDocShRef.get(), ODP ); + + uno::Reference< text::XTextField > xField = getTextFieldFromPage(0, 0, 0, 0, xDocShRef); + CPPUNIT_ASSERT_MESSAGE("Where is the text field?", xField.is() ); + + uno::Reference< beans::XPropertySet > xPropSet( xField, uno::UNO_QUERY_THROW ); + bool bFixed = false; + xPropSet->getPropertyValue("IsFixed") >>= bFixed; + CPPUNIT_ASSERT_MESSAGE("Author field is not fixed", bFixed); + + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdExportTest); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/xmloff/inc/txtfldi.hxx b/xmloff/inc/txtfldi.hxx index 106545c34503..ed154c72ffe0 100644 --- a/xmloff/inc/txtfldi.hxx +++ b/xmloff/inc/txtfldi.hxx @@ -234,6 +234,10 @@ protected: virtual void StartElement( const css::uno::Reference< css::xml::sax::XAttributeList> & xAttrList) override; + /// process attribute values + virtual void ProcessAttribute( sal_uInt16 nAttrToken, + const OUString& sAttrValue ) override; + /// prepare XTextField for insertion into document virtual void PrepareField( const css::uno::Reference< css::beans::XPropertySet> & xPropertySet) override; diff --git a/xmloff/source/text/txtflde.cxx b/xmloff/source/text/txtflde.cxx index 4692856b96e2..91dba974616d 100644 --- a/xmloff/source/text/txtflde.cxx +++ b/xmloff/source/text/txtflde.cxx @@ -1055,8 +1055,11 @@ void XMLTextFieldExport::ExportFieldHelper( switch (nToken) { case FIELD_ID_AUTHOR: // author field: fixed, field (sub-)type - ProcessBoolean(XML_FIXED, - GetBoolProperty(sPropertyIsFixed, rPropSet), true); + if (xPropSetInfo->hasPropertyByName(sPropertyIsFixed)) + { + GetExport().AddAttribute(XML_NAMESPACE_TEXT, XML_FIXED, + (GetBoolProperty(sPropertyIsFixed, rPropSet) ? XML_TRUE : XML_FALSE) ); + } ExportElement(MapAuthorFieldName(rPropSet), sPresentation); break; diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx index 4c2bcbf7a20f..e521e19eb982 100644 --- a/xmloff/source/text/txtfldi.cxx +++ b/xmloff/source/text/txtfldi.cxx @@ -680,6 +680,16 @@ void XMLAuthorFieldImportContext::StartElement( XMLTextFieldImportContext::StartElement(xAttrList); } +void XMLAuthorFieldImportContext::ProcessAttribute(sal_uInt16 nAttrToken, const OUString& sAttrValue) +{ + if(nAttrToken == XML_TOK_TEXTFIELD_FIXED) + { + bool bTmp(false); + if (::sax::Converter::convertBool(bTmp, sAttrValue)) + bFixed = bTmp; + } +} + void XMLAuthorFieldImportContext::PrepareField( const Reference<XPropertySet> & rPropSet) { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits