Add 'Other' option for slave device contact type

This option alows for displaying XRef without contact drawing.
This is useful for spliting one physical part into multiple
logical elements when the slave element is not a switch.
This commit is contained in:
Tadeáš Pilař
2022-06-22 18:02:13 +02:00
committed by Laurent Trinques
parent f603b229db
commit 1a2fea84ff
5 changed files with 29 additions and 4 deletions

View File

@@ -128,6 +128,7 @@ void ElementPropertiesEditorWidget::setUpInterface()
ui->m_state_cb->addItem(tr("Normalement ouvert"), ElementData::NO); ui->m_state_cb->addItem(tr("Normalement ouvert"), ElementData::NO);
ui->m_state_cb->addItem(tr("Normalement fermé"), ElementData::NC); ui->m_state_cb->addItem(tr("Normalement fermé"), ElementData::NC);
ui->m_state_cb->addItem(tr("Inverseur"), ElementData::SW); ui->m_state_cb->addItem(tr("Inverseur"), ElementData::SW);
ui->m_state_cb->addItem(tr("Other"), ElementData::Other);
ui->m_type_cb->addItem(tr("Simple"), ElementData::SSimple); ui->m_type_cb->addItem(tr("Simple"), ElementData::SSimple);
ui->m_type_cb->addItem(tr("Puissance"), ElementData::Power); ui->m_type_cb->addItem(tr("Puissance"), ElementData::Power);
ui->m_type_cb->addItem(tr("Temporisé travail"), ElementData::DelayOn); ui->m_type_cb->addItem(tr("Temporisé travail"), ElementData::DelayOn);

View File

@@ -425,6 +425,8 @@ QString ElementData::slaveStateToString(ElementData::SlaveState type)
return QStringLiteral("NC"); return QStringLiteral("NC");
case SW: case SW:
return QStringLiteral("SW"); return QStringLiteral("SW");
case Other:
return QStringLiteral("Other");
} }
} }
@@ -436,7 +438,9 @@ ElementData::SlaveState ElementData::slaveStateFromString(const QString &string)
return ElementData::NC; return ElementData::NC;
} else if (string == QLatin1String("SW")) { } else if (string == QLatin1String("SW")) {
return ElementData::SW; return ElementData::SW;
} } else if (string == QLatin1String("Other")){
return ElementData::Other;
}
qDebug() << "ElementData::slaveStateFromString : string : " qDebug() << "ElementData::slaveStateFromString : string : "
<< string << string

View File

@@ -64,7 +64,8 @@ class ElementData : public PropertiesInterface
enum SlaveState { enum SlaveState {
NO, NO,
NC, NC,
SW SW,
Other
}; };
Q_ENUM(SlaveState) Q_ENUM(SlaveState)

View File

@@ -614,6 +614,7 @@ void CrossRefItem::drawAsContacts(QPainter &painter)
if (state == "NO") option = NO; if (state == "NO") option = NO;
else if (state == "NC") option = NC; else if (state == "NC") option = NC;
else if (state == "SW") option = SW; else if (state == "SW") option = SW;
else if (state == "Other") option = Other;
QString type = info["type"].toString(); QString type = info["type"].toString();
if (type == "power") option += Power; if (type == "power") option += Power;
@@ -644,7 +645,7 @@ QRectF CrossRefItem::drawContact(QPainter &painter, int flags, Element *elmt)
{ {
QString str = elementPositionText(elmt); QString str = elementPositionText(elmt);
int offset = m_drawed_contacts*10; int offset = m_drawed_contacts*10;
QRectF bounding_rect; QRectF bounding_rect = QRectF(0, offset, 24, 10);
QPen pen = painter.pen(); QPen pen = painter.pen();
m_hovered_contact == elmt ? pen.setColor(Qt::blue) :pen.setColor(Qt::black); m_hovered_contact == elmt ? pen.setColor(Qt::blue) :pen.setColor(Qt::black);
@@ -819,6 +820,23 @@ QRectF CrossRefItem::drawContact(QPainter &painter, int flags, Element *elmt)
//a switch contact take place of two normal contact //a switch contact take place of two normal contact
m_drawed_contacts += 2; m_drawed_contacts += 2;
}else if(flags &Other){
//Draw position text
QRectF text_rect = painter.boundingRect(
QRectF(30, offset+5, 5, 10),
Qt::AlignLeft | Qt::AlignVCenter,
str);
painter.drawText(text_rect,
Qt::AlignLeft | Qt::AlignVCenter,
str);
bounding_rect = bounding_rect.united(text_rect);
if (m_hovered_contacts_map.contains(elmt)) {
m_hovered_contacts_map.insert(elmt, bounding_rect);
}
else {
m_hovered_contacts_map.insert(elmt, bounding_rect);
}
} }
return bounding_rect; return bounding_rect;

View File

@@ -75,7 +75,8 @@ class CrossRefItem : public QGraphicsObject
DelayOn = 16, DelayOn = 16,
DelayOff = 32, DelayOff = 32,
DelayOnOff = 64, DelayOnOff = 64,
Delay = 112 Delay = 112,
Other = 128
}; };
QRectF boundingRect() const override; QRectF boundingRect() const override;