ooo-build r15517 - trunk/patches/dev300



Author: cbosdo
Date: Tue Mar 10 16:49:29 2009
New Revision: 15517
URL: http://svn.gnome.org/viewvc/ooo-build?rev=15517&view=rev

Log:
docx import fixes for redlines and settings


Added:
   trunk/patches/dev300/sw-docx-import-redlines.diff
   trunk/patches/dev300/writerfilter-docx-import-redlines.diff
Modified:
   trunk/patches/dev300/apply

Modified: trunk/patches/dev300/apply
==============================================================================
--- trunk/patches/dev300/apply	(original)
+++ trunk/patches/dev300/apply	Tue Mar 10 16:49:29 2009
@@ -1965,6 +1965,8 @@
 sw-docx-import-tables.diff, i#90093, cbosdo
 writerfilter-source-dmapper-domainmapper-debug.diff
 writerfilter-docx-import-graphics.diff, i#96021, i#97645, cbosdo
+writerfilter-docx-import-redlines.diff, i#91883, n#478562, cbosdo
+sw-docx-import-redlines.diff, i#91883, n#478562, cbosdo
 
 buildfix-oox-depends-on-unotools.diff
 

Added: trunk/patches/dev300/sw-docx-import-redlines.diff
==============================================================================
--- (empty file)
+++ trunk/patches/dev300/sw-docx-import-redlines.diff	Tue Mar 10 16:49:29 2009
@@ -0,0 +1,64 @@
+diff --git sw/source/core/doc/docredln.cxx sw/source/core/doc/docredln.cxx
+index fd13119..86b6267 100644
+--- sw/source/core/doc/docredln.cxx
++++ sw/source/core/doc/docredln.cxx
+@@ -312,6 +312,7 @@ bool SwDoc::AppendRedline( SwRedline* pNewRedl, bool bCallDelete )
+ #ifndef PRODUCT
+     SwRedline aCopy( *pNewRedl );
+ #endif
++    bool bError = true;
+ 	_CHECK_REDLINE( this )
+ 
+ 	if( IsRedlineOn() && !IsShowOriginal( eRedlineMode ) &&
+@@ -431,6 +432,7 @@ bool SwDoc::AppendRedline( SwRedline* pNewRedl, bool bCallDelete )
+ 								pRedlineTbl->Insert( pRedl );
+ 							}
+ 
++                            bError = false;
+ 							bDelete = true;
+ 						}
+ 						else if( (( POS_BEFORE == eCmpPos &&
+@@ -446,6 +448,7 @@ bool SwDoc::AppendRedline( SwRedline* pNewRedl, bool bCallDelete )
+ 							pRedlineTbl->Remove( n );
+ 							pRedlineTbl->Insert( pRedl );
+ 
++                            bError = false;
+ 							bDelete = true;
+ 						}
+ 						else if ( POS_OUTSIDE == eCmpPos )
+@@ -1108,7 +1111,8 @@ bool SwDoc::AppendRedline( SwRedline* pNewRedl, bool bCallDelete )
+ 
+ 					case POS_EQUAL:
+ 					case POS_INSIDE:
+-						delete pNewRedl, pNewRedl = 0;
++                        // TODO Check if there is any side effect
++						//delete pNewRedl, pNewRedl = 0;
+ 						break;
+ 
+ 					case POS_OUTSIDE:
+@@ -1271,7 +1275,7 @@ bool SwDoc::AppendRedline( SwRedline* pNewRedl, bool bCallDelete )
+ 	}
+ 	_CHECK_REDLINE( this )
+ 
+-	return 0 != pNewRedl;
++	return ( 0 != pNewRedl ) || !bError;
+ }
+ 
+ void SwDoc::CompressRedlines()
+diff --git sw/source/core/unocore/unocrsrhelper.cxx sw/source/core/unocore/unocrsrhelper.cxx
+index 89ca76b..ea7bdc4 100644
+--- sw/source/core/unocore/unocrsrhelper.cxx
++++ sw/source/core/unocore/unocrsrhelper.cxx
+@@ -1015,9 +1015,11 @@ void makeRedline( SwPaM& rPaM,
+     }
+ 
+     SwRedline* pRedline = new SwRedline( aRedlineData, rPaM );
++    RedlineMode_t nPrevMode = pRedlineAccess->GetRedlineMode( );
++
+     pRedlineAccess->SetRedlineMode_intern(nsRedlineMode_t::REDLINE_ON);
+     bool bRet = pRedlineAccess->AppendRedline( pRedline, false );
+-    pRedlineAccess->SetRedlineMode_intern(nsRedlineMode_t::REDLINE_NONE);
++    pRedlineAccess->SetRedlineMode_intern( nPrevMode );
+     if( !bRet )
+         throw lang::IllegalArgumentException();
+ }

