[Libreoffice-commits] .: sw/qa writerfilter/Library_rtftok.mk writerfilter/source

Miklos Vajna vmiklos at kemper.freedesktop.org
Wed May 9 05:45:57 PDT 2012


 sw/qa/extras/rtfexport/data/fdo49683.rtf       |    5 +++++
 sw/qa/extras/rtfexport/rtfexport.cxx           |   15 +++++++++++++++
 writerfilter/Library_rtftok.mk                 |    1 +
 writerfilter/source/rtftok/rtfdocumentimpl.cxx |    7 +++++++
 writerfilter/source/rtftok/rtfdocumentimpl.hxx |    1 +
 5 files changed, 29 insertions(+)

New commits:
commit 831b712d3da08f0050d2ee92c384ad8e6a2e461c
Author: Miklos Vajna <vmiklos at suse.cz>
Date:   Wed May 9 14:30:55 2012 +0200

    fdo#49683 implement RTF_KEYWORDS
    
    Use comphelper::string::convertCommaSeparated(), as done in
    RtfExport::WriteInfo().
    
    Change-Id: Iad4c3c57cf2e16c7256b9853cb1a6a0843463387

diff --git a/sw/qa/extras/rtfexport/data/fdo49683.rtf b/sw/qa/extras/rtfexport/data/fdo49683.rtf
new file mode 100644
index 0000000..c68aa05
--- /dev/null
+++ b/sw/qa/extras/rtfexport/data/fdo49683.rtf
@@ -0,0 +1,5 @@
+{\rtf1
+{\info
+{\keywords one, two}
+}
+\par }
diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx
index d33ec36..9f2cb18 100644
--- a/sw/qa/extras/rtfexport/rtfexport.cxx
+++ b/sw/qa/extras/rtfexport/rtfexport.cxx
@@ -28,6 +28,7 @@
 #include <com/sun/star/frame/XStorable.hpp>
 #include <com/sun/star/text/XTextDocument.hpp>
 #include <com/sun/star/view/XViewSettingsSupplier.hpp>
+#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
 
 #include <test/bootstrapfixture.hxx>
 #include <unotest/macros_test.hxx>
@@ -46,11 +47,13 @@ public:
     virtual void tearDown();
     void testZoom();
     void testFdo38176();
+    void testFdo49683();
 
     CPPUNIT_TEST_SUITE(Test);
 #if !defined(MACOSX) && !defined(WNT)
     CPPUNIT_TEST(testZoom);
     CPPUNIT_TEST(testFdo38176);
+    CPPUNIT_TEST(testFdo49683);
 #endif
     CPPUNIT_TEST_SUITE_END();
 
@@ -127,6 +130,18 @@ void Test::testFdo38176()
     CPPUNIT_ASSERT_EQUAL(9, getLength());
 }
 
+void Test::testFdo49683()
+{
+    roundtrip("fdo49683.rtf");
+
+    uno::Reference<document::XDocumentPropertiesSupplier> xDocumentPropertiesSupplier(mxComponent, uno::UNO_QUERY);
+    uno::Reference<document::XDocumentProperties> xDocumentProperties(xDocumentPropertiesSupplier->getDocumentProperties());
+    uno::Sequence<OUString> aKeywords(xDocumentProperties->getKeywords());
+    CPPUNIT_ASSERT_EQUAL(sal_Int32(2), aKeywords.getLength());
+    CPPUNIT_ASSERT_EQUAL(OUString("one"), aKeywords[0]);
+    CPPUNIT_ASSERT_EQUAL(OUString("two"), aKeywords[1]);
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(Test);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/Library_rtftok.mk b/writerfilter/Library_rtftok.mk
index b7df627..7354306 100644
--- a/writerfilter/Library_rtftok.mk
+++ b/writerfilter/Library_rtftok.mk
@@ -47,6 +47,7 @@ $(eval $(call gb_Library_add_defs,rtftok,\
 ))
 
 $(eval $(call gb_Library_use_libraries,rtftok,\
+	comphelper \
 	cppu \
 	cppuhelper \
 	msfilter \
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 957174e..93b2812 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -48,6 +48,7 @@
 #include <vcl/svapp.hxx>
 #include <filter/msfilter/util.hxx>
 #include <filter/msfilter/escherex.hxx>
+#include <comphelper/string.hxx>
 
 #include <doctok/sprmids.hxx> // NS_sprm namespace
 #include <doctok/resourceids.hxx> // NS_rtf namespace
@@ -931,6 +932,7 @@ void RTFDocumentImpl::text(OUString& rString)
         case DESTINATION_FORMFIELDLIST:
         case DESTINATION_DATAFIELD:
         case DESTINATION_AUTHOR:
+        case DESTINATION_KEYWORDS:
         case DESTINATION_OPERATOR:
         case DESTINATION_COMPANY:
         case DESTINATION_COMMENT:
@@ -1306,6 +1308,9 @@ int RTFDocumentImpl::dispatchDestination(RTFKeyword nKeyword)
         case RTF_AUTHOR:
             m_aStates.top().nDestinationState = DESTINATION_AUTHOR;
             break;
+        case RTF_KEYWORDS:
+            m_aStates.top().nDestinationState = DESTINATION_KEYWORDS;
+            break;
         case RTF_OPERATOR:
             m_aStates.top().nDestinationState = DESTINATION_OPERATOR;
             break;
@@ -3242,6 +3247,8 @@ int RTFDocumentImpl::popState()
         m_xDocumentProperties->setPrintDate(lcl_getDateTime(m_aStates));
     else if (m_aStates.top().nDestinationState == DESTINATION_AUTHOR && m_xDocumentProperties.is())
         m_xDocumentProperties->setAuthor(m_aStates.top().aDestinationText.makeStringAndClear());
+    else if (m_aStates.top().nDestinationState == DESTINATION_KEYWORDS && m_xDocumentProperties.is())
+        m_xDocumentProperties->setKeywords(comphelper::string::convertCommaSeparated(m_aStates.top().aDestinationText.makeStringAndClear()));
     else if (m_aStates.top().nDestinationState == DESTINATION_COMMENT && m_xDocumentProperties.is())
         m_xDocumentProperties->setGenerator(m_aStates.top().aDestinationText.makeStringAndClear());
     else if (m_aStates.top().nDestinationState == DESTINATION_OPERATOR
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.hxx b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
index 1c7b9ec..2e23b0d 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.hxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
@@ -100,6 +100,7 @@ namespace writerfilter {
             DESTINATION_REVISIONTIME,
             DESTINATION_PRINTTIME,
             DESTINATION_AUTHOR,
+            DESTINATION_KEYWORDS,
             DESTINATION_OPERATOR,
             DESTINATION_COMPANY,
             DESTINATION_COMMENT,


More information about the Libreoffice-commits mailing list