From ae85b56a9a18657a57fd5033faff34e7ee4ff2f8 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Sun, 16 Jun 2013 13:21:38 +0200 Subject: Import/export RTF_REVISIONS File -> Properties -> Security -> Record Changes on the UI. Change-Id: I96d321f407abd33e15a4a133e6723d48efa5bc53 --- sw/qa/extras/rtfexport/data/record-changes.rtf | 3 +++ sw/qa/extras/rtfexport/rtfexport.cxx | 8 ++++++++ sw/source/filter/ww8/rtfexport.cxx | 3 +++ writerfilter/source/rtftok/rtfdocumentimpl.cxx | 3 +++ 4 files changed, 17 insertions(+) create mode 100644 sw/qa/extras/rtfexport/data/record-changes.rtf diff --git a/sw/qa/extras/rtfexport/data/record-changes.rtf b/sw/qa/extras/rtfexport/data/record-changes.rtf new file mode 100644 index 000000000000..c970891a1bfd --- /dev/null +++ b/sw/qa/extras/rtfexport/data/record-changes.rtf @@ -0,0 +1,3 @@ +{\rtf1\revisions +hello +\par } diff --git a/sw/qa/extras/rtfexport/rtfexport.cxx b/sw/qa/extras/rtfexport/rtfexport.cxx index 0605b82cb18d..7de0a4bdf68a 100644 --- a/sw/qa/extras/rtfexport/rtfexport.cxx +++ b/sw/qa/extras/rtfexport/rtfexport.cxx @@ -64,6 +64,7 @@ public: void testHyperlink(); void testTextFrameBorders(); void testTextframeGradient(); + void testRecordChanges(); CPPUNIT_TEST_SUITE(Test); #if !defined(MACOSX) && !defined(WNT) @@ -117,6 +118,7 @@ void Test::run() {"hyperlink.rtf", &Test::testHyperlink}, {"textframe-borders.rtf", &Test::testTextFrameBorders}, {"textframe-gradient.rtf", &Test::testTextframeGradient}, + {"record-changes.rtf", &Test::testRecordChanges}, }; // Don't test the first import of these, for some reason those tests fail const char* aBlacklist[] = { @@ -584,6 +586,12 @@ void Test::testTextframeGradient() CPPUNIT_ASSERT_EQUAL(awt::GradientStyle_AXIAL, aGradient.Style); } +void Test::testRecordChanges() +{ + // \revisions wasn't imported/exported. + CPPUNIT_ASSERT_EQUAL(true, getProperty(mxComponent, "RecordChanges")); +} + CPPUNIT_TEST_SUITE_REGISTRATION(Test); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/filter/ww8/rtfexport.cxx b/sw/source/filter/ww8/rtfexport.cxx index c98b78020505..a766e348b8ee 100644 --- a/sw/source/filter/ww8/rtfexport.cxx +++ b/sw/source/filter/ww8/rtfexport.cxx @@ -515,6 +515,9 @@ void RtfExport::ExportDocument_Impl() Strm() << OOO_STRING_SVTOOLS_RTF_VIEWSCALE; OutULong(pViewShell->GetViewOptions()->GetZoom()); } + // Record changes? + if (nsRedlineMode_t::REDLINE_ON & mnRedlineMode) + Strm() << OOO_STRING_SVTOOLS_RTF_REVISIONS; // Page description WritePageDescTable(); diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx index a2bf11e53b00..8bd05dc5d2b8 100644 --- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx +++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx @@ -2655,6 +2655,9 @@ int RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword) case RTF_MNOR: m_bMathNor = true; break; + case RTF_REVISIONS: + m_aSettingsTableSprms.set(NS_ooxml::LN_CT_Settings_trackRevisions, RTFValue::Pointer_t(new RTFValue(1))); + break; default: { SAL_INFO("writerfilter", "TODO handle flag '" << lcl_RtfToString(nKeyword) << "'"); -- cgit v1.2.1