mirror of
https://github.com/qelectrotech/qelectrotech-source-mirror.git
synced 2025-12-18 13:30:34 +01:00
improve behavior of Xref item (must show or not the power contact)
git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3042 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
@@ -105,6 +105,7 @@ void CrossRefItem::updateLabel() {
|
||||
|
||||
autoPos();
|
||||
update();
|
||||
checkMustShow();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -467,3 +468,41 @@ void CrossRefItem::AddExtraInfo(QPainter &painter) {
|
||||
painter.restore();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief CrossRefItem::checkMustShow
|
||||
* Check the propertie of this Xref for know if we
|
||||
* must to be show or not
|
||||
*/
|
||||
void CrossRefItem::checkMustShow() {
|
||||
|
||||
//We always show Xref when is displayed has contact
|
||||
if (m_properties.displayHas() == XRefProperties::Contacts) {
|
||||
this->show();
|
||||
return;
|
||||
}
|
||||
|
||||
//if Xref is display has cross and we must to don't show power contact, check it
|
||||
else if (m_properties.displayHas() == XRefProperties::Cross && !m_properties.showPowerContact()) {
|
||||
bool power = false;
|
||||
foreach (Element *elmt, m_element->linkedElements()) {
|
||||
// contact checked isn't power, show this xref and return;
|
||||
if (elmt->kindInformations()["type"].toString() != "power") {
|
||||
this->show();
|
||||
return;
|
||||
} else {
|
||||
power = true;
|
||||
}
|
||||
}
|
||||
if (power) {
|
||||
this->hide();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//By default, show this Xref
|
||||
else {
|
||||
this->show();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,6 +72,7 @@ class CrossRefItem : public QGraphicsObject
|
||||
void drawContact (QPainter &painter, int flags, QString str = QString());
|
||||
void fillCrossRef (QPainter &painter);
|
||||
void AddExtraInfo (QPainter &painter);
|
||||
void checkMustShow ();
|
||||
|
||||
//Attributes
|
||||
private:
|
||||
|
||||
@@ -54,8 +54,6 @@ void MasterElement::linkToElement(Element *elmt) {
|
||||
connected_elements << elmt;
|
||||
elmt->linkToElement(this);
|
||||
|
||||
if (elmt->kindInformations()["type"].toString() == "power" && !diagram()->defaultXRefProperties().showPowerContact()) return;
|
||||
|
||||
if (!cri_) {
|
||||
cri_ = new CrossRefItem(this); //create cross ref item if not yet
|
||||
diagram()->addItem(cri_);
|
||||
@@ -89,24 +87,10 @@ void MasterElement::unlinkElement(Element *elmt) {
|
||||
connected_elements.removeOne(elmt);
|
||||
elmt->unlinkElement(this);
|
||||
|
||||
if (cri_) {
|
||||
//update the graphics cross ref
|
||||
disconnect(elmt, SIGNAL(positionChange(QPointF)), cri_, SLOT(updateLabel()));
|
||||
|
||||
bool delete_cri = true;
|
||||
|
||||
//if power contact isn't show, make sure they are only power contacts linked
|
||||
//or nothing befor remove cri_
|
||||
if (!diagram()->defaultXRefProperties().showPowerContact()) {
|
||||
foreach(Element *elmt, linkedElements())
|
||||
if (elmt->kindInformations()["type"].toString() != "power") delete_cri = false;
|
||||
}
|
||||
//else only make sur list is empty
|
||||
else {
|
||||
if (!linkedElements().isEmpty()) delete_cri = false;
|
||||
}
|
||||
|
||||
if (delete_cri) {
|
||||
if (linkedElements().isEmpty()) {
|
||||
diagram()->removeItem(cri_);
|
||||
delete cri_;
|
||||
cri_ = 0;
|
||||
@@ -116,7 +100,6 @@ void MasterElement::unlinkElement(Element *elmt) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief MasterElement::updateLabel
|
||||
|
||||
Reference in New Issue
Block a user