2000-09-18 23:08:29 +00:00
|
|
|
/*************************************************************************
|
|
|
|
*
|
2008-04-10 15:08:17 +00:00
|
|
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
2000-09-18 23:08:29 +00:00
|
|
|
*
|
2010-02-12 15:01:35 +01:00
|
|
|
* Copyright 2000, 2010 Oracle and/or its affiliates.
|
2000-09-18 23:08:29 +00:00
|
|
|
*
|
2008-04-10 15:08:17 +00:00
|
|
|
* OpenOffice.org - a multi-platform office productivity suite
|
2000-09-18 23:08:29 +00:00
|
|
|
*
|
2008-04-10 15:08:17 +00:00
|
|
|
* This file is part of OpenOffice.org.
|
2000-09-18 23:08:29 +00:00
|
|
|
*
|
2008-04-10 15:08:17 +00:00
|
|
|
* OpenOffice.org is free software: you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU Lesser General Public License version 3
|
|
|
|
* only, as published by the Free Software Foundation.
|
2000-09-18 23:08:29 +00:00
|
|
|
*
|
2008-04-10 15:08:17 +00:00
|
|
|
* OpenOffice.org is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU Lesser General Public License version 3 for more details
|
|
|
|
* (a copy is included in the LICENSE file that accompanied this code).
|
2000-09-18 23:08:29 +00:00
|
|
|
*
|
2008-04-10 15:08:17 +00:00
|
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
|
|
* version 3 along with OpenOffice.org. If not, see
|
|
|
|
* <http://www.openoffice.org/license.html>
|
|
|
|
* for a copy of the LGPLv3 License.
|
2000-09-18 23:08:29 +00:00
|
|
|
*
|
|
|
|
************************************************************************/
|
|
|
|
|
2006-09-16 20:52:32 +00:00
|
|
|
// MARKER(update_precomp.py): autogen include statement, do not remove
|
|
|
|
#include "precompiled_sw.hxx"
|
|
|
|
|
2000-09-18 23:08:29 +00:00
|
|
|
|
|
|
|
#include <hintids.hxx>
|
2010-01-08 18:32:51 +01:00
|
|
|
#include <editeng/lrspitem.hxx>
|
2000-09-18 23:08:29 +00:00
|
|
|
#include <doc.hxx>
|
2010-11-25 14:31:08 +01:00
|
|
|
#include <IDocumentUndoRedo.hxx>
|
2000-09-18 23:08:29 +00:00
|
|
|
#include <swundo.hxx> // fuer die UndoIds
|
|
|
|
#include <pam.hxx>
|
|
|
|
#include <ndtxt.hxx>
|
|
|
|
#include <undobj.hxx>
|
|
|
|
#include <rolbck.hxx>
|
|
|
|
|
|
|
|
|
2007-09-27 08:32:05 +00:00
|
|
|
SV_DECL_PTRARR_DEL( _SfxPoolItems, SfxPoolItem*, 16, 16 )
|
2000-09-18 23:08:29 +00:00
|
|
|
SV_IMPL_PTRARR( _SfxPoolItems, SfxPoolItem* );
|
|
|
|
|
|
|
|
inline SwDoc& SwUndoIter::GetDoc() const { return *pAktPam->GetDoc(); }
|
|
|
|
|
|
|
|
SwUndoInsNum::SwUndoInsNum( const SwNumRule& rOldRule,
|
2008-04-03 15:53:03 +00:00
|
|
|
const SwNumRule& rNewRule,
|
|
|
|
SwUndoId nUndoId )
|
|
|
|
: SwUndo( nUndoId ),
|
2007-09-27 08:32:05 +00:00
|
|
|
aNumRule( rNewRule ), pHistory( 0 ), nSttSet( ULONG_MAX ),
|
|
|
|
pOldNumRule( new SwNumRule( rOldRule )), nLRSavePos( 0 )
|
2000-09-18 23:08:29 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
SwUndoInsNum::SwUndoInsNum( const SwPaM& rPam, const SwNumRule& rRule )
|
|
|
|
: SwUndo( UNDO_INSNUM ), SwUndRng( rPam ),
|
2007-09-27 08:32:05 +00:00
|
|
|
aNumRule( rRule ), pHistory( 0 ),
|
|
|
|
nSttSet( ULONG_MAX ), pOldNumRule( 0 ), nLRSavePos( 0 )
|
2000-09-18 23:08:29 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
SwUndoInsNum::SwUndoInsNum( const SwPosition& rPos, const SwNumRule& rRule,
|
|
|
|
const String& rReplaceRule )
|
|
|
|
: SwUndo( UNDO_INSNUM ),
|
2007-09-27 08:32:05 +00:00
|
|
|
aNumRule( rRule ), pHistory( 0 ),
|
2000-09-18 23:08:29 +00:00
|
|
|
nSttSet( ULONG_MAX ), pOldNumRule( 0 ),
|
2007-09-27 08:32:05 +00:00
|
|
|
sReplaceRule( rReplaceRule ), nLRSavePos( 0 )
|
2000-09-18 23:08:29 +00:00
|
|
|
{
|
|
|
|
// keine Selektion !!
|
|
|
|
nEndNode = 0, nEndCntnt = USHRT_MAX;
|
|
|
|
nSttNode = rPos.nNode.GetIndex();
|
|
|
|
nSttCntnt = rPos.nContent.GetIndex();
|
|
|
|
}
|
|
|
|
|
|
|
|
SwUndoInsNum::~SwUndoInsNum()
|
|
|
|
{
|
|
|
|
delete pHistory;
|
|
|
|
delete pOldNumRule;
|
|
|
|
}
|
|
|
|
|
2008-04-03 15:53:03 +00:00
|
|
|
SwRewriter SwUndoInsNum::GetRewriter() const
|
|
|
|
{
|
|
|
|
SwRewriter aResult;
|
|
|
|
if( UNDO_INSFMTATTR == GetId() )
|
|
|
|
aResult.AddRule(UNDO_ARG1, aNumRule.GetName());
|
|
|
|
return aResult;
|
|
|
|
}
|
|
|
|
|
2000-09-18 23:08:29 +00:00
|
|
|
void SwUndoInsNum::Undo( SwUndoIter& rUndoIter )
|
|
|
|
{
|
|
|
|
SwDoc& rDoc = rUndoIter.GetDoc();
|
|
|
|
if( nSttNode )
|
|
|
|
SetPaM( rUndoIter );
|
|
|
|
|
|
|
|
if( pOldNumRule )
|
|
|
|
rDoc.ChgNumRuleFmts( *pOldNumRule );
|
|
|
|
|
|
|
|
if( pHistory )
|
|
|
|
{
|
|
|
|
SwTxtNode* pNd;
|
|
|
|
if( ULONG_MAX != nSttSet &&
|
2005-11-08 16:23:35 +00:00
|
|
|
0 != ( pNd = rDoc.GetNodes()[ nSttSet ]->GetTxtNode() ))
|
2008-06-13 09:29:30 +00:00
|
|
|
pNd->SetListRestart( TRUE );
|
2000-09-18 23:08:29 +00:00
|
|
|
else
|
|
|
|
pNd = 0;
|
|
|
|
|
|
|
|
|
|
|
|
if( nLRSavePos )
|
|
|
|
{
|
|
|
|
// sofort Updaten, damit eventuell "alte" LRSpaces wieder
|
|
|
|
// gueltig werden.
|
|
|
|
// !!! Dafuer suche aber erstmal den richtigen NumRule - Namen!
|
|
|
|
if( !pNd && nSttNode )
|
|
|
|
pNd = rDoc.GetNodes()[ nSttNode ]->GetTxtNode();
|
|
|
|
|
2008-01-04 12:22:26 +00:00
|
|
|
// This code seems to be superfluous because the methods
|
|
|
|
// don't have any known side effects.
|
|
|
|
// ToDo: iasue i83806 should be used to remove this code
|
2000-09-18 23:08:29 +00:00
|
|
|
const SwNumRule* pNdRule;
|
|
|
|
if( pNd )
|
|
|
|
pNdRule = pNd->GetNumRule();
|
|
|
|
else
|
|
|
|
pNdRule = rDoc.FindNumRulePtr( aNumRule.GetName() );
|
2008-01-04 12:22:26 +00:00
|
|
|
// End of ToDo for issue i83806
|
2000-09-18 23:08:29 +00:00
|
|
|
|
|
|
|
pHistory->TmpRollback( &rDoc, nLRSavePos );
|
2005-11-08 16:23:35 +00:00
|
|
|
|
2000-09-18 23:08:29 +00:00
|
|
|
}
|
|
|
|
pHistory->TmpRollback( &rDoc, 0 );
|
|
|
|
pHistory->SetTmpEnd( pHistory->Count() );
|
|
|
|
}
|
|
|
|
|
|
|
|
if( nSttNode )
|
|
|
|
SetPaM( rUndoIter );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SwUndoInsNum::Redo( SwUndoIter& rUndoIter )
|
|
|
|
{
|
|
|
|
SwDoc& rDoc = rUndoIter.GetDoc();
|
|
|
|
|
|
|
|
if( pOldNumRule )
|
|
|
|
rDoc.ChgNumRuleFmts( aNumRule );
|
|
|
|
else if( pHistory )
|
|
|
|
{
|
|
|
|
SetPaM( rUndoIter );
|
|
|
|
if( sReplaceRule.Len() )
|
|
|
|
rDoc.ReplaceNumRule( *rUndoIter.pAktPam->GetPoint(),
|
|
|
|
sReplaceRule, aNumRule.GetName() );
|
|
|
|
else
|
2008-06-13 09:29:30 +00:00
|
|
|
{
|
2005-03-08 10:16:04 +00:00
|
|
|
// --> OD 2005-02-25 #i42921# - adapt to changed signature
|
2008-06-13 09:29:30 +00:00
|
|
|
// --> OD 2008-03-18 #refactorlists#
|
|
|
|
rDoc.SetNumRule( *rUndoIter.pAktPam, aNumRule, false );
|
2005-03-08 10:16:04 +00:00
|
|
|
// <--
|
2008-06-13 09:29:30 +00:00
|
|
|
}
|
2000-09-18 23:08:29 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void SwUndoInsNum::SetLRSpaceEndPos()
|
|
|
|
{
|
|
|
|
if( pHistory )
|
|
|
|
nLRSavePos = pHistory->Count();
|
|
|
|
}
|
|
|
|
|
|
|
|
void SwUndoInsNum::Repeat( SwUndoIter& rUndoIter )
|
|
|
|
{
|
|
|
|
if( nSttNode )
|
|
|
|
{
|
|
|
|
if( !sReplaceRule.Len() )
|
2008-06-13 09:29:30 +00:00
|
|
|
{
|
2005-03-08 10:16:04 +00:00
|
|
|
// --> OD 2005-02-25 #i42921# - adapt to changed signature
|
2008-06-13 09:29:30 +00:00
|
|
|
// --> OD 2008-03-18 #refactorlists#
|
|
|
|
rUndoIter.GetDoc().SetNumRule( *rUndoIter.pAktPam, aNumRule, false );
|
2005-03-08 10:16:04 +00:00
|
|
|
// <--
|
2008-06-13 09:29:30 +00:00
|
|
|
}
|
2000-09-18 23:08:29 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
rUndoIter.GetDoc().ChgNumRuleFmts( aNumRule );
|
|
|
|
}
|
|
|
|
|
|
|
|
SwHistory* SwUndoInsNum::GetHistory()
|
|
|
|
{
|
|
|
|
if( !pHistory )
|
|
|
|
pHistory = new SwHistory;
|
|
|
|
return pHistory;
|
|
|
|
}
|
|
|
|
|
|
|
|
void SwUndoInsNum::SaveOldNumRule( const SwNumRule& rOld )
|
|
|
|
{
|
|
|
|
if( !pOldNumRule )
|
|
|
|
pOldNumRule = new SwNumRule( rOld );
|
|
|
|
}
|
|
|
|
|
2010-10-04 20:43:33 +02:00
|
|
|
/* */
|
2000-09-18 23:08:29 +00:00
|
|
|
|
|
|
|
|
|
|
|
SwUndoDelNum::SwUndoDelNum( const SwPaM& rPam )
|
|
|
|
: SwUndo( UNDO_DELNUM ), SwUndRng( rPam ),
|
2010-10-04 20:43:33 +02:00
|
|
|
aNodeIdx( BYTE( nEndNode - nSttNode > 255 ? 255 : nEndNode - nSttNode ))
|
2000-09-18 23:08:29 +00:00
|
|
|
{
|
|
|
|
pHistory = new SwHistory;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SwUndoDelNum::~SwUndoDelNum()
|
|
|
|
{
|
|
|
|
delete pHistory;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SwUndoDelNum::Undo( SwUndoIter& rUndoIter )
|
|
|
|
{
|
|
|
|
SwDoc& rDoc = rUndoIter.GetDoc();
|
|
|
|
SetPaM( rUndoIter );
|
|
|
|
|
|
|
|
pHistory->TmpRollback( &rDoc, 0 );
|
|
|
|
pHistory->SetTmpEnd( pHistory->Count() );
|
|
|
|
|
|
|
|
for( USHORT n = 0; n < aNodeIdx.Count(); ++n )
|
|
|
|
{
|
|
|
|
SwTxtNode* pNd = rDoc.GetNodes()[ aNodeIdx[ n ] ]->GetTxtNode();
|
2010-10-04 20:43:33 +02:00
|
|
|
ASSERT( pNd, "Where is TextNode gone?" );
|
2008-06-13 09:29:30 +00:00
|
|
|
pNd->SetAttrListLevel(aLevels[ n ] );
|
2000-09-18 23:08:29 +00:00
|
|
|
|
|
|
|
if( pNd->GetCondFmtColl() )
|
|
|
|
pNd->ChkCondColl();
|
|
|
|
}
|
|
|
|
|
|
|
|
SetPaM( rUndoIter );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SwUndoDelNum::Redo( SwUndoIter& rUndoIter )
|
|
|
|
{
|
|
|
|
SetPaM( rUndoIter );
|
|
|
|
rUndoIter.GetDoc().DelNumRules( *rUndoIter.pAktPam );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SwUndoDelNum::Repeat( SwUndoIter& rUndoIter )
|
|
|
|
{
|
|
|
|
SetPaM( rUndoIter );
|
|
|
|
rUndoIter.GetDoc().DelNumRules( *rUndoIter.pAktPam );
|
|
|
|
}
|
|
|
|
|
2007-09-27 08:32:05 +00:00
|
|
|
void SwUndoDelNum::AddNode( const SwTxtNode& rNd, BOOL )
|
2000-09-18 23:08:29 +00:00
|
|
|
{
|
2005-11-08 16:23:35 +00:00
|
|
|
if( rNd.GetNumRule() )
|
2000-09-18 23:08:29 +00:00
|
|
|
{
|
2007-09-27 08:32:05 +00:00
|
|
|
USHORT nIns = aNodeIdx.Count();
|
2000-09-18 23:08:29 +00:00
|
|
|
aNodeIdx.Insert( rNd.GetIndex(), nIns );
|
2006-08-14 15:50:55 +00:00
|
|
|
|
2010-10-04 20:43:33 +02:00
|
|
|
aLevels.insert( aLevels.begin() + nIns, static_cast<BYTE>(rNd.GetActualListLevel()) );
|
2000-09-18 23:08:29 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2010-10-04 20:43:33 +02:00
|
|
|
/* */
|
2000-09-18 23:08:29 +00:00
|
|
|
|
|
|
|
|
|
|
|
SwUndoMoveNum::SwUndoMoveNum( const SwPaM& rPam, long nOff, BOOL bIsOutlMv )
|
|
|
|
: SwUndo( bIsOutlMv ? UNDO_OUTLINE_UD : UNDO_MOVENUM ),
|
2007-09-27 08:32:05 +00:00
|
|
|
SwUndRng( rPam ),
|
|
|
|
nNewStt( 0 ), nOffset( nOff )
|
2000-09-18 23:08:29 +00:00
|
|
|
{
|
|
|
|
// nOffset: nach unten => 1
|
|
|
|
// nach oben => -1
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SwUndoMoveNum::Undo( SwUndoIter& rUndoIter )
|
|
|
|
{
|
|
|
|
ULONG nTmpStt = nSttNode, nTmpEnd = nEndNode;
|
|
|
|
|
2001-08-14 17:12:40 +00:00
|
|
|
if( nEndNode || USHRT_MAX != nEndCntnt ) // Bereich ?
|
|
|
|
{
|
|
|
|
if( nNewStt < nSttNode ) // nach vorne verschoben
|
|
|
|
nEndNode = nEndNode - ( nSttNode - nNewStt );
|
|
|
|
else
|
|
|
|
nEndNode = nEndNode + ( nNewStt - nSttNode );
|
|
|
|
}
|
2000-09-18 23:08:29 +00:00
|
|
|
nSttNode = nNewStt;
|
|
|
|
|
|
|
|
//JP 22.06.95: wird wollen die Bookmarks/Verzeichnisse behalten, oder?
|
|
|
|
// SetPaM( rUndoIter );
|
|
|
|
// RemoveIdxFromRange( *rUndoIter.pAktPam, TRUE );
|
|
|
|
|
|
|
|
SetPaM( rUndoIter );
|
|
|
|
rUndoIter.GetDoc().MoveParagraph( *rUndoIter.pAktPam, -nOffset,
|
|
|
|
UNDO_OUTLINE_UD == GetId() );
|
|
|
|
nSttNode = nTmpStt;
|
|
|
|
nEndNode = nTmpEnd;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SwUndoMoveNum::Redo( SwUndoIter& rUndoIter )
|
|
|
|
{
|
|
|
|
//JP 22.06.95: wird wollen die Bookmarks/Verzeichnisse behalten, oder?
|
|
|
|
// SetPaM( rUndoIter );
|
|
|
|
// RemoveIdxFromRange( *rUndoIter.pAktPam, TRUE );
|
|
|
|
|
|
|
|
SetPaM( rUndoIter );
|
|
|
|
rUndoIter.GetDoc().MoveParagraph( *rUndoIter.pAktPam, nOffset,
|
|
|
|
UNDO_OUTLINE_UD == GetId() );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SwUndoMoveNum::Repeat( SwUndoIter& rUndoIter )
|
|
|
|
{
|
|
|
|
if( UNDO_OUTLINE_UD == GetId() )
|
|
|
|
rUndoIter.GetDoc().MoveOutlinePara( *rUndoIter.pAktPam,
|
|
|
|
0 < nOffset ? 1 : -1 );
|
|
|
|
else
|
|
|
|
rUndoIter.GetDoc().MoveParagraph( *rUndoIter.pAktPam, nOffset, FALSE );
|
|
|
|
}
|
|
|
|
|
2010-10-04 20:43:33 +02:00
|
|
|
/* */
|
2000-09-18 23:08:29 +00:00
|
|
|
|
|
|
|
|
|
|
|
SwUndoNumUpDown::SwUndoNumUpDown( const SwPaM& rPam, short nOff )
|
2004-09-08 14:00:34 +00:00
|
|
|
: SwUndo( nOff > 0 ? UNDO_NUMUP : UNDO_NUMDOWN ), SwUndRng( rPam ),
|
|
|
|
nOffset( nOff )
|
2000-09-18 23:08:29 +00:00
|
|
|
{
|
|
|
|
// nOffset: Down => 1
|
|
|
|
// Up => -1
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SwUndoNumUpDown::Undo( SwUndoIter& rUndoIter )
|
|
|
|
{
|
|
|
|
SetPaM( rUndoIter );
|
|
|
|
rUndoIter.GetDoc().NumUpDown( *rUndoIter.pAktPam, 1 != nOffset );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SwUndoNumUpDown::Redo( SwUndoIter& rUndoIter )
|
|
|
|
{
|
|
|
|
SetPaM( rUndoIter );
|
|
|
|
rUndoIter.GetDoc().NumUpDown( *rUndoIter.pAktPam, 1 == nOffset );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SwUndoNumUpDown::Repeat( SwUndoIter& rUndoIter )
|
|
|
|
{
|
|
|
|
rUndoIter.GetDoc().NumUpDown( *rUndoIter.pAktPam, 1 == nOffset );
|
|
|
|
}
|
|
|
|
|
2010-10-04 20:43:33 +02:00
|
|
|
/* */
|
2000-09-18 23:08:29 +00:00
|
|
|
|
2004-03-30 15:07:01 +00:00
|
|
|
// #115901#
|
2005-11-08 16:23:35 +00:00
|
|
|
SwUndoNumOrNoNum::SwUndoNumOrNoNum( const SwNodeIndex& rIdx, BOOL bOldNum,
|
|
|
|
BOOL bNewNum)
|
|
|
|
: SwUndo( UNDO_NUMORNONUM ), nIdx( rIdx.GetIndex() ), mbNewNum(bNewNum),
|
|
|
|
mbOldNum(bOldNum)
|
2000-09-18 23:08:29 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
2005-02-21 15:06:40 +00:00
|
|
|
// #115901#, #i40034#
|
2000-09-18 23:08:29 +00:00
|
|
|
void SwUndoNumOrNoNum::Undo( SwUndoIter& rUndoIter )
|
|
|
|
{
|
|
|
|
SwNodeIndex aIdx( rUndoIter.GetDoc().GetNodes(), nIdx );
|
2004-03-30 15:07:01 +00:00
|
|
|
SwTxtNode * pTxtNd = aIdx.GetNode().GetTxtNode();
|
2000-09-18 23:08:29 +00:00
|
|
|
|
2004-03-30 15:07:01 +00:00
|
|
|
if (NULL != pTxtNd)
|
2005-02-21 15:06:40 +00:00
|
|
|
{
|
2008-06-13 09:29:30 +00:00
|
|
|
pTxtNd->SetCountedInList(mbOldNum);
|
2005-02-21 15:06:40 +00:00
|
|
|
}
|
2004-03-30 15:07:01 +00:00
|
|
|
}
|
2000-09-18 23:08:29 +00:00
|
|
|
|
2005-02-21 15:06:40 +00:00
|
|
|
// #115901#, #i40034#
|
2000-09-18 23:08:29 +00:00
|
|
|
void SwUndoNumOrNoNum::Redo( SwUndoIter& rUndoIter )
|
|
|
|
{
|
2004-03-30 15:07:01 +00:00
|
|
|
SwNodeIndex aIdx( rUndoIter.GetDoc().GetNodes(), nIdx );
|
|
|
|
SwTxtNode * pTxtNd = aIdx.GetNode().GetTxtNode();
|
2000-09-18 23:08:29 +00:00
|
|
|
|
2004-03-30 15:07:01 +00:00
|
|
|
if (NULL != pTxtNd)
|
2005-02-21 15:06:40 +00:00
|
|
|
{
|
2008-06-13 09:29:30 +00:00
|
|
|
pTxtNd->SetCountedInList(mbNewNum);
|
2005-02-21 15:06:40 +00:00
|
|
|
}
|
2004-03-30 15:07:01 +00:00
|
|
|
}
|
2000-09-18 23:08:29 +00:00
|
|
|
|
2004-03-30 15:07:01 +00:00
|
|
|
// #115901#
|
2000-09-18 23:08:29 +00:00
|
|
|
void SwUndoNumOrNoNum::Repeat( SwUndoIter& rUndoIter )
|
|
|
|
{
|
2004-03-30 15:07:01 +00:00
|
|
|
|
2005-11-08 16:23:35 +00:00
|
|
|
if (mbOldNum && ! mbNewNum)
|
2004-03-30 15:07:01 +00:00
|
|
|
rUndoIter.GetDoc().NumOrNoNum( rUndoIter.pAktPam->GetPoint()->nNode,
|
|
|
|
FALSE);
|
2005-11-08 16:23:35 +00:00
|
|
|
else if ( ! mbOldNum && mbNewNum )
|
|
|
|
rUndoIter.GetDoc().NumOrNoNum( rUndoIter.pAktPam->GetPoint()->nNode,
|
|
|
|
TRUE);
|
2000-09-18 23:08:29 +00:00
|
|
|
}
|
|
|
|
|
2010-10-04 20:43:33 +02:00
|
|
|
/* */
|
2000-09-18 23:08:29 +00:00
|
|
|
|
|
|
|
SwUndoNumRuleStart::SwUndoNumRuleStart( const SwPosition& rPos, BOOL bFlg )
|
|
|
|
: SwUndo( UNDO_SETNUMRULESTART ),
|
2007-09-27 08:32:05 +00:00
|
|
|
nIdx( rPos.nNode.GetIndex() ), nOldStt( USHRT_MAX ),
|
|
|
|
nNewStt( USHRT_MAX ), bSetSttValue( FALSE ), bFlag( bFlg )
|
2000-09-18 23:08:29 +00:00
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
SwUndoNumRuleStart::SwUndoNumRuleStart( const SwPosition& rPos, USHORT nStt )
|
|
|
|
: SwUndo( UNDO_SETNUMRULESTART ),
|
2007-09-27 08:32:05 +00:00
|
|
|
nIdx( rPos.nNode.GetIndex() ),
|
|
|
|
nOldStt( USHRT_MAX ), nNewStt( nStt ), bSetSttValue( TRUE )
|
2000-09-18 23:08:29 +00:00
|
|
|
{
|
|
|
|
SwTxtNode* pTxtNd = rPos.nNode.GetNode().GetTxtNode();
|
2008-06-13 09:29:30 +00:00
|
|
|
if ( pTxtNd )
|
|
|
|
{
|
|
|
|
// --> OD 2008-02-28 #refactorlists#
|
|
|
|
if ( pTxtNd->HasAttrListRestartValue() )
|
|
|
|
{
|
|
|
|
nOldStt = static_cast<USHORT>(pTxtNd->GetAttrListRestartValue());
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
nOldStt = USHRT_MAX; // indicating, that the list restart value is not set
|
|
|
|
}
|
|
|
|
// <--
|
|
|
|
}
|
2000-09-18 23:08:29 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SwUndoNumRuleStart::Undo( SwUndoIter& rUndoIter )
|
|
|
|
{
|
|
|
|
SwPosition aPos( *rUndoIter.GetDoc().GetNodes()[ nIdx ] );
|
|
|
|
if( bSetSttValue )
|
|
|
|
rUndoIter.GetDoc().SetNodeNumStart( aPos, nOldStt );
|
|
|
|
else
|
|
|
|
rUndoIter.GetDoc().SetNumRuleStart( aPos, !bFlag );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SwUndoNumRuleStart::Redo( SwUndoIter& rUndoIter )
|
|
|
|
{
|
|
|
|
SwDoc& rDoc = rUndoIter.GetDoc();
|
|
|
|
|
|
|
|
SwPosition aPos( *rDoc.GetNodes()[ nIdx ] );
|
|
|
|
if( bSetSttValue )
|
|
|
|
rDoc.SetNodeNumStart( aPos, nNewStt );
|
|
|
|
else
|
|
|
|
rDoc.SetNumRuleStart( aPos, bFlag );
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SwUndoNumRuleStart::Repeat( SwUndoIter& rUndoIter )
|
|
|
|
{
|
|
|
|
if( bSetSttValue )
|
|
|
|
rUndoIter.GetDoc().SetNodeNumStart( *rUndoIter.pAktPam->GetPoint(), nNewStt );
|
|
|
|
else
|
|
|
|
rUndoIter.GetDoc().SetNumRuleStart( *rUndoIter.pAktPam->GetPoint(), bFlag );
|
|
|
|
}
|
|
|
|
|
|
|
|
|