From 4f7e1d743df1b3b59b49fb48493b7033255f9b8f Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Thu, 23 Aug 2012 11:20:26 +0200 Subject: [PATCH 1/2] Implemented group duplication --- src/board/UBBoardController.cpp | 33 +++++++++++++++++-- src/core/UB.h | 1 + .../UBGraphicsGroupContainerItemDelegate.cpp | 1 + src/frameworks/UBFileSystemUtils.cpp | 3 ++ 4 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index d5a383df..5d1d8add 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -551,9 +551,13 @@ void UBBoardController::duplicateItem(UBItem *item) itemSize = commonItem->boundingRect().size(); } + UBMimeType::Enum itemMimeType; QString contentTypeHeader = UBFileSystemUtils::mimeTypeFromFileName(item->sourceUrl().toLocalFile()); - - UBMimeType::Enum itemMimeType = UBFileSystemUtils::mimeTypeFromString(contentTypeHeader); + if(NULL != qgraphicsitem_cast(commonItem)){ + itemMimeType = UBMimeType::Group; + }else{ + itemMimeType = UBFileSystemUtils::mimeTypeFromString(contentTypeHeader); + } switch(static_cast(itemMimeType)) { @@ -598,6 +602,29 @@ void UBBoardController::duplicateItem(UBItem *item) pixitem->pixmap().save(&buffer, format.toLatin1()); } }break; + + case UBMimeType::Group: + { + UBGraphicsGroupContainerItem* groupItem = dynamic_cast(item); + if(groupItem){ + QList children = groupItem->childItems(); + foreach(QGraphicsItem* pIt, children){ + UBItem* pItem = dynamic_cast(pIt); + if(NULL != pItem){ + duplicateItem(pItem); // The duplication already copies the item parameters + QGraphicsItem* pDuplicatedItem = dynamic_cast((mActiveScene->children().last())); + if(NULL != pDuplicatedItem){ + pDuplicatedItem->setSelected(true); + } + } + } + groupItem->setSelected(false); + UBApplication::mainWindow->actionGroupItems->trigger(); + } + return; + break; + } + case UBMimeType::UNKNOWN: { QGraphicsItem *gitem = dynamic_cast(item->deepCopy()); @@ -1330,6 +1357,8 @@ UBItem *UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QStri } } } + }else if("group" == sourceUrl.toString()){ + qDebug() << "accepting url " << sourceUrl.toString() << "as group content"; } else { diff --git a/src/core/UB.h b/src/core/UB.h index afc0f91e..02e2ba18 100644 --- a/src/core/UB.h +++ b/src/core/UB.h @@ -33,6 +33,7 @@ struct UBMimeType Flash, PDF, UniboardTool, + Group, UNKNOWN }; }; diff --git a/src/domain/UBGraphicsGroupContainerItemDelegate.cpp b/src/domain/UBGraphicsGroupContainerItemDelegate.cpp index 6d753cd8..8a24f8f0 100644 --- a/src/domain/UBGraphicsGroupContainerItemDelegate.cpp +++ b/src/domain/UBGraphicsGroupContainerItemDelegate.cpp @@ -19,6 +19,7 @@ UBGraphicsGroupContainerItemDelegate::UBGraphicsGroupContainerItemDelegate(QGrap //Wrapper function. Use it to set correct data() to QGraphicsItem as well setFlippable(false); setRotatable(false); + setCanDuplicate(true); } UBGraphicsGroupContainerItem *UBGraphicsGroupContainerItemDelegate::delegated() diff --git a/src/frameworks/UBFileSystemUtils.cpp b/src/frameworks/UBFileSystemUtils.cpp index 1cd529cd..32f47414 100644 --- a/src/frameworks/UBFileSystemUtils.cpp +++ b/src/frameworks/UBFileSystemUtils.cpp @@ -588,6 +588,9 @@ UBMimeType::Enum UBFileSystemUtils::mimeTypeFromString(const QString& typeString { type = UBMimeType::UniboardTool; } + else if (typeString.startsWith("group")){ + type = UBMimeType::Group; + } return type; } From db10e4fbc050fb19987746c1cc1a69372263bcf8 Mon Sep 17 00:00:00 2001 From: shibakaneki Date: Thu, 23 Aug 2012 11:39:13 +0200 Subject: [PATCH 2/2] Removed unused code --- src/board/UBBoardController.cpp | 2 - src/domain/domain.pri | 121 +++++++++++++-------------- src/frameworks/UBFileSystemUtils.cpp | 3 - 3 files changed, 58 insertions(+), 68 deletions(-) diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp index 2714bf2c..06712f05 100644 --- a/src/board/UBBoardController.cpp +++ b/src/board/UBBoardController.cpp @@ -1357,8 +1357,6 @@ UBItem *UBBoardController::downloadFinished(bool pSuccess, QUrl sourceUrl, QStri } } } - }else if("group" == sourceUrl.toString()){ - qDebug() << "accepting url " << sourceUrl.toString() << "as group content"; } else { diff --git a/src/domain/domain.pri b/src/domain/domain.pri index e8b46b4d..1111106f 100644 --- a/src/domain/domain.pri +++ b/src/domain/domain.pri @@ -1,63 +1,58 @@ - -HEADERS += src/domain/UBGraphicsScene.h \ - src/domain/UBGraphicsItemUndoCommand.h \ - src/domain/UBGraphicsTextItemUndoCommand.h \ - src/domain/UBGraphicsItemTransformUndoCommand.h \ - src/domain/UBGraphicsPixmapItem.h \ - src/domain/UBDocumentUndoCommand.h \ - src/domain/UBPageSizeUndoCommand.h \ - src/domain/UBGraphicsProxyWidget.h \ - src/domain/UBGraphicsWebView.h \ - src/domain/UBGraphicsSvgItem.h \ - src/domain/UBGraphicsPolygonItem.h \ - src/domain/UBItem.h \ - src/domain/UBGraphicsWidgetItem.h \ - src/domain/UBGraphicsPDFItem.h \ - src/domain/UBGraphicsTextItem.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 \ - src/domain/UBGraphicsItemGroupUndoCommand.h - -HEADERS += src/domain/UBGraphicsItemDelegate.h \ - src/domain/UBGraphicsTextItemDelegate.h \ - src/domain/UBGraphicsDelegateFrame.h \ - src/domain/UBGraphicsWidgetItemDelegate.h \ - src/domain/UBGraphicsMediaItemDelegate.h - - -SOURCES += src/domain/UBGraphicsScene.cpp \ - src/domain/UBGraphicsItemUndoCommand.cpp \ - src/domain/UBGraphicsTextItemUndoCommand.cpp \ - src/domain/UBGraphicsItemTransformUndoCommand.cpp \ - src/domain/UBGraphicsPixmapItem.cpp \ - src/domain/UBDocumentUndoCommand.cpp \ - src/domain/UBPageSizeUndoCommand.cpp \ - src/domain/UBGraphicsProxyWidget.cpp \ - src/domain/UBGraphicsWebView.cpp \ - src/domain/UBGraphicsSvgItem.cpp \ - src/domain/UBGraphicsPolygonItem.cpp \ - src/domain/UBItem.cpp \ - src/domain/UBGraphicsVideoItem.cpp \ - src/domain/UBGraphicsWidgetItem.cpp \ - src/domain/UBGraphicsPDFItem.cpp \ - src/domain/UBGraphicsTextItem.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 \ - src/domain/UBGraphicsItemGroupUndoCommand.cpp - -SOURCES += src/domain/UBGraphicsItemDelegate.cpp \ - src/domain/UBGraphicsTextItemDelegate.cpp \ - src/domain/UBGraphicsMediaItemDelegate.cpp \ - src/domain/UBGraphicsDelegateFrame.cpp \ - src/domain/UBGraphicsWidgetItemDelegate.cpp \ - +HEADERS += src/domain/UBGraphicsScene.h \ + src/domain/UBGraphicsItemUndoCommand.h \ + src/domain/UBGraphicsTextItemUndoCommand.h \ + src/domain/UBGraphicsItemTransformUndoCommand.h \ + src/domain/UBGraphicsPixmapItem.h \ + src/domain/UBDocumentUndoCommand.h \ + src/domain/UBPageSizeUndoCommand.h \ + src/domain/UBGraphicsProxyWidget.h \ + src/domain/UBGraphicsWebView.h \ + src/domain/UBGraphicsSvgItem.h \ + src/domain/UBGraphicsPolygonItem.h \ + src/domain/UBItem.h \ + src/domain/UBGraphicsWidgetItem.h \ + src/domain/UBGraphicsPDFItem.h \ + src/domain/UBGraphicsTextItem.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 \ + src/domain/UBGraphicsItemGroupUndoCommand.h \ + src/domain/UBGraphicsItemDelegate.h \ + src/domain/UBGraphicsTextItemDelegate.h \ + src/domain/UBGraphicsDelegateFrame.h \ + src/domain/UBGraphicsWidgetItemDelegate.h \ + src/domain/UBGraphicsMediaItemDelegate.h + +SOURCES += src/domain/UBGraphicsScene.cpp \ + src/domain/UBGraphicsItemUndoCommand.cpp \ + src/domain/UBGraphicsTextItemUndoCommand.cpp \ + src/domain/UBGraphicsItemTransformUndoCommand.cpp \ + src/domain/UBGraphicsPixmapItem.cpp \ + src/domain/UBDocumentUndoCommand.cpp \ + src/domain/UBPageSizeUndoCommand.cpp \ + src/domain/UBGraphicsProxyWidget.cpp \ + src/domain/UBGraphicsWebView.cpp \ + src/domain/UBGraphicsSvgItem.cpp \ + src/domain/UBGraphicsPolygonItem.cpp \ + src/domain/UBItem.cpp \ + src/domain/UBGraphicsVideoItem.cpp \ + src/domain/UBGraphicsWidgetItem.cpp \ + src/domain/UBGraphicsPDFItem.cpp \ + src/domain/UBGraphicsTextItem.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 \ + src/domain/UBGraphicsItemGroupUndoCommand.cpp \ + src/domain/UBGraphicsItemDelegate.cpp \ + src/domain/UBGraphicsTextItemDelegate.cpp \ + src/domain/UBGraphicsMediaItemDelegate.cpp \ + src/domain/UBGraphicsDelegateFrame.cpp \ + src/domain/UBGraphicsWidgetItemDelegate.cpp diff --git a/src/frameworks/UBFileSystemUtils.cpp b/src/frameworks/UBFileSystemUtils.cpp index 32f47414..1cd529cd 100644 --- a/src/frameworks/UBFileSystemUtils.cpp +++ b/src/frameworks/UBFileSystemUtils.cpp @@ -588,9 +588,6 @@ UBMimeType::Enum UBFileSystemUtils::mimeTypeFromString(const QString& typeString { type = UBMimeType::UniboardTool; } - else if (typeString.startsWith("group")){ - type = UBMimeType::Group; - } return type; }