memspyui/ui/hb/src/memspythreadview.cpp
changeset 35 98924d2efce9
parent 19 4b22a598b890
equal deleted inserted replaced
34:e0ec97ec3cc4 35:98924d2efce9
    20 #include <QAction>
    20 #include <QAction>
    21 
    21 
    22 #include "memspythreadview.h"
    22 #include "memspythreadview.h"
    23 #include "viewmanager.h"
    23 #include "viewmanager.h"
    24 
    24 
    25 MemSpyThreadModel::MemSpyThreadModel(EngineWrapper &engine, ProcessId threadId, QObject *parent) :
    25 MemSpyThreadModel::MemSpyThreadModel(EngineWrapper &engine, ProcessId processId, QObject *parent) :
    26 	QAbstractListModel(parent),
    26 	QAbstractListModel(parent),
    27 	mThreads(engine.getThreads(threadId))
    27 	mProcessId(processId),
       
    28 	mEngine(engine),
       
    29 	mThreads(engine.getThreads(processId))
    28 {
    30 {
    29 	mPriorityMap.insert(ThreadPriorityNull, tr("[Null]"));
    31 	mPriorityMap.insert(ThreadPriorityNull, tr("[Null]"));
    30 	mPriorityMap.insert(ThreadPriorityMuchLess, tr("[Much Less]"));
    32 	mPriorityMap.insert(ThreadPriorityMuchLess, tr("[Much Less]"));
    31 	mPriorityMap.insert(ThreadPriorityLess, tr("[Less]"));
    33 	mPriorityMap.insert(ThreadPriorityLess, tr("[Less]"));
    32 	mPriorityMap.insert(ThreadPriorityNormal, tr("[Normal]"));
    34 	mPriorityMap.insert(ThreadPriorityNormal, tr("[Normal]"));
    76 		return mThreads.at(index.row())->id();
    78 		return mThreads.at(index.row())->id();
    77 	
    79 	
    78 	return QVariant();
    80 	return QVariant();
    79 }
    81 }
    80 
    82 
       
    83 void MemSpyThreadModel::refresh()
       
    84 {
       
    85     beginResetModel();
       
    86     QList<MemSpyThread*> data = mEngine.getThreads(mProcessId);
       
    87     qDeleteAll(mThreads);
       
    88     mThreads = data;
       
    89     endResetModel();
       
    90 }
       
    91 
    81 MemSpyThreadView::MemSpyThreadView(EngineWrapper &engine, ViewManager &viewManager) : 
    92 MemSpyThreadView::MemSpyThreadView(EngineWrapper &engine, ViewManager &viewManager) : 
    82 	MemSpyView(engine, viewManager), 
    93 	MemSpyListView(engine, viewManager), 
    83 	mContextMenu(0), 
    94 	mContextMenu(0), 
    84 	mPriorityMenu(0),
    95 	mPriorityMenu(0),
    85 	mThreadId(0)
    96 	mThreadId(0),
       
    97 	mModel(0)
    86 {
    98 {
    87 }
    99 }
    88 
   100 
    89 MemSpyThreadView::~MemSpyThreadView()
   101 MemSpyThreadView::~MemSpyThreadView()
    90 {
   102 {
    92 	delete mPriorityMenu;
   104 	delete mPriorityMenu;
    93 }
   105 }
    94 
   106 
    95 void MemSpyThreadView::initialize(const QVariantMap& params)
   107 void MemSpyThreadView::initialize(const QVariantMap& params)
    96 {
   108 {
       
   109 	ProcessId pid = qVariantValue<ProcessId>(params["pid"]);
       
   110 	setTitle(tr("Threads"));
       
   111 	
       
   112 	mProcessName = params["pname"].toString();
       
   113 	
    97 	MemSpyView::initialize(params);
   114 	MemSpyView::initialize(params);
    98 	
   115 	
    99 	ProcessId pid = qVariantValue<ProcessId>(params["pid"]);
   116 	mModel = new MemSpyThreadModel(mEngine, pid, this);
   100 	setTitle(tr("Threads").arg(pid));
   117 	mListView.setModel(mModel);
   101 	
       
   102 	mListView.setModel(new MemSpyThreadModel(mEngine, pid, this));
       
   103 	mListView.setLongPressEnabled(true);
       
   104 	
   118 	
   105 	connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
   119 	connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex)));
   106 	connect(&mListView, SIGNAL(longPressed(HbAbstractViewItem*,QPointF)),
   120 	connect(&mListView, SIGNAL(longPressed(HbAbstractViewItem*,QPointF)),
   107 	        this, SLOT(catchLongPress(HbAbstractViewItem*,QPointF)));
   121 	        this, SLOT(catchLongPress(HbAbstractViewItem*,QPointF)));
   108 	
   122 	
   126 	mPriorityMenu->addAction(tr("Abs. Real Time 6"), this, SLOT(changePriority()));
   140 	mPriorityMenu->addAction(tr("Abs. Real Time 6"), this, SLOT(changePriority()));
   127 	mPriorityMenu->addAction(tr("Abs. Real Time 7"), this, SLOT(changePriority()));
   141 	mPriorityMenu->addAction(tr("Abs. Real Time 7"), this, SLOT(changePriority()));
   128 	mPriorityMenu->addAction(tr("Abs. Real Time 8"), this, SLOT(changePriority()));
   142 	mPriorityMenu->addAction(tr("Abs. Real Time 8"), this, SLOT(changePriority()));
   129 }
   143 }
   130 
   144 
       
   145 
       
   146 bool MemSpyThreadView::isBreadCrumbVisible() const
       
   147 {
       
   148     return true;
       
   149 }
       
   150 
       
   151 QString MemSpyThreadView::getBreadCrumbText() const
       
   152 {
       
   153     return tr("Processes > %1").arg(mProcessName);
       
   154 }
       
   155 
   131 void MemSpyThreadView::itemClicked(const QModelIndex& index)
   156 void MemSpyThreadView::itemClicked(const QModelIndex& index)
   132 {
   157 {
   133 	QVariantMap map;
   158 	QVariantMap map;
   134 	map["tid"] = index.data(Qt::UserRole);
   159 	map["tid"] = index.data(Qt::UserRole);
       
   160 	map.insert("pname", mProcessName);
       
   161 	map.insert("tname", index.data(Qt::DisplayRole).toStringList().at(0));
       
   162 	
   135 	mViewManager.showView(ThreadDetailIndexView, map);
   163 	mViewManager.showView(ThreadDetailIndexView, map);
   136 }
   164 }
   137 
   165 
   138 void MemSpyThreadView::catchLongPress(HbAbstractViewItem *item, const QPointF &coords)
   166 void MemSpyThreadView::catchLongPress(HbAbstractViewItem *item, const QPointF &coords)
   139 {
   167 {
   140 	mThreadId = qVariantValue<ThreadId>(item->data(Qt::UserRole));
   168 	mThreadId = qVariantValue<ThreadId>(item->modelIndex().data(Qt::UserRole));
   141 	mContextMenu->setPreferredPos(coords);
   169 	mContextMenu->setPreferredPos(coords);
   142 	mContextMenu->open();
   170 	mContextMenu->open();
   143 }
   171 }
   144 
   172 
   145 void MemSpyThreadView::changePriority()
   173 void MemSpyThreadView::changePriority()
   165 		ThreadPriorityAbsoluteRealTime6,
   193 		ThreadPriorityAbsoluteRealTime6,
   166 		ThreadPriorityAbsoluteRealTime7, 
   194 		ThreadPriorityAbsoluteRealTime7, 
   167 		ThreadPriorityAbsoluteRealTime8 };
   195 		ThreadPriorityAbsoluteRealTime8 };
   168 	
   196 	
   169 	mEngine.setThreadPriority(mThreadId, priorities[index]);
   197 	mEngine.setThreadPriority(mThreadId, priorities[index]);
   170 }
   198 	refresh();
       
   199 }
       
   200 
       
   201 void MemSpyThreadView::refresh()
       
   202 { 
       
   203     mModel->refresh(); 
       
   204 }