diff -r ba8a586c45f1 -r c20154ccf3c0 memspyui/ui/hb/src/memspythreadview.cpp --- a/memspyui/ui/hb/src/memspythreadview.cpp Fri Jun 11 16:29:34 2010 +0100 +++ b/memspyui/ui/hb/src/memspythreadview.cpp Thu Jul 22 16:33:59 2010 +0100 @@ -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 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(params["pid"]); + setTitle(tr("Threads")); + + mProcessName = params["pname"].toString(); + MemSpyView::initialize(params); - ProcessId pid = qVariantValue(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); - mViewManager.showView(ThreadDetailView, map); + 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(item->data(Qt::UserRole)); + mThreadId = qVariantValue(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(); +}