comparison changesetitem.cpp @ 119:005a54380502

* Make scene remember which item has its details showing, and remove the previous one when a new one is clicked
author Chris Cannam
date Sun, 28 Nov 2010 21:52:00 +0000
parents 9734fb0d6fff
children 1f27f71a7034
comparison
equal deleted inserted replaced
118:9734fb0d6fff 119:005a54380502
42 if (m_wide) w = 180; 42 if (m_wide) w = 180;
43 return QRectF(-((w-50)/2 - 1), -30, w - 3, 79); 43 return QRectF(-((w-50)/2 - 1), -30, w - 3, 79);
44 } 44 }
45 45
46 void 46 void
47 ChangesetItem::mousePressEvent(QGraphicsSceneMouseEvent *e) 47 ChangesetItem::showDetail()
48 { 48 {
49 DEBUG << "ChangesetItem::mousePressEvent" << endl; 49 if (m_detail) return;
50 //!!! how best to handle this?
51 if (m_detail) {
52 delete m_detail;
53 m_detail = 0;
54 return;
55 }
56 m_detail = new ChangesetDetailItem(m_changeset); 50 m_detail = new ChangesetDetailItem(m_changeset);
57 m_detail->setZValue(zValue() + 1); 51 m_detail->setZValue(zValue() + 1);
58 scene()->addItem(m_detail); 52 scene()->addItem(m_detail);
59 int w = 100; 53 int w = 100;
60 if (m_wide) w = 180; 54 if (m_wide) w = 180;
61 m_detail->moveBy(x() - (m_detail->boundingRect().width() - 50) / 2, 55 m_detail->moveBy(x() - (m_detail->boundingRect().width() - 50) / 2,
62 y() + 60); 56 y() + 60);
57 emit detailShown();
58 }
59
60 void
61 ChangesetItem::hideDetail()
62 {
63 delete m_detail;
64 m_detail = 0;
65 emit detailHidden();
66 }
67
68 void
69 ChangesetItem::mousePressEvent(QGraphicsSceneMouseEvent *e)
70 {
71 DEBUG << "ChangesetItem::mousePressEvent" << endl;
72 if (m_detail) {
73 hideDetail();
74 } else {
75 showDetail();
76 }
63 } 77 }
64 78
65 void 79 void
66 ChangesetItem::paint(QPainter *paint, const QStyleOptionGraphicsItem *option, 80 ChangesetItem::paint(QPainter *paint, const QStyleOptionGraphicsItem *option,
67 QWidget *w) 81 QWidget *w)