QElectroTech 0.200.1-dev
Loading...
Searching...
No Matches
crossrefitem.h
Go to the documentation of this file.
1/*
2 Copyright 2006-2026 The QElectroTech Team
3 This file is part of QElectroTech.
4
5 QElectroTech is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, either version 2 of the License, or
8 (at your option) any later version.
9
10 QElectroTech is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
17*/
18#ifndef CROSSREFITEM_H
19#define CROSSREFITEM_H
20
22
23#include <QGraphicsObject>
24#include <QMultiMap>
25#include <QStyleOptionGraphicsItem>
26
27class Element;
30
46class CrossRefItem : public QGraphicsObject
47{
48 Q_OBJECT
49
50 //Methods
51 public:
52 explicit CrossRefItem(Element *elmt);
53 explicit CrossRefItem(
54 Element *elmt, DynamicElementTextItem *text);
55 explicit CrossRefItem(
56 Element *elmt, ElementTextItemGroup *group);
57 ~CrossRefItem() override;
58 private:
59 void init();
60 void setUpConnection();
61
62 public:
63 enum { Type = UserType + 1009 };
64 int type() const override { return Type; }
65
69 enum CONTACTS {
70 NO = 1,
71 NC = 2,
72 NOC = 3,
73 SW = 4,
74 Power = 8,
75 DelayOn = 16,
78 Delay = 112,
79 Other = 128
80 };
81
82 QRectF boundingRect() const override;
83 QPainterPath shape() const override;
84 QString elementPositionText(
85 const Element *elmt,
86 const bool &add_prefix = false) const;
87
88 public slots:
89 void updateProperties();
90 void updateLabel();
91 void autoPos();
92
93 public:
100 void paintForExport(QPainter *painter)
101 {
102 QStyleOptionGraphicsItem option;
103 paint(painter, &option, nullptr);
104 }
105
106 protected:
107 bool sceneEvent(QEvent *event) override;
108 void paint(QPainter *painter,
109 const QStyleOptionGraphicsItem *option,
110 QWidget *widget) override;
112 QGraphicsSceneMouseEvent * event ) override;
113 void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override;
114 void hoverMoveEvent(QGraphicsSceneHoverEvent *event) override;
115 void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override;
116
117 private:
118 void linkedChanged();
119 void buildHeaderContact(QPainter &painter, QPointF no_pos, QPointF nc_pos);
120 void setUpCrossBoundingRect(QPainter &painter);
121 void drawAsCross(QPainter &painter);
122 void drawAsContacts(QPainter &painter);
123 void drawAsPlcTable(QPainter &painter);
124 QRectF drawContact(QPainter &painter, int flags, Element *elmt, int pole_index = 0);
125 void fillCrossRef(QPainter &painter);
126 void AddExtraInfo(QPainter &painter, const QString&);
127 QList<Element *> NOElements() const;
128 QList<Element *> NCElements() const;
129
130 //Attributes
131 private:
132 Element *m_element; //element to display the cross reference
134 QPainterPath m_shape_path;
137 bool m_update_map = false;
138 QMultiMap <Element *, QRectF> m_hovered_contacts_map;
142 QList <QMetaObject::Connection> m_slave_connection;
143 QList <QMetaObject::Connection> m_update_connection;
144
145 public:
148 const QMultiMap<Element *, QRectF> &hoveredContactsMap() const
149 { return m_hovered_contacts_map; }
150};
151
152#endif // CROSSREFITEM_H
153
void drawAsCross(QPainter &painter)
CrossRefItem::drawAsCross Draw this crossref with a cross.
Definition crossrefitem.cpp:705
void updateProperties()
CrossRefItem::updateProperties update the current properties.
Definition crossrefitem.cpp:201
bool m_update_map
Definition crossrefitem.h:137
void AddExtraInfo(QPainter &painter, const QString &)
CrossRefItem::AddExtraInfo Add the comment info of the parent item if needed.
Definition crossrefitem.cpp:1263
void hoverEnterEvent(QGraphicsSceneHoverEvent *event) override
CrossRefItem::hoverEnterEvent.
Definition crossrefitem.cpp:409
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event) override
CrossRefItem::hoverLeaveEvent.
Definition crossrefitem.cpp:477
const QMultiMap< Element *, QRectF > & hoveredContactsMap() const
Definition crossrefitem.h:148
void init()
CrossRefItem::init init this Xref.
Definition crossrefitem.cpp:80
QList< QMetaObject::Connection > m_slave_connection
Definition crossrefitem.h:142
void autoPos()
CrossRefItem::autoPos Calculate and set position automatically.
Definition crossrefitem.cpp:283
QString elementPositionText(const Element *elmt, const bool &add_prefix=false) const
CrossRefItem::elementPositionText.
Definition crossrefitem.cpp:176
CONTACTS
The CONTACTS enum.
Definition crossrefitem.h:69
@ NC
Definition crossrefitem.h:71
@ DelayOn
Definition crossrefitem.h:75
@ DelayOnOff
Definition crossrefitem.h:77
@ NO
Definition crossrefitem.h:70
@ NOC
Definition crossrefitem.h:72
@ Power
Definition crossrefitem.h:74
@ Delay
Definition crossrefitem.h:78
@ DelayOff
Definition crossrefitem.h:76
@ Other
Definition crossrefitem.h:79
@ SW
Definition crossrefitem.h:73
CrossRefItem(Element *elmt)
CrossRefItem::CrossRefItem.
Definition crossrefitem.cpp:42
~CrossRefItem() override
CrossRefItem::~CrossRefItem Default destructor.
Definition crossrefitem.cpp:73
DynamicElementTextItem * m_text
Definition crossrefitem.h:140
Element * m_hovered_contact
Definition crossrefitem.h:139
Element * m_element
Definition crossrefitem.h:132
bool sceneEvent(QEvent *event) override
CrossRefItem::sceneEvent.
Definition crossrefitem.cpp:306
void buildHeaderContact(QPainter &painter, QPointF no_pos, QPointF nc_pos)
CrossRefItem::buildHeaderContact Draw NO and NC contact symbols directly onto painter....
Definition crossrefitem.cpp:518
QRectF drawContact(QPainter &painter, int flags, Element *elmt, int pole_index=0)
CrossRefItem::drawContact Draw one contact, the type of contact to draw is define in flags.
Definition crossrefitem.cpp:784
void paintForExport(QPainter *painter)
Definition crossrefitem.h:100
void fillCrossRef(QPainter &painter)
CrossRefItem::fillCrossRef Fill the content of the cross ref.
Definition crossrefitem.cpp:1091
QRectF boundingRect() const override
CrossRefItem::boundingRect.
Definition crossrefitem.cpp:155
QMultiMap< Element *, QRectF > m_hovered_contacts_map
Definition crossrefitem.h:138
void linkedChanged()
CrossRefItem::linkedChanged.
Definition crossrefitem.cpp:487
ElementTextItemGroup * m_group
Definition crossrefitem.h:141
XRefProperties m_properties
Definition crossrefitem.h:135
void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) override
CrossRefItem::mouseDoubleClickEvent.
Definition crossrefitem.cpp:382
void drawAsContacts(QPainter &painter)
CrossRefItem::drawAsContacts Draw this crossref with symbolic contacts.
Definition crossrefitem.cpp:735
void updateLabel()
CrossRefItem::updateLabel Update the content of the item.
Definition crossrefitem.cpp:223
void setUpConnection()
CrossRefItem::setUpConnection Set up several connection to keep up to date the Xref.
Definition crossrefitem.cpp:103
void setUpCrossBoundingRect(QPainter &painter)
CrossRefItem::setUpCrossBoundingRect Get the numbers of slaves elements linked to this parent element...
Definition crossrefitem.cpp:559
QList< QMetaObject::Connection > m_update_connection
Definition crossrefitem.h:143
QRectF m_bounding_rect
Definition crossrefitem.h:133
QList< Element * > NOElements() const
CrossRefItem::NOElements.
Definition crossrefitem.cpp:1316
int type() const override
Definition crossrefitem.h:64
int m_drawed_contacts
Definition crossrefitem.h:136
QPainterPath m_shape_path
Definition crossrefitem.h:134
@ Type
Definition crossrefitem.h:63
QPainterPath shape() const override
CrossRefItem::shape.
Definition crossrefitem.cpp:164
void hoverMoveEvent(QGraphicsSceneHoverEvent *event) override
CrossRefItem::hoverMoveEvent.
Definition crossrefitem.cpp:419
QList< Element * > NCElements() const
CrossRefItem::NCElements.
Definition crossrefitem.cpp:1349
void drawAsPlcTable(QPainter &painter)
CrossRefItem::drawAsPlcTable Draw the PLC IO table for PLC master elements. The table shows columns: ...
Definition crossrefitem.cpp:1380
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override
CrossRefItem::paint Paint this item.
Definition crossrefitem.cpp:342
The DynamicElementTextItem class This class provide a simple text field of element who can be added o...
Definition dynamicelementtextitem.h:40
Definition element.h:44
The ElementTextItemGroup class This class represent a group of element text Texts in the group can be...
Definition elementtextitemgroup.h:36
The XRefProperties class this class store properties used by XrefItem.
Definition xrefproperties.h:31