LCOV - code coverage report
Current view: top level - sc/source/filter/inc - XclExpChangeTrack.hxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 55 0.0 %
Date: 2014-04-14 Functions: 0 46 0.0 %
Legend: Lines: hit not hit

          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             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : 
      20             : #ifndef SC_XCLEXPCHANGETRACK_HXX
      21             : #define SC_XCLEXPCHANGETRACK_HXX
      22             : 
      23             : #include <stack>
      24             : #include <tools/datetime.hxx>
      25             : #include <rtl/uuid.h>
      26             : #include "bigrange.hxx"
      27             : #include "chgtrack.hxx"
      28             : #include "xelink.hxx"
      29             : #include "ftools.hxx"
      30             : #include "excrecds.hxx"
      31             : 
      32             : 
      33             : // XclExpUserBView - one UserBView record for each user
      34             : 
      35           0 : class XclExpUserBView : public ExcRecord
      36             : {
      37             : private:
      38             :     XclExpString                sUsername;
      39             :     sal_uInt8                   aGUID[ 16 ];
      40             : 
      41             :     virtual void                SaveCont( XclExpStream& rStrm ) SAL_OVERRIDE;
      42             : 
      43             : public:
      44             :                                 XclExpUserBView( const OUString& rUsername, const sal_uInt8* pGUID );
      45             : 
      46           0 :     inline const sal_uInt8*     GetGUID() const { return aGUID; }
      47             : 
      48             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
      49             :     virtual sal_Size            GetLen() const SAL_OVERRIDE;
      50             : };
      51             : 
      52             : 
      53             : // XclExpUserBViewList - list of UserBView records
      54             : 
      55             : class XclExpUserBViewList : public ExcEmptyRec
      56             : {
      57             : private:
      58             :     std::vector<XclExpUserBView*> aViews;
      59             : 
      60             : public:
      61             : 
      62             :     typedef std::vector<XclExpUserBView*>::iterator iterator;
      63             :     typedef std::vector<XclExpUserBView*>::const_iterator const_iterator;
      64             : 
      65             :                                 XclExpUserBViewList( const ScChangeTrack& rChangeTrack );
      66             :     virtual                     ~XclExpUserBViewList();
      67             : 
      68           0 :     inline iterator begin () { return aViews.begin(); }
      69             : 
      70           0 :     inline iterator end () { return aViews.end(); }
      71             : 
      72             :     inline const_iterator begin () const { return aViews.begin(); }
      73             : 
      74             :     inline const_iterator end () const { return aViews.end(); }
      75             : 
      76             :     virtual void                Save( XclExpStream& rStrm ) SAL_OVERRIDE;
      77             : };
      78             : 
      79             : 
      80             : // XclExpUsersViewBegin - begin of view block (one per sheet)
      81             : 
      82           0 : class XclExpUsersViewBegin : public ExcRecord
      83             : {
      84             : private:
      85             :     sal_uInt8                   aGUID[ 16 ];
      86             :     sal_uInt32                  nCurrTab;
      87             : 
      88             :     virtual void                SaveCont( XclExpStream& rStrm ) SAL_OVERRIDE;
      89             : 
      90             : public:
      91             :                                 XclExpUsersViewBegin( const sal_uInt8* pGUID, sal_uInt32 nTab );
      92             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
      93             :     virtual sal_Size            GetLen() const SAL_OVERRIDE;
      94             : };
      95             : 
      96             : 
      97             : // XclExpUsersViewEnd - end of view block (one per sheet)
      98             : 
      99           0 : class XclExpUsersViewEnd : public ExcRecord
     100             : {
     101             : private:
     102             :     virtual void                SaveCont( XclExpStream& rStrm ) SAL_OVERRIDE;
     103             : 
     104             : public:
     105             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
     106             :     virtual sal_Size            GetLen() const SAL_OVERRIDE;
     107             : };
     108             : 
     109             : 
     110             : // dummy record for "User Names" stream
     111             : 
     112           0 : class XclExpChTr0x0191 : public ExcRecord
     113             : {
     114             : private:
     115             :     virtual void                SaveCont( XclExpStream& rStrm ) SAL_OVERRIDE;
     116             : 
     117             : public:
     118             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
     119             :     virtual sal_Size            GetLen() const SAL_OVERRIDE;
     120             : };
     121             : 
     122             : 
     123             : // dummy record for "User Names" stream
     124             : 
     125           0 : class XclExpChTr0x0198 : public ExcRecord
     126             : {
     127             : private:
     128             :     virtual void                SaveCont( XclExpStream& rStrm ) SAL_OVERRIDE;
     129             : 
     130             : public:
     131             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
     132             :     virtual sal_Size            GetLen() const SAL_OVERRIDE;
     133             : };
     134             : 
     135             : 
     136             : // dummy record for "User Names" stream
     137             : 
     138           0 : class XclExpChTr0x0192 : public ExcRecord
     139             : {
     140             : private:
     141             :     virtual void                SaveCont( XclExpStream& rStrm ) SAL_OVERRIDE;
     142             : 
     143             : public:
     144             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
     145             :     virtual sal_Size            GetLen() const SAL_OVERRIDE;
     146             : };
     147             : 
     148             : 
     149             : // dummy record for "User Names" stream
     150             : 
     151           0 : class XclExpChTr0x0197 : public ExcRecord
     152             : {
     153             : private:
     154             :     virtual void                SaveCont( XclExpStream& rStrm ) SAL_OVERRIDE;
     155             : 
     156             : public:
     157             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
     158             :     virtual sal_Size            GetLen() const SAL_OVERRIDE;
     159             : };
     160             : 
     161             : 
     162             : // dummy record without content
     163             : 
     164             : class XclExpChTrEmpty : public ExcRecord
     165             : {
     166             : private:
     167             :     sal_uInt16                      nRecNum;
     168             : 
     169             : public:
     170           0 :     inline                      XclExpChTrEmpty( sal_uInt16 nNum ) : nRecNum( nNum ) {}
     171             :     virtual                     ~XclExpChTrEmpty();
     172             : 
     173             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
     174             :     virtual sal_Size            GetLen() const SAL_OVERRIDE;
     175             : };
     176             : 
     177             : 
     178             : // dummy record for "Revision Log" stream
     179             : 
     180           0 : class XclExpChTr0x0195 : public ExcRecord
     181             : {
     182             : private:
     183             :     virtual void                SaveCont( XclExpStream& rStrm ) SAL_OVERRIDE;
     184             : 
     185             : public:
     186             :     virtual                     ~XclExpChTr0x0195();
     187             : 
     188             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
     189             :     virtual sal_Size            GetLen() const SAL_OVERRIDE;
     190             : };
     191             : 
     192             : 
     193             : // dummy record for "Revision Log" stream
     194             : 
     195             : class XclExpChTr0x0194 : public ExcRecord
     196             : {
     197             : private:
     198             :     XclExpString                sUsername;
     199             :     DateTime                    aDateTime;
     200             : 
     201             :     virtual void                SaveCont( XclExpStream& rStrm ) SAL_OVERRIDE;
     202             : 
     203             : public:
     204             :     inline                      XclExpChTr0x0194( const ScChangeTrack& rChangeTrack );
     205             :     virtual                     ~XclExpChTr0x0194();
     206             : 
     207             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
     208             :     virtual sal_Size            GetLen() const SAL_OVERRIDE;
     209             : };
     210             : 
     211           0 : inline XclExpChTr0x0194::XclExpChTr0x0194( const ScChangeTrack& rChangeTrack ) :
     212           0 :     sUsername( rChangeTrack.GetUser() ),
     213           0 :     aDateTime( rChangeTrack.GetFixDateTime() )
     214             : {
     215           0 : }
     216             : 
     217             : 
     218             : // XclExpChTrHeader - header record, includes action count
     219             : 
     220             : class XclExpChTrHeader : public ExcRecord
     221             : {
     222             : private:
     223             :     sal_uInt8                   aGUID[ 16 ];
     224             :     sal_uInt32                  nCount;
     225             : 
     226             :     virtual void                SaveCont( XclExpStream& rStrm ) SAL_OVERRIDE;
     227             : 
     228             : public:
     229           0 :     inline                      XclExpChTrHeader() : nCount( 0 ) {}
     230             :     virtual                     ~XclExpChTrHeader();
     231             : 
     232           0 :     inline void                 SetGUID( const sal_uInt8* pGUID )   { memcpy( aGUID, pGUID, 16 ); }
     233           0 :     inline void                 SetCount( sal_uInt32 nNew )         { nCount = nNew; }
     234             : 
     235             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
     236             :     virtual sal_Size            GetLen() const SAL_OVERRIDE;
     237             : 
     238             :     virtual void                SaveXml( XclExpXmlStream& rStrm ) SAL_OVERRIDE;
     239             : };
     240             : 
     241             : 
     242             : // XclExpChTrInfo - header of action group of a user
     243             : 
     244             : class XclExpChTrInfo : public ExcRecord
     245             : {
     246             : private:
     247             :     XclExpString                sUsername;
     248             :     sal_Int32                   mnLogNumber;
     249             :     DateTime                    aDateTime;
     250             :     sal_uInt8                   aGUID[ 16 ];
     251             : 
     252             :     virtual void                SaveCont( XclExpStream& rStrm ) SAL_OVERRIDE;
     253             : 
     254             : public:
     255             :     inline                      XclExpChTrInfo(
     256             :                                     const OUString& rUsername,
     257             :                                     const DateTime& rDateTime,
     258             :                                     const sal_uInt8* pGUID,
     259             :                                     sal_Int32 nLogNumber );
     260             :     virtual                     ~XclExpChTrInfo();
     261             : 
     262             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
     263             :     virtual sal_Size            GetLen() const SAL_OVERRIDE;
     264             : 
     265             :     virtual void                SaveXml( XclExpXmlStream& rStrm ) SAL_OVERRIDE;
     266             : };
     267             : 
     268           0 : inline XclExpChTrInfo::XclExpChTrInfo( const OUString& rUsername, const DateTime& rDateTime, const sal_uInt8* pGUID, sal_Int32 nLogNumber ) :
     269             :     sUsername( rUsername ),
     270             :     mnLogNumber( nLogNumber ),
     271           0 :     aDateTime( rDateTime )
     272             : {
     273           0 :     memcpy( aGUID, pGUID, 16 );
     274           0 : }
     275             : 
     276             : 
     277             : // XclExpChTrTabIdBuffer - buffer for tab id's
     278             : 
     279             : class XclExpChTrTabIdBuffer
     280             : {
     281             : private:
     282             :     sal_uInt16*                 pBuffer;
     283             :     sal_uInt16*                 pLast;
     284             :     sal_uInt16                  nBufSize;
     285             :     sal_uInt16                  nLastId;
     286             : 
     287             : public:
     288             :                                 XclExpChTrTabIdBuffer( sal_uInt16 nCount );
     289             :                                 XclExpChTrTabIdBuffer( const XclExpChTrTabIdBuffer& rCopy );
     290             :                                 ~XclExpChTrTabIdBuffer();
     291             : 
     292             :     void                        InitFill( sal_uInt16 nIndex );
     293             :     void                        InitFillup();
     294             : 
     295             :     sal_uInt16                  GetId( sal_uInt16 nIndex ) const;
     296             :     void                        Remove();
     297             : 
     298           0 :     inline sal_uInt16           GetBufferCount() const
     299           0 :                                     { return static_cast< sal_uInt16 >( (pLast - pBuffer) + 1 ); }
     300           0 :     inline void                 GetBufferCopy( sal_uInt16* pDest ) const
     301           0 :                                     { memcpy( pDest, pBuffer, sizeof(sal_uInt16) * GetBufferCount() ); }
     302             : };
     303             : 
     304             : 
     305             : // XclExpChTrTabId - tab id record
     306             : 
     307             : class XclExpChTrTabId : public ExcRecord
     308             : {
     309             : private:
     310             :     sal_uInt16*                 pBuffer;
     311             :     sal_uInt16                  nTabCount;
     312             :     bool                        mbInRevisionHeaders;
     313             : 
     314           0 :     inline void                 Clear() { if( pBuffer ) delete[] pBuffer; pBuffer = NULL; }
     315             : 
     316             :     virtual void                SaveCont( XclExpStream& rStrm ) SAL_OVERRIDE;
     317             : 
     318             : public:
     319           0 :     inline                      XclExpChTrTabId( sal_uInt16 nCount ) :
     320           0 :                                     pBuffer( NULL ), nTabCount( nCount ), mbInRevisionHeaders( false ) {}
     321             :                                 XclExpChTrTabId( const XclExpChTrTabIdBuffer& rBuffer, bool bInRevisionHeaders = false );
     322             :     virtual                     ~XclExpChTrTabId();
     323             : 
     324             :     void                        Copy( const XclExpChTrTabIdBuffer& rBuffer );
     325             : 
     326             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
     327             :     virtual sal_Size            GetLen() const SAL_OVERRIDE;
     328             : 
     329             :     virtual void                SaveXml( XclExpXmlStream& rStrm ) SAL_OVERRIDE;
     330             : };
     331             : 
     332             : 
     333             : // XclExpChTrAction - base class for action records
     334             : 
     335             : class XclExpChTrAction : public ExcRecord
     336             : {
     337             : private:
     338             :     OUString                    sUsername;
     339             :     DateTime                    aDateTime;
     340             :     sal_uInt32                  nIndex;         // action number
     341             :     XclExpChTrAction*           pAddAction;     // additional record for this action
     342             :     bool                        bAccepted;
     343             : 
     344             : protected:
     345             :     const XclExpTabInfo&        rTabInfo;       // for table num export (sc num -> xcl num)
     346             :     const XclExpChTrTabIdBuffer& rIdBuffer;     // for table num export (xcl num -> tab id)
     347             :     sal_uInt32                  nLength;        // this is not the record size
     348             :     sal_uInt16                  nOpCode;        // EXC_CHTR_OP_***
     349             :     bool                        bForceInfo;
     350             : 
     351             :                                 XclExpChTrAction( const XclExpChTrAction& rCopy );
     352             : 
     353             :     void                        SetAddAction( XclExpChTrAction* pAction );
     354             :     void                        AddDependentContents(
     355             :                                     const ScChangeAction& rAction,
     356             :                                     const XclExpRoot& rRoot,
     357             :                                     ScChangeTrack& rChangeTrack );
     358             : 
     359             :     inline void                 Write2DAddress( XclExpStream& rStrm, const ScAddress& rAddress ) const;
     360             :     inline void                 Write2DRange( XclExpStream& rStrm, const ScRange& rRange ) const;
     361             :     inline sal_uInt16           GetTabId( SCTAB nTabId ) const;
     362             :     inline void                 WriteTabId( XclExpStream& rStrm, SCTAB nTabId ) const;
     363             : 
     364             :                                 // save header data, call SaveActionData()
     365             :     virtual void                SaveCont( XclExpStream& rStrm ) SAL_OVERRIDE;
     366           0 :     inline sal_Size             GetHeaderByteCount() const  { return 12; }
     367             : 
     368             :                                 // overload to save action data without header, called by SaveCont()
     369             :     virtual void                SaveActionData( XclExpStream& rStrm ) const = 0;
     370             :                                 // overload to get action size without header, called by GetLen()
     371             :     virtual sal_Size            GetActionByteCount() const = 0;
     372             : 
     373             :                                 // do something before writing the record
     374             :     virtual void                PrepareSaveAction( XclExpStream& rStrm ) const;
     375             :                                 // do something after writing the record
     376             :     virtual void                CompleteSaveAction( XclExpStream& rStrm ) const;
     377             : 
     378           0 :     inline sal_uInt32           GetActionNumber() const { return nIndex; }
     379           0 :     inline bool                 GetAccepted() const { return bAccepted; }
     380             : 
     381             : public:
     382             :                                 XclExpChTrAction(
     383             :                                     const ScChangeAction& rAction,
     384             :                                     const XclExpRoot& rRoot,
     385             :                                     const XclExpChTrTabIdBuffer& rTabIdBuffer,
     386             :                                     sal_uInt16 nNewOpCode = EXC_CHTR_OP_UNKNOWN );
     387             :     virtual                     ~XclExpChTrAction();
     388             : 
     389           0 :     inline const OUString&      GetUsername() const             { return sUsername; }
     390           0 :     inline const DateTime&      GetDateTime() const             { return aDateTime; }
     391           0 :     inline const XclExpChTrTabIdBuffer& GetTabIdBuffer() const  { return rIdBuffer; }
     392           0 :     inline bool                 ForceInfoRecord() const         { return bForceInfo; }
     393             : 
     394             :                                 // set own index & return new index
     395             :                                 // could be overloaded to use more indexes per action
     396             :     virtual void                SetIndex( sal_uInt32& rIndex );
     397             : 
     398             :     virtual void                Save( XclExpStream& rStrm ) SAL_OVERRIDE;
     399             :     virtual sal_Size            GetLen() const SAL_OVERRIDE;
     400             : 
     401           0 :     inline XclExpChTrAction*    GetAddAction() { return pAddAction; }
     402             : };
     403             : 
     404           0 : inline void XclExpChTrAction::Write2DAddress( XclExpStream& rStrm, const ScAddress& rAddress ) const
     405             : {
     406           0 :     rStrm   << (sal_uInt16) rAddress.Row()
     407           0 :             << (sal_uInt16) rAddress.Col();
     408           0 : }
     409             : 
     410           0 : inline void XclExpChTrAction::Write2DRange( XclExpStream& rStrm, const ScRange& rRange ) const
     411             : {
     412           0 :     rStrm   << (sal_uInt16) rRange.aStart.Row()
     413           0 :             << (sal_uInt16) rRange.aEnd.Row()
     414           0 :             << (sal_uInt16) rRange.aStart.Col()
     415           0 :             << (sal_uInt16) rRange.aEnd.Col();
     416           0 : }
     417             : 
     418           0 : inline sal_uInt16 XclExpChTrAction::GetTabId( SCTAB nTab ) const
     419             : {
     420           0 :     return rIdBuffer.GetId( rTabInfo.GetXclTab( nTab ) );
     421             : }
     422             : 
     423           0 : inline void XclExpChTrAction::WriteTabId( XclExpStream& rStrm, SCTAB nTab ) const
     424             : {
     425           0 :     rStrm << GetTabId( nTab );
     426           0 : }
     427             : 
     428             : 
     429             : // XclExpChTrData - cell content itself
     430             : 
     431             : struct XclExpChTrData
     432             : {
     433             :     XclExpString*               pString;
     434             :     XclExpStringRef             mpFormattedString;
     435             :     const ScFormulaCell*        mpFormulaCell;
     436             :     XclTokenArrayRef            mxTokArr;
     437             :     XclExpRefLog                maRefLog;
     438             :     double                      fValue;
     439             :     sal_Int32                   nRKValue;
     440             :     sal_uInt16                  nType;
     441             :     sal_Size                    nSize;
     442             : 
     443             :                                 XclExpChTrData();
     444             :                                 ~XclExpChTrData();
     445             :     void                        Clear();
     446             : 
     447             :     void                        WriteFormula(
     448             :                                     XclExpStream& rStrm,
     449             :                                     const XclExpChTrTabIdBuffer& rTabIdBuffer );
     450             :     void                        Write(
     451             :                                     XclExpStream& rStrm,
     452             :                                     const XclExpChTrTabIdBuffer& rTabIdBuffer );
     453             : };
     454             : 
     455             : 
     456             : // XclExpChTrCellContent - changed cell content
     457             : 
     458             : class XclExpChTrCellContent : public XclExpChTrAction, protected XclExpRoot
     459             : {
     460             : private:
     461             :     XclExpChTrData*             pOldData;
     462             :     XclExpChTrData*             pNewData;
     463             :     sal_uInt16                  nOldLength;     // this is not the record size
     464             : 
     465             :     void                        MakeEmptyChTrData( XclExpChTrData*& rpData );
     466             : 
     467             : protected:
     468             :     ScAddress                   aPosition;
     469             : 
     470             :     void GetCellData(
     471             :         const XclExpRoot& rRoot, const ScCellValue& rScCell, XclExpChTrData*& rpData,
     472             :         sal_uInt32& rXclLength1, sal_uInt16& rXclLength2 );
     473             : 
     474             :     virtual void                SaveActionData( XclExpStream& rStrm ) const SAL_OVERRIDE;
     475             : 
     476             : public:
     477             :                                 XclExpChTrCellContent(
     478             :                                     const ScChangeActionContent& rAction,
     479             :                                     const XclExpRoot& rRoot,
     480             :                                     const XclExpChTrTabIdBuffer& rTabIdBuffer );
     481             :     virtual                     ~XclExpChTrCellContent();
     482             : 
     483             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
     484             :     virtual sal_Size            GetActionByteCount() const SAL_OVERRIDE;
     485             : 
     486             :     virtual void                SaveXml( XclExpXmlStream& rStrm ) SAL_OVERRIDE;
     487             : };
     488             : 
     489             : 
     490             : // XclExpChTrInsert - insert/delete columns/rows
     491             : 
     492             : class XclExpChTrInsert : public XclExpChTrAction
     493             : {
     494             : protected:
     495             :     ScRange                     aRange;
     496             : 
     497           0 :                                 XclExpChTrInsert( const XclExpChTrInsert& rCopy ) :
     498           0 :                                     XclExpChTrAction( rCopy ), aRange( rCopy.aRange ) {}
     499             : 
     500             :     virtual void                SaveActionData( XclExpStream& rStrm ) const SAL_OVERRIDE;
     501             :     virtual void                PrepareSaveAction( XclExpStream& rStrm ) const SAL_OVERRIDE;
     502             :     virtual void                CompleteSaveAction( XclExpStream& rStrm ) const SAL_OVERRIDE;
     503             : 
     504             : public:
     505             :                                 XclExpChTrInsert(
     506             :                                     const ScChangeAction& rAction,
     507             :                                     const XclExpRoot& rRoot,
     508             :                                     const XclExpChTrTabIdBuffer& rTabIdBuffer,
     509             :                                     ScChangeTrack& rChangeTrack );
     510             :     virtual                     ~XclExpChTrInsert();
     511             : 
     512             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
     513             :     virtual sal_Size            GetActionByteCount() const SAL_OVERRIDE;
     514             : 
     515             :     virtual void                SaveXml( XclExpXmlStream& rStrm ) SAL_OVERRIDE;
     516             : };
     517             : 
     518             : 
     519             : // XclExpChTrInsertTab - insert table
     520             : 
     521             : class XclExpChTrInsertTab : public XclExpChTrAction, protected XclExpRoot
     522             : {
     523             : private:
     524             :     SCTAB                   nTab;
     525             : 
     526             : protected:
     527             :     virtual void                SaveActionData( XclExpStream& rStrm ) const SAL_OVERRIDE;
     528             : 
     529             : public:
     530             :                                 XclExpChTrInsertTab(
     531             :                                     const ScChangeAction& rAction,
     532             :                                     const XclExpRoot& rRoot,
     533             :                                     const XclExpChTrTabIdBuffer& rTabIdBuffer );
     534             :     virtual                     ~XclExpChTrInsertTab();
     535             : 
     536             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
     537             :     virtual sal_Size            GetActionByteCount() const SAL_OVERRIDE;
     538             : 
     539             :     virtual void                SaveXml( XclExpXmlStream& rStrm ) SAL_OVERRIDE;
     540             : };
     541             : 
     542             : 
     543             : // XclExpChTrMoveRange - move cell range
     544             : 
     545             : class XclExpChTrMoveRange : public XclExpChTrAction
     546             : {
     547             : protected:
     548             :     ScRange                     aSourceRange;
     549             :     ScRange                     aDestRange;
     550             : 
     551             :     virtual void                SaveActionData( XclExpStream& rStrm ) const SAL_OVERRIDE;
     552             :     virtual void                PrepareSaveAction( XclExpStream& rStrm ) const SAL_OVERRIDE;
     553             :     virtual void                CompleteSaveAction( XclExpStream& rStrm ) const SAL_OVERRIDE;
     554             : 
     555             : public:
     556             :                                 XclExpChTrMoveRange(
     557             :                                     const ScChangeActionMove& rAction,
     558             :                                     const XclExpRoot& rRoot,
     559             :                                     const XclExpChTrTabIdBuffer& rTabIdBuffer,
     560             :                                     ScChangeTrack& rChangeTrack );
     561             :     virtual                     ~XclExpChTrMoveRange();
     562             : 
     563             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
     564             :     virtual sal_Size            GetActionByteCount() const SAL_OVERRIDE;
     565             : 
     566             :     virtual void                SaveXml( XclExpXmlStream& rStrm ) SAL_OVERRIDE;
     567             : };
     568             : 
     569             : 
     570             : // XclExpChTr0x019A - additional data for delete action
     571             : 
     572             : class XclExpChTr0x014A : public XclExpChTrInsert
     573             : {
     574             : protected:
     575             :     virtual void                SaveActionData( XclExpStream& rStrm ) const SAL_OVERRIDE;
     576             : 
     577             : public:
     578             :                                 XclExpChTr0x014A( const XclExpChTrInsert& rAction );
     579             :     virtual                     ~XclExpChTr0x014A();
     580             : 
     581             :     virtual sal_uInt16              GetNum() const SAL_OVERRIDE;
     582             :     virtual sal_Size            GetActionByteCount() const SAL_OVERRIDE;
     583             : 
     584             :     virtual void                SaveXml( XclExpXmlStream& rStrm ) SAL_OVERRIDE;
     585             : };
     586             : 
     587             : 
     588             : // XclExpChangeTrack - exports the "Revision Log" stream
     589             : 
     590             : class XclExpChangeTrack : protected XclExpRoot
     591             : {
     592             : private:
     593             :     std::vector<ExcRecord*>       aRecList;           // list of "Revision Log" stream records
     594             :     std::stack<XclExpChTrAction*> aActionStack;
     595             :     XclExpChTrTabIdBuffer*        pTabIdBuffer;
     596             :     std::vector<XclExpChTrTabIdBuffer*> maBuffers;
     597             : 
     598             :     ScDocument*                 pTempDoc;           // empty document
     599             : 
     600             :     XclExpChTrHeader*           pHeader;            // header record for last GUID
     601             :     sal_uInt8                   aGUID[ 16 ];        // GUID for action info records
     602             :     bool                        bValidGUID;
     603             : 
     604             :     ScChangeTrack*              CreateTempChangeTrack();
     605             :     void                        PushActionRecord( const ScChangeAction& rAction );
     606             : 
     607             :     bool                        WriteUserNamesStream();
     608             : 
     609             : public:
     610             :                                 XclExpChangeTrack( const XclExpRoot& rRoot );
     611             :                                 virtual ~XclExpChangeTrack();
     612             : 
     613             :     void                        Write();
     614             :     void                        WriteXml( XclExpXmlStream& rStrm );
     615             : };
     616             : 
     617             : #endif
     618             : 
     619             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10