Hardware Design: SIE
Sign in or create your account | Project List | Help
Hardware Design: SIE Git Source Tree
Root/
Source at commit 32a206d created 13 years 5 months ago. By Juan64Bits, First commit for sie code generator project. | |
---|---|
1 | /**************************************************************************** |
2 | ** |
3 | ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). |
4 | ** All rights reserved. |
5 | ** Contact: Nokia Corporation (qt-info@nokia.com) |
6 | ** |
7 | ** This file is part of the examples of the Qt Toolkit. |
8 | ** |
9 | ** $QT_BEGIN_LICENSE:LGPL$ |
10 | ** Commercial Usage |
11 | ** Licensees holding valid Qt Commercial licenses may use this file in |
12 | ** accordance with the Qt Commercial License Agreement provided with the |
13 | ** Software or, alternatively, in accordance with the terms contained in |
14 | ** a written agreement between you and Nokia. |
15 | ** |
16 | ** GNU Lesser General Public License Usage |
17 | ** Alternatively, this file may be used under the terms of the GNU Lesser |
18 | ** General Public License version 2.1 as published by the Free Software |
19 | ** Foundation and appearing in the file LICENSE.LGPL included in the |
20 | ** packaging of this file. Please review the following information to |
21 | ** ensure the GNU Lesser General Public License version 2.1 requirements |
22 | ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. |
23 | ** |
24 | ** In addition, as a special exception, Nokia gives you certain additional |
25 | ** rights. These rights are described in the Nokia Qt LGPL Exception |
26 | ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. |
27 | ** |
28 | ** GNU General Public License Usage |
29 | ** Alternatively, this file may be used under the terms of the GNU |
30 | ** General Public License version 3.0 as published by the Free Software |
31 | ** Foundation and appearing in the file LICENSE.GPL included in the |
32 | ** packaging of this file. Please review the following information to |
33 | ** ensure the GNU General Public License version 3.0 requirements will be |
34 | ** met: http://www.gnu.org/copyleft/gpl.html. |
35 | ** |
36 | ** If you have questions regarding the use of this file, please contact |
37 | ** Nokia at qt-info@nokia.com. |
38 | ** $QT_END_LICENSE$ |
39 | ** |
40 | ****************************************************************************/ |
41 | |
42 | #include <QtGui> |
43 | |
44 | #include "diagramtextitem.h" |
45 | #include "diagramscene.h" |
46 | |
47 | DiagramTextItem::DiagramTextItem(QGraphicsItem *parent, QGraphicsScene *scene, |
48 | bool editable, DiagramItem *ownerItem, unsigned char styleIO, |
49 | unsigned char ID, QString defaultText, QPointF offset) |
50 | : QGraphicsTextItem(parent, scene) |
51 | { |
52 | myOwnerItem = ownerItem; |
53 | myStyleIO = styleIO; |
54 | myID=ID; |
55 | editableItem=editable; |
56 | if(myOwnerItem==0) |
57 | setZValue(1000.0); |
58 | else |
59 | setZValue(myOwnerItem->zValue()); |
60 | |
61 | setPlainText(defaultText); |
62 | posOffset=offset; |
63 | |
64 | if(editable) |
65 | { |
66 | if (myOwnerItem==0) |
67 | setFlag(QGraphicsItem::ItemIsMovable); |
68 | setFlag(QGraphicsItem::ItemIsSelectable); |
69 | } |
70 | else |
71 | setFlag(QGraphicsItem::ItemIsFocusable,0); |
72 | |
73 | updatePosition(); |
74 | } |
75 | |
76 | void DiagramTextItem::updatePosition() |
77 | { |
78 | QPointF myOwnerPos; |
79 | |
80 | |
81 | if(myOwnerItem!=0) |
82 | { |
83 | setZValue(myOwnerItem->zValue()); |
84 | myOwnerPos= myOwnerItem->pos(); |
85 | } |
86 | else |
87 | { |
88 | setZValue(1000.0); |
89 | myOwnerPos=pos(); |
90 | } |
91 | |
92 | if(myStyleIO==0) |
93 | setPos(myOwnerPos+posOffset+QPointF(-boundingRect().width()/2, |
94 | -boundingRect().height()/2)); |
95 | else if(myStyleIO & 0b10000000) |
96 | setPos(myOwnerPos+posOffset+QPointF(0,-boundingRect().height()/2)); |
97 | else //OUT |
98 | setPos(myOwnerPos+posOffset+QPointF(-boundingRect().width(), |
99 | -boundingRect().height()/2)); |
100 | } |
101 | |
102 | QVariant DiagramTextItem::itemChange(GraphicsItemChange change, |
103 | const QVariant &value) |
104 | { |
105 | if (change == QGraphicsItem::ItemSelectedHasChanged) |
106 | emit selectedChange(this); |
107 | |
108 | return value; |
109 | } |
110 | |
111 | void DiagramTextItem::focusOutEvent(QFocusEvent *event) |
112 | { |
113 | if(editableItem) |
114 | { |
115 | if(toPlainText()=="") setPlainText("?"); |
116 | if(myOwnerItem!=0) updatePosition(); |
117 | setTextInteractionFlags(Qt::NoTextInteraction); |
118 | emit lostFocus(this); |
119 | QGraphicsTextItem::focusOutEvent(event); |
120 | } |
121 | } |
122 | |
123 | void DiagramTextItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) |
124 | { |
125 | if(editableItem) |
126 | { |
127 | if (textInteractionFlags() == Qt::NoTextInteraction) |
128 | setTextInteractionFlags(Qt::TextEditorInteraction); |
129 | QGraphicsTextItem::mouseDoubleClickEvent(event); |
130 | } |
131 | } |
132 | |
133 | void DiagramTextItem::mousePressEvent(QGraphicsSceneMouseEvent *event) |
134 | { |
135 | if (myOwnerItem!=0) |
136 | { |
137 | setSelected(0); |
138 | myOwnerItem->mousePressEvent(event); |
139 | } |
140 | else |
141 | QGraphicsTextItem::mousePressEvent(event); |
142 | } |
143 | |
144 | void DiagramTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) |
145 | { |
146 | if (myOwnerItem!=0) |
147 | { |
148 | myOwnerItem->mouseReleaseEvent(event); |
149 | } |
150 | else |
151 | QGraphicsTextItem::mouseReleaseEvent(event); |
152 | } |
153 | |
154 | void DiagramTextItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event) |
155 | { |
156 | if (myOwnerItem!=0) |
157 | { |
158 | myOwnerItem->mouseMoveEvent(event); |
159 | } |
160 | else |
161 | QGraphicsTextItem::mouseMoveEvent(event); |
162 | } |
163 |
Branches:
master