summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRosemary Sebastian <rosemaryseb8@gmail.com>2017-03-18 08:46:27 +0000
committerRosemary Sebastian <rosemaryseb8@gmail.com>2017-03-18 11:54:54 +0000
commit109210e5b71a4e0b6fcaae72be7ef8d7667f3708 (patch)
tree50fe7d607d490cc4065821d94f40f8f0db259c33
parent198b6c16e78b3462217c9d8a0429459abe885392 (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.cxx15
-rw-r--r--sd/qa/unit/data/odp/author_fixed.odpbin0 -> 10680 bytes
-rw-r--r--sd/qa/unit/export-tests.cxx19
-rw-r--r--xmloff/inc/txtfldi.hxx4
-rw-r--r--xmloff/source/text/txtflde.cxx7
-rw-r--r--xmloff/source/text/txtfldi.cxx10
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
new file mode 100644
index 000000000000..2e666ad17fee
--- /dev/null
+++ b/sd/qa/unit/data/odp/author_fixed.odp
Binary files 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)
{