element text item : improve mouse double clic.

Over text (Only if tagged label or parent are report) will higlight element linked to parent element


git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@3549 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
blacksun
2014-12-14 14:36:12 +00:00
parent 1acf132128
commit 15261ba896

View File

@@ -177,27 +177,33 @@ void ElementTextItem::adjustItemPosition(int new_block_count) {
* @brief ElementTextItem::mouseDoubleClickEvent * @brief ElementTextItem::mouseDoubleClickEvent
* @param event * @param event
*/ */
void ElementTextItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event) { void ElementTextItem::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
//If parent is linked, show the linked element {
if (parent_element_ -> linkType() & (Element::AllReport | Element::Slave) && !parent_element_ -> isFree()) { if (tagg_ == "label" || parent_element_ -> linkType() & Element::AllReport)
//Unselect and ungrab mouse to prevent unwanted {
//move when linked element is in the same scene of this. //If parent is linked, show the linked element
setSelected(false); if (parent_element_ -> linkType() & (Element::AllReport | Element::Slave) && !parent_element_ -> isFree()) {
ungrabMouse(); //Unselect and ungrab mouse to prevent unwanted
//move when linked element is in the same scene of this.
setSelected(false);
ungrabMouse();
//Show and select the linked element //Show and select the linked element
Element *linked = parent_element_ -> linkedElements().first(); Element *linked = parent_element_ -> linkedElements().first();
if (scene() != linked -> scene()) linked -> diagram() -> showMe(); if (scene() != linked -> scene())
linked -> setSelected(true); linked -> diagram() -> showMe();
linked -> setSelected(true);
//Zoom to the linked element //Zoom to the linked element
foreach(QGraphicsView *view, linked -> diagram() -> views()) { foreach(QGraphicsView *view, linked -> diagram() -> views()) {
QRectF fit = linked -> sceneBoundingRect(); QRectF fit = linked -> sceneBoundingRect();
fit.adjust(-200, -200, 200, 200); fit.adjust(-200, -200, 200, 200);
view -> fitInView(fit, Qt::KeepAspectRatioByExpanding); view -> fitInView(fit, Qt::KeepAspectRatioByExpanding);
}
} }
} }
else { else
{
DiagramTextItem::mouseDoubleClickEvent(event); DiagramTextItem::mouseDoubleClickEvent(event);
} }
} }
@@ -282,19 +288,26 @@ void ElementTextItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) {
* @brief ElementTextItem::hoverEnterEvent * @brief ElementTextItem::hoverEnterEvent
* @param event * @param event
*/ */
void ElementTextItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event) { void ElementTextItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
if (parent_element_ -> linkType() & (Element::AllReport | Element::Slave) && !parent_element_->isFree()) { {
setDefaultTextColor(Qt::blue); if (tagg_ == "label" || parent_element_ -> linkType() & Element::AllReport)
{
foreach (Element *elmt, parent_element_ -> linkedElements())
elmt -> setHighlighted(true);
//Also color the child text if parent is a slave and linked if (parent_element_ -> linkType() & (Element::AllReport | Element::Slave) && !parent_element_->isFree())
if (parent_element_-> linkType() == Element::Slave && !parent_element_ -> isFree()) { {
foreach (QGraphicsItem *qgi, childItems()) { setDefaultTextColor(Qt::blue);
if (QGraphicsTextItem *qgti = qgraphicsitem_cast<QGraphicsTextItem *> (qgi))
qgti->setDefaultTextColor(Qt::blue); //Also color the child text if parent is a slave and linked
} if (parent_element_-> linkType() == Element::Slave && !parent_element_ -> isFree())
foreach (QGraphicsItem *qgi, childItems())
if (QGraphicsTextItem *qgti = qgraphicsitem_cast<QGraphicsTextItem *> (qgi))
qgti -> setDefaultTextColor(Qt::blue);
} }
} }
else { else
{
DiagramTextItem::hoverEnterEvent(event); DiagramTextItem::hoverEnterEvent(event);
} }
} }
@@ -303,16 +316,21 @@ void ElementTextItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event) {
* @brief ElementTextItem::hoverLeaveEvent * @brief ElementTextItem::hoverLeaveEvent
* @param event * @param event
*/ */
void ElementTextItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) { void ElementTextItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
if (defaultTextColor() != Qt::black) {
setDefaultTextColor(Qt::black); if (tagg_ == "label" || parent_element_ -> linkType() & Element::AllReport)
{
foreach (Element *elmt, parent_element_ -> linkedElements())
elmt -> setHighlighted(false);
//Also color the child text if parent is a slave and linked if (defaultTextColor() != Qt::black)
if (parent_element_-> linkType() == Element::Slave && !parent_element_ -> isFree()) { setDefaultTextColor(Qt::black);
foreach (QGraphicsItem *qgi, childItems()) {
if (QGraphicsTextItem *qgti = qgraphicsitem_cast<QGraphicsTextItem *> (qgi)) //Also color the child text if parent is a slave and linked
qgti->setDefaultTextColor(Qt::black); if (parent_element_-> linkType() == Element::Slave && !parent_element_ -> isFree())
} foreach (QGraphicsItem *qgi, childItems())
if (QGraphicsTextItem *qgti = qgraphicsitem_cast<QGraphicsTextItem *> (qgi))
qgti -> setDefaultTextColor(Qt::black);
} }
DiagramTextItem::hoverLeaveEvent(event); DiagramTextItem::hoverLeaveEvent(event);