diff options
author | Miklos Vajna <vmiklos@suse.cz> | 2012-05-09 14:30:55 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@suse.cz> | 2012-05-09 14:45:59 +0200 |
commit | 831b712d3da08f0050d2ee92c384ad8e6a2e461c (patch) | |
tree | 06ae80175a681dd42baef793717e5ad1b1f9f93a | |
parent | f4f526e08cfe9f938aa3422da80dc60f2e1ec3da (diff) |
fdo#49683 implement RTF_KEYWORDS
Use comphelper::string::convertCommaSeparated(), as done in
RtfExport::WriteInfo().
Change-Id: Iad4c3c57cf2e16c7256b9853cb1a6a0843463387
-rw-r--r-- | sw/qa/extras/rtfexport/data/fdo49683.rtf | 5 | ||||
-rw-r--r-- | sw/qa/extras/rtfexport/rtfexport.cxx | 15 | ||||
-rw-r--r-- | writerfilter/Library_rtftok.mk | 1 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfdocumentimpl.cxx | 7 | ||||
-rw-r--r-- | writerfilter/source/rtftok/rtfdocumentimpl.hxx | 1 |
5 files changed, 29 insertions, 0 deletions
diff --git a/sw/qa/extras/rtfexport/data/fdo49683.rtf b/sw/qa/extras/rtfexport/data/fdo49683.rtf new file mode 100644 index 000000000000..c68aa059f013 --- /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 d33ec3680928..9f2cb1854ab3 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 b7df627bdffe..73543062e690 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 957174ee37da..93b2812bfdc6 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 1c7b9ecc9d32..2e23b0d79a26 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, |