Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : */
9 : #include <TrackChangesHandler.hxx>
10 : #include <PropertyMap.hxx>
11 : #include <ConversionHelper.hxx>
12 : #include <ooxml/resourceids.hxx>
13 : #include <ooxml/OOXMLFastTokens.hxx>
14 : #include "dmapperLoggers.hxx"
15 :
16 : namespace writerfilter {
17 : namespace dmapper {
18 :
19 : using namespace ::com::sun::star;
20 :
21 :
22 34 : TrackChangesHandler::TrackChangesHandler( sal_Int32 nToken ) :
23 34 : LoggedProperties(dmapper_logger, "TrackChangesHandler")
24 : {
25 34 : m_pRedlineParams = RedlineParamsPtr( new RedlineParams() );
26 34 : m_pRedlineParams->m_nToken = nToken;
27 34 : }
28 :
29 :
30 68 : TrackChangesHandler::~TrackChangesHandler()
31 : {
32 68 : }
33 :
34 :
35 98 : void TrackChangesHandler::lcl_attribute(Id rName, Value & rVal)
36 : {
37 98 : sal_Int32 nIntValue = rVal.getInt();
38 98 : OUString sStringValue = rVal.getString();
39 : (void)rName;
40 98 : switch( rName )
41 : {
42 : case NS_ooxml::LN_CT_TrackChange_author:
43 : {
44 34 : m_pRedlineParams->m_sAuthor = sStringValue;
45 : }
46 34 : break;
47 : case NS_ooxml::LN_CT_TrackChange_date:
48 : {
49 30 : m_pRedlineParams->m_sDate = sStringValue;
50 : }
51 30 : break;
52 : case NS_ooxml::LN_CT_Markup_id:
53 : {
54 34 : m_pRedlineParams->m_nId = nIntValue;
55 : }
56 34 : break;
57 : default:
58 : OSL_FAIL( "unknown attribute");
59 98 : }
60 98 : }
61 :
62 34 : uno::Sequence<beans::PropertyValue> TrackChangesHandler::getRedlineProperties() const
63 : {
64 34 : uno::Sequence< beans::PropertyValue > aRedlineProperties(3);
65 34 : beans::PropertyValue* pRedlineProperties = aRedlineProperties.getArray();
66 :
67 34 : PropertyNameSupplier& rPropNameSupplier = PropertyNameSupplier::GetPropertyNameSupplier();
68 :
69 68 : OUString sType;
70 34 : switch ( m_pRedlineParams->m_nToken & 0xffff )
71 : {
72 : case OOXML_tableRowInsert:
73 3 : sType = rPropNameSupplier.GetName( PROP_TABLE_ROW_INSERT );
74 3 : break;
75 : case OOXML_tableRowDelete:
76 25 : sType = rPropNameSupplier.GetName( PROP_TABLE_ROW_DELETE );
77 25 : break;
78 : case OOXML_tableCellInsert:
79 3 : sType = rPropNameSupplier.GetName( PROP_TABLE_CELL_INSERT );
80 3 : break;
81 : case OOXML_tableCellDelete:
82 3 : sType = rPropNameSupplier.GetName( PROP_TABLE_CELL_DELETE );
83 3 : break;
84 : }
85 :
86 34 : pRedlineProperties[0].Name = rPropNameSupplier.GetName( PROP_REDLINE_TYPE );
87 34 : pRedlineProperties[0].Value <<= sType;
88 34 : pRedlineProperties[1].Name = rPropNameSupplier.GetName( PROP_REDLINE_AUTHOR );
89 34 : pRedlineProperties[1].Value <<= m_pRedlineParams->m_sAuthor;
90 34 : pRedlineProperties[2].Name = rPropNameSupplier.GetName( PROP_REDLINE_DATE_TIME );
91 34 : pRedlineProperties[2].Value <<= ConversionHelper::ConvertDateStringToDateTime( m_pRedlineParams->m_sDate );
92 : //pRedlineProperties[3].Name = rPropNameSupplier.GetName( PROP_REDLINE_REVERT_PROPERTIES );
93 : //pRedlineProperties[3].Value <<= pRedline->m_aRevertProperties;
94 :
95 68 : return aRedlineProperties;
96 : }
97 :
98 0 : void TrackChangesHandler::lcl_sprm(Sprm & rSprm)
99 : {
100 : (void)rSprm;
101 0 : }
102 :
103 : } //namespace dmapper
104 : } //namespace writerfilter
105 :
106 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|