memspyui/ui/hb/src/memspyprocessview.cpp
changeset 35 98924d2efce9
parent 17 4f2773374eff
--- a/memspyui/ui/hb/src/memspyprocessview.cpp	Wed Jun 23 18:13:31 2010 +0300
+++ b/memspyui/ui/hb/src/memspyprocessview.cpp	Tue Jul 06 14:17:03 2010 +0300
@@ -23,8 +23,17 @@
 
 MemSpyProcessModel::MemSpyProcessModel(EngineWrapper &engine, QObject *parent) :
 	QAbstractListModel(parent),
+	mEngine(engine),
 	mProcesses(engine.getProcesses())
 {
+    mPriorityMap.insert(EPriorityLow, tr("[L]"));
+    mPriorityMap.insert(EPriorityBackground, tr("[B]"));
+    mPriorityMap.insert(EPriorityForeground, tr("[F]"));
+    mPriorityMap.insert(EPriorityHigh, tr("[H]"));
+    mPriorityMap.insert(EPriorityWindowServer, tr("[WS]"));
+    mPriorityMap.insert(EPriorityFileServer, tr("[FS]"));
+    mPriorityMap.insert(EPriorityRealTimeServer, tr("[RTS]"));
+    mPriorityMap.insert(EPrioritySupervisor, tr("[SUP]"));
 }
 
 MemSpyProcessModel::~MemSpyProcessModel()
@@ -41,8 +50,17 @@
 QVariant MemSpyProcessModel::data(const QModelIndex &index, int role) const
 {
 	if (role == Qt::DisplayRole) {
+	    const MemSpyProcess* process = mProcesses.at(index.row());
+	    
 		QStringList lines;
-		lines << mProcesses.at(index.row())->name();
+		lines << process->name();
+		
+		lines << (process->isDead() ? 
+		    process->exitInfo() :
+		    QString("%1, %2 thr, %3").
+                arg(process->sid(), 0, 16).
+                arg(process->threadCount()).
+                arg(mPriorityMap.value(process->priority(), tr("[?]"))));
 		
 		return lines;
 	}
@@ -52,14 +70,24 @@
 	
 	return QVariant();
 }
+
+void MemSpyProcessModel::refresh()
+{
+    beginResetModel();
+    QList<MemSpyProcess*> data = mEngine.getProcesses();
+    qDeleteAll(mProcesses);
+    mProcesses = data;
+    endResetModel();
+}
 	
 
 void MemSpyProcessView::initialize(const QVariantMap& params)
 {
+	setTitle(tr("Processes"));
 	MemSpyView::initialize(params);
 	
-	setTitle(tr("Processes"));
-	mListView.setModel(new MemSpyProcessModel(mEngine, this));
+	mModel = new MemSpyProcessModel(mEngine, this);
+	mListView.setModel(mModel);
 	
 	connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
 }
@@ -68,6 +96,12 @@
 {
 	QVariantMap map;
 	map.insert("pid", index.data(Qt::UserRole));
+	map.insert("pname", index.data(Qt::DisplayRole).toStringList().at(0));
     mViewManager.showView(ThreadView, map);
 }
 
+void MemSpyProcessView::refresh()
+{ 
+    mModel->refresh(); 
+}
+