Added: trunk/patches/dev300/writerfilter-docx-import-redlines.diff
==============================================================================
--- (empty file)
+++ trunk/patches/dev300/writerfilter-docx-import-redlines.diff	Tue Mar 10 16:49:29 2009
@@ -0,0 +1,525 @@
+diff --git writerfilter/source/dmapper/DomainMapper.cxx writerfilter/source/dmapper/DomainMapper.cxx
+index 6129cee..67bedbd 100644
+--- writerfilter/source/dmapper/DomainMapper.cxx
++++ writerfilter/source/dmapper/DomainMapper.cxx
+@@ -176,6 +176,10 @@ DomainMapper::~DomainMapper()
+             uno::Reference< document::XEventBroadcaster > xBroadcaster(xIndexesSupplier, uno::UNO_QUERY);
+             xBroadcaster->addEventListener(uno::Reference< document::XEventListener >(new ModelEventListener));
+         }
++
++
++        // Apply the document settings after everything else
++        m_pImpl->GetSettingsTable()->ApplyProperties( m_pImpl->GetTextDocument( ) );
+     }
+     catch( const uno::Exception& rEx )
+     {
+@@ -2143,6 +2147,9 @@ void DomainMapper::attribute(Id nName, Value & val)
+         case NS_ooxml::LN_CT_Color_themeShade:
+             //unsupported
+         break;
++    case NS_ooxml::LN_endtrackchange:
++        m_pImpl->ResetRedlineProperties( );
++    break;
+         default:
+             {
+ #if OSL_DEBUG_LEVEL > 0
+@@ -4032,16 +4039,16 @@ void DomainMapper::sprm( Sprm& rSprm, PropertyMapPtr rContext, SprmType eSprmTyp
+         }
+     }
+     break;
++    case NS_ooxml::LN_paratrackchange:
++        m_pImpl->StartParaChange( );
+     case NS_ooxml::LN_trackchange:
+         /* WRITERFILTERSTATUS: done: 100, planned: 5, spent: 0 */
+     case NS_ooxml::LN_EG_RPrContent_rPrChange:
+         /* WRITERFILTERSTATUS: done: 100, planned: 5, spent: 0 */
+     {
++        m_pImpl->AddNewRedline( );
+         resolveSprmProps( rSprm );
+         // now the properties author, date and id should be available
+-        ::rtl::OUString sAuthor = m_pImpl->GetCurrentRedlineAuthor();
+-        ::rtl::OUString sDate = m_pImpl->GetCurrentRedlineDate();
+-        ::rtl::OUString sId = m_pImpl->GetCurrentRedlineId();
+         sal_Int32 nToken = m_pImpl->GetCurrentRedlineToken();
+         switch( nToken & 0xffff )
+         {
+@@ -4050,6 +4057,7 @@ void DomainMapper::sprm( Sprm& rSprm, PropertyMapPtr rContext, SprmType eSprmTyp
+             case ooxml::OOXML_del : break;
+             default: OSL_ENSURE( false, "redline token other than mod, ins or del" );
+         }
++        m_pImpl->EndParaChange( );
+     }
+     break;
+     case NS_ooxml::LN_CT_RPrChange_rPr:
+@@ -4500,6 +4508,9 @@ void DomainMapper::table(Id name, writerfilter::Reference<Table>::Pointer_t ref)
+     case NS_ooxml::LN_THEMETABLE:
+         ref->resolve ( *m_pImpl->GetThemeTable() );
+     break;
++    case NS_ooxml::LN_SETTINGS:
++        ref->resolve( *m_pImpl->GetSettingsTable( ) );
++    break;
+     default:
+         OSL_ENSURE( false, "which table is to be filled here?");
+     }
+diff --git writerfilter/source/dmapper/DomainMapper_Impl.cxx writerfilter/source/dmapper/DomainMapper_Impl.cxx
+index ee73b1f..729be7d 100644
+--- writerfilter/source/dmapper/DomainMapper_Impl.cxx
++++ writerfilter/source/dmapper/DomainMapper_Impl.cxx
+@@ -75,7 +75,6 @@
+ #endif
+ #include <ooxml/OOXMLFastTokens.hxx>
+ 
+-
+ #include <map>
+ 
+ using namespace ::com::sun::star;
+@@ -401,7 +400,7 @@ DomainMapper_Impl::DomainMapper_Impl(
+         m_bLineNumberingSet( false ),
+         m_bIsInFootnoteProperties( true ),
+         m_bIsCustomFtnMark( false ),
+-        n_CurrentRedlineToken( ooxml::OOXML_mod )
++        m_bIsParaChange( false )
+ {
+     GetBodyText();
+     uno::Reference< text::XTextAppend > xBodyTextAppend = uno::Reference< text::XTextAppend >( m_xBodyText, uno::UNO_QUERY );
+@@ -728,10 +727,10 @@ void DomainMapper_Impl::deferBreak( BreakType deferredBreakType)
+     switch (deferredBreakType)
+     {
+     case COLUMN_BREAK:
+-        m_bIsColumnBreakDeferred = true;
++            m_bIsColumnBreakDeferred = true;
+         break;
+     case PAGE_BREAK:
+-        m_bIsPageBreakDeferred = true;
++            m_bIsPageBreakDeferred = true;
+         break;
+     default:
+         return;
+@@ -1048,10 +1047,13 @@ void DomainMapper_Impl::finishParagraph( PropertyMapPtr pPropertyMap )
+                 uno::Reference< text::XTextRange > xTextRange =
+                     xTextAppend->finishParagraph( aProperties );
+                 m_TableManager.handle(xTextRange);
+-            }
+-            else
+-            {
+ 
++                // Get the end of paragraph character inserted
++                uno::Reference< text::XTextCursor > xCur = xTextRange->getText( )->createTextCursor( );
++                xCur->gotoEnd( false );
++                xCur->goLeft( 1 , true );
++                uno::Reference< text::XTextRange > xParaEnd( xCur, uno::UNO_QUERY );
++                CheckParaRedline( xParaEnd );
+             }
+             if( !bKeepLastParagraphProperties )
+                 rAppendContext.pLastParagraphProperties = pToBeSavedProperties;
+@@ -1102,35 +1104,7 @@ void DomainMapper_Impl::appendTextPortion( const ::rtl::OUString& rString, Prope
+             uno::Reference< text::XTextRange > xTextRange =
+                 xTextAppend->appendTextPortion
+                 (rString, pPropertyMap->GetPropertyValues());
+-            if( m_CurrentRedlineDate.getLength() )
+-            {
+-                try
+-                {
+-                    ::rtl::OUString sType;
+-                    PropertyNameSupplier& rPropNameSupplier = PropertyNameSupplier::GetPropertyNameSupplier();
+-                    switch(n_CurrentRedlineToken & 0xffff)
+-                    {
+-                        case ooxml::OOXML_mod : sType = rPropNameSupplier.GetName( PROP_FORMAT ); break;
+-                        case ooxml::OOXML_ins : sType = rPropNameSupplier.GetName( PROP_INSERT ); break;
+-                        case ooxml::OOXML_del : sType = rPropNameSupplier.GetName( PROP_DELETE ); break;
+-                    }
+-                    uno::Reference< text::XRedline > xRedline( xTextRange, uno::UNO_QUERY_THROW );
+-                    beans::PropertyValues aRedlineProperties( 2 );
+-                    beans::PropertyValue* pRedlineProperties = aRedlineProperties.getArray();
+-                    pRedlineProperties[0].Name = rPropNameSupplier.GetName( PROP_REDLINE_AUTHOR );
+-                    pRedlineProperties[0].Value <<= m_CurrentRedlineAuthor;
+-                    pRedlineProperties[1].Name = rPropNameSupplier.GetName( PROP_REDLINE_DATE_TIME );
+-                    pRedlineProperties[1].Value <<= lcl_DateStringToDateTime( m_CurrentRedlineDate );
+-                    xRedline->makeRedline( sType, aRedlineProperties);
+-
+-                }
+-                catch( const uno::Exception& rEx )
+-                {
+-                    (void)rEx;
+-                    OSL_ENSURE( false, "Exception in makeRedline" );
+-                }
+-                ResetRedlineProperties();
+-            }
++            CheckRedline( xTextRange );
+ 
+             //m_TableManager.handle(xTextRange);
+         }
+@@ -1371,9 +1345,11 @@ void DomainMapper_Impl::PushFootOrEndnote( bool bIsFootnote )
+             aFontProps->Insert(PROP_CHAR_FONT_NAME, true, uno::makeAny( pTopContext->GetFootnoteFontName()  ));
+             aFontProperties = aFontProps->GetPropertyValues();
+         }
+-
+         appendTextContent( uno::Reference< text::XTextContent >( xFootnoteText, uno::UNO_QUERY_THROW ), aFontProperties );
+         m_aTextAppendStack.push(uno::Reference< text::XTextAppend >( xFootnoteText, uno::UNO_QUERY_THROW ));
++
++        // Redlines for the footnote anchor
++        CheckRedline( xFootnote->getAnchor( ) );
+     }
+     catch( uno::Exception& )
+     {
+@@ -1381,6 +1357,78 @@ void DomainMapper_Impl::PushFootOrEndnote( bool bIsFootnote )
+     }
+ }
+ 
++void DomainMapper_Impl::CreateRedline( uno::Reference< text::XTextRange > xRange, RedlineParamsPtr pRedline )
++{
++    if ( pRedline.get( ) )
++    {
++#if DEBUG
++        clog << "REDLINE: Writing redline" << endl;
++#endif
++        try
++        {
++            ::rtl::OUString sType;
++            PropertyNameSupplier & rPropNameSupplier = PropertyNameSupplier::GetPropertyNameSupplier(  );
++            switch ( pRedline->m_nToken & 0xffff )
++            {
++            case ooxml::OOXML_mod:
++                sType = rPropNameSupplier.GetName( PROP_FORMAT );
++                break;
++            case ooxml::OOXML_ins:
++                sType = rPropNameSupplier.GetName( PROP_INSERT );
++                break;
++            case ooxml::OOXML_del:
++                sType = rPropNameSupplier.GetName( PROP_DELETE );
++                break;
++            }
++            uno::Reference < text::XRedline > xRedline( xRange, uno::UNO_QUERY_THROW );
++            beans::PropertyValues aRedlineProperties( 2 );
++            beans::PropertyValue * pRedlineProperties = aRedlineProperties.getArray(  );
++            pRedlineProperties[0].Name = rPropNameSupplier.GetName( PROP_REDLINE_AUTHOR );
++            pRedlineProperties[0].Value <<= pRedline->m_sAuthor;
++            pRedlineProperties[1].Name = rPropNameSupplier.GetName( PROP_REDLINE_DATE_TIME );
++            pRedlineProperties[1].Value <<= lcl_DateStringToDateTime( pRedline->m_sDate );
++            
++            xRedline->makeRedline( sType, aRedlineProperties );
++        }
++        catch( const uno::Exception & rEx )
++        {
++            ( void ) rEx;
++            OSL_ENSURE( false, "Exception in makeRedline" );
++        }
++    }
++}
++
++void DomainMapper_Impl::CheckParaRedline( uno::Reference< text::XTextRange > xRange )
++{
++    if ( m_pParaRedline.get( ) )
++    {
++        CreateRedline( xRange, m_pParaRedline );
++        ResetParaRedline( ); 
++    }
++}
++
++void DomainMapper_Impl::CheckRedline( uno::Reference< text::XTextRange > xRange )
++{
++    for ( int i = 0, length = m_aRedlines.size( ); i < length; i++ )
++    {
++        RedlineParamsPtr pCurrent( m_aRedlines[i] );
++        CreateRedline( xRange, pCurrent );
++        
++        if ( pCurrent.get( ) && ( pCurrent->m_nToken & 0xffff ) == ooxml::OOXML_mod )
++            ResetRedlineProperties(  );
++    }
++}
++
++void DomainMapper_Impl::StartParaChange( )
++{
++    m_bIsParaChange = true;
++}
++
++void DomainMapper_Impl::EndParaChange( )
++{
++    m_bIsParaChange = false;
++}
++
+ /*-- 22.12.2008 13:45:15---------------------------------------------------
+ 
+   -----------------------------------------------------------------------*/
+@@ -3535,14 +3583,98 @@ bool DomainMapper_Impl::ExecuteFrameConversion()
+     }
+     return bRet;
+ }
++
++void DomainMapper_Impl::AddNewRedline(  )
++{
++    RedlineParamsPtr pNew( new RedlineParams );
++    pNew->m_nToken = ooxml::OOXML_mod;
++    if ( !m_bIsParaChange ) 
++    {
++#if DEBUG
++    clog << "REDLINE: Adding a new redline to stack" << endl;
++#endif
++        m_aRedlines.push_back( pNew );
++    }
++    else
++    {
++#if DEBUG
++    clog << "REDLINE: Setting a new paragraph redline" << endl;
++#endif
++        m_pParaRedline.swap( pNew );
++    }
++}
++
++RedlineParamsPtr DomainMapper_Impl::GetTopRedline(  )
++{
++    RedlineParamsPtr pResult;
++    if ( !m_bIsParaChange && m_aRedlines.size(  ) > 0 )
++        pResult = m_aRedlines.back(  );
++    else if ( m_bIsParaChange )
++        pResult = m_pParaRedline;
++    return pResult;
++}
++
++sal_Int32 DomainMapper_Impl::GetCurrentRedlineToken(  )
++{
++    sal_Int32 nToken;
++    RedlineParamsPtr pCurrent = GetTopRedline(  );
++    if ( pCurrent.get(  ) )
++        nToken = pCurrent->m_nToken;
++    return nToken;
++}
++
++void DomainMapper_Impl::SetCurrentRedlineAuthor( rtl::OUString sAuthor )
++{
++    RedlineParamsPtr pCurrent = GetTopRedline(  );
++    if ( pCurrent.get(  ) )
++        pCurrent->m_sAuthor = sAuthor;
++}
++
++void DomainMapper_Impl::SetCurrentRedlineDate( rtl::OUString sDate )
++{
++    RedlineParamsPtr pCurrent = GetTopRedline(  );
++    if ( pCurrent.get(  ) )
++        pCurrent->m_sDate = sDate;
++}
++
++void DomainMapper_Impl::SetCurrentRedlineId( rtl::OUString sId )
++{
++    RedlineParamsPtr pCurrent = GetTopRedline(  );
++    if ( pCurrent.get(  ) )
++        pCurrent->m_sId = sId;
++}
++
++void DomainMapper_Impl::SetCurrentRedlineToken( sal_Int32 nToken )
++{
++    RedlineParamsPtr pCurrent = GetTopRedline(  );
++    if ( pCurrent.get(  ) )
++        pCurrent->m_nToken = nToken;
++}
++
+ /*-- 19.03.2008 11:35:38---------------------------------------------------
+ 
+   -----------------------------------------------------------------------*/
+-void DomainMapper_Impl::ResetRedlineProperties()
++void DomainMapper_Impl::ResetRedlineProperties( )
+ {
+-    m_CurrentRedlineAuthor = m_CurrentRedlineDate = m_CurrentRedlineId = ::rtl::OUString();
+-    n_CurrentRedlineToken = ooxml::OOXML_mod;
++    if ( m_aRedlines.size( ) > 0 )
++    {
++#if DEBUG
++        clog << "REDLINE: Removing current Redline from stack" << endl;
++#endif
++        m_aRedlines.pop_back( );
++    }
+ }
+ 
++void DomainMapper_Impl::ResetParaRedline( )
++{
++    if ( m_pParaRedline.get( ) )
++    {
++#if DEBUG
++        clog << "REDLINE: Cleaning the para redline" << endl;
++#endif
++        RedlineParamsPtr pEmpty;
++        m_pParaRedline.swap( pEmpty );
++    }
++}
+ 
+ }}
+diff --git writerfilter/source/dmapper/DomainMapper_Impl.hxx writerfilter/source/dmapper/DomainMapper_Impl.hxx
+index f4dfaf0..ef4ed26 100644
+--- writerfilter/source/dmapper/DomainMapper_Impl.hxx
++++ writerfilter/source/dmapper/DomainMapper_Impl.hxx
+@@ -51,6 +51,7 @@
+ #include <LFOTable.hxx>
+ #include <StyleSheetTable.hxx>
+ #include <ThemeTable.hxx>
++#include <SettingsTable.hxx>
+ #include <GraphicImport.hxx>
+ #include <OLEHandler.hxx>
+ #include <map>
+@@ -225,6 +226,15 @@ struct BookmarkInsertPosition
+      {}
+ };
+ 
++struct RedlineParams
++{
++    ::rtl::OUString m_sAuthor;
++    ::rtl::OUString m_sDate;
++    ::rtl::OUString m_sId;
++    sal_Int32       m_nToken;
++};
++typedef boost::shared_ptr< RedlineParams > RedlineParamsPtr;
++
+ /*-- 03.03.2008 11:01:38---------------------------------------------------
+ 
+   -----------------------------------------------------------------------*/
+@@ -293,6 +303,7 @@ private:
+     StyleSheetTablePtr      m_pStyleSheetTable;
+     ThemeTablePtr           m_pThemeTable;
+     GraphicImportPtr        m_pGraphicImport;
++    SettingsTablePtr        m_pSettingsTable;
+ 
+     PropertyMapPtr                  m_pTopContext;
+ 
+@@ -311,11 +322,11 @@ private:
+     ::com::sun::star::uno::Reference< text::XTextRange >      m_xFrameStartRange;
+     ::com::sun::star::uno::Reference< text::XTextRange >      m_xFrameEndRange;
+ 
+-    //current redline
+-    ::rtl::OUString                 m_CurrentRedlineAuthor;
+-    ::rtl::OUString                 m_CurrentRedlineDate;
+-    ::rtl::OUString                 m_CurrentRedlineId;
+-    sal_Int32                       n_CurrentRedlineToken;
++    // Redline stack
++    std::vector< RedlineParamsPtr > m_aRedlines;
++    RedlineParamsPtr                m_pParaRedline;
++    bool                            m_bIsParaChange;
++
+ 
+     //shape import
+     ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >      m_xTemporaryShape;
+@@ -357,6 +368,15 @@ public:
+     }
+     void SetDocumentSettingsProperty( const ::rtl::OUString& rPropName, const uno::Any& rValue );
+ 
++    void CreateRedline( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > xRange, RedlineParamsPtr pRedline  );
++
++    void CheckParaRedline( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > xRange );
++
++    void CheckRedline( ::com::sun::star::uno::Reference< ::com::sun::star::text::XTextRange > xRange );
++
++    void StartParaChange( );
++    void EndParaChange( );
++
+     void deferBreak( BreakType deferredBreakType );
+     bool isBreakDeferred( BreakType deferredBreakType );
+     void clearDeferredBreaks();
+@@ -412,6 +432,13 @@ public:
+         return m_pThemeTable;
+     }
+ 
++    SettingsTablePtr GetSettingsTable( )
++    {
++        if ( !m_pSettingsTable )
++            m_pSettingsTable.reset( new SettingsTable );
++        return m_pSettingsTable;
++    }
++
+     GraphicImportPtr GetGraphicImport( GraphicImportType eGraphicImportType );
+     void            ResetGraphicImport();
+     // this method deletes the current m_pGraphicImport after import
+@@ -495,19 +522,17 @@ public:
+         );
+     bool ExecuteFrameConversion();
+ 
+-    ::rtl::OUString  GetCurrentRedlineAuthor() const { return m_CurrentRedlineAuthor; }
+-    void SetCurrentRedlineAuthor( const ::rtl::OUString& rSet ) { m_CurrentRedlineAuthor = rSet; }
+-
+-    ::rtl::OUString  GetCurrentRedlineDate() const   { return m_CurrentRedlineDate;   }
+-    void SetCurrentRedlineDate( const ::rtl::OUString& rSet )    { m_CurrentRedlineDate = rSet;   }
+-
+-    ::rtl::OUString  GetCurrentRedlineId() const     { return m_CurrentRedlineId;     }
+-    void SetCurrentRedlineId( const ::rtl::OUString& rSet ) { m_CurrentRedlineId = rSet;     }
++    void AddNewRedline( );
+ 
+-    sal_Int32        GetCurrentRedlineToken() const  { return n_CurrentRedlineToken;  }
+-    void SetCurrentRedlineToken(sal_Int32 nSet) { n_CurrentRedlineToken = nSet;  }
++    RedlineParamsPtr GetTopRedline( );
+ 
+-    void ResetRedlineProperties();
++    sal_Int32 GetCurrentRedlineToken( ); 
++    void SetCurrentRedlineAuthor( rtl::OUString sAuthor );
++    void SetCurrentRedlineDate( rtl::OUString sDate );
++    void SetCurrentRedlineId( rtl::OUString sId );
++    void SetCurrentRedlineToken( sal_Int32 nToken );
++    void ResetRedlineProperties( );
++    void ResetParaRedline( );
+ 
+ };
+ } //namespace dmapper
+diff --git writerfilter/source/dmapper/makefile.mk writerfilter/source/dmapper/makefile.mk
+index c1fcc36..e7235cc 100644
+--- writerfilter/source/dmapper/makefile.mk
++++ writerfilter/source/dmapper/makefile.mk
+@@ -63,7 +63,8 @@ SLOFILES=           $(SLO)$/BorderHandler.obj \
+                     $(SLO)$/PropertyIds.obj  \
+                     $(SLO)$/StyleSheetTable.obj \
+                     $(SLO)$/TDefTableHandler.obj \
+-		    $(SLO)$/ThemeTable.obj \
++                    $(SLO)$/ThemeTable.obj \
++                    $(SLO)$/SettingsTable.obj \
+                     $(SLO)$/ModelEventListener.obj\
+                     $(SLO)$/OLEHandler.obj
+ 
+diff --git writerfilter/source/ooxml/model.xml writerfilter/source/ooxml/model.xml
+index 399755a..b6ab5a7 100644
+--- writerfilter/source/ooxml/model.xml
++++ writerfilter/source/ooxml/model.xml
+@@ -16575,15 +16575,18 @@
+           </element>
+         </optional>
+       </define>
++      <define name="CT_ParaTrackChange">
++        <ref name="CT_TrackChange"/>
++      </define>
+       <define name="EG_ParaRPrTrackChanges">
+         <optional>
+           <element name="ins">
+-            <ref name="CT_TrackChange"/>
++            <ref name="CT_ParaTrackChange"/>
+           </element>
+         </optional>
+         <optional>
+           <element name="del">
+-            <ref name="CT_TrackChange"/>
++            <ref name="CT_ParaTrackChange"/>
+           </element>
+         </optional>
+         <optional>
+@@ -21638,6 +21641,11 @@
+       <attribute name="author" tokenid="ooxml:CT_TrackChange_author"/>
+       <attribute name="date" tokenid="ooxml:CT_TrackChange_date"/>
+     </resource>
++    <resource name="CT_ParaTrackChange" resource="Properties">
++      <action name="start" action="tokenproperty"/>
++      <action name="start" action="propagateCharacterPropertiesAsSet" sendtokenid="ooxml:paratrackchange"/>
++      <action name="start" action="clearProps"/>
++    </resource>
+     <resource name="CT_CellMergeTrackChange" resource="Properties">
+       <attribute name="vMerge" tokenid="ooxml:CT_CellMergeTrackChange_vMerge"/>
+       <attribute name="vMergeOrig" tokenid="ooxml:CT_CellMergeTrackChange_vMergeOrig"/>
+@@ -21702,6 +21710,7 @@
+       <action name="start" action="tokenproperty"/>
+       <action name="start" action="propagateCharacterPropertiesAsSet" sendtokenid="ooxml:trackchange"/>
+       <action name="start" action="clearProps"/>
++      <action name="end" action="mark" sendtokenid="ooxml:endtrackchange"/>
+     </resource>
+     <resource name="CT_NumPr" resource="Properties">
+       <kind name="paragraph"/>
+@@ -22272,6 +22281,8 @@
+     <resource name="CT_RPrOriginal" resource="Properties"/>
+     <resource name="CT_ParaRPrOriginal" resource="Properties"/>
+     <resource name="CT_ParaRPr" resource="Properties">
++      <element name="ins" tokenid="ooxml:CT_ParaRPr_ins"/>
++      <element name="del" tokenid="ooxml:CT_ParaRPr_del"/>
+       <element name="rPrChange" tokenid="ooxml:CT_ParaRPr_rPrChange"/>
+     </resource>
+     <resource name="ST_RubyAlign" resource="List" generated="yes">



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]