summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Co <rattles2013@gmail.com>2014-02-03 13:03:42 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2014-02-11 14:41:56 +0100
commit88fbcba044878173f2458eede798f03de25f9cb9 (patch)
tree8ac19649a3af81bad1908c52aa6f1fb08fe04511
parent94429caa64a1dca701f0b120f669bdd561b6ced9 (diff)
Add 'Track Changes Handler' for 'Extra' redlines
This handler will process 'track changes' information for 'extra' redline objects (such as 'table row insert\delete' redlines) Reviewed on: https://gerrit.libreoffice.org/7802 Change-Id: I8dd0bd70dbdcb3cb7eae76595957817de08c66fc
-rw-r--r--writerfilter/Library_writerfilter.mk1
-rw-r--r--writerfilter/source/dmapper/TrackChangesHandler.cxx100
-rw-r--r--writerfilter/source/dmapper/TrackChangesHandler.hxx48
3 files changed, 149 insertions, 0 deletions
diff --git a/writerfilter/Library_writerfilter.mk b/writerfilter/Library_writerfilter.mk
index 71d798e66091..e57f0b619fbc 100644
--- a/writerfilter/Library_writerfilter.mk
+++ b/writerfilter/Library_writerfilter.mk
@@ -107,6 +107,7 @@ $(eval $(call gb_Library_add_exception_objects,writerfilter,\
writerfilter/source/dmapper/GraphicImport \
writerfilter/source/dmapper/LatentStyleHandler \
writerfilter/source/dmapper/MeasureHandler \
+ writerfilter/source/dmapper/TrackChangesHandler \
writerfilter/source/dmapper/ModelEventListener \
writerfilter/source/dmapper/NumberingManager \
writerfilter/source/dmapper/OLEHandler \
diff --git a/writerfilter/source/dmapper/TrackChangesHandler.cxx b/writerfilter/source/dmapper/TrackChangesHandler.cxx
new file mode 100644
index 000000000000..d34dca304532
--- /dev/null
+++ b/writerfilter/source/dmapper/TrackChangesHandler.cxx
@@ -0,0 +1,100 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+#include <TrackChangesHandler.hxx>
+#include <PropertyMap.hxx>
+#include <ConversionHelper.hxx>
+#include <ooxml/resourceids.hxx>
+#include <ooxml/OOXMLFastTokens.hxx>
+#include "dmapperLoggers.hxx"
+
+namespace writerfilter {
+namespace dmapper {
+
+using namespace ::com::sun::star;
+
+
+TrackChangesHandler::TrackChangesHandler( sal_Int32 nToken ) :
+LoggedProperties(dmapper_logger, "TrackChangesHandler")
+{
+ m_pRedlineParams = RedlineParamsPtr( new RedlineParams() );
+ m_pRedlineParams->m_nToken = nToken;
+}
+
+
+TrackChangesHandler::~TrackChangesHandler()
+{
+}
+
+
+void TrackChangesHandler::lcl_attribute(Id rName, Value & rVal)
+{
+ sal_Int32 nIntValue = rVal.getInt();
+ OUString sStringValue = rVal.getString();
+ (void)rName;
+ switch( rName )
+ {
+ case NS_ooxml::LN_CT_TrackChange_author:
+ {
+ m_pRedlineParams->m_sAuthor = sStringValue;
+ }
+ break;
+ case NS_ooxml::LN_CT_TrackChange_date:
+ {
+ m_pRedlineParams->m_sDate = sStringValue;
+ }
+ break;
+ case NS_ooxml::LN_CT_Markup_id:
+ {
+ m_pRedlineParams->m_nId = nIntValue;
+ }
+ break;
+ default:
+ OSL_FAIL( "unknown attribute");
+ }
+}
+
+uno::Sequence<beans::PropertyValue> TrackChangesHandler::getRedlineProperties() const
+{
+ uno::Sequence< beans::PropertyValue > aRedlineProperties(3);
+ beans::PropertyValue* pRedlineProperties = aRedlineProperties.getArray();
+
+ PropertyNameSupplier& rPropNameSupplier = PropertyNameSupplier::GetPropertyNameSupplier();
+
+ OUString sType;
+ switch ( m_pRedlineParams->m_nToken & 0xffff )
+ {
+ case ooxml::OOXML_tableRowInsert:
+ sType = rPropNameSupplier.GetName( PROP_TABLE_ROW_INSERT );
+ break;
+ case ooxml::OOXML_tableRowDelete:
+ sType = rPropNameSupplier.GetName( PROP_TABLE_ROW_DELETE );
+ break;
+ }
+
+ pRedlineProperties[0].Name = rPropNameSupplier.GetName( PROP_REDLINE_TYPE );
+ pRedlineProperties[0].Value <<= sType;
+ pRedlineProperties[1].Name = rPropNameSupplier.GetName( PROP_REDLINE_AUTHOR );
+ pRedlineProperties[1].Value <<= m_pRedlineParams->m_sAuthor;
+ pRedlineProperties[2].Name = rPropNameSupplier.GetName( PROP_REDLINE_DATE_TIME );
+ pRedlineProperties[2].Value <<= ConversionHelper::ConvertDateStringToDateTime( m_pRedlineParams->m_sDate );
+ //pRedlineProperties[3].Name = rPropNameSupplier.GetName( PROP_REDLINE_REVERT_PROPERTIES );
+ //pRedlineProperties[3].Value <<= pRedline->m_aRevertProperties;
+
+ return aRedlineProperties;
+}
+
+void TrackChangesHandler::lcl_sprm(Sprm & rSprm)
+{
+ (void)rSprm;
+}
+
+} //namespace dmapper
+} //namespace writerfilter
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/writerfilter/source/dmapper/TrackChangesHandler.hxx b/writerfilter/source/dmapper/TrackChangesHandler.hxx
new file mode 100644
index 000000000000..4f1e34ccf990
--- /dev/null
+++ b/writerfilter/source/dmapper/TrackChangesHandler.hxx
@@ -0,0 +1,48 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+#ifndef INCLUDED_TRACKCHANGESHANDLER_HXX
+#define INCLUDED_TRACKCHANGESHANDLER_HXX
+
+#include <WriterFilterDllApi.hxx>
+#include <resourcemodel/LoggedResources.hxx>
+#include <boost/shared_ptr.hpp>
+#include <com/sun/star/beans/PropertyValue.hpp>
+#include <DomainMapper_Impl.hxx>
+
+namespace writerfilter {
+namespace dmapper
+{
+/** Handler for sprms that contain 'track changes' attributes
+ - Author
+ - Date
+ - ID
+ (This class is based on work done in 'MeasureHandler')
+ */
+class TrackChangesHandler : public LoggedProperties
+{
+ RedlineParamsPtr m_pRedlineParams;
+
+ // Properties
+ virtual void lcl_attribute(Id Name, Value & val);
+ virtual void lcl_sprm(Sprm & sprm);
+
+public:
+ TrackChangesHandler( sal_Int32 nToken );
+ virtual ~TrackChangesHandler();
+
+ // Compute the UNO properties for the track changes object based on the received tokens.
+ com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> getRedlineProperties() const;
+};
+typedef boost::shared_ptr
+ < TrackChangesHandler > TrackChangesHandlerPtr;
+}}
+
+#endif //
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */