LCOV - code coverage report
Current view: top level - svx/inc/svx - svdundo.hxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 32 55 58.2 %
Date: 2012-08-25 Functions: 32 64 50.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 13 46 28.3 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : #ifndef _SVDUNDO_HXX
      30                 :            : #define _SVDUNDO_HXX
      31                 :            : 
      32                 :            : #include <svl/solar.hrc>
      33                 :            : #include <svl/undo.hxx>
      34                 :            : #include <tools/gen.hxx>
      35                 :            : #include <svx/svdtypes.hxx> // fuer enum RepeatFuncts
      36                 :            : #include <svx/svdsob.hxx>
      37                 :            : #include "svx/svxdllapi.h"
      38                 :            : 
      39                 :            : //************************************************************
      40                 :            : //   Vorausdeklarationen
      41                 :            : //************************************************************
      42                 :            : 
      43                 :            : class SfxItemSet;
      44                 :            : class SfxStyleSheet;
      45                 :            : class SdrView;
      46                 :            : class SdrPageView;
      47                 :            : class SdrModel;
      48                 :            : class SdrObject;
      49                 :            : class SdrPage;
      50                 :            : class SdrObjList;
      51                 :            : class SdrLayer;
      52                 :            : class SdrLayerAdmin;
      53                 :            : class SdrObjGeoData;
      54                 :            : class OutlinerParaObject;
      55                 :            : 
      56                 :            : //************************************************************
      57                 :            : //   SdrUndoAction
      58                 :            : //
      59                 :            : // Abstrakte Basisklasse fuer alle UndoActions der DrawingEngine
      60                 :            : //
      61                 :            : //************************************************************
      62                 :            : 
      63         [ -  + ]:      12290 : class SVX_DLLPUBLIC SdrUndoAction : public SfxUndoAction
      64                 :            : {
      65                 :            : protected:
      66                 :            :     SdrModel&                   rMod;
      67                 :            : 
      68                 :            : protected:
      69                 :      12341 :     SdrUndoAction(SdrModel& rNewMod)
      70                 :      12341 :     :   rMod(rNewMod)
      71                 :      12341 :     {}
      72                 :            : 
      73                 :            : public:
      74                 :            :     TYPEINFO();
      75                 :            :     virtual sal_Bool CanRepeat(SfxRepeatTarget& rView) const;
      76                 :            :     virtual void Repeat(SfxRepeatTarget& rView);
      77                 :            : 
      78                 :            :     virtual String GetRepeatComment(SfxRepeatTarget& rView) const;
      79                 :            :     virtual String GetSdrRepeatComment(SdrView& rView) const;
      80                 :            : 
      81                 :            :     virtual bool CanSdrRepeat(SdrView& rView) const;
      82                 :            :     virtual void SdrRepeat(SdrView& rView);
      83                 :            : };
      84                 :            : 
      85                 :            : //************************************************************
      86                 :            : //   SdrUndoGroup
      87                 :            : //
      88                 :            : // Zusammenfassung beliebig vieler einzelner UndoActions zu einer einzigen
      89                 :            : // UndoAction. Beim Undo() werden die Einzelactions rueckwaets aufgerufen
      90                 :            : // (die zuletzt angehaengte zuerst...), beim Redo() dagegen entspricht die
      91                 :            : // Aufrufreihenfolge der Einfuegereihenfolge.
      92                 :            : //
      93                 :            : //************************************************************
      94                 :            : 
      95                 :            : class SVX_DLLPUBLIC SdrUndoGroup : public SdrUndoAction
      96                 :            : {
      97                 :            : protected:
      98                 :            :     std::vector<SdrUndoAction*> aBuf;
      99                 :            : 
     100                 :            :     // Beschreibung der Action, nicht expandiert (beinhaltet %O)
     101                 :            :     String                      aComment;
     102                 :            :     String                      aObjDescription;
     103                 :            : 
     104                 :            :     SdrRepeatFunc               eFunction;
     105                 :            : 
     106                 :            : public:
     107                 :            :     SdrUndoGroup(SdrModel& rNewMod);
     108                 :            :     virtual ~SdrUndoGroup();
     109                 :            : 
     110                 :            :     void Clear();
     111                 :       1113 :     sal_uIntPtr GetActionCount() const { return aBuf.size(); }
     112                 :        425 :     SdrUndoAction* GetAction(sal_uIntPtr nNum) const { return aBuf[nNum]; }
     113                 :            :     void AddAction(SdrUndoAction* pAct);
     114                 :            : 
     115                 :        310 :     void SetComment(const String& rStr) { aComment=rStr; }
     116                 :          9 :     void SetObjDescription(const String& rStr) { aObjDescription=rStr; }
     117                 :            :     virtual rtl::OUString GetComment() const;
     118                 :            :     virtual String GetSdrRepeatComment(SdrView& rView) const;
     119                 :            : 
     120                 :            :     virtual void Undo();
     121                 :            :     virtual void Redo();
     122                 :            : 
     123                 :            :     virtual bool CanSdrRepeat(SdrView& rView) const;
     124                 :            :     virtual void SdrRepeat(SdrView& rView);
     125                 :          6 :     void SetRepeatFunction(SdrRepeatFunc eFunc) { eFunction=eFunc; }
     126                 :            :     SdrRepeatFunc GetRepeatFunction() const { return eFunction; }
     127                 :            : };
     128                 :            : 
     129                 :            : //************************************************************
     130                 :            : //   SdrUndoObj
     131                 :            : //
     132                 :            : // Abstrakte Basisklasse fuer alle UndoActions die mit Objekten zu tun haben.
     133                 :            : //
     134                 :            : //************************************************************
     135                 :            : 
     136         [ -  + ]:        502 : class SVX_DLLPUBLIC SdrUndoObj : public SdrUndoAction
     137                 :            : {
     138                 :            : protected:
     139                 :            :     SdrObject*                  pObj;
     140                 :            : 
     141                 :            : protected:
     142                 :            :     SdrUndoObj(SdrObject& rNewObj);
     143                 :            : 
     144                 :            :     void ImpTakeDescriptionStr(sal_uInt16 nStrCacheID, String& rStr, bool bRepeat = false) const;
     145                 :            : 
     146                 :            :     static void GetDescriptionStringForObject( const SdrObject& _rForObject, sal_uInt16 nStrCacheID, String& rStr, bool bRepeat = false );
     147                 :            : 
     148                 :            :     // #94278# new method for evtl. PageChange at UNDO/REDO
     149                 :            :     void ImpShowPageOfThisObject();
     150                 :            : };
     151                 :            : 
     152                 :            : //************************************************************
     153                 :            : //   SdrUndoAttrObj
     154                 :            : //
     155                 :            : // Aenderung der Objektattribute.
     156                 :            : // Action direkt vor dem Setzen der neuen Attribute konstruieren.
     157                 :            : // Auch fuer StyleSheets
     158                 :            : //
     159                 :            : //************************************************************
     160                 :            : 
     161                 :            : class SVX_DLLPUBLIC SdrUndoAttrObj : public SdrUndoObj
     162                 :            : {
     163                 :            : protected:
     164                 :            :     SfxItemSet*                 pUndoSet;
     165                 :            :     SfxItemSet*                 pRedoSet;
     166                 :            :     SfxItemSet*                 pRepeatSet;
     167                 :            : 
     168                 :            :     // oder besser den StyleSheetNamen merken?
     169                 :            :     SfxStyleSheet*              pUndoStyleSheet;
     170                 :            :     SfxStyleSheet*              pRedoStyleSheet;
     171                 :            :     SfxStyleSheet*              pRepeatStyleSheet;
     172                 :            :     bool                        bStyleSheet;
     173                 :            :     bool                        bHaveToTakeRedoSet;
     174                 :            : 
     175                 :            :     // Bei Zuweisung von TextItems auf ein Zeichenobjekt mit Text:
     176                 :            :     OutlinerParaObject*         pTextUndo;
     177                 :            :     // #i8508#
     178                 :            :     // The text rescue mechanism needs also to be implemented for redo actions.
     179                 :            :     OutlinerParaObject*         pTextRedo;
     180                 :            : 
     181                 :            :     // Wenn sich um ein Gruppenobjekt handelt:
     182                 :            :     SdrUndoGroup*               pUndoGroup;
     183                 :            : 
     184                 :            : public:
     185                 :            :     SdrUndoAttrObj(SdrObject& rNewObj, bool bStyleSheet1 = false, bool bSaveText = false);
     186                 :            :     virtual ~SdrUndoAttrObj();
     187                 :            :     virtual void Undo();
     188                 :            :     virtual void Redo();
     189                 :            : 
     190                 :            :     virtual rtl::OUString GetComment() const;
     191                 :            :     virtual String GetSdrRepeatComment(SdrView& rView) const;
     192                 :            : 
     193                 :            :     virtual void SdrRepeat(SdrView& rView);
     194                 :            :     virtual bool CanSdrRepeat(SdrView& rView) const;
     195                 :            : };
     196                 :            : 
     197                 :            : //************************************************************
     198                 :            : //   SdrUndoMoveObj
     199                 :            : //
     200                 :            : // Blosses verschieben eines Objektes.
     201                 :            : // Action direkt vor dem Verschieben konstruieren.
     202                 :            : //
     203                 :            : //************************************************************
     204                 :            : 
     205         [ #  # ]:          0 : class SVX_DLLPUBLIC SdrUndoMoveObj : public SdrUndoObj
     206                 :            : {
     207                 :            : protected:
     208                 :            :     Size                        aDistance;     // Entfernung, um die verschoben wird
     209                 :            : 
     210                 :            : public:
     211                 :          0 :     SdrUndoMoveObj(SdrObject& rNewObj): SdrUndoObj(rNewObj) {}
     212                 :          0 :     SdrUndoMoveObj(SdrObject& rNewObj, const Size& rDist): SdrUndoObj(rNewObj),aDistance(rDist) {}
     213                 :            : 
     214                 :            :     void SetDistance(const Size& rDist) { aDistance=rDist; }
     215                 :            :     const Size& GetDistance() const { return aDistance; }
     216                 :            : 
     217                 :            :     virtual void Undo();
     218                 :            :     virtual void Redo();
     219                 :            : 
     220                 :            :     virtual rtl::OUString GetComment() const;
     221                 :            :     virtual String GetSdrRepeatComment(SdrView& rView) const;
     222                 :            : 
     223                 :            :     virtual void SdrRepeat(SdrView& rView);
     224                 :            :     virtual bool CanSdrRepeat(SdrView& rView) const;
     225                 :            : };
     226                 :            : 
     227                 :            : //************************************************************
     228                 :            : //   SdrUndoGeoObj
     229                 :            : //
     230                 :            : // Aenderung der Geometrie eines Objektes.
     231                 :            : // Action direkt vor der geometrischen Transformation konstruieren.
     232                 :            : //
     233                 :            : //************************************************************
     234                 :            : 
     235                 :            : class SVX_DLLPUBLIC SdrUndoGeoObj : public SdrUndoObj
     236                 :            : {
     237                 :            : protected:
     238                 :            :     SdrObjGeoData*              pUndoGeo;
     239                 :            :     SdrObjGeoData*              pRedoGeo;
     240                 :            :     // Wenn sich um ein Gruppenobjekt handelt:
     241                 :            :     SdrUndoGroup*               pUndoGroup;
     242                 :            : 
     243                 :            : public:
     244                 :            :     SdrUndoGeoObj(SdrObject& rNewObj);
     245                 :            :     virtual ~SdrUndoGeoObj();
     246                 :            : 
     247                 :            :     virtual void Undo();
     248                 :            :     virtual void Redo();
     249                 :            : 
     250                 :            :     virtual rtl::OUString GetComment() const;
     251                 :            : };
     252                 :            : 
     253                 :            : //************************************************************
     254                 :            : //   SdrUndoObjList
     255                 :            : //
     256                 :            : // Manipulationen an einer ObjList: Neues Obj, DeleteObj, SetObjZLevel, Grouping, ...
     257                 :            : // Abstrakte Basisklasse.
     258                 :            : //
     259                 :            : //************************************************************
     260                 :            : 
     261                 :            : class SVX_DLLPUBLIC SdrUndoObjList : public SdrUndoObj {
     262                 :            :     bool                        bOwner;
     263                 :            : 
     264                 :            : protected:
     265                 :            :     SdrObjList*                 pObjList;
     266                 :            :     SdrView*                    pView;      // um bei ObjDel, Undo die
     267                 :            :     SdrPageView*                pPageView;  // Selektion widerherstellen zu koennen
     268                 :            :     sal_uInt32                      nOrdNum;
     269                 :            :     // Bei einem Undo/Redo findet moeglicherweise Uebereignung des Objektes
     270                 :            :     // statt. Im Dtor wird das Obj deleted, wenn bOwner==TRUE
     271                 :            : 
     272                 :            : protected:
     273                 :            :     SdrUndoObjList(SdrObject& rNewObj, bool bOrdNumDirect = false);
     274                 :            :     virtual ~SdrUndoObjList();
     275                 :            : 
     276                 :            :     void SetView(SdrView* pView1, SdrPageView* pPageView1) { pView=pView1; pPageView=pPageView1; }
     277                 :        368 :     bool IsOwner() { return bOwner; }
     278                 :            :     void SetOwner(bool bNew);
     279                 :            : };
     280                 :            : 
     281                 :            : //************************************************************
     282                 :            : //   SdrUndoRemoveObj
     283                 :            : //
     284                 :            : // Entfernen Objekts aus einer Objektliste. Innerhalb einer UndoGroup
     285                 :            : // mit korrospondierenden Inserts zu verwenden.
     286                 :            : // Action vor dem entfernen aus der ObjList konstruieren.
     287                 :            : //
     288                 :            : //************************************************************
     289                 :            : 
     290         [ -  + ]:         60 : class SVX_DLLPUBLIC SdrUndoRemoveObj : public SdrUndoObjList
     291                 :            : {
     292                 :            : public:
     293                 :         19 :     SdrUndoRemoveObj(SdrObject& rNewObj, bool bOrdNumDirect = false)
     294                 :         19 :     : SdrUndoObjList(rNewObj,bOrdNumDirect) {}
     295                 :            : 
     296                 :            :     virtual void Undo();
     297                 :            :     virtual void Redo();
     298                 :            : };
     299                 :            : 
     300                 :            : //************************************************************
     301                 :            : //   SdrUndoInsertObj
     302                 :            : //
     303                 :            : // Einfuegen Objekts in eine Objektliste. Innerhalb einer UndoGroup
     304                 :            : // mit korrospondierenden Removes zu verwenden.
     305                 :            : // Action vor dem entfernen aus der ObjList konstruieren.
     306                 :            : //
     307                 :            : //************************************************************
     308                 :            : 
     309         [ -  + ]:        315 : class SVX_DLLPUBLIC SdrUndoInsertObj : public SdrUndoObjList
     310                 :            : {
     311                 :            : public:
     312                 :        213 :     SdrUndoInsertObj(SdrObject& rNewObj, bool bOrdNumDirect = false)
     313                 :        213 :     :   SdrUndoObjList(rNewObj,bOrdNumDirect) {}
     314                 :            : 
     315                 :            :     virtual void Undo();
     316                 :            :     virtual void Redo();
     317                 :            : };
     318                 :            : 
     319                 :            : //************************************************************
     320                 :            : //   SdrUndoDelObj
     321                 :            : //
     322                 :            : // Loeschen eines Objekts.
     323                 :            : // Action vor dem entfernen aus der ObjList konstruieren.
     324                 :            : //
     325                 :            : //************************************************************
     326                 :            : 
     327         [ -  + ]:          8 : class SVX_DLLPUBLIC SdrUndoDelObj : public SdrUndoRemoveObj
     328                 :            : {
     329                 :            : public:
     330                 :          3 :     SdrUndoDelObj(SdrObject& rNewObj, bool bOrdNumDirect = false)
     331         [ +  - ]:          3 :     :   SdrUndoRemoveObj(rNewObj,bOrdNumDirect) { SetOwner(sal_True); }
     332                 :            : 
     333                 :            :     virtual void Undo();
     334                 :            :     virtual void Redo();
     335                 :            : 
     336                 :            :     virtual rtl::OUString GetComment() const;
     337                 :            :     virtual String GetSdrRepeatComment(SdrView& rView) const;
     338                 :            : 
     339                 :            :     virtual void SdrRepeat(SdrView& rView);
     340                 :            :     virtual bool CanSdrRepeat(SdrView& rView) const;
     341                 :            : };
     342                 :            : 
     343                 :            : //************************************************************
     344                 :            : //   SdrUndoNewObj
     345                 :            : //
     346                 :            : // Einfuegen eines neuen Objektes.
     347                 :            : // Action nach dem einfuegen in die ObjList konstruieren.
     348                 :            : //
     349                 :            : //************************************************************
     350                 :            : 
     351         [ -  + ]:        314 : class SVX_DLLPUBLIC SdrUndoNewObj : public SdrUndoInsertObj
     352                 :            : {
     353                 :            : public:
     354                 :        157 :     SdrUndoNewObj(SdrObject& rNewObj, bool bOrdNumDirect = false)
     355                 :        157 :     :   SdrUndoInsertObj(rNewObj,bOrdNumDirect) {}
     356                 :            : 
     357                 :            :     virtual void Undo();
     358                 :            :     virtual void Redo();
     359                 :            : 
     360                 :            :     virtual rtl::OUString GetComment() const;
     361                 :            : 
     362                 :            :     static  rtl::OUString GetComment( const SdrObject& _rForObject );
     363                 :            : };
     364                 :            : 
     365                 :            : //************************************************************
     366                 :            : //   SdrUndoReplaceObj
     367                 :            : //
     368                 :            : // Austausch eines Objektes.
     369                 :            : // Action vor dem Replace an der ObjList konstruieren.
     370                 :            : //
     371                 :            : //************************************************************
     372                 :            : 
     373                 :            : class SVX_DLLPUBLIC SdrUndoReplaceObj : public SdrUndoObj
     374                 :            : {
     375                 :            :     bool                        bOldOwner;
     376                 :            :     bool                        bNewOwner;
     377                 :            : 
     378                 :            : protected:
     379                 :            :     SdrObjList*                 pObjList;
     380                 :            :     sal_uInt32                      nOrdNum;
     381                 :            :     SdrObject*                  pNewObj;
     382                 :            : 
     383                 :            : public:
     384                 :            :     SdrUndoReplaceObj(SdrObject& rOldObj1, SdrObject& rNewObj1, bool bOrdNumDirect = false);
     385                 :            :     virtual ~SdrUndoReplaceObj();
     386                 :            : 
     387                 :            :     virtual void Undo();
     388                 :            :     virtual void Redo();
     389                 :            : 
     390                 :         40 :     bool IsNewOwner() { return bNewOwner; }
     391                 :            :     void SetNewOwner(bool bNew);
     392                 :            : 
     393                 :         40 :     bool IsOldOwner() { return bOldOwner; }
     394                 :            :     void SetOldOwner(bool bNew);
     395                 :            : };
     396                 :            : 
     397                 :            : //************************************************************
     398                 :            : //   SdrUndoCopyObj
     399                 :            : //
     400                 :            : // Kopieren eines Objekts
     401                 :            : // Action nach dem einfuegen in die ObjList konstruieren.
     402                 :            : //
     403                 :            : //************************************************************
     404                 :            : 
     405         [ #  # ]:          0 : class SdrUndoCopyObj : public SdrUndoNewObj
     406                 :            : {
     407                 :            : public:
     408                 :          0 :     SdrUndoCopyObj(SdrObject& rNewObj, bool bOrdNumDirect = false)
     409                 :          0 :     :   SdrUndoNewObj(rNewObj,bOrdNumDirect) {}
     410                 :            : 
     411                 :            :     virtual rtl::OUString GetComment() const;
     412                 :            : };
     413                 :            : 
     414                 :            : //************************************************************
     415                 :            : //   SdrUndoObjOrdNum
     416                 :            : //************************************************************
     417                 :            : 
     418         [ #  # ]:          0 : class SdrUndoObjOrdNum : public SdrUndoObj
     419                 :            : {
     420                 :            : protected:
     421                 :            :     sal_uInt32                      nOldOrdNum;
     422                 :            :     sal_uInt32                      nNewOrdNum;
     423                 :            : 
     424                 :            : public:
     425                 :            :     SdrUndoObjOrdNum(SdrObject& rNewObj, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1);
     426                 :            : 
     427                 :            :     virtual void Undo();
     428                 :            :     virtual void Redo();
     429                 :            : 
     430                 :            :     virtual rtl::OUString GetComment() const;
     431                 :            : };
     432                 :            : 
     433                 :            : //////////////////////////////////////////////////////////////////////////////
     434                 :            : // #i11702#
     435                 :            : 
     436         [ #  # ]:          0 : class SVX_DLLPUBLIC SdrUndoObjectLayerChange : public SdrUndoObj
     437                 :            : {
     438                 :            : protected:
     439                 :            :     SdrLayerID                  maOldLayer;
     440                 :            :     SdrLayerID                  maNewLayer;
     441                 :            : 
     442                 :            : public:
     443                 :            :     SdrUndoObjectLayerChange(SdrObject& rObj, SdrLayerID aOldLayer, SdrLayerID aNewLayer);
     444                 :            : 
     445                 :            :     virtual void Undo();
     446                 :            :     virtual void Redo();
     447                 :            : };
     448                 :            : 
     449                 :            : //************************************************************
     450                 :            : //   SdrUndoObjSetText
     451                 :            : //************************************************************
     452                 :            : 
     453                 :            : class SVX_DLLPUBLIC SdrUndoObjSetText : public SdrUndoObj
     454                 :            : {
     455                 :            : protected:
     456                 :            :     OutlinerParaObject*         pOldText;
     457                 :            :     OutlinerParaObject*         pNewText;
     458                 :            :     bool                        bNewTextAvailable;
     459                 :            :     sal_Bool                        bEmptyPresObj;
     460                 :            :     sal_Int32                   mnText;
     461                 :            : 
     462                 :            : public:
     463                 :            :     SdrUndoObjSetText(SdrObject& rNewObj, sal_Int32 nText );
     464                 :            :     virtual ~SdrUndoObjSetText();
     465                 :            : 
     466                 :          0 :     bool IsDifferent() const { return pOldText!=pNewText; }
     467                 :            :     void AfterSetText();
     468                 :            : 
     469                 :            :     virtual void Undo();
     470                 :            :     virtual void Redo();
     471                 :            : 
     472                 :            :     virtual rtl::OUString GetComment() const;
     473                 :            :     virtual String GetSdrRepeatComment(SdrView& rView) const;
     474                 :            : 
     475                 :            :     virtual void SdrRepeat(SdrView& rView);
     476                 :            :     virtual bool CanSdrRepeat(SdrView& rView) const;
     477                 :            : };
     478                 :            : 
     479                 :            : // Implement Title/Description Elements UI for Writer text frames, graphics and embedded objects (#i73249#)
     480 [ +  - ][ +  - ]:        188 : class SdrUndoObjStrAttr : public SdrUndoObj
                 [ -  + ]
     481                 :            : {
     482                 :            : public:
     483                 :            :     enum ObjStrAttrType
     484                 :            :     {
     485                 :            :         OBJ_NAME,
     486                 :            :         OBJ_TITLE,
     487                 :            :         OBJ_DESCRIPTION
     488                 :            :     };
     489                 :            : 
     490                 :            : protected:
     491                 :            :     const ObjStrAttrType meObjStrAttr;
     492                 :            :     const String msOldStr;
     493                 :            :     const String msNewStr;
     494                 :            : 
     495                 :            : public:
     496                 :            :     SdrUndoObjStrAttr( SdrObject& rNewObj,
     497                 :            :                        const ObjStrAttrType eObjStrAttr,
     498                 :            :                        const String& sOldStr,
     499                 :            :                        const String& sNewStr);
     500                 :            : 
     501                 :            :     virtual void Undo();
     502                 :            :     virtual void Redo();
     503                 :            : 
     504                 :            :     virtual rtl::OUString GetComment() const;
     505                 :            : };
     506                 :            : 
     507                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     508                 :            : //
     509                 :            : //  @@     @@@@  @@  @@ @@@@@ @@@@@
     510                 :            : //  @@    @@  @@ @@  @@ @@    @@  @@
     511                 :            : //  @@    @@  @@ @@  @@ @@    @@  @@
     512                 :            : //  @@    @@@@@@  @@@@  @@@@  @@@@@
     513                 :            : //  @@    @@  @@   @@   @@    @@  @@
     514                 :            : //  @@    @@  @@   @@   @@    @@  @@
     515                 :            : //  @@@@@ @@  @@   @@   @@@@@ @@  @@
     516                 :            : //
     517                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     518                 :            : 
     519                 :            : //************************************************************
     520                 :            : //   SdrUndoLayer
     521                 :            : //
     522                 :            : // Abstrakte Basisklasse fuer alle UndoActions die mit SdrLayer zu tun haben.
     523                 :            : //
     524                 :            : //************************************************************
     525                 :            : 
     526                 :            : class SdrUndoLayer : public SdrUndoAction
     527                 :            : {
     528                 :            : protected:
     529                 :            :     SdrLayer*                   pLayer;
     530                 :            :     SdrLayerAdmin*              pLayerAdmin;
     531                 :            :     sal_uInt16                      nNum;
     532                 :            :     bool                        bItsMine;
     533                 :            : 
     534                 :            : protected:
     535                 :            :     SdrUndoLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel);
     536                 :            :     virtual ~SdrUndoLayer();
     537                 :            : };
     538                 :            : 
     539                 :            : //************************************************************
     540                 :            : //   SdrUndoNewLayer
     541                 :            : //
     542                 :            : // Einfuegen eines neuen Layer. Action nach dem Einfuegen konstruieren.
     543                 :            : //
     544                 :            : //************************************************************
     545                 :            : 
     546         [ #  # ]:          0 : class SdrUndoNewLayer : public SdrUndoLayer
     547                 :            : {
     548                 :            : public:
     549                 :          0 :     SdrUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel)
     550                 :          0 :     : SdrUndoLayer(nLayerNum,rNewLayerAdmin,rNewModel) {}
     551                 :            : 
     552                 :            :     virtual void Undo();
     553                 :            :     virtual void Redo();
     554                 :            : 
     555                 :            :     virtual rtl::OUString GetComment() const;
     556                 :            : };
     557                 :            : 
     558                 :            : //************************************************************
     559                 :            : //   SdrUndoDelLayer
     560                 :            : //
     561                 :            : // Loeschen eines Layer. Action vor dem Remove konstruieren
     562                 :            : //
     563                 :            : //************************************************************
     564                 :            : 
     565         [ -  + ]:          4 : class SdrUndoDelLayer : public SdrUndoLayer
     566                 :            : {
     567                 :            : public:
     568                 :          2 :     SdrUndoDelLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel)
     569                 :          2 :     : SdrUndoLayer(nLayerNum,rNewLayerAdmin,rNewModel) { bItsMine=sal_True; }
     570                 :            : 
     571                 :            :     virtual void Undo();
     572                 :            :     virtual void Redo();
     573                 :            : 
     574                 :            :     virtual rtl::OUString GetComment() const;
     575                 :            : };
     576                 :            : 
     577                 :            : //************************************************************
     578                 :            : //   SdrUndoMoveLayer
     579                 :            : //
     580                 :            : // Verschieben eines Layer. Action vor dem Verschieben konstruieren.
     581                 :            : //
     582                 :            : //************************************************************
     583                 :            : 
     584         [ #  # ]:          0 : class SdrUndoMoveLayer : public SdrUndoLayer
     585                 :            : {
     586                 :            :     sal_uInt16                      nNeuPos;
     587                 :            : 
     588                 :            : public:
     589                 :          0 :     SdrUndoMoveLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel, sal_uInt16 nNeuPos1)
     590                 :          0 :     :   SdrUndoLayer(nLayerNum,rNewLayerAdmin,rNewModel), nNeuPos(nNeuPos1) {}
     591                 :            : 
     592                 :            :     virtual void Undo();
     593                 :            :     virtual void Redo();
     594                 :            : 
     595                 :            :     virtual rtl::OUString GetComment() const;
     596                 :            : };
     597                 :            : 
     598                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     599                 :            : //
     600                 :            : //  @@@@@   @@@@   @@@@  @@@@@  @@@@
     601                 :            : //  @@  @@ @@  @@ @@  @@ @@    @@  @@
     602                 :            : //  @@  @@ @@  @@ @@     @@    @@
     603                 :            : //  @@@@@  @@@@@@ @@ @@@ @@@@   @@@@
     604                 :            : //  @@     @@  @@ @@  @@ @@        @@
     605                 :            : //  @@     @@  @@ @@  @@ @@    @@  @@
     606                 :            : //  @@     @@  @@  @@@@@ @@@@@  @@@@
     607                 :            : //
     608                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     609                 :            : 
     610                 :            : //************************************************************
     611                 :            : //   SdrUndoPage
     612                 :            : //
     613                 :            : // Abstrakte Basisklasse fuer alle UndoActions die mit SdrPages zu tun haben.
     614                 :            : //
     615                 :            : //************************************************************
     616                 :            : 
     617         [ -  + ]:         69 : class SVX_DLLPUBLIC SdrUndoPage : public SdrUndoAction
     618                 :            : {
     619                 :            : protected:
     620                 :            :     SdrPage&                    mrPage;
     621                 :            : 
     622                 :            : protected:
     623                 :            :     void ImpInsertPage(sal_uInt16 nNum);
     624                 :            :     void ImpRemovePage(sal_uInt16 nNum);
     625                 :            :     void ImpMovePage(sal_uInt16 nOldNum, sal_uInt16 nNewNum);
     626                 :            : 
     627                 :            : protected:
     628                 :            :     SdrUndoPage(SdrPage& rNewPg);
     629                 :            : 
     630                 :            :     void ImpTakeDescriptionStr(sal_uInt16 nStrCacheID, String& rStr, sal_uInt16 n=0, bool bRepeat = false) const;
     631                 :            : };
     632                 :            : 
     633                 :            : //************************************************************
     634                 :            : //   SdrUndoPageList
     635                 :            : //
     636                 :            : // Manipulationen an einer PageList: Neue Page, DeletePage, MovePage(ChangePageNum)
     637                 :            : // Abstrakte Basisklasse.
     638                 :            : //
     639                 :            : //************************************************************
     640                 :            : 
     641                 :            : class SVX_DLLPUBLIC SdrUndoPageList : public SdrUndoPage
     642                 :            : {
     643                 :            : protected:
     644                 :            :     sal_uInt16                      nPageNum;
     645                 :            : 
     646                 :            :     // Bei einem Undo/Redo findet moeglicherweise Uebereignung der Page
     647                 :            :     // statt. Im Dtor wird die Page deleted, wenn bItsMine==TRUE
     648                 :            :     bool                        bItsMine;
     649                 :            : 
     650                 :            : protected:
     651                 :            :     SdrUndoPageList(SdrPage& rNewPg);
     652                 :            :     virtual ~SdrUndoPageList();
     653                 :            : };
     654                 :            : 
     655                 :            : //************************************************************
     656                 :            : //   SdrUndoDelPage
     657                 :            : //
     658                 :            : // Loeschen einer Page.
     659                 :            : // Action vor dem entfernen aus der List konstruieren.
     660                 :            : //
     661                 :            : //************************************************************
     662                 :            : 
     663                 :            : class SVX_DLLPUBLIC SdrUndoDelPage : public SdrUndoPageList
     664                 :            : {
     665                 :            :     // Beim loeschen einer MasterPage merke ich mir in dieser UndoGroup
     666                 :            :     // alle Beziehungen der Zeichenseiten zu der geloeschten MasterPage
     667                 :            :     SdrUndoGroup*               pUndoGroup;
     668                 :            : 
     669                 :            : public:
     670                 :            :     SdrUndoDelPage(SdrPage& rNewPg);
     671                 :            :     virtual ~SdrUndoDelPage();
     672                 :            : 
     673                 :            :     virtual void Undo();
     674                 :            :     virtual void Redo();
     675                 :            : 
     676                 :            :     virtual rtl::OUString GetComment() const;
     677                 :            :     virtual String GetSdrRepeatComment(SdrView& rView) const;
     678                 :            : 
     679                 :            :     virtual void SdrRepeat(SdrView& rView);
     680                 :            :     virtual bool CanSdrRepeat(SdrView& rView) const;
     681                 :            : };
     682                 :            : 
     683                 :            : //************************************************************
     684                 :            : //   SdrUndoNewPage
     685                 :            : //
     686                 :            : // Einfuegen einer neuen Page.
     687                 :            : // Action nach dem einfuegen in die Liste konstruieren.
     688                 :            : //
     689                 :            : //************************************************************
     690                 :            : 
     691         [ -  + ]:         84 : class SVX_DLLPUBLIC SdrUndoNewPage : public SdrUndoPageList
     692                 :            : {
     693                 :            : public:
     694                 :          0 :     SdrUndoNewPage(SdrPage& rNewPg): SdrUndoPageList(rNewPg) {}
     695                 :            : 
     696                 :            :     virtual void Undo();
     697                 :            :     virtual void Redo();
     698                 :            : 
     699                 :            :     virtual rtl::OUString GetComment() const;
     700                 :            : };
     701                 :            : 
     702                 :            : //************************************************************
     703                 :            : //   SdrUndoCopyPage
     704                 :            : //
     705                 :            : // Kopieren einer Page
     706                 :            : // Action nach dem einfuegen in die Liste konstruieren.
     707                 :            : //
     708                 :            : //************************************************************
     709                 :            : 
     710         [ #  # ]:          0 : class SdrUndoCopyPage : public SdrUndoNewPage
     711                 :            : {
     712                 :            : public:
     713                 :          0 :     SdrUndoCopyPage(SdrPage& rNewPg): SdrUndoNewPage(rNewPg) {}
     714                 :            : 
     715                 :            :     virtual rtl::OUString GetComment() const;
     716                 :            :     virtual String GetSdrRepeatComment(SdrView& rView) const;
     717                 :            : 
     718                 :            :     virtual void SdrRepeat(SdrView& rView);
     719                 :            :     virtual bool CanSdrRepeat(SdrView& rView) const;
     720                 :            : };
     721                 :            : 
     722                 :            : //************************************************************
     723                 :            : //   SdrUndoSetPageNum
     724                 :            : //
     725                 :            : // Verschieben der Page innerhalb der Liste
     726                 :            : // Action vor dem Verschieben der Page konstruieren.
     727                 :            : //
     728                 :            : //************************************************************
     729                 :            : 
     730         [ #  # ]:          0 : class SVX_DLLPUBLIC SdrUndoSetPageNum : public SdrUndoPage
     731                 :            : {
     732                 :            : protected:
     733                 :            :     sal_uInt16                      nOldPageNum;
     734                 :            :     sal_uInt16                      nNewPageNum;
     735                 :            : 
     736                 :            : public:
     737                 :          0 :     SdrUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1)
     738                 :          0 :     :   SdrUndoPage(rNewPg),nOldPageNum(nOldPageNum1),nNewPageNum(nNewPageNum1) {}
     739                 :            : 
     740                 :            :     virtual void Undo();
     741                 :            :     virtual void Redo();
     742                 :            : 
     743                 :            :     virtual rtl::OUString GetComment() const;
     744                 :            : };
     745                 :            : 
     746                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     747                 :            : //
     748                 :            : //  @@   @@  @@@@   @@@@  @@@@@@ @@@@@ @@@@@   @@@@@   @@@@   @@@@  @@@@@  @@@@
     749                 :            : //  @@@ @@@ @@  @@ @@  @@   @@   @@    @@  @@  @@  @@ @@  @@ @@  @@ @@    @@  @@
     750                 :            : //  @@@@@@@ @@  @@ @@       @@   @@    @@  @@  @@  @@ @@  @@ @@     @@    @@
     751                 :            : //  @@@@@@@ @@@@@@  @@@@    @@   @@@@  @@@@@   @@@@@  @@@@@@ @@ @@@ @@@@   @@@@
     752                 :            : //  @@ @ @@ @@  @@     @@   @@   @@    @@  @@  @@     @@  @@ @@  @@ @@        @@
     753                 :            : //  @@   @@ @@  @@ @@  @@   @@   @@    @@  @@  @@     @@  @@ @@  @@ @@    @@  @@
     754                 :            : //  @@   @@ @@  @@  @@@@    @@   @@@@@ @@  @@  @@     @@  @@  @@@@@ @@@@@  @@@@
     755                 :            : //
     756                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     757                 :            : 
     758                 :            : //************************************************************
     759                 :            : //   SdrUndoPageMasterPage
     760                 :            : //
     761                 :            : // Abstrakte Basisklasse fuer alle UndoActions die mit
     762                 :            : // MasterPage-Beziehungen zu tun haben.
     763                 :            : //
     764                 :            : //************************************************************
     765                 :            : 
     766                 :            : class SdrUndoPageMasterPage : public SdrUndoPage
     767                 :            : {
     768                 :            : protected:
     769                 :            :     sal_Bool                    mbOldHadMasterPage;
     770                 :            :     SetOfByte                   maOldSet;
     771                 :            :     sal_uInt16                  maOldMasterPageNumber;
     772                 :            : 
     773                 :            : protected:
     774                 :            :     SdrUndoPageMasterPage(SdrPage& rChangedPage);
     775                 :            : 
     776                 :            : public:
     777                 :            :     SVX_DLLPUBLIC virtual ~SdrUndoPageMasterPage();
     778                 :            : };
     779                 :            : 
     780                 :            : //************************************************************
     781                 :            : //   SdrUndoPageRemoveMasterPage
     782                 :            : //
     783                 :            : // Entfernen einer MasterPage von einer Zeichenseite.
     784                 :            : // Action vor dem Entfernen des MasterPageDescriptors erzeugen.
     785                 :            : //
     786                 :            : //************************************************************
     787                 :            : 
     788         [ #  # ]:          0 : class SdrUndoPageRemoveMasterPage : public SdrUndoPageMasterPage
     789                 :            : {
     790                 :            : public:
     791                 :            :     SdrUndoPageRemoveMasterPage(SdrPage& rChangedPage);
     792                 :            : 
     793                 :            :     virtual void Undo();
     794                 :            :     virtual void Redo();
     795                 :            : 
     796                 :            :     virtual rtl::OUString GetComment() const;
     797                 :            : };
     798                 :            : 
     799                 :            : //************************************************************
     800                 :            : //   SdrUndoPageChangeMasterPage
     801                 :            : //
     802                 :            : // Aenderung des MasterPageDescriptors (z.B. Aendern der VisibleLayer).
     803                 :            : // Action vor der Aenderung am MasterPageDescriptor erzeugen.
     804                 :            : //
     805                 :            : //************************************************************
     806                 :            : 
     807         [ #  # ]:          0 : class SVX_DLLPUBLIC SdrUndoPageChangeMasterPage : public SdrUndoPageMasterPage
     808                 :            : {
     809                 :            : protected:
     810                 :            :     sal_Bool                    mbNewHadMasterPage;
     811                 :            :     SetOfByte                   maNewSet;
     812                 :            :     sal_uInt16                  maNewMasterPageNumber;
     813                 :            : 
     814                 :            : public:
     815                 :            :     SdrUndoPageChangeMasterPage(SdrPage& rChangedPage);
     816                 :            : 
     817                 :            :     virtual void Undo();
     818                 :            :     virtual void Redo();
     819                 :            : 
     820                 :            :     virtual rtl::OUString GetComment() const;
     821                 :            : };
     822                 :            : 
     823                 :            : ///////////////////////////////////////////////////////////////////////
     824                 :            : 
     825                 :            : /** the SdrUndoFactory can be set and retrieved from the SdrModel.
     826                 :            :     It is used by the drawing layer implementations to create undo actions.
     827                 :            :     It can be used by applications to create application specific undo actions.
     828                 :            : */
     829                 :         64 : class SVX_DLLPUBLIC SdrUndoFactory
     830                 :            : {
     831                 :            : public:
     832                 :            :     // shapes
     833                 :            :     virtual ~SdrUndoFactory();
     834                 :            :     virtual SdrUndoAction* CreateUndoMoveObject( SdrObject& rObject );
     835                 :            :     virtual SdrUndoAction* CreateUndoMoveObject( SdrObject& rObject, const Size& rDist );
     836                 :            :     virtual SdrUndoAction* CreateUndoGeoObject( SdrObject& rObject );
     837                 :            :     virtual SdrUndoAction* CreateUndoAttrObject( SdrObject& rObject, bool bStyleSheet1 = false, bool bSaveText = false );
     838                 :            :     virtual SdrUndoAction* CreateUndoRemoveObject( SdrObject& rObject, bool bOrdNumDirect = false);
     839                 :            :     virtual SdrUndoAction* CreateUndoInsertObject( SdrObject& rObject, bool bOrdNumDirect = false);
     840                 :            :     virtual SdrUndoAction* CreateUndoDeleteObject( SdrObject& rObject, bool bOrdNumDirect = false);
     841                 :            :     virtual SdrUndoAction* CreateUndoNewObject( SdrObject& rObject, bool bOrdNumDirect = false);
     842                 :            :     virtual SdrUndoAction* CreateUndoCopyObject( SdrObject& rObject, bool bOrdNumDirect = false);
     843                 :            : 
     844                 :            :     virtual SdrUndoAction* CreateUndoObjectOrdNum( SdrObject& rObject, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1);
     845                 :            : 
     846                 :            :     virtual SdrUndoAction* CreateUndoReplaceObject( SdrObject& rOldObject, SdrObject& rNewObject, bool bOrdNumDirect = false );
     847                 :            :     virtual SdrUndoAction* CreateUndoObjectLayerChange( SdrObject& rObject, SdrLayerID aOldLayer, SdrLayerID aNewLayer );
     848                 :            :     virtual SdrUndoAction* CreateUndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText );
     849                 :            : 
     850                 :            :     // Implement Title/Description Elements UI for Writer text frames, graphics and embedded objects (#i73249#)
     851                 :            :     virtual SdrUndoAction* CreateUndoObjectStrAttr( SdrObject& rObject,
     852                 :            :                                                     SdrUndoObjStrAttr::ObjStrAttrType eObjStrAttrType,
     853                 :            :                                                     String sOldStr,
     854                 :            :                                                     String sNewStr );
     855                 :            : 
     856                 :            :     // layer
     857                 :            :     virtual SdrUndoAction* CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel);
     858                 :            :     virtual SdrUndoAction* CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel);
     859                 :            :     virtual SdrUndoAction* CreateUndoMoveLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel, sal_uInt16 nNeuPos1);
     860                 :            : 
     861                 :            :     // page
     862                 :            :     virtual SdrUndoAction*  CreateUndoDeletePage(SdrPage& rPage);
     863                 :            :     virtual SdrUndoAction* CreateUndoNewPage(SdrPage& rPage);
     864                 :            :     virtual SdrUndoAction* CreateUndoCopyPage(SdrPage& rPage);
     865                 :            :     virtual SdrUndoAction* CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1);
     866                 :            : 
     867                 :            :     // master page
     868                 :            :     virtual SdrUndoAction* CreateUndoPageRemoveMasterPage(SdrPage& rChangedPage);
     869                 :            :     virtual SdrUndoAction* CreateUndoPageChangeMasterPage(SdrPage& rChangedPage);
     870                 :            : };
     871                 :            : 
     872                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     873                 :            : 
     874                 :            : #endif //_SVDUNDO_HXX
     875                 :            : 
     876                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10