diff 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
line wrap: on
line diff
--- a/changesetitem.cpp	Fri Nov 26 23:49:48 2010 +0000
+++ b/changesetitem.cpp	Sun Nov 28 21:52:00 2010 +0000
@@ -44,15 +44,9 @@
 }
 
 void
-ChangesetItem::mousePressEvent(QGraphicsSceneMouseEvent *e)
+ChangesetItem::showDetail()
 {
-    DEBUG << "ChangesetItem::mousePressEvent" << endl;
-    //!!! how best to handle this?
-    if (m_detail) {
-        delete m_detail;
-        m_detail = 0;
-        return;
-    }
+    if (m_detail) return;
     m_detail = new ChangesetDetailItem(m_changeset);
     m_detail->setZValue(zValue() + 1);
     scene()->addItem(m_detail);
@@ -60,6 +54,26 @@
     if (m_wide) w = 180;
     m_detail->moveBy(x() - (m_detail->boundingRect().width() - 50) / 2,
                      y() + 60);
+    emit detailShown();
+}    
+
+void
+ChangesetItem::hideDetail()
+{
+    delete m_detail;
+    m_detail = 0;
+    emit detailHidden();
+}    
+
+void
+ChangesetItem::mousePressEvent(QGraphicsSceneMouseEvent *e)
+{
+    DEBUG << "ChangesetItem::mousePressEvent" << endl;
+    if (m_detail) {
+        hideDetail();
+    } else {
+        showDetail();
+    }
 }
 
 void