diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index ac5e2398..e830958e 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -1550,11 +1550,11 @@ void UBBoardController::moveSceneToIndex(int source, int target) } } -void UBBoardController::fitUniqIems(const QUndoCommand *parent, QSet &itms) +void UBBoardController::findUniquesItems(const QUndoCommand *parent, QSet &itms) { if (parent->childCount()) { for (int i = 0; i < parent->childCount(); i++) { - fitUniqIems(parent->child(i), itms); + findUniquesItems(parent->child(i), itms); } } @@ -1563,11 +1563,11 @@ void UBBoardController::fitUniqIems(const QUndoCommand *parent, QSet(parent); - if(abstractCmd->getType() != UBAbstractUndoCommand::undotype_GRAPHICITEM) + const UBUndoCommand *undoCmd = static_cast(parent); + if(undoCmd->getType() != UBUndoType::undotype_GRAPHICITEM) return; - const UBGraphicsItemUndoCommand *cmd = static_cast(parent); + const UBGraphicsItemUndoCommand *cmd = dynamic_cast(parent); // go through all added and removed objects, for create list of unique objects // grouped items will be deleted by groups, so we don't need do delete that items. @@ -1593,7 +1593,7 @@ void UBBoardController::ClearUndoStack() QSet uniqueItems; // go through all stack command for (int i = 0; i < UBApplication::undoStack->count(); i++) { - fitUniqIems(UBApplication::undoStack->command(i), uniqueItems); + findUniquesItems(UBApplication::undoStack->command(i), uniqueItems); } // go through all unique items, and check, if they are on scene, or not. diff --git a/src/board/UBBoardController.h b/src/board/UBBoardController.h index 8ab9b27e..93f92419 100644 --- a/src/board/UBBoardController.h +++ b/src/board/UBBoardController.h @@ -160,7 +160,7 @@ class UBBoardController : public UBDocumentContainer void notifyPageChanged(); void displayMetaData(QMap metadatas); - void fitUniqIems(const QUndoCommand *parent, QSet &itms); + void findUniquesItems(const QUndoCommand *parent, QSet &itms); void ClearUndoStack(); void setActiveDocumentScene(UBDocumentProxy* pDocumentProxy, int pSceneIndex = 0, bool forceReload = false); diff --git a/src/core/UB.h b/src/core/UB.h index 493590c8..ab42fb7f 100644 --- a/src/core/UB.h +++ b/src/core/UB.h @@ -195,4 +195,13 @@ struct DocumentSizeRatio }; }; + +struct UBUndoType +{ + enum Enum + { + undotype_UNKNOWN = 0, undotype_DOCUMENT, undotype_GRAPHICITEMTRANSFORM, undotype_GRAPHICITEM, undotype_GRAPHICTEXTITEM, undotype_PAGESIZE, undotype_GRAPHICSGROUPITEM + }; +}; + #endif /* UB_H_ */ diff --git a/src/domain/UBGraphicsItemGroupUndoCommand.cpp b/src/domain/UBGraphicsItemGroupUndoCommand.cpp index 25a3ebed..ea1df298 100644 --- a/src/domain/UBGraphicsItemGroupUndoCommand.cpp +++ b/src/domain/UBGraphicsItemGroupUndoCommand.cpp @@ -28,9 +28,10 @@ #include "core/memcheck.h" -UBGraphicsItemGroupUndoCommand::UBGraphicsItemGroupUndoCommand(UBGraphicsScene *pScene, UBGraphicsGroupContainerItem *pGroupCreated) : - mScene (pScene), mGroup(pGroupCreated), mFirstRedo(true) - +UBGraphicsItemGroupUndoCommand::UBGraphicsItemGroupUndoCommand(UBGraphicsScene *pScene, UBGraphicsGroupContainerItem *pGroupCreated) : UBUndoCommand() + , mScene (pScene) + , mGroup(pGroupCreated) + , mFirstRedo(true) { if (pGroupCreated->childItems().count()) { foreach (QGraphicsItem *item, pGroupCreated->childItems()) { diff --git a/src/domain/UBGraphicsItemGroupUndoCommand.h b/src/domain/UBGraphicsItemGroupUndoCommand.h index 981ebb33..c280af0e 100644 --- a/src/domain/UBGraphicsItemGroupUndoCommand.h +++ b/src/domain/UBGraphicsItemGroupUndoCommand.h @@ -25,18 +25,18 @@ #define UBGRAPHICSITEMGROUPUNDOCOMMAND_H #include -#include "UBAbstractUndoCommand.h" +#include "UBUndoCommand.h" class UBGraphicsScene; class UBGraphicsGroupContainerItem; -class UBGraphicsItemGroupUndoCommand : public UBAbstractUndoCommand +class UBGraphicsItemGroupUndoCommand : public UBUndoCommand { public: UBGraphicsItemGroupUndoCommand(UBGraphicsScene *pScene, UBGraphicsGroupContainerItem *pGroupCreated); virtual ~UBGraphicsItemGroupUndoCommand(); - virtual UndoType getType() { return undotype_GRAPHICSGROUPITEM; } + virtual int getType() const { return UBUndoType::undotype_GRAPHICSGROUPITEM; } protected: virtual void undo(); diff --git a/src/domain/UBGraphicsItemTransformUndoCommand.cpp b/src/domain/UBGraphicsItemTransformUndoCommand.cpp index 316eb703..5ea77630 100644 --- a/src/domain/UBGraphicsItemTransformUndoCommand.cpp +++ b/src/domain/UBGraphicsItemTransformUndoCommand.cpp @@ -29,7 +29,7 @@ UBGraphicsItemTransformUndoCommand::UBGraphicsItemTransformUndoCommand(QGraphicsItem* pItem, const QPointF& prevPos, const QTransform& prevTransform, const qreal& prevZValue, - const QSizeF& prevSize) + const QSizeF& prevSize):UBUndoCommand() { mItem = pItem; mPreviousTransform = prevTransform; diff --git a/src/domain/UBGraphicsItemTransformUndoCommand.h b/src/domain/UBGraphicsItemTransformUndoCommand.h index aa586ec2..07e0aede 100644 --- a/src/domain/UBGraphicsItemTransformUndoCommand.h +++ b/src/domain/UBGraphicsItemTransformUndoCommand.h @@ -27,10 +27,10 @@ #include #include "UBResizableGraphicsItem.h" -#include "UBAbstractUndoCommand.h" +#include "UBUndoCommand.h" -class UBGraphicsItemTransformUndoCommand : public UBAbstractUndoCommand +class UBGraphicsItemTransformUndoCommand : public UBUndoCommand { public: UBGraphicsItemTransformUndoCommand(QGraphicsItem* pItem, @@ -40,7 +40,7 @@ class UBGraphicsItemTransformUndoCommand : public UBAbstractUndoCommand const QSizeF& prevSize = QSizeF()); virtual ~UBGraphicsItemTransformUndoCommand(); - virtual UndoType getType() { return undotype_GRAPHICITEMTRANSFORM; } + virtual int getType() const { return UBUndoType::undotype_GRAPHICITEMTRANSFORM; } protected: virtual void undo(); diff --git a/src/domain/UBGraphicsItemUndoCommand.cpp b/src/domain/UBGraphicsItemUndoCommand.cpp index 36cb74d6..b047d6a5 100644 --- a/src/domain/UBGraphicsItemUndoCommand.cpp +++ b/src/domain/UBGraphicsItemUndoCommand.cpp @@ -35,9 +35,8 @@ #include "domain/UBGraphicsGroupContainerItem.h" #include "domain/UBGraphicsPolygonItem.h" -UBGraphicsItemUndoCommand::UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, const QSet& pRemovedItems, - const QSet& pAddedItems, const GroupDataTable &groupsMap) - : mScene(pScene) +UBGraphicsItemUndoCommand::UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, const QSet& pRemovedItems, const QSet& pAddedItems, const GroupDataTable &groupsMap): UBUndoCommand() + , mScene(pScene) , mRemovedItems(pRemovedItems - pAddedItems) , mAddedItems(pAddedItems - pRemovedItems) , mExcludedFromGroup(groupsMap) @@ -57,9 +56,8 @@ UBGraphicsItemUndoCommand::UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, co } } -UBGraphicsItemUndoCommand::UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, QGraphicsItem* pRemovedItem, - QGraphicsItem* pAddedItem) : - mScene(pScene) +UBGraphicsItemUndoCommand::UBGraphicsItemUndoCommand(UBGraphicsScene* pScene, QGraphicsItem* pRemovedItem, QGraphicsItem* pAddedItem) : UBUndoCommand() + , mScene(pScene) { if (pRemovedItem) diff --git a/src/domain/UBGraphicsItemUndoCommand.h b/src/domain/UBGraphicsItemUndoCommand.h index 4e288f37..86cde9aa 100644 --- a/src/domain/UBGraphicsItemUndoCommand.h +++ b/src/domain/UBGraphicsItemUndoCommand.h @@ -25,14 +25,14 @@ #define UBGRAPHICSITEMUNDOCOMMAND_H_ #include -#include "UBAbstractUndoCommand.h" +#include "UBUndoCommand.h" #include "UBGraphicsGroupContainerItem.h" class UBGraphicsScene; -class UBGraphicsItemUndoCommand : public UBAbstractUndoCommand +class UBGraphicsItemUndoCommand : public UBUndoCommand { public: typedef QMultiMap GroupDataTable; @@ -48,7 +48,7 @@ class UBGraphicsItemUndoCommand : public UBAbstractUndoCommand QSet GetAddedList() const { return mAddedItems; } QSet GetRemovedList() const { return mRemovedItems; } - virtual UndoType getType() { return undotype_GRAPHICITEM; } + virtual int getType() const { return UBUndoType::undotype_GRAPHICITEM; } protected: virtual void undo(); diff --git a/src/domain/UBGraphicsTextItemUndoCommand.h b/src/domain/UBGraphicsTextItemUndoCommand.h index 5b1d8c53..85e54714 100644 --- a/src/domain/UBGraphicsTextItemUndoCommand.h +++ b/src/domain/UBGraphicsTextItemUndoCommand.h @@ -25,18 +25,18 @@ #define UBGRAPHICSTEXTITEMUNDOCOMMAND_H_ #include -#include "UBAbstractUndoCommand.h" +#include "UBUndoCommand.h" #include "UBGraphicsTextItem.h" -class UBGraphicsTextItemUndoCommand : public UBAbstractUndoCommand +class UBGraphicsTextItemUndoCommand : public UBUndoCommand { public: UBGraphicsTextItemUndoCommand(UBGraphicsTextItem *textItem); virtual ~UBGraphicsTextItemUndoCommand(); - virtual UndoType getType() { return undotype_GRAPHICTEXTITEM; }; + virtual int getType() const { return UBUndoType::undotype_GRAPHICTEXTITEM; }; protected: virtual void undo(); diff --git a/src/domain/UBPageSizeUndoCommand.h b/src/domain/UBPageSizeUndoCommand.h index 35e46bda..1abbe7a2 100644 --- a/src/domain/UBPageSizeUndoCommand.h +++ b/src/domain/UBPageSizeUndoCommand.h @@ -25,18 +25,18 @@ #define UBPageSizeUndoCommand_H_ #include -#include "UBAbstractUndoCommand.h" +#include "UBUndoCommand.h" class UBGraphicsScene; -class UBPageSizeUndoCommand : public UBAbstractUndoCommand +class UBPageSizeUndoCommand : public UBUndoCommand { public: UBPageSizeUndoCommand(UBGraphicsScene* pScene, const QSize& previousSize, const QSize& newSize); virtual ~UBPageSizeUndoCommand(); - virtual UndoType getType() { return undotype_PAGESIZE; }; + virtual int getType() { return UBUndoType::undotype_PAGESIZE; }; protected: virtual void undo(); diff --git a/src/domain/UBAbstractUndoCommand.cpp b/src/domain/UBUndoCommand.cpp similarity index 76% rename from src/domain/UBAbstractUndoCommand.cpp rename to src/domain/UBUndoCommand.cpp index 54083211..9d641258 100644 --- a/src/domain/UBAbstractUndoCommand.cpp +++ b/src/domain/UBUndoCommand.cpp @@ -21,30 +21,17 @@ -#include "UBAbstractUndoCommand.h" +#include "UBUndoCommand.h" #include "core/memcheck.h" -UBAbstractUndoCommand::UBAbstractUndoCommand() +UBUndoCommand::UBUndoCommand(QUndoCommand* parent):QUndoCommand(parent) { // NOOP } -UBAbstractUndoCommand::~UBAbstractUndoCommand() +UBUndoCommand::~UBUndoCommand() { // NOOP } - -void UBAbstractUndoCommand::undo() -{ - // NOOP -} - -void UBAbstractUndoCommand::redo() -{ - // NOOP -} - -//void UBAbstractUndoCommand::UndoType getType(UndoType type); - diff --git a/src/domain/UBAbstractUndoCommand.h b/src/domain/UBUndoCommand.h similarity index 62% rename from src/domain/UBAbstractUndoCommand.h rename to src/domain/UBUndoCommand.h index a544c52b..80a989ae 100644 --- a/src/domain/UBAbstractUndoCommand.h +++ b/src/domain/UBUndoCommand.h @@ -25,30 +25,16 @@ #define UBABSTRACTUNDOCOMMAND_H_ #include +#include -class UBAbstractUndoCommand : public QUndoCommand +class UBUndoCommand : public QUndoCommand { public: - UBAbstractUndoCommand(); - ~UBAbstractUndoCommand(); - - enum UndoType - { - undotype_UNKNOWN = 0, - undotype_DOCUMENT = 1, - undotype_GRAPHICITEMTRANSFORM = 2, - undotype_GRAPHICITEM = 3, - undotype_GRAPHICTEXTITEM = 4, - undotype_PAGESIZE = 5, - undotype_GRAPHICSGROUPITEM = 6 - }; - - virtual UndoType getType() const { return undotype_UNKNOWN; } - - protected: - virtual void undo(); - virtual void redo(); + UBUndoCommand(QUndoCommand *parent = 0); + ~UBUndoCommand(); + + virtual int getType() const { return UBUndoType::undotype_UNKNOWN; } }; diff --git a/src/domain/domain.pri b/src/domain/domain.pri index 93172f49..b525dfd6 100644 --- a/src/domain/domain.pri +++ b/src/domain/domain.pri @@ -14,7 +14,6 @@ HEADERS += src/domain/UBGraphicsScene.h \ src/domain/UBResizableGraphicsItem.h \ src/domain/UBGraphicsStroke.h \ src/domain/UBGraphicsMediaItem.h \ - src/domain/UBAbstractUndoCommand.h \ src/domain/UBGraphicsGroupContainerItem.h \ src/domain/UBGraphicsGroupContainerItemDelegate.h \ src/domain/UBGraphicsStrokesGroup.h \ @@ -24,7 +23,8 @@ HEADERS += src/domain/UBGraphicsScene.h \ src/domain/UBGraphicsDelegateFrame.h \ src/domain/UBGraphicsWidgetItemDelegate.h \ src/domain/UBGraphicsMediaItemDelegate.h \ - src/domain/UBSelectionFrame.h + src/domain/UBSelectionFrame.h \ + src/domain/UBUndoCommand.h SOURCES += src/domain/UBGraphicsScene.cpp \ src/domain/UBGraphicsItemUndoCommand.cpp \ @@ -42,7 +42,6 @@ SOURCES += src/domain/UBGraphicsScene.cpp \ src/domain/UBResizableGraphicsItem.cpp \ src/domain/UBGraphicsStroke.cpp \ src/domain/UBGraphicsMediaItem.cpp \ - src/domain/UBAbstractUndoCommand.cpp \ src/domain/UBGraphicsGroupContainerItem.cpp \ src/domain/UBGraphicsGroupContainerItemDelegate.cpp \ src/domain/UBGraphicsStrokesGroup.cpp \ @@ -52,4 +51,5 @@ SOURCES += src/domain/UBGraphicsScene.cpp \ src/domain/UBGraphicsMediaItemDelegate.cpp \ src/domain/UBGraphicsDelegateFrame.cpp \ src/domain/UBGraphicsWidgetItemDelegate.cpp \ - src/domain/UBSelectionFrame.cpp + src/domain/UBSelectionFrame.cpp \ + src/domain/UBUndoCommand.cpp