From 5cec06a62a934a5108152b2140f69c467ab929bf Mon Sep 17 00:00:00 2001
From: Aleksei Kanash <sc.kanash.aleksei@gmail.com>
Date: Mon, 3 Sep 2012 13:00:40 +0300
Subject: [PATCH] Duplication of Strokes was implemented.

---
 src/board/UBBoardController.cpp       | 10 ++++------
 src/domain/UBGraphicsPolygonItem.cpp  | 20 +++++++++-----------
 src/domain/UBGraphicsStrokesGroup.cpp | 13 +++++++------
 3 files changed, 20 insertions(+), 23 deletions(-)

diff --git a/src/board/UBBoardController.cpp b/src/board/UBBoardController.cpp
index 3c56d617..66dbc026 100644
--- a/src/board/UBBoardController.cpp
+++ b/src/board/UBBoardController.cpp
@@ -557,11 +557,10 @@ void UBBoardController::duplicateItem(UBItem *item)
 
     UBMimeType::Enum itemMimeType;
     QString contentTypeHeader = UBFileSystemUtils::mimeTypeFromFileName(item->sourceUrl().toLocalFile());
-    if(NULL != qgraphicsitem_cast<UBGraphicsGroupContainerItem*>(commonItem)){
-    	itemMimeType = UBMimeType::Group;
-    }else{
-    	itemMimeType = UBFileSystemUtils::mimeTypeFromString(contentTypeHeader);
-    }
+    if(NULL != qgraphicsitem_cast<UBGraphicsGroupContainerItem*>(commonItem))
+        itemMimeType = UBMimeType::Group;
+    else 
+        itemMimeType = UBFileSystemUtils::mimeTypeFromString(contentTypeHeader);
         
     switch(static_cast<int>(itemMimeType))
     {
@@ -633,7 +632,6 @@ void UBBoardController::duplicateItem(UBItem *item)
             QGraphicsItem *gitem = dynamic_cast<QGraphicsItem*>(item->deepCopy());
             if (gitem)
             {   
-            	qDebug() << "Adding a stroke: " << gitem;
                 mActiveScene->addItem(gitem);
                 gitem->setPos(itemPos);
                 mLastCreatedItem = gitem;
diff --git a/src/domain/UBGraphicsPolygonItem.cpp b/src/domain/UBGraphicsPolygonItem.cpp
index b21f2760..e5dd4fd7 100644
--- a/src/domain/UBGraphicsPolygonItem.cpp
+++ b/src/domain/UBGraphicsPolygonItem.cpp
@@ -142,14 +142,14 @@ QColor UBGraphicsPolygonItem::color() const
 
 
 UBItem* UBGraphicsPolygonItem::deepCopy() const
-{
-    UBGraphicsPolygonItem* copy = new UBGraphicsPolygonItem(polygon(), parentItem());
+{  
+    UBGraphicsPolygonItem* copy = new UBGraphicsPolygonItem(polygon(), 0);
 
+    UBGraphicsStroke *stroke = new UBGraphicsStroke();
+    
     copyItemParameters(copy);
 
-    copy->mOriginalLine = this->mOriginalLine;
-    copy->mOriginalWidth = this->mOriginalWidth;
-    copy->mIsNominalLine = this->mIsNominalLine;
+    copy->setStroke(stroke);
 
     return copy;
 }
@@ -160,17 +160,15 @@ void UBGraphicsPolygonItem::copyItemParameters(UBItem *copy) const
     UBGraphicsPolygonItem *cp = dynamic_cast<UBGraphicsPolygonItem*>(copy);
     if (cp)
     {
-        cp->mOriginalLine = QLineF();
-        cp->mOriginalWidth = -1;
-        cp->mIsNominalLine = false;
+        cp->mOriginalLine = this->mOriginalLine;
+        cp->mOriginalWidth = this->mOriginalWidth;
+        cp->mIsNominalLine = this->mIsNominalLine;
 
-        cp->setStroke(this->stroke());
-        cp->setStrokesGroup(this->strokesGroup());
+        cp->setTransform(transform());
         cp->setBrush(this->brush());
         cp->setPen(this->pen());
         cp->mHasAlpha = this->mHasAlpha;
 
-
         cp->setColorOnDarkBackground(this->colorOnDarkBackground());
         cp->setColorOnLightBackground(this->colorOnLightBackground());
 
diff --git a/src/domain/UBGraphicsStrokesGroup.cpp b/src/domain/UBGraphicsStrokesGroup.cpp
index a5320924..2f57360f 100644
--- a/src/domain/UBGraphicsStrokesGroup.cpp
+++ b/src/domain/UBGraphicsStrokesGroup.cpp
@@ -65,29 +65,30 @@ void UBGraphicsStrokesGroup::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 
 UBItem* UBGraphicsStrokesGroup::deepCopy() const
 {
-   UBGraphicsStrokesGroup* copy = new UBGraphicsStrokesGroup();
+    UBGraphicsStrokesGroup* copy = new UBGraphicsStrokesGroup();
 
-
-   QList<QGraphicsItem*> chl = childItems();
+    QList<QGraphicsItem*> chl = childItems();
 
     foreach(QGraphicsItem *child, chl)
     {
         UBGraphicsPolygonItem *polygon = dynamic_cast<UBGraphicsPolygonItem*>(child);
         if (polygon)
+        {
             copy->addToGroup(dynamic_cast<QGraphicsItem*>(polygon->deepCopy()));
+            polygon->setStrokesGroup(copy);
+        }
     }
     copyItemParameters(copy);
 
-   return copy;
+    return copy;
 }
 
 void UBGraphicsStrokesGroup::copyItemParameters(UBItem *copy) const
 {
     UBGraphicsStrokesGroup *cp = dynamic_cast<UBGraphicsStrokesGroup*>(copy);
     {
-        cp->setPos(this->pos());
+        cp->setTransform(transform());
 
-        cp->setTransform(this->transform());
         cp->setFlag(QGraphicsItem::ItemIsMovable, true);
         cp->setFlag(QGraphicsItem::ItemIsSelectable, true);
         cp->setData(UBGraphicsItemData::ItemLayerType, this->data(UBGraphicsItemData::ItemLayerType));