Kaydet (Commit) 5de40734 authored tarafından Rosemary Sebastian's avatar Rosemary Sebastian Kaydeden (comit) Rosemary Sebastian

Implement export and import of author field in fixed format

Change-Id: I1975bfcdc8436f2b05e2fab2a4c9c09838330b30
Reviewed-on: https://gerrit.libreoffice.org/33520Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarRosemary Sebastian <rosemaryseb8@gmail.com>
üst da3d56b0
......@@ -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;
......
......@@ -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();
......
......@@ -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;
......
......@@ -1067,8 +1067,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;
......
......@@ -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)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment