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();
|
autoPos();
|
||||||
update();
|
update();
|
||||||
|
checkMustShow();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -467,3 +468,41 @@ void CrossRefItem::AddExtraInfo(QPainter &painter) {
|
|||||||
painter.restore();
|
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 drawContact (QPainter &painter, int flags, QString str = QString());
|
||||||
void fillCrossRef (QPainter &painter);
|
void fillCrossRef (QPainter &painter);
|
||||||
void AddExtraInfo (QPainter &painter);
|
void AddExtraInfo (QPainter &painter);
|
||||||
|
void checkMustShow ();
|
||||||
|
|
||||||
//Attributes
|
//Attributes
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -54,8 +54,6 @@ void MasterElement::linkToElement(Element *elmt) {
|
|||||||
connected_elements << elmt;
|
connected_elements << elmt;
|
||||||
elmt->linkToElement(this);
|
elmt->linkToElement(this);
|
||||||
|
|
||||||
if (elmt->kindInformations()["type"].toString() == "power" && !diagram()->defaultXRefProperties().showPowerContact()) return;
|
|
||||||
|
|
||||||
if (!cri_) {
|
if (!cri_) {
|
||||||
cri_ = new CrossRefItem(this); //create cross ref item if not yet
|
cri_ = new CrossRefItem(this); //create cross ref item if not yet
|
||||||
diagram()->addItem(cri_);
|
diagram()->addItem(cri_);
|
||||||
@@ -89,24 +87,10 @@ void MasterElement::unlinkElement(Element *elmt) {
|
|||||||
connected_elements.removeOne(elmt);
|
connected_elements.removeOne(elmt);
|
||||||
elmt->unlinkElement(this);
|
elmt->unlinkElement(this);
|
||||||
|
|
||||||
if (cri_) {
|
|
||||||
//update the graphics cross ref
|
//update the graphics cross ref
|
||||||
disconnect(elmt, SIGNAL(positionChange(QPointF)), cri_, SLOT(updateLabel()));
|
disconnect(elmt, SIGNAL(positionChange(QPointF)), cri_, SLOT(updateLabel()));
|
||||||
|
|
||||||
bool delete_cri = true;
|
if (linkedElements().isEmpty()) {
|
||||||
|
|
||||||
//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) {
|
|
||||||
diagram()->removeItem(cri_);
|
diagram()->removeItem(cri_);
|
||||||
delete cri_;
|
delete cri_;
|
||||||
cri_ = 0;
|
cri_ = 0;
|
||||||
@@ -116,7 +100,6 @@ void MasterElement::unlinkElement(Element *elmt) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief MasterElement::updateLabel
|
* @brief MasterElement::updateLabel
|
||||||
|
|||||||
Reference in New Issue
Block a user