21 |
21 |
22 #include "viewmanager.h" |
22 #include "viewmanager.h" |
23 |
23 |
24 MemSpyProcessModel::MemSpyProcessModel(EngineWrapper &engine, QObject *parent) : |
24 MemSpyProcessModel::MemSpyProcessModel(EngineWrapper &engine, QObject *parent) : |
25 QAbstractListModel(parent), |
25 QAbstractListModel(parent), |
|
26 mEngine(engine), |
26 mProcesses(engine.getProcesses()) |
27 mProcesses(engine.getProcesses()) |
27 { |
28 { |
|
29 mPriorityMap.insert(EPriorityLow, tr("[L]")); |
|
30 mPriorityMap.insert(EPriorityBackground, tr("[B]")); |
|
31 mPriorityMap.insert(EPriorityForeground, tr("[F]")); |
|
32 mPriorityMap.insert(EPriorityHigh, tr("[H]")); |
|
33 mPriorityMap.insert(EPriorityWindowServer, tr("[WS]")); |
|
34 mPriorityMap.insert(EPriorityFileServer, tr("[FS]")); |
|
35 mPriorityMap.insert(EPriorityRealTimeServer, tr("[RTS]")); |
|
36 mPriorityMap.insert(EPrioritySupervisor, tr("[SUP]")); |
28 } |
37 } |
29 |
38 |
30 MemSpyProcessModel::~MemSpyProcessModel() |
39 MemSpyProcessModel::~MemSpyProcessModel() |
31 { |
40 { |
32 qDeleteAll(mProcesses); |
41 qDeleteAll(mProcesses); |
39 } |
48 } |
40 |
49 |
41 QVariant MemSpyProcessModel::data(const QModelIndex &index, int role) const |
50 QVariant MemSpyProcessModel::data(const QModelIndex &index, int role) const |
42 { |
51 { |
43 if (role == Qt::DisplayRole) { |
52 if (role == Qt::DisplayRole) { |
|
53 const MemSpyProcess* process = mProcesses.at(index.row()); |
|
54 |
44 QStringList lines; |
55 QStringList lines; |
45 lines << mProcesses.at(index.row())->name(); |
56 lines << process->name(); |
|
57 |
|
58 lines << (process->isDead() ? |
|
59 process->exitInfo() : |
|
60 QString("%1, %2 thr, %3"). |
|
61 arg(process->sid(), 0, 16). |
|
62 arg(process->threadCount()). |
|
63 arg(mPriorityMap.value(process->priority(), tr("[?]")))); |
46 |
64 |
47 return lines; |
65 return lines; |
48 } |
66 } |
49 |
67 |
50 if (role == Qt::UserRole) |
68 if (role == Qt::UserRole) |
51 return mProcesses.at(index.row())->id(); |
69 return mProcesses.at(index.row())->id(); |
52 |
70 |
53 return QVariant(); |
71 return QVariant(); |
54 } |
72 } |
|
73 |
|
74 void MemSpyProcessModel::refresh() |
|
75 { |
|
76 beginResetModel(); |
|
77 QList<MemSpyProcess*> data = mEngine.getProcesses(); |
|
78 qDeleteAll(mProcesses); |
|
79 mProcesses = data; |
|
80 endResetModel(); |
|
81 } |
55 |
82 |
56 |
83 |
57 void MemSpyProcessView::initialize(const QVariantMap& params) |
84 void MemSpyProcessView::initialize(const QVariantMap& params) |
58 { |
85 { |
|
86 setTitle(tr("Processes")); |
59 MemSpyView::initialize(params); |
87 MemSpyView::initialize(params); |
60 |
88 |
61 setTitle(tr("Processes")); |
89 mModel = new MemSpyProcessModel(mEngine, this); |
62 mListView.setModel(new MemSpyProcessModel(mEngine, this)); |
90 mListView.setModel(mModel); |
63 |
91 |
64 connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex))); |
92 connect(&mListView, SIGNAL(activated(QModelIndex)), this, SLOT(itemClicked(QModelIndex))); |
65 } |
93 } |
66 |
94 |
67 void MemSpyProcessView::itemClicked(const QModelIndex& index) |
95 void MemSpyProcessView::itemClicked(const QModelIndex& index) |
68 { |
96 { |
69 QVariantMap map; |
97 QVariantMap map; |
70 map.insert("pid", index.data(Qt::UserRole)); |
98 map.insert("pid", index.data(Qt::UserRole)); |
|
99 map.insert("pname", index.data(Qt::DisplayRole).toStringList().at(0)); |
71 mViewManager.showView(ThreadView, map); |
100 mViewManager.showView(ThreadView, map); |
72 } |
101 } |
73 |
102 |
|
103 void MemSpyProcessView::refresh() |
|
104 { |
|
105 mModel->refresh(); |
|
106 } |
|
107 |