blob: 1ece5b56d5b52334fd7e24cce7d24d79f1d11197 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the 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 "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;
};
//UNUSED2008-05 class ScUndoPivot: public ScSimpleUndo
//UNUSED2008-05 {
//UNUSED2008-05 public:
//UNUSED2008-05 TYPEINFO();
//UNUSED2008-05 ScUndoPivot( ScDocShell* pNewDocShell,
//UNUSED2008-05 const ScArea& rOld, const ScArea& rNew,
//UNUSED2008-05 ScDocument* pOldDoc, ScDocument* pNewDoc,
//UNUSED2008-05 const ScPivot* pOldPivot, const ScPivot* pNewPivot );
//UNUSED2008-05 virtual ~ScUndoPivot();
//UNUSED2008-05
//UNUSED2008-05 virtual void Undo();
//UNUSED2008-05 virtual void Redo();
//UNUSED2008-05 virtual void Repeat(SfxRepeatTarget& rTarget);
//UNUSED2008-05 virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const;
//UNUSED2008-05
//UNUSED2008-05 virtual String GetComment() const;
//UNUSED2008-05
//UNUSED2008-05 private:
//UNUSED2008-05 ScArea aOldArea;
//UNUSED2008-05 ScArea aNewArea;
//UNUSED2008-05 ScDocument* pOldUndoDoc;
//UNUSED2008-05 ScDocument* pNewUndoDoc;
//UNUSED2008-05 ScPivotParam aOldParam; // fuer Redo
//UNUSED2008-05 ScQueryParam aOldQuery;
//UNUSED2008-05 ScArea aOldSrc;
//UNUSED2008-05 ScPivotParam aNewParam; // fuer Undo in Collection
//UNUSED2008-05 ScQueryParam aNewQuery;
//UNUSED2008-05 ScArea aNewSrc;
//UNUSED2008-05 String aOldName;
//UNUSED2008-05 String aOldTag;
//UNUSED2008-05 String aNewName;
//UNUSED2008-05 String aNewTag;
//UNUSED2008-05 };
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();
};
#endif