From d80a2289d63b66c65768f117ae3becacb06a2fe1 Mon Sep 17 00:00:00 2001 From: abhishekm71 Date: Sun, 2 Mar 2014 13:49:11 +0000 Subject: [PATCH] Basic Shape: qgraphicsitem_cast<> instead of dynamic_cast git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@2897 bfdf4180-ca20-0410-9c96-a3a8aa849046 --- sources/diagram.cpp | 2 +- sources/diagramview.cpp | 4 ++-- sources/exportdialog.cpp | 2 +- sources/qetgraphicsitem/qetshapeitem.h | 13 +++++++++++++ 4 files changed, 17 insertions(+), 4 deletions(-) diff --git a/sources/diagram.cpp b/sources/diagram.cpp index 9893c664d..86271e404 100644 --- a/sources/diagram.cpp +++ b/sources/diagram.cpp @@ -368,7 +368,7 @@ QDomDocument Diagram::toXml(bool whole_content) { } else if (DiagramImageItem *dii = qgraphicsitem_cast(qgi)) { if (whole_content) list_images << dii; else if (dii -> isSelected()) list_images << dii; - } else if (QetShapeItem *dsi = dynamic_cast(qgi)) { + } else if (QetShapeItem *dsi = qgraphicsitem_cast(qgi)) { if (whole_content) list_shapes << dsi; else if (dsi -> isSelected()) list_shapes << dsi; } diff --git a/sources/diagramview.cpp b/sources/diagramview.cpp index 084117dac..1303f0546 100644 --- a/sources/diagramview.cpp +++ b/sources/diagramview.cpp @@ -717,7 +717,7 @@ bool DiagramView::hasCopiableItems() { if ( qgraphicsitem_cast(qgi) || qgraphicsitem_cast(qgi) || - dynamic_cast(qgi) || + qgraphicsitem_cast(qgi) || qgraphicsitem_cast(qgi) ) { return(true); @@ -736,7 +736,7 @@ bool DiagramView::hasDeletableItems() { qgraphicsitem_cast(qgi) || qgraphicsitem_cast(qgi) || qgraphicsitem_cast(qgi) || - dynamic_cast(qgi) || + qgraphicsitem_cast(qgi) || qgraphicsitem_cast(qgi) ) { return(true); diff --git a/sources/exportdialog.cpp b/sources/exportdialog.cpp index 5cf4ef178..af6a7076d 100644 --- a/sources/exportdialog.cpp +++ b/sources/exportdialog.cpp @@ -481,7 +481,7 @@ void ExportDialog::generateDxf(Diagram *diagram, int width, int height, bool kee list_texts << iti; } else if (DiagramImageItem *dii = qgraphicsitem_cast(qgi)) { list_images << dii; - } else if (QetShapeItem *dii = dynamic_cast(qgi)) { + } else if (QetShapeItem *dii = qgraphicsitem_cast(qgi)) { if (dii -> getType() == QetShapeItem::Line && dii -> getLine()) { list_lines << dii -> getLine(); } else if (dii -> getType() == QetShapeItem::Rectangle && dii -> getRectangle()) { diff --git a/sources/qetgraphicsitem/qetshapeitem.h b/sources/qetgraphicsitem/qetshapeitem.h index 88d5630ea..f05b9a8c7 100644 --- a/sources/qetgraphicsitem/qetshapeitem.h +++ b/sources/qetgraphicsitem/qetshapeitem.h @@ -16,6 +16,19 @@ class QetShapeItem : public QetGraphicsItem QetShapeItem(QPointF, QPointF = QPointF(0,0), ShapeType = Line, bool lineAngle = false, QGraphicsItem *parent = 0); virtual ~QetShapeItem(); + // attributes + public: + enum { Type = UserType + 1008 }; + + // methods + public: + /** + Enable the use of qgraphicsitem_cast to safely cast a QGraphicsItem into a + QetShapeItem + @return the QGraphicsItem type + */ + virtual int type() const { return Type; } + void setStyle(Qt::PenStyle); Qt::PenStyle getStyle() const { return _shapeStyle; } ShapeType getType() const { return _shapeType; }