[Libreoffice-commits] core.git: editeng/source sd/qa xmloff/inc xmloff/source

Rosemary Sebastian rosemary.seb8 at gmail.com
Fri Mar 10 04:48:34 UTC 2017


 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 5de40734af30a8b897c6c5b7f681759e36a25557
Author: Rosemary Sebastian <rosemary.seb8 at gmail.com>
Date:   Wed Jan 25 12:56:47 2017 +0530

    Implement export and import of author field in fixed format
    
    Change-Id: I1975bfcdc8436f2b05e2fab2a4c9c09838330b30
    Reviewed-on: https://gerrit.libreoffice.org/33520
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Rosemary Sebastian <rosemaryseb8 at gmail.com>

diff --git a/editeng/source/items/flditem.cxx b/editeng/source/items/flditem.cxx
index 1d5ba3f..6904255 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 0000000..2e666ad
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 797bf36..dd57ec0 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 106545c..ed154c7 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 4037bab..72dc79a 100644
--- a/xmloff/source/text/txtflde.cxx
+++ b/xmloff/source/text/txtflde.cxx
@@ -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;
 
diff --git a/xmloff/source/text/txtfldi.cxx b/xmloff/source/text/txtfldi.cxx
index 909cebb..0e5c2f6 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)
 {


More information about the Libreoffice-commits mailing list