diff hgexpwidget.cpp @ 43:c32067cd19f8

* Some experiments towards a graph history view
author Chris Cannam
date Sun, 07 Nov 2010 19:59:54 +0000
parents 4f307720272f
children bed7ab59f62e
line wrap: on
line diff
--- a/hgexpwidget.cpp	Thu Jun 24 23:41:21 2010 +0300
+++ b/hgexpwidget.cpp	Sun Nov 07 19:59:54 2010 +0000
@@ -8,6 +8,9 @@
 
 #include "hgexpwidget.h"
 #include "common.h"
+#include "logparser.h"
+#include "changeset.h"
+#include "changesetitem.h"
 
 #define REMOTE_REPO_STR  "Remote repository: "
 #define LOCAL_REPO_STR   "Local repository: "
@@ -84,6 +87,11 @@
     mainLayout -> addWidget(grpWorkFolder, 12);
     addTab(workPageWidget, tr("Work"));
 
+    // History graph page
+    historyGraphPageWidget = new QGraphicsView;
+    addTab(historyGraphPageWidget, tr("History (graph)"));
+
+
     //History page
     //History page
     //History page
@@ -232,9 +240,22 @@
     localRepoHgLogList -> clear();
     localRepoHgLogList -> addItems(splitChangeSets(hgLogList));
 
+    //!!!
+    QGraphicsView *gv = static_cast<QGraphicsView *>(historyGraphPageWidget);
+    gv->scene()->deleteLater();
+    QGraphicsScene *scene = new QGraphicsScene();
+    Changesets csets = parseChangeSets(hgLogList);
+    foreach (Changeset *cs, csets) {
+        ChangesetItem *item = new ChangesetItem(cs);
+        item->setX(0);
+        item->setY(cs->number() * 100);
+        scene->addItem(item);
+    }
+    gv->setScene(scene);
 }
 
 
+
 int HgExpWidget::findLineStart(int nowIndex, QString str)
 {
     if (nowIndex < 0)
@@ -256,6 +277,8 @@
 
 QStringList HgExpWidget::splitChangeSets(QString chgSetsStr)
 {
+    return LogParser(chgSetsStr).split();
+    /*
     int currChgSet;
     int currChgSetLineStart;
 
@@ -293,6 +316,21 @@
     }
 
     return tmp;
+    */
+}
+
+Changesets HgExpWidget::parseChangeSets(QString changeSetsStr)
+{
+    Changesets csets;
+    LogList log = LogParser(changeSetsStr).parse();
+    foreach (LogEntry e, log) {
+        Changeset *cs = new Changeset();
+        foreach (QString key, e.keys()) {
+            cs->setProperty(key.toLocal8Bit().data(), e.value(key));
+        }
+        csets.push_back(cs);
+    }
+    return csets;
 }
 
 QString HgExpWidget::getCurrentFileListLine()