diff options
Diffstat (limited to 'sc/source/ui/inc/undodat.hxx')
-rw-r--r-- | sc/source/ui/inc/undodat.hxx | 446 |
1 files changed, 446 insertions, 0 deletions
diff --git a/sc/source/ui/inc/undodat.hxx b/sc/source/ui/inc/undodat.hxx new file mode 100644 index 000000000..486fe07d1 --- /dev/null +++ b/sc/source/ui/inc/undodat.hxx @@ -0,0 +1,446 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * 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 . + */ + +#pragma once + +#include "undobase.hxx" +#include "refundo.hxx" +#include <dpobject.hxx> +#include <olinetab.hxx> +#include <rangeutl.hxx> +#include <rangelst.hxx> +#include <queryparam.hxx> +#include <subtotalparam.hxx> + +#include <memory> + +class ScDocShell; +class SdrUndoAction; + +class ScUndoDoOutline: public ScSimpleUndo +{ +public: + ScUndoDoOutline( ScDocShell* pNewDocShell, + SCCOLROW nNewStart, SCCOLROW nNewEnd, SCTAB nNewTab, + ScDocumentUniquePtr pNewUndoDoc, bool bNewColumns, + sal_uInt16 nNewLevel, sal_uInt16 nNewEntry, bool bNewShow ); + virtual ~ScUndoDoOutline() override; + + virtual void Undo() override; + virtual void Redo() override; + virtual void Repeat(SfxRepeatTarget& rTarget) override; + virtual bool CanRepeat(SfxRepeatTarget& rTarget) const override; + + virtual OUString GetComment() const override; + +private: + SCCOLROW nStart; + SCCOLROW nEnd; + SCTAB nTab; + ScDocumentUniquePtr + pUndoDoc; + bool bColumns; + sal_uInt16 nLevel; + sal_uInt16 nEntry; + bool bShow; +}; + +class ScUndoMakeOutline: public ScSimpleUndo +{ +public: + ScUndoMakeOutline( ScDocShell* pNewDocShell, + SCCOL nStartX, SCROW nStartY, SCTAB nStartZ, + SCCOL nEndX, SCROW nEndY, SCTAB nEndZ, + std::unique_ptr<ScOutlineTable> pNewUndoTab, + bool bNewColumns, bool bNewMake ); + virtual ~ScUndoMakeOutline() override; + + virtual void Undo() override; + virtual void Redo() override; + virtual void Repeat(SfxRepeatTarget& rTarget) override; + virtual bool CanRepeat(SfxRepeatTarget& rTarget) const override; + + virtual OUString GetComment() const override; + +private: + ScAddress aBlockStart; + ScAddress aBlockEnd; + std::unique_ptr<ScOutlineTable> + pUndoTable; + bool bColumns; + bool bMake; +}; + +class ScUndoOutlineLevel: public ScSimpleUndo +{ +public: + ScUndoOutlineLevel(ScDocShell* pNewDocShell, + SCCOLROW nNewStart, SCCOLROW nNewEnd, SCTAB nNewTab, + ScDocumentUniquePtr pNewUndoDoc, std::unique_ptr<ScOutlineTable> pNewUndoTab, + bool bNewColumns, sal_uInt16 nNewLevel); + + virtual void Undo() override; + virtual void Redo() override; + virtual void Repeat(SfxRepeatTarget& rTarget) override; + virtual bool CanRepeat(SfxRepeatTarget& rTarget) const override; + + virtual OUString GetComment() const override; + +private: + SCCOLROW nStart; + SCCOLROW nEnd; + SCTAB nTab; + ScDocumentUniquePtr xUndoDoc; + std::unique_ptr<ScOutlineTable> xUndoTable; + bool bColumns; + sal_uInt16 nLevel; +}; + +class ScUndoOutlineBlock: public ScSimpleUndo +{ +public: + ScUndoOutlineBlock(ScDocShell* pNewDocShell, + SCCOL nStartX, SCROW nStartY, SCTAB nStartZ, + SCCOL nEndX, SCROW nEndY, SCTAB nEndZ, + ScDocumentUniquePtr pNewUndoDoc, std::unique_ptr<ScOutlineTable> pNewUndoTab, + bool bNewShow); + + virtual void Undo() override; + virtual void Redo() override; + virtual void Repeat(SfxRepeatTarget& rTarget) override; + virtual bool CanRepeat(SfxRepeatTarget& rTarget) const override; + + virtual OUString GetComment() const override; + +private: + ScAddress aBlockStart; + ScAddress aBlockEnd; + ScDocumentUniquePtr xUndoDoc; + std::unique_ptr<ScOutlineTable> xUndoTable; + bool bShow; +}; + +class ScUndoRemoveAllOutlines: public ScSimpleUndo +{ +public: + ScUndoRemoveAllOutlines(ScDocShell* pNewDocShell, + SCCOL nStartX, SCROW nStartY, SCTAB nStartZ, + SCCOL nEndX, SCROW nEndY, SCTAB nEndZ, + ScDocumentUniquePtr pNewUndoDoc, std::unique_ptr<ScOutlineTable> pNewUndoTab); + + virtual void Undo() override; + virtual void Redo() override; + virtual void Repeat(SfxRepeatTarget& rTarget) override; + virtual bool CanRepeat(SfxRepeatTarget& rTarget) const override; + + virtual OUString GetComment() const override; + +private: + ScAddress aBlockStart; + ScAddress aBlockEnd; + ScDocumentUniquePtr xUndoDoc; + std::unique_ptr<ScOutlineTable> xUndoTable; +}; + +class ScUndoAutoOutline: public ScSimpleUndo +{ +public: + ScUndoAutoOutline(ScDocShell* pNewDocShell, + SCCOL nStartX, SCROW nStartY, SCTAB nStartZ, + SCCOL nEndX, SCROW nEndY, SCTAB nEndZ, + ScDocumentUniquePtr pNewUndoDoc, std::unique_ptr<ScOutlineTable> pNewUndoTab); + + virtual void Undo() override; + virtual void Redo() override; + virtual void Repeat(SfxRepeatTarget& rTarget) override; + virtual bool CanRepeat(SfxRepeatTarget& rTarget) const override; + + virtual OUString GetComment() const override; + +private: + ScAddress aBlockStart; + ScAddress aBlockEnd; + ScDocumentUniquePtr xUndoDoc; + std::unique_ptr<ScOutlineTable> xUndoTable; +}; + +class ScUndoSubTotals: public ScDBFuncUndo +{ +public: + ScUndoSubTotals(ScDocShell* pNewDocShell, SCTAB nNewTab, + const ScSubTotalParam& rNewParam, SCROW nNewEndY, + ScDocumentUniquePtr pNewUndoDoc, std::unique_ptr<ScOutlineTable> pNewUndoTab, + std::unique_ptr<ScRangeName> pNewUndoRange, std::unique_ptr<ScDBCollection> pNewUndoDB); + + virtual void Undo() override; + virtual void Redo() override; + virtual void Repeat(SfxRepeatTarget& rTarget) override; + virtual bool CanRepeat(SfxRepeatTarget& rTarget) const override; + + virtual OUString GetComment() const override; + +private: + SCTAB nTab; + ScSubTotalParam aParam; // The original passed parameter + SCROW nNewEndRow; // Size of result + ScDocumentUniquePtr xUndoDoc; + std::unique_ptr<ScOutlineTable> xUndoTable; + std::unique_ptr<ScRangeName> xUndoRange; + std::unique_ptr<ScDBCollection> xUndoDB; +}; + +class ScUndoQuery: public ScDBFuncUndo +{ +public: + ScUndoQuery( ScDocShell* pNewDocShell, SCTAB nNewTab, + const ScQueryParam& rParam, ScDocumentUniquePtr pNewUndoDoc, + std::unique_ptr<ScDBCollection> pNewUndoDB, const ScRange* pOld, + bool bSize, const ScRange* pAdvSrc ); + virtual ~ScUndoQuery() override; + + virtual void Undo() override; + virtual void Redo() override; + virtual void Repeat(SfxRepeatTarget& rTarget) override; + virtual bool CanRepeat(SfxRepeatTarget& rTarget) const override; + + virtual OUString GetComment() const override; + +private: + std::unique_ptr<SdrUndoAction> pDrawUndo; + SCTAB nTab; + ScQueryParam aQueryParam; + ScDocumentUniquePtr xUndoDoc; + std::unique_ptr<ScDBCollection> xUndoDB; // due to source and target range + ScRange aOldDest; + ScRange aAdvSource; + bool bIsAdvanced; + bool bDestArea; + bool bDoSize; +}; + +class ScUndoAutoFilter: public ScDBFuncUndo +{ +private: + OUString aDBName; + bool bFilterSet; + + void DoChange( bool bUndo ); + +public: + ScUndoAutoFilter( ScDocShell* pNewDocShell, const ScRange& rRange, + const OUString& rName, bool bSet ); + virtual ~ScUndoAutoFilter() override; + + virtual void Undo() override; + virtual void Redo() override; + virtual void Repeat(SfxRepeatTarget& rTarget) override; + virtual bool CanRepeat(SfxRepeatTarget& rTarget) const override; + + virtual OUString GetComment() const override; +}; + +class ScUndoDBData: public ScSimpleUndo +{ +public: + ScUndoDBData( ScDocShell* pNewDocShell, + std::unique_ptr<ScDBCollection> pNewUndoColl, + std::unique_ptr<ScDBCollection> pNewRedoColl ); + virtual ~ScUndoDBData() override; + + virtual void Undo() override; + virtual void Redo() override; + virtual void Repeat(SfxRepeatTarget& rTarget) override; + virtual bool CanRepeat(SfxRepeatTarget& rTarget) const override; + + virtual OUString GetComment() const override; + +private: + std::unique_ptr<ScDBCollection> pUndoColl; + std::unique_ptr<ScDBCollection> pRedoColl; +}; + +class ScUndoImportData: public ScSimpleUndo +{ +public: + ScUndoImportData(ScDocShell* pNewDocShell, SCTAB nNewTab, + const ScImportParam& rParam, SCCOL nNewEndX, SCROW nNewEndY, + SCCOL nNewFormula, + ScDocumentUniquePtr pNewUndoDoc, ScDocumentUniquePtr pNewRedoDoc, + std::unique_ptr<ScDBData> pNewUndoData, std::unique_ptr<ScDBData> pNewRedoData); + + virtual void Undo() override; + virtual void Redo() override; + virtual void Repeat(SfxRepeatTarget& rTarget) override; + virtual bool CanRepeat(SfxRepeatTarget& rTarget) const override; + + virtual OUString GetComment() const override; + +private: + SCTAB nTab; + ScImportParam aImportParam; + SCCOL nEndCol; + SCROW nEndRow; + ScDocumentUniquePtr xUndoDoc; + ScDocumentUniquePtr xRedoDoc; + std::unique_ptr<ScDBData> xUndoDBData; + std::unique_ptr<ScDBData> xRedoDBData; + SCCOL nFormulaCols; + bool bRedoFilled; +}; + +class ScUndoRepeatDB: public ScSimpleUndo +{ +public: + ScUndoRepeatDB(ScDocShell* pNewDocShell, SCTAB nNewTab, + SCCOL nStartX, SCROW nStartY, SCCOL nEndX, SCROW nEndY, + SCROW nResultEndRow, SCCOL nCurX, SCROW nCurY, + ScDocumentUniquePtr pNewUndoDoc, std::unique_ptr<ScOutlineTable> pNewUndoTab, + std::unique_ptr<ScRangeName> pNewUndoRange, std::unique_ptr<ScDBCollection> pNewUndoDB, + const ScRange* pOldQ, const ScRange* pNewQ); + + virtual void Undo() override; + virtual void Redo() override; + virtual void Repeat(SfxRepeatTarget& rTarget) override; + virtual bool CanRepeat(SfxRepeatTarget& rTarget) const override; + + virtual OUString GetComment() const override; + +private: + ScAddress aBlockStart; + ScAddress aBlockEnd; + SCROW nNewEndRow; + ScAddress aCursorPos; + ScDocumentUniquePtr xUndoDoc; + std::unique_ptr<ScOutlineTable> xUndoTable; + std::unique_ptr<ScRangeName> xUndoRange; + std::unique_ptr<ScDBCollection> xUndoDB; + ScRange aOldQuery; + ScRange aNewQuery; + bool bQuerySize; +}; + +class ScUndoDataPilot: public ScSimpleUndo +{ +public: + ScUndoDataPilot(ScDocShell* pNewDocShell, + ScDocumentUniquePtr pOldDoc, ScDocumentUniquePtr pNewDoc, + const ScDPObject* pOldObj, const ScDPObject* pNewObj, + bool bMove); + + virtual void Undo() override; + virtual void Redo() override; + virtual void Repeat(SfxRepeatTarget& rTarget) override; + virtual bool CanRepeat(SfxRepeatTarget& rTarget) const override; + + virtual OUString GetComment() const override; + +private: + ScDocumentUniquePtr xOldUndoDoc; + ScDocumentUniquePtr xNewUndoDoc; + std::unique_ptr<ScDPObject> xOldDPObject; + std::unique_ptr<ScDPObject> xNewDPObject; + bool bAllowMove; +}; + +class ScUndoConsolidate: public ScSimpleUndo +{ +public: + ScUndoConsolidate(ScDocShell* pNewDocShell, + const ScArea& rArea, const ScConsolidateParam& rPar, + ScDocumentUniquePtr pNewUndoDoc, bool bReference, + SCROW nInsCount, std::unique_ptr<ScOutlineTable> pTab, + std::unique_ptr<ScDBData> pData); + + virtual void Undo() override; + virtual void Redo() override; + virtual void Repeat(SfxRepeatTarget& rTarget) override; + virtual bool CanRepeat(SfxRepeatTarget& rTarget) const override; + + virtual OUString GetComment() const override; + +private: + ScArea aDestArea; + ScDocumentUniquePtr xUndoDoc; + ScConsolidateParam aParam; + bool bInsRef; + SCSIZE nInsertCount; + std::unique_ptr<ScOutlineTable> xUndoTab; + std::unique_ptr<ScDBData> xUndoData; +}; + +class ScUndoChartData: public ScSimpleUndo +{ +public: + ScUndoChartData( ScDocShell* pNewDocShell, + const OUString& rName, const ScRange& rNew, + bool bColHdr, bool bRowHdr, bool bAdd ); + ScUndoChartData( ScDocShell* pNewDocShell, + const OUString& rName, const ScRangeListRef& rNew, + bool bColHdr, bool bRowHdr, bool bAdd ); + virtual ~ScUndoChartData() override; + + virtual void Undo() override; + virtual void Redo() override; + virtual void Repeat(SfxRepeatTarget& rTarget) override; + virtual bool CanRepeat(SfxRepeatTarget& rTarget) const override; + + virtual OUString GetComment() const override; + +private: + OUString aChartName; + ScRangeListRef aOldRangeListRef; + bool bOldColHeaders; + bool bOldRowHeaders; +// ScRange aNewRange; + ScRangeListRef aNewRangeListRef; + bool bNewColHeaders; + bool bNewRowHeaders; + bool bAddRange; + + void Init(); +}; + +class ScUndoDataForm: public ScBlockUndo +{ +public: + ScUndoDataForm(ScDocShell* pNewDocShell, + SCCOL nStartX, SCROW nStartY, SCTAB nStartZ, + SCCOL nEndX, SCROW nEndY, SCTAB nEndZ, + const ScMarkData& rMark, + ScDocumentUniquePtr pNewUndoDoc, ScDocumentUniquePtr pNewRedoDoc, + std::unique_ptr<ScRefUndoData> pRefData); + virtual void Undo() override; + virtual void Redo() override; + virtual void Repeat(SfxRepeatTarget& rTarget) override; + virtual bool CanRepeat(SfxRepeatTarget& rTarget) const override; + + virtual OUString GetComment() const override; + +private: + std::unique_ptr<ScMarkData> mxMarkData; + ScDocumentUniquePtr xUndoDoc; + ScDocumentUniquePtr xRedoDoc; + std::unique_ptr<ScRefUndoData> xRefUndoData; + std::unique_ptr<ScRefUndoData> xRefRedoData; + bool bRedoFilled; + + void DoChange( const bool bUndo ); +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |