diff options
Diffstat (limited to 'sc/source/ui/inc/undodat.hxx')
-rw-r--r-- | sc/source/ui/inc/undodat.hxx | 541 |
1 files changed, 541 insertions, 0 deletions
diff --git a/sc/source/ui/inc/undodat.hxx b/sc/source/ui/inc/undodat.hxx new file mode 100644 index 000000000000..f8d26d008daa --- /dev/null +++ b/sc/source/ui/inc/undodat.hxx @@ -0,0 +1,541 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * 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. + * + * 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). + * + * 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. + * + ************************************************************************/ + +#ifndef SC_UNDODAT_HXX +#define SC_UNDODAT_HXX + +#include "undobase.hxx" +#include "rangeutl.hxx" // ScArea +#include "rangelst.hxx" // ScRangeListRef +#include "markdata.hxx" +#include "sortparam.hxx" +#include "queryparam.hxx" +#include "subtotalparam.hxx" +#include "pivot.hxx" + +class ScDocShell; +class ScDocument; +class ScOutlineTable; +class ScRangeName; +class ScDBData; +class ScDBCollection; +class ScDPObject; +class SdrUndoAction; + +//---------------------------------------------------------------------------- + +class ScUndoDoOutline: public ScSimpleUndo +{ +public: + TYPEINFO(); + ScUndoDoOutline( ScDocShell* pNewDocShell, + SCCOLROW nNewStart, SCCOLROW nNewEnd, SCTAB nNewTab, + ScDocument* pNewUndoDoc, sal_Bool bNewColumns, + sal_uInt16 nNewLevel, sal_uInt16 nNewEntry, sal_Bool bNewShow ); + virtual ~ScUndoDoOutline(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; + +private: + SCCOLROW nStart; + SCCOLROW nEnd; + SCTAB nTab; + ScDocument* pUndoDoc; + sal_Bool bColumns; + sal_uInt16 nLevel; + sal_uInt16 nEntry; + sal_Bool bShow; +}; + + +class ScUndoMakeOutline: public ScSimpleUndo +{ +public: + TYPEINFO(); + ScUndoMakeOutline( ScDocShell* pNewDocShell, + SCCOL nStartX, SCROW nStartY, SCTAB nStartZ, + SCCOL nEndX, SCROW nEndY, SCTAB nEndZ, + ScOutlineTable* pNewUndoTab, + sal_Bool bNewColumns, sal_Bool bNewMake ); + virtual ~ScUndoMakeOutline(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; + +private: + ScAddress aBlockStart; + ScAddress aBlockEnd; + ScOutlineTable* pUndoTable; + sal_Bool bColumns; + sal_Bool bMake; +}; + + +class ScUndoOutlineLevel: public ScSimpleUndo +{ +public: + TYPEINFO(); + ScUndoOutlineLevel( ScDocShell* pNewDocShell, + SCCOLROW nNewStart, SCCOLROW nNewEnd, SCTAB nNewTab, + ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab, + sal_Bool bNewColumns, sal_uInt16 nNewLevel ); + virtual ~ScUndoOutlineLevel(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; + +private: + SCCOLROW nStart; + SCCOLROW nEnd; + SCTAB nTab; + ScDocument* pUndoDoc; + ScOutlineTable* pUndoTable; + sal_Bool bColumns; + sal_uInt16 nLevel; +}; + + +class ScUndoOutlineBlock: public ScSimpleUndo +{ +public: + TYPEINFO(); + ScUndoOutlineBlock( ScDocShell* pNewDocShell, + SCCOL nStartX, SCROW nStartY, SCTAB nStartZ, + SCCOL nEndX, SCROW nEndY, SCTAB nEndZ, + ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab, + sal_Bool bNewShow ); + virtual ~ScUndoOutlineBlock(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; + +private: + ScAddress aBlockStart; + ScAddress aBlockEnd; + ScDocument* pUndoDoc; + ScOutlineTable* pUndoTable; + sal_Bool bShow; +}; + + +class ScUndoRemoveAllOutlines: public ScSimpleUndo +{ +public: + TYPEINFO(); + ScUndoRemoveAllOutlines( ScDocShell* pNewDocShell, + SCCOL nStartX, SCROW nStartY, SCTAB nStartZ, + SCCOL nEndX, SCROW nEndY, SCTAB nEndZ, + ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab ); + virtual ~ScUndoRemoveAllOutlines(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; + +private: + ScAddress aBlockStart; + ScAddress aBlockEnd; + ScDocument* pUndoDoc; + ScOutlineTable* pUndoTable; +}; + + +class ScUndoAutoOutline: public ScSimpleUndo +{ +public: + TYPEINFO(); + ScUndoAutoOutline( ScDocShell* pNewDocShell, + SCCOL nStartX, SCROW nStartY, SCTAB nStartZ, + SCCOL nEndX, SCROW nEndY, SCTAB nEndZ, + ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab ); + virtual ~ScUndoAutoOutline(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; + +private: + ScAddress aBlockStart; + ScAddress aBlockEnd; + ScDocument* pUndoDoc; + ScOutlineTable* pUndoTable; +}; + + +class ScUndoSubTotals: public ScDBFuncUndo +{ +public: + TYPEINFO(); + ScUndoSubTotals( ScDocShell* pNewDocShell, SCTAB nNewTab, + const ScSubTotalParam& rNewParam, SCROW nNewEndY, + ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab, +// ScDBData* pNewData, + ScRangeName* pNewUndoRange, ScDBCollection* pNewUndoDB ); + virtual ~ScUndoSubTotals(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; + +private: + SCTAB nTab; + ScSubTotalParam aParam; // Original uebergebener Parameter + SCROW nNewEndRow; // Ergebnis-Groesse + ScDocument* pUndoDoc; + ScOutlineTable* pUndoTable; +// ScDBData* pUndoDBData; + ScRangeName* pUndoRange; + ScDBCollection* pUndoDB; +}; + + +class ScUndoSort: public ScDBFuncUndo +{ +public: + TYPEINFO(); + ScUndoSort( ScDocShell* pNewDocShell, SCTAB nNewTab, + const ScSortParam& rParam, + sal_Bool bQuery, ScDocument* pNewUndoDoc, + ScDBCollection* pNewUndoDB, const ScRange* pDest = NULL ); + virtual ~ScUndoSort(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; + +private: + SCTAB nTab; + ScSortParam aSortParam; + sal_Bool bRepeatQuery; + ScDocument* pUndoDoc; + ScDBCollection* pUndoDB; // wegen Quell- und Zielbereich + sal_Bool bDestArea; + ScRange aDestRange; +}; + + +class ScUndoQuery: public ScDBFuncUndo +{ +public: + TYPEINFO(); + ScUndoQuery( ScDocShell* pNewDocShell, SCTAB nNewTab, + const ScQueryParam& rParam, ScDocument* pNewUndoDoc, + ScDBCollection* pNewUndoDB, const ScRange* pOld, + sal_Bool bSize, const ScRange* pAdvSrc ); + virtual ~ScUndoQuery(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; + +private: + SdrUndoAction* pDrawUndo; + SCTAB nTab; + ScQueryParam aQueryParam; + ScDocument* pUndoDoc; + ScDBCollection* pUndoDB; // wegen Quell- und Zielbereich + ScRange aOldDest; + ScRange aAdvSource; + sal_Bool bIsAdvanced; + sal_Bool bDestArea; + sal_Bool bDoSize; +}; + + +class ScUndoAutoFilter: public ScDBFuncUndo +{ +private: + String aDBName; + sal_Bool bFilterSet; + + void DoChange( sal_Bool bUndo ); + +public: + TYPEINFO(); + ScUndoAutoFilter( ScDocShell* pNewDocShell, const ScRange& rRange, + const String& rName, sal_Bool bSet ); + virtual ~ScUndoAutoFilter(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; +}; + + +class ScUndoDBData: public ScSimpleUndo +{ +public: + TYPEINFO(); + ScUndoDBData( ScDocShell* pNewDocShell, + ScDBCollection* pNewUndoColl, ScDBCollection* pNewRedoColl ); + virtual ~ScUndoDBData(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; + +private: + ScDBCollection* pUndoColl; + ScDBCollection* pRedoColl; +}; + + +class ScUndoImportData: public ScSimpleUndo +{ +public: + TYPEINFO(); + ScUndoImportData( ScDocShell* pNewDocShell, SCTAB nNewTab, + const ScImportParam& rParam, SCCOL nNewEndX, SCROW nNewEndY, + SCCOL nNewFormula, + ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc, + ScDBData* pNewUndoData, ScDBData* pNewRedoData ); + virtual ~ScUndoImportData(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; + +private: + SCTAB nTab; + ScImportParam aImportParam; + SCCOL nEndCol; + SCROW nEndRow; + ScDocument* pUndoDoc; + ScDocument* pRedoDoc; + ScDBData* pUndoDBData; + ScDBData* pRedoDBData; + SCCOL nFormulaCols; + sal_Bool bRedoFilled; +}; + + +class ScUndoRepeatDB: public ScSimpleUndo +{ +public: + TYPEINFO(); + ScUndoRepeatDB( ScDocShell* pNewDocShell, SCTAB nNewTab, + SCCOL nStartX, SCROW nStartY, SCCOL nEndX, SCROW nEndY, + SCROW nResultEndRow, SCCOL nCurX, SCROW nCurY, + ScDocument* pNewUndoDoc, ScOutlineTable* pNewUndoTab, + ScRangeName* pNewUndoRange, ScDBCollection* pNewUndoDB, + const ScRange* pOldQ, const ScRange* pNewQ ); + virtual ~ScUndoRepeatDB(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; + +private: + ScAddress aBlockStart; + ScAddress aBlockEnd; + SCROW nNewEndRow; + ScAddress aCursorPos; + ScDocument* pUndoDoc; + ScOutlineTable* pUndoTable; + ScRangeName* pUndoRange; + ScDBCollection* pUndoDB; + ScRange aOldQuery; + ScRange aNewQuery; + sal_Bool bQuerySize; +}; + + +class ScUndoDataPilot: public ScSimpleUndo +{ +public: + TYPEINFO(); + ScUndoDataPilot( ScDocShell* pNewDocShell, + ScDocument* pOldDoc, ScDocument* pNewDoc, + const ScDPObject* pOldObj, const ScDPObject* pNewObj, + sal_Bool bMove ); + virtual ~ScUndoDataPilot(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; + +private: + ScDocument* pOldUndoDoc; + ScDocument* pNewUndoDoc; + ScDPObject* pOldDPObject; + ScDPObject* pNewDPObject; + sal_Bool bAllowMove; +}; + + +class ScUndoConsolidate: public ScSimpleUndo +{ +public: + TYPEINFO(); + ScUndoConsolidate( ScDocShell* pNewDocShell, + const ScArea& rArea, const ScConsolidateParam& rPar, + ScDocument* pNewUndoDoc, sal_Bool bReference, + SCROW nInsCount, ScOutlineTable* pTab, + ScDBData* pData ); + virtual ~ScUndoConsolidate(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; + +private: + ScArea aDestArea; + ScDocument* pUndoDoc; + ScConsolidateParam aParam; + sal_Bool bInsRef; + SCSIZE nInsertCount; + ScOutlineTable* pUndoTab; + ScDBData* pUndoData; +}; + + +class ScUndoChartData: public ScSimpleUndo +{ +public: + TYPEINFO(); + ScUndoChartData( ScDocShell* pNewDocShell, + const String& rName, const ScRange& rNew, + sal_Bool bColHdr, sal_Bool bRowHdr, sal_Bool bAdd ); + ScUndoChartData( ScDocShell* pNewDocShell, + const String& rName, const ScRangeListRef& rNew, + sal_Bool bColHdr, sal_Bool bRowHdr, sal_Bool bAdd ); + virtual ~ScUndoChartData(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; + +private: + String aChartName; + ScRangeListRef aOldRangeListRef; + sal_Bool bOldColHeaders; + sal_Bool bOldRowHeaders; +// ScRange aNewRange; + ScRangeListRef aNewRangeListRef; + sal_Bool bNewColHeaders; + sal_Bool bNewRowHeaders; + sal_Bool bAddRange; + + void Init(); +}; + +// amelia +class ScUndoDataForm: public ScBlockUndo +{ +public: + TYPEINFO(); + ScUndoDataForm( ScDocShell* pNewDocShell, + SCCOL nStartX, SCROW nStartY, SCTAB nStartZ, + SCCOL nEndX, SCROW nEndY, SCTAB nEndZ, + const ScMarkData& rMark, + ScDocument* pNewUndoDoc, ScDocument* pNewRedoDoc, + sal_uInt16 nNewFlags, + ScRefUndoData* pRefData, void* pFill1, void* pFill2, void* pFill3, + sal_Bool bRedoIsFilled = true + ); + virtual ~ScUndoDataForm(); + + virtual void Undo(); + virtual void Redo(); + virtual void Repeat(SfxRepeatTarget& rTarget); + virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; + + virtual String GetComment() const; + +private: + ScMarkData aMarkData; + ScDocument* pUndoDoc; + ScDocument* pRedoDoc; + sal_uInt16 nFlags; + ScRefUndoData* pRefUndoData; + ScRefUndoData* pRefRedoData; + sal_uLong nStartChangeAction; + sal_uLong nEndChangeAction; + sal_Bool bRedoFilled; + + void DoChange( const sal_Bool bUndo ); + void SetChangeTrack(); +}; + + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |