diff options
author | Rosemary Sebastian <rosemaryseb8@gmail.com> | 2017-03-18 08:46:27 +0000 |
---|---|---|
committer | Rosemary Sebastian <rosemaryseb8@gmail.com> | 2017-03-18 11:54:54 +0000 |
commit | 109210e5b71a4e0b6fcaae72be7ef8d7667f3708 (patch) | |
tree | 50fe7d607d490cc4065821d94f40f8f0db259c33 | |
parent | 198b6c16e78b3462217c9d8a0429459abe885392 (diff) |
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 <ci@libreoffice.org>
Reviewed-by: Rosemary Sebastian <rosemaryseb8@gmail.com>
Tested-by: Rosemary Sebastian <rosemaryseb8@gmail.com>
-rw-r--r-- | editeng/source/items/flditem.cxx | 15 | ||||
-rw-r--r-- | sd/qa/unit/data/odp/author_fixed.odp | bin | 0 -> 10680 bytes | |||
-rw-r--r-- | sd/qa/unit/export-tests.cxx | 19 | ||||
-rw-r--r-- | xmloff/inc/txtfldi.hxx | 4 | ||||
-rw-r--r-- | xmloff/source/text/txtflde.cxx | 7 | ||||
-rw-r--r-- | xmloff/source/text/txtfldi.cxx | 10 |
6 files changed, 47 insertions, 8 deletions
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 Binary files differnew file mode 100644 index 000000000000..2e666ad17fee --- /dev/null +++ b/sd/qa/unit/data/odp/author_fixed.odp 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) { |