memspyui/ui/hb/src/memspythreadview.cpp
changeset 31 e7a04a6385be
parent 26 41ebde60981f
--- a/memspyui/ui/hb/src/memspythreadview.cpp	Thu Jun 17 15:34:52 2010 +0300
+++ b/memspyui/ui/hb/src/memspythreadview.cpp	Thu Jun 24 14:55:55 2010 +0300
@@ -22,9 +22,11 @@
 #include "memspythreadview.h"
 #include "viewmanager.h"
 
-MemSpyThreadModel::MemSpyThreadModel(EngineWrapper &engine, ProcessId threadId, QObject *parent) :
+MemSpyThreadModel::MemSpyThreadModel(EngineWrapper &engine, ProcessId processId, QObject *parent) :
 	QAbstractListModel(parent),
-	mThreads(engine.getThreads(threadId))
+	mProcessId(processId),
+	mEngine(engine),
+	mThreads(engine.getThreads(processId))
 {
 	mPriorityMap.insert(ThreadPriorityNull, tr("[Null]"));
 	mPriorityMap.insert(ThreadPriorityMuchLess, tr("[Much Less]"));
@@ -78,11 +80,21 @@
 	return QVariant();
 }
 
+void MemSpyThreadModel::refresh()
+{
+    beginResetModel();
+    QList<MemSpyThread*> data = mEngine.getThreads(mProcessId);
+    qDeleteAll(mThreads);
+    mThreads = data;
+    endResetModel();
+}
+
 MemSpyThreadView::MemSpyThreadView(EngineWrapper &engine, ViewManager &viewManager) : 
-	MemSpyView(engine, viewManager), 
+	MemSpyListView(engine, viewManager), 
 	mContextMenu(0), 
 	mPriorityMenu(0),
-	mThreadId(0)
+	mThreadId(0),
+	mModel(0)
 {
 }
 
@@ -94,13 +106,15 @@
 
 void MemSpyThreadView::initialize(const QVariantMap& params)
 {
+	ProcessId pid = qVariantValue<ProcessId>(params["pid"]);
+	setTitle(tr("Threads"));
+	
+	mProcessName = params["pname"].toString();
+	
 	MemSpyView::initialize(params);
 	
-	ProcessId pid = qVariantValue<ProcessId>(params["pid"]);
-	setTitle(tr("Threads").arg(pid));
-	
-	mListView.setModel(new MemSpyThreadModel(mEngine, pid, this));
-	mListView.setLongPressEnabled(true);
+	mModel = new MemSpyThreadModel(mEngine, pid, this);
+	mListView.setModel(mModel);
 	
 	connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
 	connect(&mListView, SIGNAL(longPressed(HbAbstractViewItem*,QPointF)),
@@ -128,16 +142,30 @@
 	mPriorityMenu->addAction(tr("Abs. Real Time 8"), this, SLOT(changePriority()));
 }
 
+
+bool MemSpyThreadView::isBreadCrumbVisible() const
+{
+    return true;
+}
+
+QString MemSpyThreadView::getBreadCrumbText() const
+{
+    return tr("Processes > %1").arg(mProcessName);
+}
+
 void MemSpyThreadView::itemClicked(const QModelIndex& index)
 {
 	QVariantMap map;
 	map["tid"] = index.data(Qt::UserRole);
+	map.insert("pname", mProcessName);
+	map.insert("tname", index.data(Qt::DisplayRole).toStringList().at(0));
+	
 	mViewManager.showView(ThreadDetailIndexView, map);
 }
 
 void MemSpyThreadView::catchLongPress(HbAbstractViewItem *item, const QPointF &coords)
 {
-	mThreadId = qVariantValue<ThreadId>(item->data(Qt::UserRole));
+	mThreadId = qVariantValue<ThreadId>(item->modelIndex().data(Qt::UserRole));
 	mContextMenu->setPreferredPos(coords);
 	mContextMenu->open();
 }
@@ -167,4 +195,10 @@
 		ThreadPriorityAbsoluteRealTime8 };
 	
 	mEngine.setThreadPriority(mThreadId, priorities[index]);
+	refresh();
 }
+
+void MemSpyThreadView::refresh()
+{ 
+    mModel->refresh(); 
+}