/************************************************************** * * 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_UNDOTAB_HXX #define SC_UNDOTAB_HXX #include "undobase.hxx" #include "markdata.hxx" #include "formula/grammar.hxx" #include #include "tabbgcolor.hxx" #ifndef _SVSTDARR_SHORTS #define _SVSTDARR_SHORTS #include #endif #ifndef _SVSTDARR_STRINGS #define _SVSTDARR_STRINGS #include #endif #include #include class ScDocShell; class ScDocument; class SdrUndoAction; class ScPrintRangeSaver; class SdrObject; class ScDocProtection; class ScTableProtection; //---------------------------------------------------------------------------- class ScUndoInsertTab : public ScSimpleUndo { public: TYPEINFO(); ScUndoInsertTab( ScDocShell* pNewDocShell, SCTAB nTabNum, sal_Bool bApp, const String& rNewName); virtual ~ScUndoInsertTab(); virtual void Undo(); virtual void Redo(); virtual void Repeat(SfxRepeatTarget& rTarget); virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; virtual String GetComment() const; private: String sNewName; SdrUndoAction* pDrawUndo; sal_uLong nEndChangeAction; SCTAB nTab; sal_Bool bAppend; void SetChangeTrack(); }; class ScUndoInsertTables : public ScSimpleUndo { public: TYPEINFO(); ScUndoInsertTables( ScDocShell* pNewDocShell, SCTAB nTabNum, sal_Bool bApp, SvStrings *pNewNameList); virtual ~ScUndoInsertTables(); 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; SvStrings* pNameList; sal_uLong nStartChangeAction; sal_uLong nEndChangeAction; SCTAB nTab; sal_Bool bAppend; void SetChangeTrack(); }; class ScUndoDeleteTab: public ScMoveUndo // Draw vom Move fuer geloeschte Tabelle { public: TYPEINFO(); ScUndoDeleteTab( ScDocShell* pNewDocShell, const SvShorts &theTabs, //SCTAB nNewTab, ScDocument* pUndoDocument, ScRefUndoData* pRefData ); virtual ~ScUndoDeleteTab(); virtual void Undo(); virtual void Redo(); virtual void Repeat(SfxRepeatTarget& rTarget); virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; virtual String GetComment() const; private: SvShorts theTabs; sal_uLong nStartChangeAction; sal_uLong nEndChangeAction; void SetChangeTrack(); }; class ScUndoRenameTab: public ScSimpleUndo { public: TYPEINFO(); ScUndoRenameTab( ScDocShell* pNewDocShell, SCTAB nT, const String& rOldName, const String& rNewName); virtual ~ScUndoRenameTab(); 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; String sOldName; String sNewName; void DoChange( SCTAB nTab, const String& rName ) const; }; class ScUndoMoveTab: public ScSimpleUndo { public: TYPEINFO(); ScUndoMoveTab( ScDocShell* pNewDocShell, const SvShorts &aOldTab, const SvShorts &aNewTab); virtual ~ScUndoMoveTab(); virtual void Undo(); virtual void Redo(); virtual void Repeat(SfxRepeatTarget& rTarget); virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; virtual String GetComment() const; private: SvShorts theOldTabs; SvShorts theNewTabs; void DoChange( sal_Bool bUndo ) const; }; class ScUndoCopyTab: public ScSimpleUndo { public: TYPEINFO(); ScUndoCopyTab(ScDocShell* pNewDocShell, const SvShorts &aOldTab, const SvShorts &aNewTab); virtual ~ScUndoCopyTab(); 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; SvShorts theOldTabs; SvShorts theNewTabs; void DoChange() const; }; class ScUndoTabColor: public ScSimpleUndo { public: TYPEINFO(); ScUndoTabColor( ScDocShell* pNewDocShell, SCTAB nT, const Color& aOTabBgColor, const Color& aNTabBgColor); ScUndoTabColor( ScDocShell* pNewDocShell, const ScUndoTabColorInfo::List& rUndoTabColorList); virtual ~ScUndoTabColor(); virtual void Undo(); virtual void Redo(); virtual void Repeat(SfxRepeatTarget& rTarget); virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; virtual String GetComment() const; private: ScUndoTabColorInfo::List aTabColorList; bool bIsMultipleUndo; void DoChange(bool bUndoType) const; }; class ScUndoMakeScenario: public ScSimpleUndo { public: TYPEINFO(); ScUndoMakeScenario( ScDocShell* pNewDocShell, SCTAB nSrc, SCTAB nDest, const String& rN, const String& rC, const Color& rCol, sal_uInt16 nF, const ScMarkData& rMark ); virtual ~ScUndoMakeScenario(); virtual void Undo(); virtual void Redo(); virtual void Repeat(SfxRepeatTarget& rTarget); virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; virtual String GetComment() const; private: SCTAB nSrcTab; SCTAB nDestTab; String aName; String aComment; Color aColor; sal_uInt16 nFlags; ScMarkData aMarkData; SdrUndoAction* pDrawUndo; }; class ScUndoImportTab : public ScSimpleUndo { public: TYPEINFO(); ScUndoImportTab( ScDocShell* pShell, SCTAB nNewTab, SCTAB nNewCount, sal_Bool bNewLink ); virtual ~ScUndoImportTab(); 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; SCTAB nCount; sal_Bool bLink; ScDocument* pRedoDoc; SdrUndoAction* pDrawUndo; void DoChange() const; }; class ScUndoRemoveLink : public ScSimpleUndo { public: TYPEINFO(); ScUndoRemoveLink( // vor dem Loeschen aufrufen! ScDocShell* pShell, const String& rDoc ); virtual ~ScUndoRemoveLink(); virtual void Undo(); virtual void Redo(); virtual void Repeat(SfxRepeatTarget& rTarget); virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; virtual String GetComment() const; private: String aDocName; String aFltName; String aOptions; sal_uLong nRefreshDelay; sal_uInt16 nCount; SCTAB* pTabs; sal_uInt8* pModes; String* pTabNames; void DoChange( sal_Bool bLink ) const; }; class ScUndoShowHideTab : public ScSimpleUndo { public: TYPEINFO(); ScUndoShowHideTab( ScDocShell* pShell, SCTAB nNewTab, sal_Bool bNewShow ); virtual ~ScUndoShowHideTab(); 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; sal_Bool bShow; void DoChange( sal_Bool bShow ) const; }; // ============================================================================ /** This class implements undo & redo of document protect & unprotect operations. */ class ScUndoDocProtect : public ScSimpleUndo { public: ScUndoDocProtect(ScDocShell* pShell, ::std::auto_ptr pProtectSettings); virtual ~ScUndoDocProtect(); virtual void Undo(); virtual void Redo(); virtual void Repeat(SfxRepeatTarget& rTarget); virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; virtual String GetComment() const; private: ::std::auto_ptr mpProtectSettings; void DoProtect(bool bProtect); }; // ============================================================================ /** This class implements undo & redo of both protect and unprotect of sheet. */ class ScUndoTabProtect : public ScSimpleUndo { public: ScUndoTabProtect(ScDocShell* pShell, SCTAB nTab, ::std::auto_ptr pProtectSettings); virtual ~ScUndoTabProtect(); virtual void Undo(); virtual void Redo(); virtual void Repeat(SfxRepeatTarget& rTarget); virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; virtual String GetComment() const; private: SCTAB mnTab; ::std::auto_ptr mpProtectSettings; void DoProtect(bool bProtect); }; class ScUndoPrintRange : public ScSimpleUndo { public: TYPEINFO(); ScUndoPrintRange( ScDocShell* pShell, SCTAB nNewTab, ScPrintRangeSaver* pOld, ScPrintRangeSaver* pNew ); virtual ~ScUndoPrintRange(); 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; ScPrintRangeSaver* pOldRanges; ScPrintRangeSaver* pNewRanges; void DoChange( sal_Bool bUndo ); }; class ScUndoScenarioFlags: public ScSimpleUndo { public: TYPEINFO(); ScUndoScenarioFlags( ScDocShell* pNewDocShell, SCTAB nT, const String& rON, const String& rNN, const String& rOC, const String& rNC, const Color& rOCol, const Color& rNCol, sal_uInt16 nOF, sal_uInt16 nNF ); virtual ~ScUndoScenarioFlags(); 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; String aOldName; String aNewName; String aOldComment; String aNewComment; Color aOldColor; Color aNewColor; sal_uInt16 nOldFlags; sal_uInt16 nNewFlags; }; class ScUndoRenameObject: public ScSimpleUndo { public: TYPEINFO(); ScUndoRenameObject( ScDocShell* pNewDocShell, const String& rPN, const String& rON, const String& rNN ); virtual ~ScUndoRenameObject(); virtual void Undo(); virtual void Redo(); virtual void Repeat(SfxRepeatTarget& rTarget); virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; virtual String GetComment() const; private: String aPersistName; // to find object (works only for OLE objects) String aOldName; String aNewName; SdrObject* GetObject(); }; class ScUndoLayoutRTL : public ScSimpleUndo { public: TYPEINFO(); ScUndoLayoutRTL( ScDocShell* pShell, SCTAB nNewTab, sal_Bool bNewRTL ); virtual ~ScUndoLayoutRTL(); 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; sal_Bool bRTL; void DoChange( sal_Bool bNew ); }; //UNUSED2009-05 class ScUndoSetGrammar : public ScSimpleUndo //UNUSED2009-05 { //UNUSED2009-05 public: //UNUSED2009-05 TYPEINFO(); //UNUSED2009-05 ScUndoSetGrammar( ScDocShell* pShell, //UNUSED2009-05 formula::FormulaGrammar::Grammar eGrammar ); //UNUSED2009-05 virtual ~ScUndoSetGrammar(); //UNUSED2009-05 //UNUSED2009-05 virtual void Undo(); //UNUSED2009-05 virtual void Redo(); //UNUSED2009-05 virtual void Repeat(SfxRepeatTarget& rTarget); //UNUSED2009-05 virtual sal_Bool CanRepeat(SfxRepeatTarget& rTarget) const; //UNUSED2009-05 //UNUSED2009-05 virtual String GetComment() const; //UNUSED2009-05 //UNUSED2009-05 private: //UNUSED2009-05 formula::FormulaGrammar::Grammar meNewGrammar, meOldGrammar; //UNUSED2009-05 //UNUSED2009-05 void DoChange( formula::FormulaGrammar::Grammar eGrammar ); //UNUSED2009-05 }; #endif