[kgraphviewer-devel] [kgraphviewer/libkgraphviz] src/kgraphviz: Introduce DotGraph::scheduleUpdate

Kevin Funk krf at electrostorm.net
Thu Jan 27 15:10:44 CET 2011


Git commit c371a03a6f5511b80935a064790f77a0184cff49 by Kevin Funk.
Pushed by kfunk into branch 'libkgraphviz'.

Introduce DotGraph::scheduleUpdate

M  +17   -1    src/kgraphviz/dotgraph.cpp     
M  +3    -0    src/kgraphviz/dotgraph.h     
M  +5    -0    src/kgraphviz/dotgraph_p.h     

http://commits.kde.org/9c7b74a4/c371a03a6f5511b80935a064790f77a0184cff49

diff --git a/src/kgraphviz/dotgraph.cpp b/src/kgraphviz/dotgraph.cpp
index b7051d2..36fbe29 100644
--- a/src/kgraphviz/dotgraph.cpp
+++ b/src/kgraphviz/dotgraph.cpp
@@ -76,6 +76,10 @@ DotGraphPrivate::DotGraphPrivate(DotGraph* parent) :
   Q_Q(DotGraph);
   q->connect(&m_graphIO, SIGNAL(finished()), SLOT(graphIOFinished()));
   q->connect(&m_graphIO, SIGNAL(error(QString)), SLOT(graphIOError(QString)));
+
+  q->connect(&m_updateTimer, SIGNAL(timeout()), SLOT(doUpdate()));
+  m_updateTimer.setInterval(0);
+  m_updateTimer.setSingleShot(true);
 }
 
 DotGraphPrivate::~DotGraphPrivate()
@@ -97,6 +101,12 @@ void DotGraphPrivate::graphIOError(const QString& error)
   kDebug() << "Error message from graph IO:" << error;
 }
 
+void DotGraphPrivate::doUpdate()
+{
+  Q_Q(DotGraph);
+  q->update();
+}
+
 DotGraph::DotGraph() :
   d_ptr(new DotGraphPrivate(this))
 {
@@ -295,6 +305,12 @@ bool DotGraph::parseDot(const QString& fileName)
   return true;
 }
 
+void DotGraph::scheduleUpdate()
+{
+  Q_D(DotGraph);
+  d->m_updateTimer.start();
+}
+
 bool DotGraph::update()
 {
   Q_D(DotGraph);
@@ -316,8 +332,8 @@ bool DotGraph::update()
     updateWithGraph(graph);
 
     gvFreeLayout(gvc, graph);
-    agclose(graph);
     bool result = (gvFreeContext(gvc) == 0);
+    agclose(graph);
     return result;
   }
 }
diff --git a/src/kgraphviz/dotgraph.h b/src/kgraphviz/dotgraph.h
index 562ad40..0494b27 100644
--- a/src/kgraphviz/dotgraph.h
+++ b/src/kgraphviz/dotgraph.h
@@ -89,6 +89,7 @@ public:
   QString dotFileName() const;
 
   bool update();
+  void scheduleUpdate();
 
   virtual void storeOriginalAttributes();
 
@@ -136,6 +137,8 @@ private:
 
   Q_PRIVATE_SLOT(d_func(), void graphIOFinished());
   Q_PRIVATE_SLOT(d_func(), void graphIOError(QString));
+
+  Q_PRIVATE_SLOT(d_func(), void doUpdate());
 };
 
 KGRAPHVIZ_EXPORT QTextStream& operator<<(QTextStream& s, const DotGraph& n);
diff --git a/src/kgraphviz/dotgraph_p.h b/src/kgraphviz/dotgraph_p.h
index 41f76b8..cbbbf63 100644
--- a/src/kgraphviz/dotgraph_p.h
+++ b/src/kgraphviz/dotgraph_p.h
@@ -23,6 +23,7 @@
 #include "graphio.h"
 
 #include <QVector>
+#include <QTimer>
 
 namespace KGraphViz
 {
@@ -39,6 +40,8 @@ public:
   Q_DECLARE_PUBLIC(DotGraph);
   DotGraph* q_ptr;
 
+  QTimer m_updateTimer;
+
   GraphIO m_graphIO;
 
   QString m_fileName;
@@ -65,6 +68,8 @@ public:
 private:
   void graphIOFinished();
   void graphIOError(const QString& error);
+
+  void doUpdate();
 };
 
 }



More information about the kgraphviewer-devel mailing list